《DC综合操作流程-设置流程》由会员分享,可在线阅读,更多相关《DC综合操作流程-设置流程(29页珍藏版)》请在金锄头文库上搜索。
1、总流程1:库的设置2:设计的读入3:设置环境属性(1)set_operating_conditions(2)set_wire_load_model和set_wire_load_mode(3)set load(4)set_drive或者set_driving_cell4:设计规则约束(1)set_max_transtion(2)set_max_capacitance(3)set_max_fanout5:优化约束(1)create_clock(2)set_clock_uncertainty(3)set_clock_latency(4)set_input_delay(5)set_output_del
2、ay(6)set_false_path(7)set_multicycle_path(8)set_max_delay和set_min_delay(9)set_max_area7:一些编译命令及DC的输出格式注意:1:在前端设计中一般不做hold_time的约束,hold_time的约束可以在后端修复!总流程:1:对库进行基本设置,如下:设置完成后应该查看.synopsys_dc.setup里面库的设置和软件application setup处的设置是否一样!DC的初始化文件.synopsys.dc.setup需要用ls a显示,命令:more .synopsys.dc.setup查看文件内容!2
3、:读入设计,两种方法:read和analyze+elaborateAnalyzer是分析HDL的源程序并将分析产生的中间文件存于work(用户可以自己指定)的目录下;Elaborate则在产生的中间文件中生成verilog的模块或者VHDL的实体缺省情况下,elaborate读取的是work目录中的文件3:设置环境定义:如果不指定operating_conditions,DC自动搜索link_library中的第一个库的工作环境作为优化时使用的工作环境。(1) set_operating_conditions:工作条件包括三方面温度、电压以及工艺;工作条件一般分三种情况:best case,
4、typical case, worst case图形界面:#1:先进入the symbol view of the top界面,选择top模块#2:attributesoperating environmentoperating conditions命令方式:#1:可通过report_lib libraryname命令来查看,如下图查看的是slow.db库的工作条件,则使用命令:report_lib slow,右边是report_lib fast。另外一个例子,只是为了说明库中的library name必须是用report_lib命令得到下面图形中的conditions里面的库的name:(*
5、自己想的*)#2:一般综合时候只需考虑最差和最好两种情况即可,最差情况用于做建立时间(setup time)的时序分析,最好情况用于做保持时间(hold time)的时序分析。最差情况-max下使用slow.db库,最好情况-min下使用fast.db库;最差和最好情况和温度以及电压有很大关系,温度越大,延时越大;电压越大,延时越小;不过温度对延时的作用更大 所以: #1: 做建立时间分析时候用最差情况,命令: set_operating_conditions max “slow” #2: 如果既要分析建立时间,又要分析保持时间,则需要两条命令: set_min_library slow.db
6、 min_version fast.db set_operating_conditions min fast max slow首先通过命令set_min_library同时设置worst-case和best-case的library,然后通过set_operating_conditions命令指定不同环境下使用的库模型;上面的命令指定的是:fast库用于对hold time优化,slow库用于对setup time进行优化。set_operating_conditions min fast max slow命令中的min fast和max slow可以互换。(2) set_wire_load_
7、model和set_wire_load_mode命令方式:#1:set_wire_load_model: 设置连线负载模型, 为了估计模块输出的时序transition time;DC默认输出负载为0负载模型可以通过report_lib libraryname命令下查看线的模型种类,如下图是fast.db库中的几种线的模型。在布局布线前应使用较悲观的模型,对最坏的情况做综合,线负载模型由目标库提供。-max min选项指定该模型用于估计最大路径延迟和最小路径延迟。例如:(写一个即可)set_wire_load_model -name tsmc13_wl40 -min set_wire_load
8、_model -name smic13_wl50 max :最坏情况或者可以直接设置负载模型: set_wire_load_model -name tsmc13_wl40 -library slow表示使用的是slow库里的tsmc13_wl40线模型。#2:自己不清楚如何选择的话,则让DC自动选择 set auto_wire_load_selection true#3:上面的设置完成后,需要对负载模块的使用位置加以说明,三种模式,命令如下:set_wire_load_mode top 或set_wire_load_mode enclosed 或set_wire_load_mode segme
9、nted 关系如下:top: 指定模块互连线延迟的估计使用顶层模块的线负载模型enclosed: 指定模块互连线延迟的估计使用包含该连线的最小模块的线负载模型segmented: 将连线按模型边界分段,各段的延迟分别按照各自模块的线负载模型估计延迟,然后把估计结果相加得到该连线的延迟一般情况下使用的是:set_wire_load_mode top图形界面:上图中的第一步指的是先选择top模块,然后设置top模块下的环境属性。*附加:还可以给某个模块设置负载模型:(下面设置timer模块)* set current_design timer *先转到timer模块下*set_wire_load_
10、model -name tsmc13_wl40 或者下面的:(3) set load:设置输出负载 比较精确地计算输出电路的延迟,DC需要知道输出电路驱动的所有负载。该命令有两种用法:一种是直接给端口赋一个具体的值,另一种是结合命令load_of指出它的负载相当于工艺库中哪个单元的负载值。命令方式:#1:set_load 5 get_ports OUT1 #2:set_load load_of my_lib/and2a0/A get_ports OUT1说明OUT1端口接的负载值地my_lib中and2a0单元的A管脚的负载值。#3:把上面命令set_load load_of my_lib/a
11、nd2a0/A get_ports OUT1中的get_ports OUT1换为all_outputs就可以给全部输出端口赋值。其中load_of命令可以算出某个引脚的负载电容值。电路负载的大小会影响到它的延迟,而且负载越大,延迟越大,DC在缺省情况下认为端口的负载电容都是0,因此具有无穷大的驱动能力。图形界面:必须先选中全部的输出负载然后再设置负载值!*具体如何找这个负载不清楚!*(4) set_drive或者set_driving_cell:设置输入驱动。为了更加准确估计模块的输入时序,为了更加准确的估计输入电路的延迟,DC需要知道信号到达输入端口的过渡时间(transition time
12、)。默认下,DC认为输入驱动的驱动能力无限大,即transition time=0;Set_drive使用确定的值来估计输入端的输入电阻,从而得到输入端口的延迟;set_driving_cell是假定一个实际的外部驱动单元来估计输入的transition time;该命令用于设置输入端口或者双向端口上的电阻值,该电阻值是用于驱动输入端口的单元的输入电阻,因此,该值越大,就说明输入端口的驱动能力越弱,连线的延迟也就越大。更常用的是set_driving_cell命令,以库中某个单元电路的引脚驱动能力为基准来模拟输入端口的驱动能力。例1:首先通过drive_of指定具体的驱动单元电阻值,得到驱动单
13、元电阻后,通过:set_drive+值+get_ports clk 命令给输入端口clk赋值。下图是给除了clk以外的其它输入端口驱动:4:设计规则约束约束(DRC:design_rule_constraint)DRC规则的优先级: transitionfanoutcapacitance(1) set_max_transtion:设置最大传输时间连线的转换时间是其驱动引脚的逻辑电平变化的时间,包括rising time和falling,从10%的VDD变化到90%的VDD所需的时间。设定最大的转换时间set_max_transtion,这个值一般设为周期的10%。例如:set_max_tran
14、stion 1.8 current_design 一般情况下current_design指的是top。(2) set_max_capacitance:输出管脚可以驱动的最大电容值定义输出管脚可以驱动的最大电容值。例:set_max_capacitance 1.5 get_ports out1 或者set_max_capacitance 1.5 get_designs top(3) set_max_fanout:设置最大扇出负载连线的最大扇出负载指的是它所驱动的所有输入引脚的扇出负载的总和。扇出负载不同于负载,它是个无量纲的数值。max_fanout经验值一般设为20,即一个门的输出最多驱动20个输入引脚(如果每个引脚的输出负载是1的话)。*计算fanout值,如下*或者: set_max_fanout 3.0 all_outputs图形界面:在attributes-optimization constraints-design constraints5:优化约束Optimization Constraints(1) create_clock: 用于定义时钟的周期和波形(duty及起始沿)du