blob: fe57265a9f82fc03276c3195234d07b2a7e1e924 [file] [log] [blame]
Timing Constraints
==================
VPR supports setting timing constraints using Synopsys Design Constraints (SDC), an industry-standard format for specifying timing constraints.
VPR's default timing constraints are explained in :ref:`default_timing_constraints`.
The subset of SDC supported by VPR is described in :ref:`sdc_commands`.
Additional SDC examples are shown in :ref:`sdc_examples`.
.. seealso:: The :ref:`Primitive Timing Modelling Tutorial <arch_model_timing_tutorial>` which covers how to describe the timing characteristics of architecture primitives.
.. _default_timing_constraints:
Default Timing Constraints
--------------------------
If no timing constriants are specified, VPR assumes default constraints based on the type of circuit being analyzed.
Combinational Circuits
~~~~~~~~~~~~~~~~~~~~~~
Constrain all I/Os on a virtual clock ``virtual_io_clock``, and optimize this clock to run as fast as possible.
*Equivalent SDC File:*
.. code-block:: tcl
create_clock -period 0 -name virtual_io_clock
set_input_delay -clock virtual_io_clock -max 0 [get_ports {*}]
set_output_delay -clock virtual_io_clock -max 0 [get_ports {*}]
Single-Clock Circuits
~~~~~~~~~~~~~~~~~~~~~
Constrain all I/Os on the netlist clock, and optimize this clock to run as fast as possible.
*Equivalent SDC File:*
.. code-block:: tcl
create_clock -period 0 *
set_input_delay -clock * -max 0 [get_ports {*}]
set_output_delay -clock * -max 0 [get_ports {*}]
Multi-Clock Circuits
~~~~~~~~~~~~~~~~~~~~~
Constrain all I/Os a virtual clock ``virtual_io_clock``.
Does not analyse paths between netlist clock domains, but analyses all paths from I/Os to any netlist domain.
Optimizes all clocks, including I/O clocks, to run as fast as possible.
.. warning:: By default VPR does not analyze paths between netlist clock domains.
*Equivalent SDC File:*
.. code-block:: tcl
create_clock -period 0 *
create_clock -period 0 -name virtual_io_clock
set_clock_groups -exclusive -group {clk} -group {clk2}
set_input_delay -clock virtual_io_clock -max 0 [get_ports {*}]
set_output_delay -clock virtual_io_clock -max 0 [get_ports {*}]
Where ``clk`` and ``clk2`` are the netlist clocks in the design.
This is similarily extended if there are more than two netlist clocks.