generated clock

内部时钟的定义:

create_generated_clock,通过-source,-edges,-divide_by,-multiply_by来执行clock沿。

create_generated_clock -name DIVIDE -source [get_ports SYSCLK] -divide_by 2 [get_pins FF1/Q] 

-source来指定参考时钟,以它的rising edge来进行后续的edge操作。

最后的get_pins,指定generated clock的定义点,之后fanout的clock,称为该clock。

-edges操作,指定{上升沿,下降沿,上升沿}  -edges{1 5 7}

generated clock的定义也会create一个新的clock domain,供PT分析。

generated clock可以进行shift移位,这个时间不作为clock latency来进行计算。

create_generated_clock -edges {3 5 9} -edge_shift {2.2 2.2 2.2} -name DIV3 -source [get_ports SYSCLK] [get_pins U4/QN]

-name选项,指定generated clock的名字。

-edge_shift选项,指定相对于edge的移动时间。

在一个source的port上有多个clock时,可以通过-master_clock来选择某一个作为source。

这时,同时使用-source和-master_clock

generated clock的选择,使用-filter选项或者搜索名字规则。

set_false_path -from [get_clocks CLK_DIV*] -to [get_clocks CLKB]

set_false_path -from [get_clocks CLK* -filter "is_generated==TRUE"] -to [get_clocks CLKB]

去掉定义的generated clock

remove_generated_clock

generated clock的source latency会继承master clock的source latency,所以generated clock的source latency一般会比master的大。

                      PT选择,generated clock内的worst-case path来计算generated clock的source latency。

source latency表示源时钟自带的延时,network latency表示CTS之后clock tree insertion delay,所以DC阶段不需要设置network latency,

                     除非不同的clock有不同的clock tree insertion delay,又不想平衡这些clock,

Pulse clock:算是一种特殊的clock,通过PG模块(Pulse generated)产生,使用set_clock_sense来进行定义,

set_clock_sense -pulse rise_triggered_high_pulse get+pins and2/z

对于pulse的建模有四种方式:rise_tiggered_high_pulse

                                       rise_tiggered_low_pulse

                                       fall_tiggered_low_pulse

                                       fall_tiggered_high_pulse 

通过set_pulse_clock_min_width和set_pulse_clock_max_width来对clock pulse的width进行约束。

原文地址:https://www.cnblogs.com/-9-8/p/5950388.html