-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所示)。
4.1.2 设置输入延时
输入延时的概念可用图4-3来解释。
在图4-3中,假设时钟周期为Tc,外部逻辑中,触发器的传输延时为Td,组合逻辑M的延时为TM,待综合的逻辑中,组合逻辑N
的延时为TN,触发器的建立时间为TS。则有: Tc = Td + TM + TN + Ts (1) 即:
TN + Ts = Tc – ( Td + TM ) (2)
当系统时钟设置完毕后,Tc已经确定,对待综合模块的输入部分加以约束(即设定TN+Ts的值),可以通过设定Td + TM来实现。这里的Td + TM就是DC定义的(对于待综合模块的)输入延时。若外部逻辑是寄存器直接输出,则TM = 0,输入延时就是外部逻辑触发器的延时,一般为1ns或更小。
在DC中,可以使用set_input_delay命令来设置输入延时(该命令对当前设计有效),其命令格式如下: set_input_delay -clock <时钟名> -max -min <延时值> <端口名列表>
-clock <时钟名>:输入延时所参考(关联)的时钟 -max:指定输入延时的最大值 -min:指定输入延时的最小值
<延时值>:输入延时的大小,单位一般为ns <端口名列表>:设定输入延时的端口