芯片设计分为前端设计和后端设计,前端设计(逻辑设计)和后端设计(物理设计)并没有同意严格的界限,这个过程中涉及到了与工艺有关的设计就是后端设计。
一、需求分析
产品需要解决的问题,预测3~5年的趋向和走势,确保前瞻性、确保芯片是有卖点的。
客户向fabless(芯片设计公司)提出设计要求,包括芯片需要达到的具体功能和性能方面的要求,让架构师可以进行细化。
二、功能架构设计
架构师将系统功能进行分解和细化,形成spec规范(spec文件是配置规范文件,是RPM软件包编译过程的核心,它说明了软件包如何被配置、打那些补丁、安装哪些文件、安装到哪里、安装过程需要哪些系统级别活动),将设计参数化、具体化。
包括处理器架构的选择:ARM、RISC-V;
总线接口选择:AHB、AXI、APB;
软硬件功能的划分:硬件速度快、性能高、灵活性差。软件速度慢、性能差、灵活性高、开发周期短;
性能参数:引脚选择、电压频率、工艺选择、功耗和温度范围。
三、RTL编码
使用硬件描述语言,将模块功能以代码来描述实现。
图形输入工具:Cadence的composer。
四、功能仿真验证(前仿)
功能仿真,对RTL级的代码进行设计验证,检验设计功能的正确性,是否满足规格中的所有要求。
仿真工具:Modelsim、VCS
五、逻辑综合
基于特定的工艺库,设定电路面积、时序等目标参数得到约束条件,将设计的RTL级代码映射为门级网表netlist。逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时许参数是不一样的。
综合完成后需要再次做仿真验证(后仿)。
六、STA静态时序分析
在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例。
STA工具:Synopsys的Prime Time(PT)。
七、形式验证Formality
从功能上对综合后的网表进行验证,将综合后的网表与验证后的HDL设计对比,看他们是否在功能上存在等价性,保证逻辑综合过程中没有改变HDL描述的电路功能。
形式验证工具:Synopsys的Formality。
后端流程
一、DFT
可测性设计,在设计中插入扫描链。SCAN、Mbist、ATPG技术。
二、布局规划
放置芯片的宏单元模块,在总体上确定各个功能电路的摆放位置,能影响芯片的最终面积。如IP模块、RAM、I/O引脚等的摆放位置。
工具:IC Compiler
三、时钟树综合CTS
时钟的布线,时钟分布H型或树形,使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小。
工具:PC
四、布线
将前端提供的网表实现成版图,包括各种标准单元之间的走线。
五、寄生参数提取
由于布线本身存在的电阻,相邻导线之间的互感、耦合电容在芯片内部会产生信号噪声、串扰和反射。提取寄生参数再次分析验证,分析信号完整性问题。
六、物理版图验证
对布线完成二点版图进行功能和时序上的验证
LVS:版图和逻辑综合后的门级电路图对比验证
DRC:设计规则检查,检查连线间距,连线宽度。
ERC:电气规则检查,检查短路开路。
实际的后端流程还包括电路功耗分析,以及随着制造工艺不断进步产生的DFM(可制造性设计)问题。物理版图以GDS II的文件格式交给芯片代工厂(Foundry)在晶圆硅片上做出实际的电路,再进行封装测试,就得到了可使用的芯片。