Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 6/20/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

3.1.29.4. create_relative_clock (::quartus::project)

The following table displays information for the create_relative_clock Tcl command:

Tcl Package and Version

Belongs to ::quartus::project

Syntax create_relative_clock [-h | -help] [-long_help] -base_clock <Base clock> [-comment <comment> ] [-disable] [-divide <integer> ] [-duty_cycle <integer> ] [-entity <entity> ] [-fall] [-invert] [-multiply <integer> ] [-no_target] [-offset <offset> ] [-phase_shift <integer> ] [-rise] [-tag <data> ] [-target <name> ] [-virtual] <clock_name>
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-base_clock <Base clock> Base clock name
-comment <comment> Comment
-disable Option to disable assignment
-divide <integer> Base clock division factor
-duty_cycle <integer> Duty cycle
-entity <entity> Entity to which to add clock assignment
-fall Option applies to falling edge
-invert Option to invert base clock
-multiply <integer> Base clock multiplication factor
-no_target Option to not assign clock to node
-offset <offset> Offset from base clock
-phase_shift <integer> Phase shift from base clock
-rise Option applies to rising edge
-tag <data> Option to tag data to this assignment
-target <name> Clock node name
-virtual Option to specify the clock as a virtual clock
<clock_name> Clock name
Description
Creates a relative clock that derived from the absolute clock.

The "-offset" option can take the format:

<floating point time value><time unit>

For example, if the offset is 10.55ns, "10.55" is the
<floating point time value> and "ns" is the <time unit>.

The following table displays possible time units:

Time Unit                 Description
---------                 --------------
s                         second(s)
ms                        millisecond(s)
us                        microsecond(s)
ns                        nanosecond(s)
ps                        picosecond(s)
fs                        femtosecond(s)

The "-phase_shift" option takes an integer that represents
degrees of phase shift from the base clock period. For example, 
if a base clock has a period of 10ns and clk2 is a relative
clock derived from the base clock. A phase shift value of 45
applies a 45 degree phase shift to clk2, producing an offset
of 1.25ns from the base clock. For a given relative clock,
you may specify a phase shift, an offset, or both. If both
are specified, they are additive.

If you specify the "-virtual" option, the relative clock
is not assigned to any node in the timing netlist. You cannot
specify the "-virtual" option and the "-target" option 
at the same time.

For entity-specific assignments, use the "-entity" option to 
force the assignment to specified entity. If you do not specify
the "-entity" option, the value for the FOCUS_ENTITY_NAME 
assignment is used. If the FOCUS_ENTITY_NAME value is not found, 
the revision name is used.

Assignments created or modified by using this Tcl command are 
not saved to the Quartus Prime Settings File (.qsf) unless you
explicitly call one of the following two Tcl commands:

1) export_assignments
2) project_close (unless "-dont_export_assignments" is specified)

These two Tcl commands reside in the ::quartus::project Tcl 
package. You must save assignment changes before you run 
Quartus Prime command-line executables. Note, however, that 
the Tcl commands "execute_flow" and "execute_module" (part 
of the ::quartus::flow Tcl package) automatically call 
"export_assignments" before they run command-line executables.
Example Usage
## Specify a base clock of 10ns
create_base_clock -fmax 10ns clk10

## Specify a relative clock with 2/3 the period
create_relative_clock -base_clock clk10 -multiply 2 -divide 3 clk2_3

## Specify a relative clock with a phase shift of 45 degrees
create_relative_clock -base_clock clk10 -phase_shift 45 clk_45
## or, equivalently, with an offset of 1.25ns
create_relative_clock -base_clock clk10 -offset 1.25ns clk_45

## Specify the entity name to which the clock
## is added, using the -entity option
## This is needed if the top-level entity name is 
## other than that of the project
## The following command generates a "top_level" entity
create_relative_clock -base_clock clk10 -entity top_level -multiply 2 -divide 3 clk2_3
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is an open, active revision name.
TCL_ERROR 1 ERROR: Entity does not exist or uses illegal name characters: <string>. Specify a legal entity name.
TCL_ERROR 1 ERROR: Can't run Tcl command while a process is in progress: <string>. To run the command, stop the compilation or simulation; or wait for the compilation or simulation to complete.
TCL_ERROR 1 ERROR: Options are mutually exclusive: <string> and <string>. Specify only one of the two options.
TCL_ERROR 1 ERROR: You must open a project before you can use this command.