主要包括:后端设计简单说是P&R,但是包括的东西不少,像芯片封装和管脚设计,floorplan,电源布线和功率验证,线间干扰的预防和修正,时序收敛,STA,DRC,LVS等,要求掌握和熟悉多种EDA工具以及IC生产厂家的具体要求。
术语:tape-out—提交最终GDS2文件做加工;Foundry—芯片代工厂,如中芯国际。。。
1.规格制定
芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。2.详细设计
Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。目前架构的验证一般基于SystemC语言,对构架模型的仿真可以使用SystemC的仿真工具。其中典型的例子是Synopsys公司的CoCentric和Summit公司的VisualElite等。
3.HDL编码
使用硬件描述语言(VHDL,VerilogHDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL(寄存器传输级)代码。
设计输入工具:具有强大的文本编辑功能,多种输入方法(VHDL,Verilog,状态转移图,模块图等),语法模板,语法检查,自动生产代码和文档等功能。如Active-HDL,VisualVHDL/Verilog等。
RTL分析检查工具:SynopsysLEDA
4.仿真验证
仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。看设计是否精确地满足了规格中的所有要求。规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。
设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。
仿真验证工具Synopsys的VCS,MentorModelSim,CadenceVerilog-XL,CadenceNC-Verilog。5.逻辑综合――DesignCompiler
仿真验证通过,进行逻辑综合。逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表netlist。综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standardcell)的面积,时序参数是不一样的。所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。
一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)
这也是验证范畴,它是从功能上(STA是时序上)对综合后的网表进行验证。常用的就是等价性检查(EquivalenceCheck)方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。形式验证工具有Synopsys的Formality。前端设计的流程暂时写到这里。从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路。
IC前端主要是数字前端设计、软件硬件验证、FPGA验证等,前端的入门门槛相对后端较低(但其实还相对其他行业是比较高的)。在北京,就我知道,前端的工程师起薪是7.5k。现在全国合格的前端工程师还是非常少的,数量缺口达到3万。
后端主要是模拟部分以及layout,这方面需要及其丰富的经验,相对应收入会比前端高一点,人才也是奇缺的。人才缺口相对前端就更大了。同时还有一些IC流程工程师,也是非常吃香的。前端需要学习的周期相对后端短,后端尤其是模拟部分,完全是靠经验熬出来的,所以如果有毅力,在模拟的路上多走几年,前途(钱途)也是不可限量的。我有一个同学,学模拟的,在公司属于奇缺人才,裁员和他是绝缘体。当然本身实力也很强的,所以楼主主要看自己吧,喜好哪个方面。IC有时候很有挑战,有时候很枯燥。像我,debug波形多了,会恶心
数字前端主要包括两个方面:设计和验证。设计前期是写verilog代码,到后来就是做些架构层面的东西,设计和验证都是针对逻辑功能而言的,不太关心时序问题。数字后端做实现、流程,主要是学会使用工具软件。后端经验比较重要。相对而言,前端的门槛较低,后端门槛较高。
我们来看一下猎头招聘就明白这两个概念了。呵呵。。
<前端>
<后端>
也来说两句前端工程师:前端工程师还可以考虑掌握:
1)前端主要负责逻辑实现,通常是使用verilog/VHDL之类语言,进行行为级的描述。而后端,主要负责将前端的设计变成真正的schematic&layout,流片,量产。打个比喻来说,前端就像是做蓝图的,可以功能性,结构性的东西。而后端则是将蓝图变成真正的高楼。
2)前端设计主要是进行功能设计,代码的编写,要会使用硬件描述语言,也就是上面有提到的verilog/VHDL等,当然,也会要使用一些仿真软件。后端设计需要的则会更加多一些了,包括综合,到P&R,以及最后的STA,这些工具里candence和synopsys都有一整套系统的。有关心的可以去他们的网站看看。
其实前端和后端对于编程没有特别的要求。前端的设计会需要使用硬件描述语言来写代码,但是,需要注意的是,这里指的是"描述",而不像是C或者java之类的强调编程技巧啊什么的。所以,这个选择就看你自己了,而与编程没有什么特别的关系了。