微电子学实验室
实验教程
ASIC 综合器软件——
Design Compiler 实验
2006-7
Design Compiler 实验
前言
Design Compiler(简称 DC)是 synopsys 公司的 ASIC 综合器产品,它可以完成将硬件
描述语言所做的 RTL 级描述自动转换成优化的门级网表。DC 得到全球 60 多个半导体厂商、
380 多个工艺库的支持。Synopsys 的逻辑综合工具 DC 占据 91%的市场份额。DC 是工业界
标准的逻辑综合工具,也是 Synopsys 最核心的产品。它使 IC 设计者在最短的时间内最佳的
利用硅片完成设计。它根据设计描述和约束条件并针对特定的工艺库将输入的 VHDL 或者
Verilog 的 RTL 描述自动综合出一个优化的门级电路。它可以接受多种输入格式,如硬件描
述语言、原理图和网表等,并产生多种性能报告,在缩短设计时间的同时提高设计性能。
本实验对 DC 软件的使用进行简单的介绍,熟悉和掌握综合器软件使用中的基本概念和
术语,了解如何对数字电路施加约束,掌握同步数字电路设计、约束和优化的方法,了解时
钟的概念,理解同步电路静态时序分析(STA)的方法和时序报告。
第 2 页,共 24 页
西安交通大学微电子学实验室
实验 1 setup 和 synthesis 流程
实验准备
有两种界面可以运行 Design Compiler:
1) 命令行界面,dc_shell-xg-t;
2) 图形用户界面(GUI),Design Vision。
本次实验主要运用 GUI 模式。图 1.1 给出了 RTL 逻辑综合的直观概念和简要流程。
图 1.1 RTL 逻辑综合的直观概念和简要流程。
在 DC 中,总共有 8 种设计对象:
设计(Design):一种能完成一定逻辑功能的电路。设计中可以包含下一层的子设计。
单元(Cell):设计中包含的子设计的实例。
参考(Reference):单元的参考对象,即单元是参考的实例。
端口(Port):设计的基本输入输出口。
管脚(Pin):单元的输入输出口。
连线(Net):端口间及管脚间的互连线。
时钟(Clock):作为时钟信号源的管脚或端口。
库(Library):直接与工艺相关的一组单元的集合。
第 1 页,共 24 页
Design Compiler 实验
检查.synopsys_dc.setup 文件
DC 使用名为“.synopsys_dc.setup”的启动文件,用来指定综合工具所需要的一些初始化
信息。启动时,DC 会以下述顺序搜索并装载相应目录下的启动文件:
1)、DC 的安装目录;
2)、用户的 home 目录;
3)、当前启动目录。
1. 将实验文件拷至自己的工作目录:
uunniixx%% ccdd ~~
uunniixx%% ccpp ––rr //ccaadd//LLaabbss//ssyynnooppssyyss//ddcc//DDCC__11__22000044..1122 ..//
2. 进入 risc_design 文件夹。用文本编辑器或者文本编辑命令 vi 打开.synopsys_dc.setup 文
件。
uunniixx%% ccdd DDCC__11__22000044..1122//rriisscc__ddeessiiggnn
uunniixx%% llss ––aa
3. 检查以下语句是否在.synopsys_dc.setup 文件中。
set target_library "core_slow.db"
set link_library "* core_slow.db"
set symbol_library "core.sdb"
set sh_enable_line_editing true
target_library 用于设置综合时所要映射的库,target_library 中包含有单元电路的延迟信
息,DC 综合时就是根据 target_library 中给出的单元电路的延迟信息来计算路径的延迟。
link_library 是链接库,它是 DC 在解释综合后网表时用来参考的库。一般情况下,它和
目标库相同;当使用综合库时,需要将该综合库加入链接库列表中。
注意:在 link_library 的设置中必须包含’*’, 表示 DC 在引用实例化模块或者单元电路时
首先搜索已经调进 DC memory 的模块和单元电路,如果在 link library 中不包含’*’,DC
就不会使用 DC memory 中已有的模块,因此,会出现无法匹配的模块或单元电路的警
告信息(unresolved design reference)。
symbol_library 为指定的符号库。symbol_library 是定义了单元电路显示的 Schematic 的
库。用户如果想启动 design_analyzer 或 design_vision 来查看、分析电路时需要设置
symbol_library。
synthetic_library 是 DesignWare 综合库,在初始化 DC 的时候,不需要设置标准的
DesignWare 库 standard.sldb 用于实现 HDL 描述的运算符,对于扩展的 DesignWare,需
要在 synthetic_library 中设置,同时需要在 link_library 中设置相应的库以使得在链接的
时候 DC 可以搜索到相应运算符的实现。
search_path 指定了综合工具的搜索路径。
图1.2 给出了实验将要用到的文件夹risc_design 的结构。实验的HDL 源代码(source code)
已经被转换为 ddc 格式,保存在子文件夹 unmapped 下。注意:在所有实验中,都必须在文
件夹下 risc_design 启动 Design Compiler。
第 2 页,共 24 页
西安交通大学微电子学实验室
图 1.2 文件夹 risc_design 的结构
启动 design vision
1. 在 risc_design 目录下启动 design vision。留意 LOG 区域的信息”Starting shell in XG
mode…”
risc_design>synopsys.setup
risc_design>design_vision-xg
图 1.3 design vision 图形用户界面(GUI)
2. 选择菜单 File—>Setup,检查库是否设置正确。点击 Cancel 关闭窗口。
第 3 页,共 24 页
Design Compiler 实验
3. 在启动 design vision 的 Terminal 窗口,输入以下命令进一步确认库设置变量(library setup
图 1.4 库设置对话框
variable)。
design_vision-xg-t> printvar target_library
design_vision-xg-t> printvar link_library
design_vision-xg-t> printvar symbol_library
design_vision-xg-t> printvar search_path
读入文件
1. 选 择 菜 单 File — >Read 或 者 直 接 点 击
, 双 击 文 件 夹 unmapped/ , 选 中
PRGRM_CNT_TOP.ddc 并 打 开 。 在 Hier.1 窗 口 你 将 看 到 PRGRM_CNT_TOP,
I_PRGRM_FSM, I_PRGRM_DECODE, I_PRGRM_CNT 的图标。
图 1.5 Hier.1 窗口
2. 选择菜单 File—>Link Design—>OK,查看 LOG 区域有无 warning 或 error 信息。
3. 在 design vision 图形用户界面下方或在启动 design vision 的 Terminal 窗口,输入以下命
令,观察 LOG 区域。
第 4 页,共 24 页
西安交通大学微电子学实验室
design_vision-xg-t> list_designs
design_vision-xg-t> list_libs
熟悉 Designs-, Symbol-, Schematic-视图
1. Designs 视 图 : 左 键 单 击 选 中 PRGRM_CNT_TOP , 在 窗 口 右 下 方 将 观 察 到 :
。
2. Symbol 视图:单击工具栏黄色图标 ,进入 Symbol 视图。
图 1.6 Symbol 视图
3. Schematic 视图:单击工具栏黄色图标 ,进入 Schematic 视图。
4. 现在图形用户界面有三个窗口,最大化其中的一个,点击
图 1.7 Schematic 视图
5. 显 示 Hier.1 窗 口 , 在 Logic Hierarchy 窗 口 分 别 选 中 I_PRGRM_FSM,
中不同的按钮,可以显示不同的窗口。
第 5 页,共 24 页
Design Compiler 实验
I_PRGRM_DECODE, I_PRGRM_CNT,单击工具栏黄色图标 和 ,显示它们的
Symbol 和 Schematic 视图。
6. 除 PRGRM_CNT_TOP Schematic 视图外,关闭其它视图窗口。双击标有 PRGRM_CNT 的块
(BLOCK),点击工具栏图标 回到 PRGRM_CNT_TOP Schematic 视图。
用 Script 文件加约束
1. 打开 PGRRM_CNT_TOP Symbol 视图。
2. 选 择 菜 单 File — >Execute Script... , 弹 出 对 话 框 。 选 中 /scripts 文 件 夹 下 的
example.tcl 文件,选中 Echo commands 选项,然后点击 Open。
图 1.8 用 Script 文件加约束对话框
example.tcl 文件中设置了以下内容:
1) 时钟周期 4ns,时钟歪斜(skew)0.35ns;
2) 除时钟 Clk 端口(port)外,其它所有输入端口由库单元 fdef1a2 驱动;
3) 除时钟 Clk 端口外,其它所有输入端口最大输入延迟(max input delay)为 2.0ns;
4) 所有输出端口最大输出延迟为 2.0ns;
5) 所有输出端口负载为 15×ssc_core_slow/and2a1/A,表示负载是 ssc_core_slow 库中
and2a1 单元的管脚 A 负载的 15 倍;
6) 互连线负载模型为 5KGATES;
7) 最大面积为 2000。电路的面积单位有可能是 2 输入与非门、晶体管或 um2。目标
库到底用哪种面积单位,需要咨询库的供应商。ssc_core_slow 中单元 and2a1 的面
积是 12.54。
第 6 页,共 24 页