set_input_delay和set_output_delay类似,-clock设定约束的时钟,-max设定setup约束,-min设定hold约束。设定的数值,是current_design外部“吃掉的”部分。比如: set_input_delay [expr $delay] -max -clock $clk [get_ports $port] 反过来看,-max可以认为是外部的late timing path,-min可以认为是外部的early timi...
例如,限制一个 reset 信号:由于 reset 信号跨越了不同的模块,因此, 一般在顶层模块中对该模块做限制: set_max_delay 5 –from reset 即指定所有 reset 信号出发的路径的最大延迟都为 5 。限制一个从 IN 输入到 OUT 输出的最小路径: set_min_delay 10 –from IN –to OUT。 这里的IN和OUT是PORT,我改...
使用set_load 对输出电容值进行约束,单位根据工艺库的define所定。 2.13 DC是基于path的综合,那么在约束时如何体现? 我们知道,基于path会有四种路径形式,DC中提供 create_clock 定义寄存器和寄存器之间的路径; set_input_delay 定义输入与寄存器之间的路径; set_output_delay 定义寄存器与输出之间的路径; set_max_de...
在这种情况下,set_cost_priority -delay这个命令就能使综合工具在优化过程中优先考虑timing,从而综合出图1的网表,即便有一些DRC violation,我们也可以放到后端去修复。因此,我们如果在分析综合网表的时候(在DC中使用report_timing)看到有较长的buffer tree导致的timing violation,并且每级buffer的fanout都较小,可以考虑...
(1)set_max_transtion (2)set_max_capacitance (3)set_max_fanout 5:优化约束 (1)create_clock (2)set_clock_uncertainty (3)set_clock_latency (4)set_input_delay (5)set_output_delay (6)set_false_path (7)set_multicycle_path (8)set_max_delay和set_min_delay (9)set_max_area 7:一些编译...
有一个比较常用的方法,使用set_cost_priority -delay。 DC综合过程中默认的优化是有优先级顺序的,即DRC>timing。有的时 候会出现某些路径的优化考虑了DRC而忽略timing,导致timingviolation的 出现。比如以下这种情况: 上图所示的电路中第一级buffer驱动了fanout为3的buffertree(这里只 ...
set_multicycle_path -hold -1 ... 然后根据要求设置最大最小延迟。 有了上面的认识,我们大约可用了解: 如果设置了最大延迟,那么信号只能在最大延迟前变化, 如果设置了最小延迟,那么信号只能在最小延迟后变化。 所以我们设置成: set_output_delay -max -S1 ... set_output...
set_input_delay -max 1.02 -clock my_clk -add_delay -clock_fall -network_latency_included -source_latency_included [get_ports sel] 怎么理解这句约束呢?我们先来看一下set_input_delay -max这个命令的约束选项: 首先是420ps的延时,这是直接给出了外部的延时;然后呢,又有时钟信号的延时600ps,因此我们...
set compile_auto_ungroup_delay_num_cells 100(默认值=500) 也就是说,假设你有一个模块A是一个小的乘法器,并且调用了模块B,一个模块B是一个小的加法器,使用没有设置这条命令的情况综合,那么我们可以看到模块A中乘法器对应的门电路是哪些,同样也可以看到模块B的加法器是由哪些门电路构成的,模块A和模块B之间...
set_multicycle_path -hold -1 ... 然后根据要求设置最大最小延迟。 有了上面的认识,我们大约可用了解: 如果设置了最大延迟,那么信号只能在最大延迟前变化, 如果设置了最小延迟,那么信号只能在最小延迟后变化。 所以我们设置成: set_output_delay -max -S1 ... set_output...