赢得连线负载为TSMC16K。此外,相同的设计规模所对应的连线负载还有保守的(Conservative)和激进的(Aggressive)之分。
Wire Loading Model Selection Group: Name : WireAreaCon Selection Wire load name min area max area
------------------------------------------- 0.00 360000.00 TSMC8K_Conservative 360000.00 810000.00 TSMC16K_Conservative 810000.00 1690000.00 TSMC32K_Conservative 1690000.00 3240000.00 TSMC64K_Conservative 3240000.00 5760000.00 TSMC128K_Conservative Wire Loading Model Selection Group: Name : WireAreaAgr Selection Wire load name min area max area
------------------------------------------- 0.00 360000.00 TSMC8K_Aggresive 360000.00 810000.00 TSMC16K_Aggresive 810000.00 1690000.00 TSMC32K_Aggresive 1690000.00 3240000.00 TSMC64K_Aggresive 3240000.00 5760000.00 TSMC128K_Aggresive Wire Loading Model Mode: segmented.
使用set_wire_load_model命令来设置连线负载,其语法为: set_wire_load_model -name <连线负载名> -library <库名称> <对象列表>
-name? <连线负载名>:设定的连线负载
-library? <库名称> :定义工作环境的库,若当前尽读入唯一的目标库,则改选项可省略 ? <对象列表>:设定连线负载的对象
例 3-3(将ddfs的连线负载设为TSMC8K_Conservative):
set_wire_load_model –name TSMC8K_Conservative -library tcb773stc ddfs
在图形界面中,选中ddfs设计,选择Attributes -> Operating Environment -> Wire Load菜单,即弹出连线负载设置对话框。在此对话框中即可选择所需的连线负载(此例中选择TSMC8K_Conservative)。这一过程如图3-2所示。
3.2.2 设置连线负载模式
连线负载模式规定了跨越多个模块层次的连线其连线负载的计算方式,DC供支持三种连线负载模式: ? top:某一模块的连线负载设为top模式意味着该模块及其子模块中所有连线的连线负载大小均取该模块的值
? enclosed:某一模块的连线负载设为enclosed模式意味着该模块及其子模块中所有连线的连线负载大小的取值与恰好能完全包含该连线的最底层模块的连线负载大小一致。
segmented:这是一种分段模式,意味着一根连线上不同段的连线负载不同,某一段地连线负载与恰好包含该段的最底层模块的连线负载大小一致。?
set_wire_load_mode命令用来设置连线负载模式(该命令对当前设计有效),该命令的格式如下: set_wire_load_mode <模式名>
? <模式名>:连线负载模式的名称,为 “top”、“enclosed”、“segmented”中的一项 例 3-4(将ddfs的连线负载模式设为top): current_design ddfs set_wire_load_mode top
注意:该功能无法通过图形界面实现 3.3 设置输出负载
为了更精确地计算电路的延时,DC需要知道设计的输出端驱动的负载大小(主要是电容)。用户可以通过set_load命令来为输出端设置负载(该命令对当前设计有效),其语法为: set_load <负载电容值> <对象列表>
? <负载电容值>:设定的负载电容值,必须为非负数,其单位在库文件中定义 ? <对象列表>:设定负载电容的对象,可以是输出口、输出管脚、互连线等 例 3-5(将ddfs的所有输出口的输出负载设为0.1pF) current_design ddfs set_load 0.1 all_ouputs()
在图形界面中,进入ddfs设计的符号描述,选中一组输出端口,选择Attributes -> Operating Environment -> Load菜单。在弹出的Load对话框的Capacitive load域中填入1.00即可(如图3-3所示)。
3.4 设置输入驱动
为了精确计算电路的延时,DC还需知道设计输入端的驱动能力的情况。用户可以利用set_driving_cell命令来指定一个驱动设计输入端的外部单元(该命令对当前设计有效),该命令的格式如下:
set_driving_cell -lib_cell <库单元名> -library <库名称> -pin <管脚名> -no_design_rule <端口名列表>
-lib_cell? <库单元名>:用于驱动设计输入端的外部单元名称
-library? <库名称>:上述单元所在库的名称,若当前仅读入唯一的目标库且驱动单元就在该库中,则改选项可省略
-pin? <管脚名>:用于驱动设计输入端的外部单元管脚的名称
? -no_design_rule:改选项要求DC忽略外部驱动单元管脚上的设计规则 ? <端口名列表>:设置驱动的设计端口
例 3-6(将ddfs的所有输入端的驱动单元设置为DFF1的管脚Q,并忽略该管脚上的设计规则) current_design ddfs
set_driving_cell –lib_cell DFF1 –pin Q –no_design_rule all_inputs() 注意:该项功能无法通过图形界面实现。
由于通常情况下,设计的时钟和复位端都由驱动能力很大的单元或树形缓冲来驱动,所以可以用set_drive命令将这两个端口的驱动设为无穷大(该命令对当前设计有效),命令语法为: set_drive <阻抗> <端口名列表>
? <阻抗>:非负的驱动阻抗,该值越小表示驱动能力越大 ? <端口名列表>:设置驱动能力的端口名
例 3-7(将ddfs的时钟和复位端的驱动设为无穷大,即驱动阻抗设为零): current_design ddfs set_drive 0 {clk, reset}
在图形界面中,进入ddfs设计的符号描述,选中其中一个输入端口,选择Attributes -> Operating Environment -> Drive Strength菜单。弹出Drive Strength对话框后,将Rise Strength和Fall Strength域都设为0即可(如图3-4所示)。
DC学习---第四章 设计约束
作者:未知 时间:2010-08-15 15:09:34 来自:网络转载
设计约束描述了设计的目标,这里所说的设计目标主要包括时延目标和面积目标两部分,相应的,设计约束也由时延约束和面积约束两部分组成。 4.1 时序电路的时延约束
时序电路的时延约束主要包括时钟主频、输入延时、输出延时等内容。 4.1.1 创建时钟
在DC中使用create_clock命令创建系统时钟(该命令对当前设计有效),该命令的语法如下: create_clock <端口名> -period <周期> -waveform <边沿列表> <端口名>:设计的时钟端口
-period <周期>:时钟周期,单位一般为ns
-waveform <边沿列表>:时钟上升沿和下降沿的时刻,从而决定时钟信号的占空比。一般上升沿的时刻设为0
例4-1 (为ddfs设计创建一个5ns的时钟,时钟端口为clk,占空比为1:1) current_design ddfs
create_clock clk –period 5 –waveform {0 2.5}
由于时钟端的负载很大, DC会使用Buffer来增加其驱动能力。但是一般情况下,设计者都使用布局布线工具来完成这项工作,所以有必要指示DC不要对时钟网络进行修改,可以使用以下命令: set_dont_touch_network clk
在图形界面中,进入ddfs的符号描述,选中其时钟端(clk),选择Attributes -> Clocks -> Specify菜单。在弹出的Specify Clock对话框的Period域中填入指定的周期值(本例中是10),并选择Don’t Touch Network复选框即可(如图4-1所示)。完成以上步骤后,可以在ddfs的clk端口上看到红色的方波标志(如图4-2所示)。
相关推荐: