打造IC人才
科技生态圈

FPGA可以转IC设计吗?需要学习哪些技能?

发布时间:2023-03-20

来源:IC修真院

曾经在知乎上看到一个回答“入职做FPGA,后续是否还可以转数字IC设计?”

从下面图内薪资就可以对比出来,对比FPGA的行业薪资水平,IC行业中的一些基础性岗位薪资比很多FPGA大多数岗位薪资都要高。

image

除了薪资之外更多FPGA转IC设计的有以下几个原因:

①从业多年竟然找不到了应该攻克的方向,技术路线逐渐迷失,以至于影响职业信念。

②FPGA技术本身发展很快,而FPGA开发的工作有一些内容将会被新工具,新流程所改变或者取代。

③自身所在的公司在向芯片IC开发做转变,而原有的FPGA开发平台就需要做升级,员工被要求做技术换代升级。

④资本浪潮追逐升级,系统更大(承载量)更复杂(大团队协作),要求产品最终呈现芯片的形式。

FPGA与IC设计有哪些差异?

首先,FPGA的逻辑设计与数字IC设计的基础技能是相同的,都需要使用HDL代码进行编程。

其次,在开发流程上,也有一部分工作是可以通用的,除综合方式不同,前期的RTL编程、语法检查、功能仿真等内容都是高度重合的。

在设计开发中都需要大量用到片上存储(RAM、ROM、FIFO),以及可能会用到一些IP,虽然FPGA的片上存储的本质都是RAM,但在应用层面来说并没有太大区别。

然而,重合最多的还是数字IC设计基本都需用FPGA进行原型验证。因为功能仿真的场景是人为构建的,不是真实的工作场景,所以经常存在认知误差。而FPGA能让数字IC设计的代码在真实场景下进行验证,使其排查出很多仿真难以发现的问题。

但是,在两者相同之中,又有不同之处。其中HDL编码规范存在差异:

就语法要求而言,数字IC设计更加严苛,有些在FPGA设计中使用的语法无法适用于数字IC设计。

就工作环境而言,数字IC设计一般都在Linux工作站中进行,这是因为开发工具链有较大差异,完整数字IC开发可能前前后后用到十多种软件,并且大部分软件都不支持Windows系统;而FPGA开发所用的软件相对较少,基本都可以在Windows系统下进行。

就硬件知识储备而言,FPGA设计需要去了解FPGA器件知识,理解FPGA的LUT/FF结构和FPGA中带有的IP,通常会需要开发者自己进行板级调试,这个过程中就需要掌握一些通用的硬件电路和使用一些电子仪器。而数字IC开发对硬件知识的掌握则没有太多要求(因为在数字IC设计中还有模拟的岗位),数字IC开发更关心的是逻辑电路的实现,需要更多的考虑逻辑级数、功耗和时序等问题。

想转数字IC设计需要学习什么专业知识?

1:进数字IC前端/FPGA设计的专业知识学习,推荐这本书:《CMOS VLSI Design A Circuits and Systems Perspective》。

image

自认为是数字IC设计入门“圣经”。基本电路结构,加减法器结构,组合逻辑,时序逻辑,跨时钟设计都有涉及。

2:在此还需要理解On-Chip-Bus的基本知识与一个数字系统的基本结构,建议学习理解:AMBA总线,含:APB/AHB/AXI。由于ARM在数字IP领域的领导低位,AMBA总线事实上已经成为数字IC的通用总线结构,必学。

3:现在可以开始做数字IP的设计了,涉及到使用相关EDA tool。

a):功能验证:对于初学者(在校生),能modelsim/questasim上做仿真测试,熟悉波形窗口;debug RTL code。再使用下windows版的nLint/Debussy就能完成数字IP功能设计验证了。

b):综合与实现:这部分首先(重点)要掌握STA原理,比如:cell delay在cell library里面是怎么标定的,tool是怎么计算delay的,setup/hold timing check的计算公式是什么;clk skew, clk uncertainty, create_clock, create_generateclock, set_ideal_network, set_input_delay, set_false_path, set_multi_cycle_path,OCV , … 是什么意思,对STA有何作用。懂了STA原理,就可以用TCL语言写SDC(DC综合)/XDC(vivado综合实现)timing constraint了。目前XDC/SDC的语法已经基本统一了。

进阶知识、技能

1:算法方向:信号与系统,数字信号处理(DSP);

2:接口方向:UART/IIC/SPI/DDR等常用接口协议;如有余力,可以看看USB/PCIE/SATA/MIPI;

3:日常工作的OS平台:linux操作系统使用;vim(emac)使用;bash(csh);makefile;

4:脚本语言:Perl(Python)/TCL;

5:版本管理工具:SVN/Git;

实训项目

从去年以来,企业更看重项目经验,做过项目和没做过项目,在面试官眼里有很大的差别。这里就建议大家尽可能多参与项目,从企业中获取项目,真正跟着公司做过事情的人面试时的表现是不同的。社招的话有无项目经历、项目的方向、项目完成度都是非常重要的。尤其是社招,项目经验是岗位匹配度的一个重要参考标准。

如何增加项目经验,或者什么样的项目经验可以得到面试官的青睐。

来听听资深工程师怎么说?

我们说增加项目经验,你做项目,具体分下来比如我们在做设计或者做验证,一定是有一个点,我们要交付的质量标准是什么样的,我们越深入的了解交付标准,就我们越深入的了解业务,我们就可以更贴切的去知道去交付的东西未来会遇到什么问题,我们就能提前把它准备了。

我们在 review 的时候,和主管去讨论,或者是和客户去讨论,包括设计和验证人员去讨论问题,更关心问题背后的逻辑,更关心产品背后的逻辑,要去贴近它的使用场景,去想这件事情来龙去脉,多看好例子,多去探讨实现的细节。虽然我没有真的coding,但是这件事情我想通了。

要增加项目经验,简单的说一点,我们还是想继续卷,我们还想更优秀。所以在工作前三年,是一个把自己埋起来去学习的这样一个过程。还需要更长时间的磨练,我们才能叫 senior 工程师。

今年我的年薪 30 万,后年我的年薪得 50 万,再过几年我的年薪得百万,我觉得都可以,但也不拘泥于这些。希望大家都有一个说起来眼睛能冒光的目标。就像我们当年在校学习一样,为了目标,为了这个成绩,我们一定有无限多种方法去实现它。

六大项目资源推荐

如果你当下对入行/转行有一定困惑和意向,或者想了解项目,以及免费获取学习资料,任何关于转行的问题都有老师会为你解答。

image

相关推荐:

让嵌入式工程师欲罢不能的7个小网站(资源篇)

干货分享:数字IC后端主要做什么?

IC设计入门必看|IC验证设计流程详细介绍

推荐阅读

换一换