(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 constraints
5:优化约束Optimization Constraints
(1) create_clock: 用于定义时钟的周期和波形(duty及起始沿) duty:占空比,指高电平在一个周期所占的时间比率。
命令:create_clock –period 40 –waveform{0 20} [get_ports clk] :表示CLK 周期40ns,上升沿0 ns,下降沿20 ns; 如果不定义waveform, 则默认占空比为50%。
或者:
或者:
#1: set_dont_touch_network:在net或port上设置don’t touch属性,主要用于clock和reset信号,使DC不对这些nets插buffer,留到布局布线时综合。 #2:set_dont_touch:用于对current_design, cells, references, nets设置don’t touch属性,阻止DC对它们进行映射或优化,一般在分模块综合和综合后优化时使用。 例:set_dont_touch [get_cells X_DATA_N_1_33B_reg[0]]
(2) set_clock_uncertainty:定义好时钟后,就要设置时钟不确定性,即反映时钟偏差(clock skew), 一般设为0.2-0.3。
命令:set_clock_uncertainty 0.3 [get_clocks core_clk]
(3) set_clock_latency: 模拟时钟树插入后从时钟输入端口到寄存器clock端口的延时,用于布局布线前的综合和时序分析,一般设0.3-0.8。 命令:set_clock_ latency 0.3[get_clocks core_clk]
set_clock_latency 默认情况下代表:Network Latency
(4) set_input_delay (看另一个总结的时序分析文档)
对于输入和输出延时,若不知要求,可设延时为周期的40% 命令:
set_input_delay –clock clk_name –max max_value –min min_value
命令中的-max 的选项:指定输入的最大延迟,为了满足时序单元建立时间(setup time)的要求。-min的选项:指定输入的最小延迟,为了满足时序单元保持时间(hold time)要求。
例如:set_input_delay –max 5.8 -clock clk_62_5M [all_inputs]
设置所有最大输入延迟为5.8ns,所有输入信号受到clk_62_5M时钟信号约束!
remove_input_delay [get_ports [list clk_62_5M rst]] 去掉像clk、rst这些不需要设置输入延时的信号!
(5) set_output_delay:命令和设置input_delay一样。
(6) set_false_path:虚假路径。
set_false_path 命令用于给出异步电路或者逻辑上不存在的电路,优化的时候所有加在该路径上的限制条件都不予以考虑。如果要取消该设置,使用reset_path命令。 指出异步电路的路径:
如果 CLKA 和 CLKB 是属于不同的时钟晶振,因此,CLKA到 CLKB 的路径是异步电路。 set_false_path –from [get_clocks CLKA] –to [get_clocks CLKB] set_false_path –from [get_clocks CLKB] –to [get_clocks CLKA] set_false_path -through reset
其中reset信号一般采用“异步复位,同步置位”方式(置位是强制置1,复位是强制置0),所以对于reset信号和跨越时钟域的信号,都要设置为伪路径。
其它资料释义:
false path指的是电路中一些不需要考虑时序约束的路径,一般出现在异步逻辑中。对多时钟域或不可实现的路径的处理:用set_false_path指示DC不对这些路径进行时序优化,如果不对false path路径进行标识,DC会对所有的路径进行优化,从而影响关键时序路径。