Synopsys 综合工具Design CompilerDC)简介
一.约束的基本概念:
约束就是对用户的设计中可度量的电路参数(如时序、面积以及电容等)进行声明。没有约束,工具(本文为DC)就不能有效地优化电路,以满足要求。
当DC对设计进行优化时,使用了两类约束:
1) 设计规则约束(Design Rule Constraints, DRC):此类约束是工具固有的,由工艺库(technology library)来定义。此类约束是设计功能正确的必要条件,通过库应用于所有设计上。当然,你可以将它们定义的更紧。
2) 优化约束(Optimization Constraints):它们是由用户定义的,前提是可实现的。
用户在使用DC时,可以通过命令行或编写约束文件(.scr)来定义约束。下图给出DC主要的DRC及优化约束,以及相关的DC命令(dc_shell接口命令)。
DRC:
最大转换时间(Max Transition Time):对于一条连线(net)来说,是其驱动pin逻辑值转化的最长时间。
最大扇出(Max Fanout):对于驱动pin来讲。
最大/最小电容(Max/Min Capacitance):用来控制连线的电容值。
器件退化(Cell Degradation):某些工艺库包括器件退化表,它列举了某一器件可驱动的最大电容,是该器件输入pin最大转换时间的函数。
优化约束:
时序约束:包括
    输入/输出延迟(Input/Output Delay):同步路径
    最大/最小延迟(Minimum/Maximum Delay):异步路径
最大面积(门数):
最小孔隙度(Min porosity):可布线性
二.约束报告
约束报告提供了设计规则和优化约束的信息。可采用如下命令产生相应报告:
report_constraint
          report_port
report_clock
report_attribute
report_timing_requirements
用户可通过输出相应报告,来分析设计是否满足了约束。如下例使用report_constraint报告一个计数器的设计约束结果。可看到最后若干项不符合约束定义。
Example
dc_shell> report_constraint
****************************************
Report : constraint
Design : counter
Version: v1998.02
Date : Wed Jan 14 1998
****************************************
Weighted
Group (max_delay/setup) Cost Weight Cost
---------------------------------------------------------
CLK 0.001.00 0.00
default 0.001.00 0.00
---------------------------------------------------------
max_delay/setup 0.00
Total Neg Critical
Group (critical_range) Slack Endpoints Cost
-----------------------------------------------------
CLK 0.00 0 0.00
default 0.00 0 0.00
-----------------------------------------------------
critical_range 0.00
Constraint Cost
-----------------------------------------------------
max_transition 0.00 (MET)
max_fanout 0.00 (MET)
max_delay/setup 0.00 (MET)
critical_range 0.00 (MET)
min_delay/hold 0.40 (VIOLATED)
max_leakage_power 6.00 (VIOLATED)
max_dynamic_power 14.03 (VIOLATED)
max_area 48.00 (VIOLATED)
min_porosity 2.00 (VIOLATED)
三. 基本综合流程
一个基本的综合流程如下图所示,它包括如下步骤:
1) 开发HDL模型
2) 启动DC shell界面
3) 指定相关库
4) 读入设计
5) 定义设计环境
6) 选择编译策略
7) 设置设计约束
8) 优化
9) 分析与调试
10) 保存设计数据
11) 退出shell界面
3.1开发HDL模型
为了达到最佳综合结果,HDL文件编写应注意如下三方面:
1. 设计数据管理:为了简化数据的交换、查,以及开发数据策划和版本控制方法,设计者应遵循一定的规则,其中包括文件生成、维护及删除规则;文件命名规范;设计的层次化目录管理等。
2. 设计划分(partitioning):对于大的设计来说,设计划分的好坏影响综合结果。划分得当会减少编译时间并简化约束定义。
3. shell界面设计编码(Coding):好的HDL编码可以产生小而快的设计。
3.2启动DC shell界面
如果要进入dc_shell,可在系统提示符下键入
        %dc_shell
3.3 指定相关库
DC使用了如下一些库:
a) 工艺库:半导体生产厂定义的器件信息,如器件名、器件管脚名、延迟时间以及管脚负载等。采用link_library及target_library变量指定。
b) 符号库:定义了DA(Design Analyzer)的可视符号。采用symbol_library变量指定。
c) 宏单元库(DesignWare):提供很多内建HDL算子的实现模块。
3.4 读入设计
DC既可以读入RTL设计又可以读入门级网表。RTL设计可采用analyze和elaborate命令读入,而网表采用read_file读入。