逻辑综合
为什么要进行逻辑综合 ?
我们在设计时是将spec和逻辑转换成verilog代码描述电路,在芯片制作时,需要将代码再转换成更加低级的门级电路,供代工厂使用。逻辑综合的主要目的是:决定电路的门级结构、寻求时序与面积的平衡、需求功耗与时序的平衡、增强电路的测试性。
逻辑综合的基本原理
逻辑综合的三个阶段分别是转译,优化和映射。
转译是指将HDL代码翻译为GTECH电路,这个数据库的电路是完全独立于晶圆厂工艺库的,是一个一般性的数据库文件。
优化就是指我们在逻辑综合阶段通过施加约束来对电路的时序、面积、功耗等特性进行优化。
映射就是将优化后的电路转换为目标工艺库对应的门级网表。
使用DC进行逻辑综合的流程
DC是指Synopsys 公司的 Design Compiler,它是目前逻辑综合使用最多也是最通用的工具。DC的综合过程可以分为以下几步:
- 预综合过程:读入设计文件、创建启动脚本、设置需要读入的库文件,这里面不太好理解的就是DC需要用到的库文件。
- 目标库是指Foundary给出的综合后电路网表最终需要映射到的库。DC在综合时就是根据target library中给出的单元电路的延迟信息来计算路径的延迟。并根据各个单元延时、面积和驱动能力的不同选择合适的单元来优化电路。具体的优化策略就是对相同逻辑功能的单元进行替换,就比如使用nand单元替换与门与非门搭起来的电路。
- 链接库是指DC需要用到的模块或单元的引用。它与目标库的区别就是它包含了付费IP、存储器、IO以及PAD单元的库,而目标库一般只包含标准单元。
- 符号库是定义了单元电路显示的Schematic的库,一般用于查看电路。如果没有设置,则会使用DC默认的符号库。
- 算术运算库是需要高级license才能使用的功能,它主要是能够让DC直接调用designware的高性能运算库,能够将一些运算综合为性能更好的电路。
- 施加设计约束
- 设计综合
- 后综合