一.软件说明
Design Compile是synopsys的综合软件,它的功能是把RTL级的代码转化为门级网表。综合包括转译(Translation),优化(Opitimization),映射(Mapping)三 个过程。在转译的过程中,软件自动将源代码翻译成每条语句所对应的功能模块以及模块之间的拓扑结构,这一过程是在综合器内部生成电路的布尔函数的表达,不 做任何的逻辑重组和优化。优化:基于所施加的一定时序和面积的约束条件,综合器按照一定的算法对转译结果作逻辑优化和重组。在映射过程中,根据所施加的一定的时序和面积的约束条件,综合器从目标工艺库中搜索符合条件的单元来构成实际电路。
RTL design Top-level constraints
Prepare design acs_read_hdl
source src/constraints/to
GTECH database
Compile design acs_compile_design design
Optimized design
Analyze results
Constraints met ? Done
No
Refine design acs_refine_design design
Refined design
DC有两种界面,图形界面通过敲入design vision&调用出来,另一种命令行界面通过dc_shell-t调用。建议初学者使用图形界面,因为图形界面比较容易上手;业界的人士比较青睐命令行界面,因为其所耗的资源少,并且将所用的命令写成综合脚本的形式,便于查阅。
因为门级和代码级不同,代码级考虑的是理想情况,但是实际电路不是这样的,它有门级的延时,线的延时,信号的转换时间,甚至时钟信号到达各个触发器的时间不相等。基于这些考虑,DC通过施加约束,模拟实际环境,根据实际情况得出门级网表。因此如何适当的施加约束是DC的关键所在。
二.库的配置
通过上述说明可知,DC需要通用库和工艺库的支持,DC用到的工艺库是.db或者是.lib格式的,其中.lib格式的文件是可读得,通过此文件可以了解库的详细信息,比如说工作电压,操作温度,工艺偏差等等。.db格式的库是二进制的,不可读。.db格式的库由.lib格式的库通过命令read_lib生成。
目标工艺库(Target_library):
是指将RTL级的HDL描述到门级时所需的标准单元综合库,它是由芯片制造商(Foundry)提供的,包含了物理信息的单元模型。通常芯片制造商提供的基本电路单元有:与非,或非,非门等基本的逻辑单元;还有选择器,与或非,或与非等较复杂的组合逻辑,以及锁存器 (LATCH)和触发器(DFF)等时序逻辑单元。
set target_library
{/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35io122_max.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35io122_min.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35io132_max.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35io132_min.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35os142_max.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35os142_min.db}
链接库(link_library):
链接库可以是同target_library一样的单元库,或者是已综合到门级的底层模块设计,其作用如下:在由下而上的综合过程中,上一层的设计调用底层已综合模块时,将从link_library中寻找并链接起来。
set link_library
{*
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35io122_max.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35io122_min.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35io132_max.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35io132_min.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35os142_max.db
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/models/smic35os142_min.db}
如果需要将已有的设计从一个工艺A转到另一个工艺B时,可以将当前单元综合库A设为link_library,而将单元综合库B设为target_library,重新映射一下即可。
符号库(symbol_libray):
显示电路时,用于标识器件,单元的符号库。
Set symbol_library
{/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/icons/smic35io122.sdb
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/icons/smic35io132.sdb
/app/cadence/smic35-2003.12/smic35/v1.0/synopsys/1999.05/icons/smic35os142.sdb}
搜寻路径(search_path):
给出了DC环境下读入的文件(包括综合库和设计文件)的搜寻路径。
set search_path
[list${synopsys_root}/libraries/syn${synopsys_root}/dw/sim_ver ${synopsys_root}/libraries/35lib]
Setup文件:
在启动DC时,它会自动运行三个setup文件 中的命令。这三个setup文件的文件名均为.synopsys_dc.setup,分别放置在
Synopsys
的安装目录
$SYNOPSYS/admin/setup、用户目录和启动DC时所在的目录。setup文件中一般包含初始化参数变量、设计工艺库名称及路径等相关内容。DC会依次读入上述三个文件中的内容,如果三个文件定义了相同的设置,则后面的文件内容会覆盖从前面文件中读取的内容。
下面是一个典型的setup文件:
#Define the target technology library, symbol library,
# and link libraries
set target_library lsi_10k.db
set symbol_library lsi_10k.sdb
set symthetic_library dw_foundation.sldb
set link_library \"* $target_library $synthetic library\"
set search_path [concat $search_path ./src]
set designer \"Your Name\"
#Define aliases
alias h history
alias rc \"report_constraint -all_violators\"
三.分析工艺库,得出相关信息
库的开头是一些基本信息,如版本号,各种单位(电压单位,电流单位,电阻单位,电容单位等等)和参数.
操作环境:
芯片供应商提供的库通常有max,type,min三种类型,代表操作环境为最坏(worst),典型(type),最好(best)三种情况。芯片的操作环境包括:操作温度,供电电压,制造工艺偏差和RC树模型。一般说来,电压越低,操作温度越高,工艺偏差系数越大,产品速度越慢,反之,速度越快。当电压,温度和工艺偏差有波动的时候,乘以系数K因子来模拟这种影响计算延时。Tree_type定义了环境的互连模型,通过定义这个值选取适当的公式来计算互连线的延迟。
operating_conditions(\"WCCOM\"){
process : 1.2
temperature : 125
voltage : 3.0
tree_type : \"worst_case_tree\
operating_conditions(\"BCCOM\"){
process : 0.8
temperature : 0
voltage : 3.6
tree_type : \"best_case_tree\"
}
operating_conditions(\"NCCOM\"){
process : 1
temperature : 25
voltage : 3.3
tree_type : \"balanced_tree\"
}
从以上的信息可以看出,库支持的芯片在3.0~3.6V之间能正常工作。Worst情况温度最高,电压最低,制造工艺偏差最大,速度最慢。一般在做综合的时候采用worst情况,相应的命令如下:
set_operating_conditions WCCOM
因为DC最为关注的是setup time,如果setup time在最慢的情况下满足要求的话,那么在其他的情况也会满足要求。
也可以将最坏情况和最好情况同时设置,相应的命令为:
set_operating_condition -min BCCOM -max WCCOM
导线负载模型:
库里也提供了导线负载模型,因为在实际电路中,导线也具有电阻和电容,也会有延时,在深亚微米的设计中,连线延时不能忽略。
wire_load(\"8000\")
{
capacitance : 0.000123 ;--单位长度电容
resistance : 0.078E-3; ――单位长度电阻
area : 0.01; ――单位长度面积
slope : 189.0 ; ――斜率
fanout_length(1,28.84);
fanout_length(2,57.4);
fanout_length(3,91.56);
fanout_length(4,163.8);
fanout_length(5,201.950);
fanout_length(6,249.34);
fanout_length(7,269.50);
fanout_length(8,431.2);
fanout_length(9,443.8);
fanout_length(10,553.0);
fanout_length(11,704.2);
fanout_length(12,789.6);
fanout_length(13,800.8);
fanout_length(14,835.8);
fanout_length(15,882.0);
fanout_length(16,918.4);
fanout_length(17,991.2);
fanout_length(18,1138.2);
fanout_length(19,1297.8);
fanout_length(20,1486.8);
}
根据导线负载模型(wire_load_model),DC可以估算出连线的电容,电阻和面积。找出这条线所驱动的负载,得出其扇出数,通过以上网表可以查出相应的线的长度。如扇出数为8,线长为431.2,那么连线的电容为431.2*0.000123个电容单位,连线的电阻为432.1*0.000078个电阻单位,面积为431.2*0.01个面积单位。如果线所驱动的负载超出了所列的范围,就要用到斜率的值。例如,扇出数为28,则对应的长度(length)=1486.8+189.0*(28-20)=2998.8;连线的电容为431.2*2998.8个电容单位,电阻为431.2*2998.8个电阻单位,面积为0.01*2998.8个面积单位。
库里提供了多种导线负载模型,可以根据需要进行选择。
有关导线的命令为set_wire_load_model -name 8000000
导线负载模型模式(wireload model mode)用来选择穿过层次边界时的线的模型,有top,enclosed,segmented三种模式,如果不指定模式,默认的模式是top。有关模式选择的命令是set_wire_load_mode enclosed.
单元描述:
库里面对每个单元都有描述,比如该单元的功能,时间,面积等等。除此之外,对于单元的每个引脚还提供有设计规则约束(DRC),这些值由设计工艺决定,只有满足这些条件的单元在运行时才会操作正常,因此在设计中有很高的权重。包括:
fanout_load:输入引脚的扇出负载,这个值跟max_fanout有关。
Max_fanout:用于定义输出引脚的值。
Max_transition:用于定义输入引脚的最大转换时间;
Max_capacitance:用于定义输出引脚的最大电容。
延时计算:
延时计算有三种模型,CMOS通用延时模型,CMOS线性模型和CMOS非线性查找表模型。目前,前两种模型已经很少用到,最流行的是CMOS非线性查找表模型。
因篇幅问题不能全部显示,请点此查看更多更全内容