一、逻辑综合的主要步骤
synthesis = translation + logic optimization + gate mapping
DC工作流程主要分为这三步
Translation :主要把描述RTL级的HDL语言,在约束下转换成DC内部的统一用门级描述的电路(Generic Boolean Gates)(DC自己的库表现),以GTECH或者没有映射的ddc形式展现。也就是说此阶段没有用到工艺库。
Logic optimization :就是把统一用门级描述的电路进行优化,就是把路径调整一下,门给改一下等等。
Gate mapping :门级映射,把优化了的统一门级描述,DC用工艺厂商的工艺库把电路给映射出来,得到一个.ddc文件。这个.ddc文件可以包含许多丰富的信息,比如映射的门电路信息、网表.v格式的网表、延时信息(sdf)、工作约束(sdc)等信息。(.ddc不能用文本编辑器打开)。.ddc这个包含的网表文件是实际意义的网表文件,而.v这个形式的网表文件是用来做后仿真的文件。
二、逻辑综合的具体步骤
1、在Linux下,启动DC。打开命令行,输入 dc_shell –gui
2、设置库文件。
点击File - Setup
设置
(1)Search path :当在Link Library中无法找到某些模块时,DC会在Search Path下的库中自动找对应的模块。比如Synopsis的DesignWare中的库就缺省包含在了Search Path下,这也就是为什么一般不需要手动设置Synthetic Library的原因。在Verilog源文件中,如果找不到include的文件,也会在Search Path下寻找。
(2)Link library 和 Target library :Link library 和 target library 统称为 technology library(即工艺库,习惯称之为综合库),technology library 由半导*造商提供,包含相关 cell 的信息及设计约束标准,后缀一般为".db",其中:
Target library: 在门级优化及映射的时候提供生成网表的 cell,即DC 用于创建实际电路的库。
Link library: 提供设计网表中的 cell,可以跟target_library使用同一个库,但是 DC 不用 link library中的 cell 来综合设计。
当 DC 读入设计时,它自动读入由 link library 变量指定的库。当连接设计时,DC 先搜寻其内存中已经有的库,然后在搜寻由 link library 指定的库。
注:当读入的文件是门级网表时,需要把 link library 指向生成该门级网表的库文件,否则 DC 因不知道网表中门单元电路的功能而报错。
(3)Symbol library :Symbol library 提供 Design Vision GUI 中设计实现的图形符号,如果你使用脚本模式而不使用 GUI,此库可不指定 Symbol library
(4)Synthetic library :即为 Designware library ,名字上翻译是综合库,但却常称之为IP库,而不是直译。特殊的 Designware library 是需要授权的(比如使用多级流水线的乘法器),默认的标准 Designware 由 DC 软件商提供,无需指定。
3、读入verilog RTL文件
点击 File - Read 选择自己的verilog文件
4、Check Design 检查设计
点击 Design - Check Design
5、在下方dc shell命令行输入set_max_area 0(按最小的面积综合)
6、在下方dc shell命令行输入compile –map_effort medium –area_effort medium(为优化面积而做出的努力程度)
7、在下方dc shell命令行输入report_cell
8、查看综合后的电路面积
面积为3468.54719,这个面积是电路中的门级器件的面积,不包括内部金属线的面积,根据经验,最终的电路面积 ≈ 此面积/0.7。
因为我们实验室不需要自己做后仿真,所以跑DC的唯一目的就是看面积,我暂时也没搞清楚为什么不需要设置时钟约束,环境约束等。
参考链接:
https://www.jianshu.com/p/a891ef3fe71e
https://zhuanlan.zhihu.com/p/82716151