转载自:ASIC设计学习笔记——使用Design Compiler进行综合_design compiler 编译选项_m0_71775106的博客-优快云博客
文章目录
前言
1. 基本概念
1.1 综合(Synthesis)
1.2 使用Design Compiler进行综合
2. 使用DC进行编译
2.1 进入DC环境
2.2 编译过程
2.2.1 设置搜索路径
2.2.2 库环境设置
2.2.3 编译参数配置
2.2.4 读入设计
2.2.5 编译命令
2.2.6 保存编译结果
2.2.6.1 输出文件格式说明
2.2.6.2 保存报告
2.3 其他常用命令
2.4 完整脚本
4. 可能遇到的问题和解决方案
4.1 Net ‘Q’ or a directly connected net is driven by more than one source,and not all drivers are three-state.(ELAB-366)
4.2 verilog ‘assign’ or ‘tran’ statements are written out(VO-4)
5. 总结
6. 参考文献
前言
综合是ASIC的前端设计中极为重要的步骤,所谓的综合过程,是指将行为级描述的电路、RTL级的电路转换到门级网表的过程。本文介绍使用Synopsys公司的Design Compiler作为工具完成综合的过程。
1. 基本概念
1.1 综合(Synthesis)
在ASIC开发中,当使用verilog等硬件描述语言完成对所需要的功能的代码编写和仿真后,可以使用软件来进行翻译,将HDL描述的行为级代码转换为门级电路。这个转换为门级电路的实现与优化工作就是综合。
下图是一个基本的设计流程框图,其中“Design implementation”就是指综合的过程。
综合本身的过程包括三个阶段:
转换(translation):这一步是将HDL的描述转换成一个与工艺独立的RTL级网表,网表中RTL模块通过连线互联
映射(mapping):接着根据具体指定的工艺库,将RTL级的网表映射到工艺库上,成为门级网表
优化(optimization):最后根据设计者施加的延时、面积等约束条件,对门级网表进行优化。
这个过程可以用下图表示:
1.2 使用Design Compiler进行综合
使用Design Compiler进行综合的过程和通用的综合过程相同,也包括转换、优化和映射三部分,如下图所示。
在转换阶段,DC读入HDL文件,使用自带的gtech.db库中的RTL级单元来组成与工艺无关的中间网表,这个过程,也就是使用DC的read_vhdl或read_verilog命令读入设计未见的过程,这一过程中,如果需要引入其他的库,可以通过read_db命令读入,这一过程的中间结果也可以通过write命令写入到一个.db文件中
在优化映射阶段,DC对已有的中间网表进行分析,去掉其中的冗余单元,并对不满足约束条件的路径进行优化,再将优化后的电路映射到芯片制造商提供的工艺库上。这个过程也就是DC的compile命令,其输出可以通过write命令写入到文件中,如.v, .db或者.edif文件。
2. 使用DC进行编译
2.1 进入DC环境
在已经安装好Synopsis的工具链的环境里执行如下命令可以进入dc_shell。
$ dc_shell
如果只是想执行某一个编译脚本,则可以直接运行如下命令执行该tcl脚本:
$ dc_shell