到目前为止,我已经分享了很多篇关于Design Compiler(DC)的文章,内容包括DC优化的三个阶段,不同Verilog HDL编码风格对DC结果的影响等等。今天我们继续分享和DC相关的内容。有很多朋友不是很清楚DC综合要跑起来,需要哪些基本的文件?分哪几个步骤?今天的文章就来谈谈这两个内容。 Design Compiler综合所需文件 DC要跑起来,所需文件大概可以归结为三类:库文件;约束文件;设计文件。 库文件可以分为以下四类:target_library:目标库。这个库指代的是,设计者最终希望自己的设计要映射到的工艺库。RTL在最后映射的时候,会选择目标库中的cell,进行映射。link_library:链接库。在综合过程中阶段,选择link_library中的器件进行设计的串联。synthetic_library:综合库。这个库中包含了Synopsys中Design Ware库中的高层次宏单元块,一般在.synopsys_dc.setup中进行设置,在Design Compiler启动时候,直接读入。symbol_library:符号库。包含图形符号信息的库。如果我们需要看设计中的逻辑门,则需要这个库,反之,可以不加载。 约束文件可以分为以前四类:和timing相关的约束。包括对时钟频率、uncertainty、transition等等约束条件;和面积相关的约束。包括max_area等约束命令;和功耗相关的约束;其他一些高级的约束。 在以上的三类约束中,Design Compiler处理的优先级为timing>面积>功耗。也就是说,DC优先满足timing的约束条件,当需要牺牲面积或者功耗来换取timing的时候,工具会选择执行,反之则不行。只有在timing满足的条件之下,DC才会对面积和功耗进行优化。 设计文件就是我们用Verilog HDL编写的RTL代码。 Design Compiler综合的基本步骤 上面所需文件准备完毕之后,下面就可以进行DC综合。步骤如下所示:读入三个library;读入Verilog HDL RTL;读入约束条件;进行compile。在这一步骤中,我们可以加一些option,来优化compile的结果,比如可以使用-ungroup_all开关,将RTL中的层次结构展平;DC进行重写,RTL经过library的映射,变成门电路,将此结果写出到一个netlist文件中,得到综合的结果。 小结 今天我们分享了DC综合过程所需的文件,以及基本的步骤。如果对今天的内容有什么建议,欢迎和我进行讨论。