Clock gating check
Clock gating check
A clock gating check occurs when a gating signal can control the path of a clock signal at a logic cell.
Figure 2 Gating check inferred - clock at the gating pin not used as a clock downstream.
CLKB is not used as a clock downstream due to the definition of the generated clock of CLKA-
the path of CLKB is blocked by the generated clock definition.
Copyright © 2018 芃苇_PengV. All Rights Reserved.
Clock Gating Checks
If the gating cell is a complex function where the gating relationship is not
obvious, such as a multiplexer or an xor cell, STA output will typically provide a
warning that no clock gating check is being inferred.
However this can be changed by specifying a clock gating relationship for the
gating cell explicitly by using the command : set_clock_gating_check.
Assume that both clocks CLKA and CLKB have the same waveforms.
⚫ The check validates that the gating signal changes before the next rising edge of clock
CLKB at 10ns. Copyright © 2018 芃苇_PengV. All Rights Reserved.
Clock Gating Checks---Active-High Clock Gating
The active-high clock gating hold check requires that the gating signal changes only after the
falling edge of the clock. Here is the hold path report.
The hold gating check fails because the gating signal is changing too fast, before the falling edge of
CLKB at 5ns.
One can see that the hold time requirement is quite large. This is caused by the fact that the sense of
the gating signal and the flip-flops being
C o p y r i ggated
h t © 2 0 1 8 are
芃 苇 _ Pthe
e n g V .same.
All Rights Reserved.
Clock Gating Checks---Active-High Clock Gating
This can be resolved by using a different type of launch flip-flop, say, a negative edge-triggered flip-flop to
generate the gating signal. Such an example is shown next.
Safe clock gating implies that the output of flip-flop UFF0 must change during the inactive part of the gating
clock, which is between 5ns and 10ns. C o p y r i g h t © 2 0 1 8 芃 苇 _ P e n g V . A l l R i g h t s R e s e r v e d .
Clock Gating Checks---Active-High Clock Gating
Here is the clock gating hold report. Notice that the hold time check is much easier to meet with the new
design.
Since the clock edge (negative edge) that launches the gating signal is opposite of the clock being
gated (active-high), the setup and hold requirements are easy to meet.
This is the most common structure used for gated clocks.
Copyright © 2018 芃苇_PengV. All Rights Reserved.
Clock Gating Checks---Active-Low Clock Gating
The gating signal should switch only when the clock is high as illustrated in Figure 8
This check ensures that the gating signal arrives before the clock edge becomes inactive, in
this case, at 4ns.
Copyright © 2018 芃苇_PengV. All Rights Reserved.
Clock Gating Checks---Active-Low Clock Gating
This check ensures that the gating signal changes only after the rising edge of the clock signal, which
in this case is at 0ns.
Copyright © 2018 芃苇_PengV. All Rights Reserved.
Clock Gating Checks---Clock Gating with a Multiplexer
A clock gating check at the multiplexer inputs ensures that the multiplexer select signal arrives at the
right time to cleanly switch between MCLK and TCLK.
Copyright © 2018 芃苇_PengV. All Rights Reserved.
Clock Gating Checks---Clock Gating with a Multiplexer
Figure 10 shows the timing relationships. The select signal for the multiplexer must arrive at the time
MCLK is low. Also, assume TCLK will be low when select changes.
Since the gating cell is a multiplexer, the clock gating check is not inferred automatically, as
evidenced in this message reported during STA.
Warning: No clock-gating check is inferred for clock MCLK at pins UMUX0/S and UMUX0/I0 of cell UMUX0.
Warning: No clock-gating check is inferred for clock TCLK at pins UMUX0/S and UMUX0/I1 of cell UMUX0.
The disable check turns off the clock gating check on the specific pin, as we are not concerned
with this pin.
The clock gating check on the multiplexer has been specified to be an active-high clock gating
check.
Figure 11 shows another clock gating example where the clock to the flip-flop is inverted and the
output of the flip-flop is the gating signal.
Since the gating cell is an and cell, the gating signal must switch only when the clock signal at the and
cell is low. This defines the setup andC ohold clock gating checks.
pyright © 2018 芃苇_PengV. All Rights Reserved.
Clock Gating Checks---Clock Gating with Clock Inversion
The hold check validates whether the data (gating signal) changes before the falling edge of MCLK
at time 10ns. Copyright © 2018 芃苇_PengV. All Rights Reserved.
Clock Gating Checks---Clock Gating with Clock Inversion
In the event that the gating cell is a complex cell and the setup and hold checks are not obvious, the
set_clock_gating_check command can be used to specify a setup and hold check on the gating signal
that gates a clock signal.