Input Forward Clock Delay (GPIO clkout)

This example shows how to set constratints for an input forward clock.

Warning: Most designs do not need to use this method. For high-performance designs, you should use the GPIO registers and follow the instructions in Constraining Synchronous Inputs and Outputs.
Figure 1. Forward Clock Delay (GPIO Input, Register Bypass)

The SDC constraint formulas for the foward clock delay are:

set_input_delay -clock <clock> -reference_pin <clkout interface name> \
   -max <max calculation> <ports>
set_input_delay -clock <clock> -reference_pin <clkout interface name> \
    -min <min calculation> <ports>

Reference Pin

With forward clocks, you use the -reference_pin option to include the clock latency delay in the I/O constraint. The -reference_pin pin target is a clkout pad that the software automatically adds to the netlist. The <project>.pt_timing.rpt file shows the reference pin name.

Calculate the min and max constraints using the following equations:

<max calculation> = <max board constraint> + GPIO_INmax + GPIO_CLK_OUTmax

<min calculation> = <min board constraint> + GPIO_INmin + GPIO_CLK_OUTmin

The following example shows how to calculate the delays and set the constraints.

Constraining Input Forward Clock

You want to constrain the i input with respect to clock clk_fwd with a max board constraint of 2 ns and a min board constraint of 2 ns. The non-registered GPIO configuration data from the <project>.pt_timing.rpt file is:
Clkout GPIO Configuration:
===========================
 
+---------------+-----------+--------------+----------+----------+--------------------+
| Instance Name | Clock Pin |  Parameter   | Max (ns) | Min (ns) | Reference Pin Name |
+---------------+-----------+--------------+----------+----------+--------------------+
|    clk_fwd    |    clk    | GPIO_CLK_OUT |  2.205   |  1.470   |  clk~CLKOUT~219~1  |
+---------------+-----------+--------------+----------+----------+--------------------+
 
Non-registered HSIO GPIO Configuration:
========================================
 
+---------------+----------+-------------+----------+----------+
| Instance Name | Pin Name |  Parameter  | Max (ns) | Min (ns) |
+---------------+----------+-------------+----------+----------+
|      clk      |   clk    | GPIO_CLK_IN |  0.828   |  0.552   |
|       i       |    i     |   GPIO_IN   |  0.828   |  0.552   |
|       o       |    o     |   GPIO_OUT  |  2.205   |  1.470   |
+---------------+----------+-------------+----------+----------+
The equations are:
<max calculation> = 2 + 0.828 + 2.205 = 5.033
<min calculation> = 2 + 0.552 + 1.470 = 4.022
The resulting constraints are:
set_input_delay -clock clk -reference_pin clk~CLKOUT~219~1 -max 5.033 [get_ports {i}]
set_input_delay -clock clk -reference_pin clk~CLKOUT~219~1 -min 4.022 [get_ports {i}]