Professional Documents
Culture Documents
Domains
Products:
Tempus
Innovus Implementation System
Encounter Digital Implementation (EDI)
Encounter Timing System (ETS)
Copyright Statement
© 2017 Cadence Design Systems, Inc. All rights reserved worldwide. Cadence and the Cadence logo are
registered trademarks of Cadence Design Systems, Inc. All others are the property of their respective
holders.
Table of Contents
Purpose ....................................................................................................................... 4
Defining Multicycle path for Slow clock domain to Fast clock domain ....................... 10
CASE 1: No MCP: Setup multiplier - 1, Hold multiplier - 0 ..................................... 10
CASE 2: Setup multiplier - 2, Hold multiplier - Default ........................................... 11
CASE 3: Setup multiplier - 2, Hold multiplier - 1 ..................................................... 11
CASE 4: Setup multiplier 2, Hold multiplier 1 ......................................................... 12
Defining Multicycle path for Fast clock domain to Slow clock domain ....................... 13
CASE 1: No MCP: Setup multiplier 1, Hold multiplier 0 .......................................... 13
CASE 2: Setup multiplier 2, Hold multiplier – Default ............................................. 14
CASE 3: Setup multiplier 2, Hold multiplier 1 ......................................................... 14
CASE 4: Different launching and capturing clock edge .......................................... 15
Support ...................................................................................................................... 17
Feedback ................................................................................................................... 17
Purpose
This document explains how to specify multicycle path exception between two clock
domains of different frequencies.
The default launching and capturing clock edges are defined to be the pair of edges with the
smallest positive difference between the capturing clock edge and the launching clock edge. The
default active edges are the propagated versions of the clock edges, measured at the launch and
capture registers.
By default, or if the -end option is specified, the setup multiplier specified with -setup option is
interpreted with respect to the capture clock, and it affects the capturing clock edge. Instead of
the default capturing clock edge, the edge which arrives (setup multiplier - 1) cycles later is used.
If the -start option is specified, the setup multiplier specified with -setup option is interpreted with
respect to the launch clock, and it affects the launching clock edge. Instead of the default
launching clock edge, the edge which arrives (setup multiplier -1) cycles earlier is used.
For all paths affected by a set_multicycle_path command, the default hold edge pair is chosen by
considering two hold conditions with respect to the adjusted setup edge pair. If no setup
adjustments have been made, the default setup edges are used. The following two hold
conditions are checked, and the one with the least hold slack is chosen for hold check.
- Data triggered by the current launch clock cycle must not be latched by the previous capture
clock cycle. This condition defines a hold edge pair where the hold launching clock edge is
the same as the setup launching clock edge and the hold capturing edge is one clock cycle
earlier than the setup capturing clock edge.
- Data triggered by the next launch clock cycle must not be latched by the current capture
cycle. This condition defines a hold edge pair where the hold launching clock edge is one
cycle later than the setup launching clock edge, and the hold capturing clock edge is the
same as the setup capturing clock edge.
By default, or if -start option is specified, the hold multiplier specified with -hold option is
interpreted with respect to the launch clock, and it affects the launching clock edge. Instead of
using the default launch edge, the launching edge which arrives hold multiplier cycles later is
used.
If -end option is specified, the hold multiplier specified with –hold option is interpreted with
respect to the capture clock, and it affects the capturing clock edge. Instead of using the default
capturing clock edge, the capturing edge which arrives hold multiplier cycles earlier is used.
So, for setup check, you can either move the capturing clock edge forward or the launching clock edge
backward and for hold checks, you can either move the launching clock edge forward or the capturing
clock edge backward.
Setup Check
Hold Check
Blue Color arrow is the default clock edge movement in setup and hold checks.
Above diagram shows how the check points for setup and hold checks are moved backward or forward
depending on the -start/-end option and number of cycles for that path.
By default, set_multicycle_path moves the capturing clock edge for setup check and the launching clock
edge for hold check. You can control the movement by using the -end and -start options of the
set_multicycle_path command.
For a single clock domain path, there is no need to specify -end or -start option. These options have no
effect in single clock domain path.
But for a clock domain crossing path, moving the launching clock edge forward by one cycle is not equal
to moving the capturing clock edge backward by one cycle. The different options give different results.
In this document:
Red color arrow in the clock waveform is launching -> capturing clock edge pair for setup check.
Red color dotted arrow in the clock waveform is ignored launching -> capturing clock edge pair for setup
check.
Blue color arrow in the clock waveform is launching -> capturing clock edge pair for hold check.
Blue color dotted arrow in the clock waveform is ignored launching -> capturing clock edge pair for hold
check.
CK1 CK2
CK1 0 1 2 3 4 5 6 7 8 9 10
S
CK2
0 1 2 3 4 5 6 7 8 9 10
Setup 1, Hold 0
In this case, setup check will be done between the launching edge in first cycle and capturing clock edge
in the next cycle. The hold check will be done in between the launching edge in first cycle and capturing
edge in the same cycle so that the data launched by the setup launching edge is not captured by the
previous capturing edge.
Setup Report:
+---------------------------------------------------------------+
| Instance | Arc | Cell | Delay | Arrival | Required |
| | | | | Time | Time |
|----------+-------------+---------+-------+---------+----------|
| F1 | CK ^ | | | 0.000 | 1.713 |
| F1 | CK ^ -> Q v | DFFHQX1 | 0.107 | 0.107 | 1.820 |
| B2 | A v -> Y v | BUFX2 | 0.059 | 0.166 | 1.879 |
| F2 | D v | DFFHQX1 | 0.000 | 0.166 | 1.879 |
+---------------------------------------------------------------+
Hold Report:
CK1 0 1 2 3 4 5 6 7 8 9 10
S
H
CK2
0 1 2 3 4 5 6 7 8 9 10
Setup 4, Hold Default
In this case, setup check will be done between the launching edge in first cycle and capturing edge after
four cycles. Changing the setup relationship implicitly changes the hold relationship as well because all
hold relationships are based on the valid setup relationships. The hold check can be done in between the
Learn more at Cadence Online Support - https://support.cadence.com
© 2017 Cadence Design Systems, Inc. All rights reserved worldwide. Page 8
Multicycle Path Between Two Clock Domains
launching edge in first cycle and capturing edge after three cycles (previous to setup capturing edge) or in
between the launching edge in second cycle and capturing edge after three cycle (setup capturing edge).
CK1 0 1 S 2 3 4 5 6 7 8 9 10
CK2
0 1 2 3 4 5 6 7 8 9 10
Setup 4, Hold 3
In this case, the setup check will be done between the launching edge in first cycle and capturing edge
after four cycles. The hold multiplier 3 specified with -hold will move the launch edge forward by three
clock cycles with respect to the default position (relative to the valid setup relationship) or capture edge
backward by three clock cycles with respect to the default position.
If you specify only setup multiplier and do not specify hold multiplier, tool by default assumes one clock
cycle before setup check for hold check as in CASE 2. This may not be the correct behavior for the
design. To get the desired behavior, you can move the hold check back towards the start of the multicycle
period by specifying hold multiplier = (setup multiplier -1) with ‘-hold’ option as in CASE 3.
In general, if your setup multiplier is X, use the multiplier of X-1 for hold:
CK1 0 1 2 3 4 5 6 7 8 9 10
S
H
CK2
0 1 2 3 4 5 6 7 8 9 10
No MCP: Setup 1, Hold 0
In this case, the closest capturing edge that occurs after the launching edge is selected for setup check.
Hence, 0 -> 2 edge pair is selected for setup check.
The closest capturing edge that occurs at or before the launching edge is selected for hold check. In this
case, the possible edge pairs are 0 -> 0 and 4 -> 2 and 0 -> 0 edge pair is selected for hold check.
CK1 0 1 2 3 4 5 6 7 8 9 10
H S
CK2
0 1 2 3 4 5 6 7 8 9 10
Setup 2 (-end), Default Hold
In this case, setup multiplier is set to 2 and hold multiplier is not specified. So the capturing clock edge is
moved forward (Using the default -end) for setup check. In this case even multicycle for the hold is not
specified, the hold check is updated upon the setup check. The default hold edge pair is chosen by
considering two hold conditions with respect to the adjusted setup edge pair. In this case, the possible
edge pairs are 0 -> 2 and 4 -> 4. The 0 -> 2 edge pair minimizes the hold slack and hence chosen for
hold check.
CK1 0 2 4 6 8 10
S H
CK2
0 1 2 3 4 5 6 7 8 9 10
Setup 2 (-end), Hold 1 (-start)
In this case, setup multiplier is set to 2 and hold multiplier is set to 1, so for hold check launch clock edge
(Using the default -start) is moved forward by one clock cycle.
This may not be a correct check. The correct hold check should be done at the first capturing clock edge
relative to first launching clock edge. Please see the next case to see the correct check.
CK1 0 2 4 6 8 10
S
H
CK2
0 1 2 3 4 5 6 7 8 9 10
Setup 2 (-end), Hold 1 (-end)
In this case, setup multiplier is set to 2 and hold multiplier is set to 1 relative to the capturing clock, CK2
(Using the -end option). So, the hold check is moved one clock backward relative to capturing clock,
CK2.
In general, for defining multicycle path between slow clock to fast clock path, please use following:
CK1 0 1 2 3 4 5 6 7 8 9 10
S H
CK2
0 2 4 6 8 10
No MCP: Setup 1, Hold 0
In this case, the closest capturing edge that occurs after the launching edge is selected for setup check.
Hence, 2 -> 4 pair is selected for setup check.
The closest capturing edge that occurs at or before the launching edge is selected for hold check. Hence,
0 -> 0 or 4 -> 4 pair is selected for hold check.
CK1 0 1 2 3 4 5 6 7 8 9 10
S H
CK2
0 2 4 6 8 10
Setup 2 (-start), Default Hold
In this case, setup multiplier is 2 relative to launch clock and hold multiplier is not defined. So the
launching clock edge is moved backward (Using the –start option) for setup check. In this case even
though the user is not writing the multicycle for the hold, the hold check is updated upon the setup check.
The default hold edge pair is chosen by considering two hold conditions with respect to the adjusted
setup edge pair. In this case, the possible edge pairs are 0 -> 0 and 2 -> 4. The 2 -> 4 edge pair
minimizes the hold slack and hence chosen for hold check.
CK1 0 1 2 3 4 5 6 7 8 9 10
S H
CK2
0 2 4 6 8 10
Setup 2 (-start), Hold 1 (-start)
In this case, setup multiplier is set to 2 relative to the launching clock edge (Using -start option), and the
hold multiplier is set to 1 relative to the launching clock edge (Using the default -start option). In this case
the hold check was moved one clock forward relative to launch clock, CK1.
In general, for defining multicycle path between fast clock to slow clock path, please use following:
CK1 0 5 10 15 20 25 30
H
S
CK2
0 7 12 22 27 37
No MCP: Setup 1, Hold Default
In this case, the possible combination for launching - capturing edge pairs are 0 -> 7 and 20 -> 22 for
setup check. The closest capturing edge that occurs after the launching edge is selected for setup check.
Hence, 20 -> 22 pair are selected for setup check.
But, timer references the start of the launch/capture clock paths from the first relevant edge i.e. 0 for CK1
and 7 for CK2. To make the edge-to-edge relationship same as the 20 -> 22 pair, it has to subtract 5
from the capturing clock, which yields 0 -> 2, which from a magnitude standpoint is the same at the 20-
>22 time allotment. This subtracted value of 5 is reported as phase shift.
The possible combination for launching - capturing edge pairs are 10 -> 7 and 30 -> 22 for hold check.
The closest capturing edge that occurs at or before the launching edge is selected for hold check. Hence,
10 -> 7 pair are selected for hold check.
But, timer references the start of the launch/capture clock paths from the first relevant edge i.e. 0 for CK1
and 7 for CK2. To make the edge-to-edge relationship same as the 10 -> 7 pair, it has to subtract 10
from the capturing clock, which yields 0 -> -3, which from a magnitude standpoint is the same at the 10 -
> 7 time allotment. This subtracted value of 10 is reported as phase shift.
CK1 0 5 10 15 20 25 30
S
CK2
0 7 12 22 27 37
Setup 2 (-start), Hold 1 (-start)
If you apply the above multicycles, the setup launching clock edge will move one clock backward. The
new adjusted setup edge pair will be 10 -> 22 from default setup edge pair of 20 -> 22. The default hold
edge pair is chosen by considering two hold conditions with respect to the adjusted setup edge pair. In
this case, the possible edge pairs are 10 -> 7 and 20 -> 22. The 10 -> 7 edge pair minimizes the hold
slack and hence is chosen for hold check. The hold launching clock edge will move one clock forward
relative to launch clock, CK1 and the adjusted hold edge pair 20 -> 7 is chosen for hold check.
Support
Cadence Online Support provides access to support resources, including an extensive
knowledge base, access to software updates for Cadence products, and the ability to
interact with Cadence Customer Support. Visit https://support.cadence.com.
Feedback
Email comments, questions, and suggestions to content_feedback@cadence.com.