大公司的设计流程一般分为前端 - 中端 - 后端,但是大部分的设计公司并没有这么严格,而是将中端并入后端里边,并没有统一的界限。
前端:
规格制定 |
---|
设计划分 |
RTL编码 |
功能验证 |
逻辑综合 |
静态时序分析 |
形式验证 |
一般来说,到形式验证这一步,基本就结束了前端的内容。前端设计的主要目的是生成芯片的门级网表电路。
对于刚刚接触到这个行业的新手来说,规格制定和设计划分都轮不到咱们……(大佬们根据客户的要求制定项目书,接着再进行模块划分以及算法层面到硬件实现的转换)。
到RTL编码这一步,基本上就是大部分刚入行前端的人所接触到的任务之一了,就是用verilog将大佬划分好的某个模块描述出来。
之后是功能验证,目的是将写好的硬件描述语言在测试平台上跑一遍,将功能上的漏洞消灭在这个阶段。(如果漏洞一直持续到流片,那公司直接倒闭就可以了)。
逻辑综合的目的是将仿真通过的代码生成门级网表netlist.
静态时序分析(STA)对应功能验证,它属于时序验证,请牢记,所有时序分析的根本目的,就是看建立时间和保持时间是否满足。
之后是形式验证,是对综合后的门级网表进行验证,方法是对照RTL代码与生成的门级网表(电路图),看是否等价。
也就是说,前端设计,可以概括成三个阶段:功能划分 - 代码编写 - 验证。
中端很简单,一般来说只有一个“DFT”,即 “design for test” . 也是它为什么可以被并入后端。
DFT就是 设计测试,即在设计的阶段,设计一些用于测试的东西。
这里要区分验证和测试的区别:验证的对于verilog代码,对于时序,对于形式的验证,此时没有涉及到芯片成品(还没到后端呢,离芯片成品差远了)。而测试是在芯片造出来之后,在物理层面进行测试。
DFT设计测试,就是在设计的时候插入扫描链,用于将来的测试。
下面介绍后端:
布局布线 |
---|
时钟树综合 |
提取寄生参数 |
物理版图验证 |
设计完成 |
经过后端的一系列步骤,最终生成GDSII的文件格式交给芯片代工厂(Foundry)。这是后端设计的最终目的。
布局规划就是放置芯片的宏单元模块,在总体上确定各种功能电路的摆放位置,如IP模块,RAM,I/O引脚等等。布局规划能直接影响芯片最终的面积。布线就是金属布线可以达到的最小宽度,从微观上看就是MOS管的沟道长度。(请牢记这一点,芯片常说的14nm,28nm, 7nm工艺,指的就是这个)。
时钟树综合,Clock Tree Synthesis(CTS),可以理解为时钟的布线,目的是使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小。
寄生参数指的是导线之间的互感电容,以及导线本身的电阻。这些东西不能忽略,如果设计不好,对于最终的器件有很严重的影响。
物理版图验证,这一块要做的东西很多,典型来说包括:版图与逻辑综合后的门级电路图的对比验证(LVS验证);设计规则检查,检查连线间距,连线宽度等是否满足工艺要求(DRC);电气规则检查,检查短路和开路等电气规则违例(ERC),等等;物理版图验证完成也就是整个芯片设计阶段完成,下面的就是芯片制造了。
芯片制造的主要内容,简单理解晶体管是什么,为什么cpu的功能要看晶体管数量等问题,留到下次再讲。