1.4 CMOS数字集成电路设计流程
随着半导体制造工艺和集成电路设计技术的快速发展,传统的依靠经验的原理图设计方法不再符合时代的需要,具有可移植性及独立于半导体工艺外特性的硬件描述语言(Hardware Description Language,HDL)的设计方法应运而生。CMOS数字集成电路设计流程主要分为前端设计和后端设计两大部分,前端设计主要包括功能与结构分析设计、寄存器传输级(Register Transfer Level,RTL)代码设计、RTL级功能仿真、逻辑综合、综合后门级仿真、版图前静态时序分析;后端设计包括版图布局布线、版图后静态时序分析以及后仿真验证。设计流程如图1.2所示。
图1.2 CMOS数字集成电路设计流程
前端设计的工作主要是将电路的功能转换为用硬件描述语言来实现,然后把代码综合成逻辑门级的电路。而后端设计主要完成版图的布局布线,后仿真验证主要是测试经过布局布线后电路产生的延时对整个系统的影响,验证电路是否满足功能和时序的设计要求。
1.功能与结构分析设计
与模拟集成电路设计流程相同,功能与结构分析设计在整个数字集成电路设计中占有非常重要的地位。该阶段设计主要是从产品的功能定义出发,对产品采用的工艺、功耗、面积、性能以及成本进行初步评估,从而制定相应的设计规划。
2.RTL代码设计
RTL代码设计主要使用硬件描述语言(Verilog或VHDL)描述相应的电路设计或原理图。用硬件描述语言描述产品的功能和编写测试模块,良好的代码风格应该具有以下特点:足够的注释说明和有意义的命名;组合逻辑中没有必要使用非阻塞赋值,利用参数定义提高可读性和可维护性;注意向量的宽度,在对向量赋值时也应当指明数值的宽度;符合代码可综合的原则。
3.RTL级功能仿真
RTL级功能仿真主要通过仿真检查设计功能是否符合要求。在RTL代码设计完成后,还必须对设计的正确性进行测试。通常的方法是对设计模块施加激励,通过观察其输出波形来检验功能的正确性。激励模块一般称为测试台(test bench),在仿真环节可以编写不同的测试台对设计进行全方位的验证。激励模块同样可以使用硬件描述语言来编写。
4.逻辑综合
逻辑综合是通过逻辑综合工具将硬件描述语言描述的设计通过转译、优化和映射产生与实现工艺相关的网表文件。网表文件是一种记录有逻辑门之间连接关系以及延时信息的文件。综合是连接电路高层与物理实现的桥梁,综合结果的好坏决定了电路的设计,综合给定的限制条件与综合之后的门级网表将送到后端工具用于布局布线。
5.综合后门级仿真
进行版图设计之前需要通过仿真检查设计功能是否符合要求。在这个环节,要把逻辑综合生产的网表文件添加到仿真文件中并需要添加编译工艺库来仿真。门级仿真比RTL级功能仿真能更真实地反映电路的工作情况,因为门级仿真把逻辑门之间的连接关系以及延时信息都考虑在其中。
6.版图前静态时序分析
静态时序分析(Static Timing Analysis,STA)是通过套用特定的时序模型(Timing Model),针对电路分析其是否违反设计者给定的时序限制(Timing Constraint),是保证电路满足预定时序要求的重要步骤。但这个阶段的静态时序分析并不含有电路的连线延迟信息,只是对电路时序的初步验证。
7.版图布局布线
设计者首先要进行合理的版图规划,才能有效地利用资源完成布局、布线。版图规划的具体工作是计算各个电路模块的大小并安排它们的相对位置。随着工艺技术的改进,连线的作用越来越重要,版图规划对最终设计结果的影响也越来越大。随后进行版图布局、布线再完成电路单元的摆放和互连。有时候版图规划、布局、布线的划分并不是十分独立的,实际使用中一些EDA工具可能将这些步骤整合在一起来实现。
8.版图后静态时序分析
与版图前静态时序分析不同,这个阶段的静态时序分析需要加入版图后的连线信息,此时电路间的延迟会大大增加。相应地,设计者设置的时序约束也会受到严峻的挑战。因此只有通过了该阶段验证,设计者才能确保最后出厂的芯片满足预设的时序要求。
9.后仿真验证
带有版图延迟信息的门级后仿真验证是设计的最后一道关卡,主要包括功能验证和时序验证。由于功能验证在RTL级仿真时基本得到了保证,因此验证主要是针对时序仿真进行的。时序仿真需要了解一些仿真工具所采用的延迟模型,并将延迟信息反标到仿真文件中,模拟一些在RTL级无法出现的情况,如复位、状态机翻转等,充分的验证应该包括最好情况下的短路径保持时间,以及最差情况下的长路径建立时间。