Other Clock CharacteristicsTransition time The rate of change of signal is termed as slew. Slew is generally measured in terms of transition time which is defiend as the time required for a signal to change from one state to another.
It is also typically measured as per centage of the total voltage change to be undergone. CTS之前由于clock network上的high fanout,delay值的计算非常不准,所以使用set_clock_transition来模拟CTS之后的情况,在CTS时可以给tool添加transition约束,在大多数都满足要求的情况下,这个命令的设置是有意义的。 - set_clock_transition [-rise]
[-fall]
[-max]
[-min]- clock_list
- transition_time
This command is used only during
pre_layout. After CTS is done, this command should never be used for nay post-layout timing analysis. The
-rise
option is used to provide the transition time for the rising edge of clock. Similarly
-fall
is used to provide the transition time for the falling edge of clock. The
-max
and
-min
optionsmodel transition time for maximum and mininum operating conditions. Skew and JitterThe difference in the arrival time at various flops could be because of different paths through clock network, or coupling capacitance or other PVT variaions in the design. The differentce between clock arrivals at differnt points in the desgn is referred to as clock skew. Skew and Jitter
cause lack of predictablility as to when will an exact edge arrive at the point of the trigger (sequential device). Theses are called
Uncertainty. - set_clock_uncertanty [-from|-rise_from|-fall_from from_clock]
[-to|-rise_to|-fall_to to_clock]
[-setup]
[-hold]
[-rise]
[-fall]
[object_list]
Uncertainty_value Intaclock Uncertainty同一个clock设置uncertainty时,需要指定clock或port或pin的名字。object是clock,那么Uncertainty就作用于当前clock的所有时序器件,而当object是pin或者是port时,Uncertainty会作用于定义在当前pin或者port上的所有clocks(相应于这些clock的时序器件)。 可以对setup和hold设置单独的uncertainty,对于同一个clock,setup会受skew和jitter的影响,而hold是同沿check的,只会受skew的影响。在现在的标准library里,如果两个时序器件直连,hold也是可以基本满足的,所以在我们的chip上,skew才是hold的根本原因。 如果interclock没有设置,那么intraclock的设置也会作用于intrerclock。 Interclock Uncertainty当我们需要对interclock进行设置时,source (start) clock is specified using the
-from
option and the destination (end) clock is specified using
-to
option. 同样,-rise_from|-fall_from|-rise_to|-fall_to可以具体到clock的edge,以及-setup和-hold可以对不同的check做设置。 clock uncertainty包含所有需要包含的一些不确定因素,比如之前提到的PVT,以及Library的精确度。当然还有之前一直在说的flow前后需要考虑的比如skew,jitter或者Syn和Pnr的gap等等。 Clock LatencyClock latency has two components - source and network latency. Source Latency
is the delay from the source of the clock to the point where clock is defined (in SDC, through create_clock/create_generated_clock). This source could be on-chip or off-chip. Network Latency
is the time it takes for clock to propagate from the point where clock is defined to the point where it is actually used to trigger the sequential device. The longest path or the one which has maximum delay is often refeerred to as the late path and shortest path or the one which has minimum delay is referred t as the early path. The total latency is the sum of source and network latency. CTS之后,使用set_propagated_clock命令指导工具出去actual circuit elements - including parasitics,这个是network latency,在CTS之后是不需要设置的,而source latency是在CTS之后还要设置的。 - set_clock_latency [-rise]
[-fall]
[-min]
[-max]
[-source]
[-late]
[-early]
[-clock clock_list]- delay
- object_list
Clock Path UnatenessAs clock propagates through the design, it has to pass through combinational elements. When it passes through buffer or gates lik AND/OR, its sense (direction of transition) is preserved. When it passes through inverters or gates like NAND/NOR, its sense is inverted. In eigher case, it is possible to figure out the sense of the clock, alogn its path. Such a clock where based on its propagation, you can figure out the sense of the arriving clock edge at flip flops is said to be
unate. In some cases, depending on the circuit it may not be posible to figure out the sense, such a clock path is said to be
non unate. For such clock paths, we can use
set_clock_sense
command to pick which sense (possitive or negative) - set_clock_sense [-positive|-negative|-stop_propagation]
[pulse pulse]
[-clock clock_list]- pin_list
Ideal Network在综合时候,为了便于优化我们会设置ideal network.
还有比如scan或者不同mode的path。 - set_ideal_network [-no_propagate]
- object_list
对ideal network也可以设置transition和lantency。 set_ideal_transition and set_ideal_lantency |