create_clock Constraint

create_clock -period <float> [-waveform {rising_edge falling_edge}]  \
    [-name <clock name>] [<targets>] [-add]

This command defines a clock with the desired period (in ns) and waveform, and applies it to the target nodes. If you do not specify a target, the software considers the clock to be a virtual clock. You can use the virtual clock to constrain inputs and outputs to a clock external to the design. The tool does not support multiple clock assignments to the same target.

Note: You can refer to netlist clocks using regular expressions.
  • -period indicates the clock period in ns.
  • -waveform indicates the rising and falling edges (duty cycle) of the clock as two time values: the first rising edge and the next falling edge. If you omit the waveform option, the command creates a clock with a rising edge at 0 and a falling edge at the half period, which is equivalent to using -waveform {0 <period/2>}.
  • -name indicates the clock name. If omitted, the software gives the clock the name of the first target.
  • -add defines multiple clocks for the same target. First use -name to specify the new clock name. If you already used the same clock name or did not define it, the last SDC command overwrites the existing clock.

If you assign a virtual clock using the create_clock command, you must reference it elsewhere in a set_input_delay or set_output_delay constraint.

Tip: The timing analysis and place-and-route runtime is affected by the number of clocks you define in your SDC file. Therefore, if possible, you should only define the most critical clocks to reduce the runtime.