Using Pulse Clocks
有三種方法來設定
1. Use a pulse generator cell that has been characterized with pulse generator attributes in
the .lib description.
2. Use the create_generated_clock command to describe the pulse timing with respect
to the source clock.
3. Use the set_clock_sense command to specify the sense of the generated pulses with
respect to the source clock.
方法一
The best method is to use a pulse generator cell that has been characterized in its .lib library
description. In that case, no additional action is necessary in PrimeTime to specify the pulse
clock characteristics. For information about specifying the pulse generator characteristics of
a library cell, see the Library Compiler documentation.
方法二
To specify the generated pulse clock CLKP as a generated clock:
pt_shell> create_generated_clock -name CLKP -source CLK \
-edges {1 1 3} [get_pins and2/z]
Specifying the generated clock as a pulse clock using repeated edge digits (rather than
specifying the pulse clock edge times) ensures correct checking of delays between the
source clock and the pulse clock.
In general, the position of the repeated digit determines whether an active-high or active-low
pulse is generated, and the edge number that is repeated determines the type of edge in the
master clock used to trigger the pulse:
• -edges {1 1 3} -- rising edge of source triggers high pulse
• -edges {2 2 4} -- falling edge of source triggers high pulse
• -edges {1 3 3} -- rising edge of source triggers low pulse
• -edges {2 4 4} -- falling edge of source triggers low pulse
方法三
Instead of using the create_generated_clock command to define a new clock, you can
use the set_clock_sense command to specify the sense of the existing clock:
pt_shell> set_clock_sense -pulse rise_triggered_high_pulse get+pins and2/z
In general, the clock sense of a pulse clock can be specified at a location in the design by
one of the following forms of syntax:
set_clock_sense -pulse rise_triggered_high_pulse object_list
set_clock_sense -pulse rise_triggered_low_pulse object_list
set_clock_sense -pulse fall_triggered_high_pulse object_list
set_clock_sense -pulse fall_triggered_low_pulse object_list
另一個set_clock_sense的例子
set_clock_sense -clock CLK -pulse rise_triggered_high_pulse [get_pins AND/Z]
另外對於propagated latency可以參考
The nominal width of the generated pulses is zero, whether you use a pulse generator cell
defined in the library, the create_generated_clock command, or the set_clock_sense
command. To determine the actual pulse width, PrimeTime considers the different rise and
fall latency values at the pulse generator output pin.
(high pulse width) = (fall network latency) – (rise network latency)
(low pulse width) = (rise network latency) – (fall network latency)
You can allow PrimeTime to calculate the propagated latency from the circuit, or you can use
the set_clock_latency command to specify the latency values (and therefore the pulse
width) explicitly. For example, to set an ideal pulse width to 0.5 for high pulses, for all
registers downstream from pin and2/z, and with an overall latency of 0.6, the commands
would be:
pt_shell> set_clock_latency -rise 0.6 and2/z
pt_shell> set_clock_latency -fall 1.1 and2/z
Constrain Minimum and Maximum Pulse Width in the Fanout of
Pulse Generator Cells
PrimeTime provides the ability to constrain the pulse clock network. The transitive fanout of
pulse generator is referred to as pulse clock network. The clock propagating through the
pulse generator in the pulse clock network is referred to as the pulse clock. However, if the
pulse generator has sequential arcs, its output is not a clock signal unless a generated clock
is defined at the output. Use the
set_pulse_clock_min_width and
set_pulse_clock_max_width commands to constrain the pulse generator networks.
set_pulse_clock_min_width -transitive_fanout value object_list
set_pulse_clock_max_width -transitive_fanout value object_list