Command Reference 2. Synopsys Commands set_multicycle_path
NAME
set_multicycle_path
Modifies the single-cycle timing
relationship of a constrained path.
SYNTAX
int set_multicycle_path path_multiplier [-setup |
-hold] [-rise | -fall]
[-start | -end] [-from from_list] [-to
to_list][-reset_path]
int path_multiplier
list from_list
list to_list
ARGUMENTS
path_multiplier
Specifies the number of cycles that the
data path must have for setup or hold
relative to the startpoint or endpoint
clock before data is required at the
endpoint. If -setup is used, this value
is applied to setup path calculations.
If -hold is used, this value is applied
to hold path calculations. If -setup or
-hold is not specified, path_multiplier
is used for setup, and 0 is used for
hold, signifying that the hold relation
begins one cycle after the setup edge at
the start clock.
-hold Specifies that path_multiplier is used
for hold calculations.
-setup Specifies that path_multiplier is used
for setup calculations.
-rise Specifies that rising path delays are
affected by path_multiplier. The
default is that both rising and falling
delays are affected. Rise refers to a
rising value at the path endpoint.
-fall Specifies that falling path delays are
affected by path_multiplier. The
default is that both rising and falling
delays are affected. Fall refers to a
V3.1 Synopsys Inc. 1988-1994. All rights reserved. 2-1
set_multicycle_path 2. Synopsys Commands Command Reference
falling value at the path endpoint.
-start | -end Specifies whether the multicycle
information is relative to the period of
the start clock or end clock. These
options are only needed for
multifrequency designs; otherwise start
and end are equivalent. The start clock
is the clock source related to the
register or primary input at the path
startpoint. The end clock is the clock
source related to the register or
primary output at the path endpoint.
The default is to move the setup check
relative to the end clock, and the hold
check relative to the start clock. A
setup multiplier of 2 with -end moves
the relation forward one cycle of the
end clock. A setup multiplier of 2 with
-start moves the relation backward one
cycle of the start clock. A hold
multiplier of 1 with -start moves the
relation forward one cycle of the start
clock. A hold multiplier of 1 with -end
moves the relation backward one cycle of
the end clock.
-reset_path Removes existing point-to-point
exception information on the specified
paths. If used with -to only, all paths
leading to the specified endpoints are
reset. If used with -from only, all
paths leading from the specified
startpoints are reset. If used with
-from and -to, only paths between those
points are reset. Only information of
the same rise/fall setup/hold type is
reset. This is equivalent to using the
reset_path command with similar
arguments before the set_multicycle_path
is issued.
-from from_list
Specifies names of clocks, ports, pins
or cells to use to find path
startpoints. If a specified object is a
clock, all registers and primary inputs
related to that clock are used as path
startpoints. If a cell is specified,
2-2 Synopsys Inc. 1988-1994. All rights reserved. V3.1
Command Reference 2. Synopsys Commands set_multicycle_path
one path startpoint on that cell is
affected.
-to to_list Specifies names of clocks, ports, pins
or cells to use to find path endpoints.
If a specified object is a clock, all
registers and primary outputs related to
that clock are used as path endpoints.
If a cell is specified, one path
endpoint on that cell is affected.
DESCRIPTION
Specifies that designated timing paths in the current
design have non-default setup or hold relations. By
default, setup is constrained to one cycle. The active
clock edge on the destination register that follows the
active edge on the source (startpoint) register is the
edge used for setup checks. By default, hold is
constrained to zero cycles. In other words, it
implicitly describes a min_delay requirement equal to
the difference of end edge minus start edge, where
start edge is one cycle after the setup start edge, and
end edge is the same as the setup end edge. Setting
path_multiplier for setup moves the setup check in time
by an integer number of cycles. For example,
specifying path_multiplier of 2 for setup implies a 2
cycle data path.
Most often, the setup check will be moved relative to
the end clock. This move changes the data latch time
at the path endpoint. In multi-frequency designs, use
set_multicycle_path -setup -start to move the data
launch time backward. Use set_multicycle_path -hold
-end to move the hold relation relative to the end
clock.
If -setup or -hold is not specified, the setup relation
is set to path_multiplier and the hold relation is set
to 0.
If -setup is specified, the setup multiplier is set to
path_multiplier. The hold multiplier is unaffected.
If -hold is specified, the hold multiplier is set to
path_multiplier. The setup multiplier is unaffected.
There are separate setup and hold multipliers for rise
and fall. In most cases, these will be set to the same
value. -rise or -fall can be used to apply different
values.
V3.1 Synopsys Inc. 1988-1994. All rights reserved. 2-3
set_multicycle_path 2. Synopsys Commands Command Reference
set_multicycle_path is a point-to-point timing
exception command. This means it is used to override
the default single-cycle timing relationship for one or
more timing paths. Other point-to-point timing
exception commands include set_max_delay,
set_min_delay, and set_false_path. False path
information always takes precedence over multicycle
path information. A specific set_max_delay or
set_min_delay command will override a general
set_multicycle_path command.
The more general commands apply to more than one path.
This means either -from or -to is used (but not both),
or clocks are used in the specification. Within a
given point-to-point exception command, the more
specific command will override the more general.
Following is a list of commands from highest to lowest
precedence (more specific to more general):
1. set_multicycle_path -from pin -to pin
2. set_multicycle_path -from clock -to pin
3. set_multicycle_path -from pin -to clock
4. set_multicycle_path -from pin
5. set_multicycle_path -to pin
6. set_multicycle_path -from clock -to clock
7. set_multicycle_path -from clock
8. set_multicycle_path -to clock
To undo a set_multicycle_path command, use reset_path
or reset_design.
Use set_false_path to disable setup or hold
calculations for paths.
Use report_timing_requirements to list the point-to-
point exceptions on a design.
EXAMPLES
The following example sets all paths between latch1b
and latch2d to 2 cycle paths for setup. Hold will be
measured at the previous edge of the clock at latch2d.
dc_shell> set_multicycle_path 2 -from {
latch1b } -to { latch2d }
This example moves the hold check backward one edge of
the start clock.
2-4 Synopsys Inc. 1988-1994. All rights reserved. V3.1
Command Reference 2. Synopsys Commands set_multicycle_path
dc_shell> set_multicycle_path -1 -from {
latch1b } -to { latch2d }
This is an example of a two-phase level-sensitive
design, where the designer expects paths from phi1 to
phi1 to be zero cycles.
dc_shell> set_multicycle_path 0 -from
phi1 -to phi1
This example uses -start to specify a 3-cycle path
relative to the clock at the path startpoint. Clock
sources are specified, affecting all sequential
elements clocked by that clock, or ports with input or
output delay relative to that clock.
dc_shell> set_multicycle_path 3 -start -from { clk50mhz } -to { clk10mhz }
This example sets all rising paths to ff12/D to 2
cycles, but falling paths to 1 cycle.
dc_shell> set_multicycle_path 2 -rise
-to { ff12/D }
dc_shell> set_multicycle_path 1 -fall
-to { ff12/D }
This multifrequency example shows how to shift the hold
relation at the end clock for clk40 to clk20 paths.
The default setup relation is from the edge of clk40 at
0 units to the edge of clk20 at 20 units. Therefore,
the default hold relation is from the following edge of
clk40 at 40 units to the same edge of clk20 as for
setup (20 units). This is effectively a hold relation
equivalent to "set_min_delay -20 -from clk40 -to
clk20". To override this and move the end edge forward
to the edge of clk20 at 40 units, use a hold multiplier
of -1 at the end clock. This effectively creates a
min_delay requirement of 0 units for paths between
these clocks.
dc_shell> create_clock -period 40
-waveform {0 20} clk40
V3.1 Synopsys Inc. 1988-1994. All rights reserved. 2-5
set_multicycle_path 2. Synopsys Commands Command Reference
dc_shell> create_clock -period 20
-waveform {0 10} clk20
dc_shell> set_multicycle_path -1 -hold
-end -from clk40 -to clk20
SEE ALSO
current_design(2), find(2),
report_timing_requirements(2), reset_design(2),
reset_path(2), set_false_path(2), set_max_delay(2),
set_min_delay(2).
2-6 Synopsys Inc. 1988-1994. All rights reserved. V3.1