Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
12 years ago

Set_input_delay misunderstanding

Hello:

new to sdc constrains

I have 2 cases to constrain my serial data coming in and trying to understand the differences

Case 1 has been done in previous projects right or wrong but shows no timing violation. In my project I am getting a small negative slack for hold time (on Fast timing)

Case 2 shows no timing violation (positive slack)

This case was created based on reading the Timequest user guide. However, I don't understand how RX_CLK relates to the virtual clock

It seems that the total tCo in one case should be different to the other on default relationships??

Which one is correct? For me, case 1 ties directly to the clock input on the FPGA and the tCo should account for board delays , margin and the spec tCo of the device.

FPGA input is

RX_CLK -Pin

RC_Data0- pin

tComin and tComax are defined

RC_Data0 should be clocked into a shift register in the RX_CLK clock domain

Case 1

create_clock -period 20 [get_ports { RX_CLK }]

set_input_delay -clock { RX_CLK } -clock_fall -min -$uC_tCOmin [get_ports { RC_Data0 }]

set_input_delay -clock { RX_CLK } -clock_fall -max $uC_tCOmax [get_ports { RC_Data0 }]

Case 2

create_clock -period 20 [get_ports { RX_CLK }]

create_clock –name RX_CLK _Virtual -period 20

set_input_delay -clock { RX_CLK _Virtual } -clock_fall -min -$uC_tCOmin [get_ports { RC_Data0 }]

set_input_delay -clock { RX_CLK _Virtual } -clock_fall -max $uC_tCOmax [get_ports { RC_Data0 }]

thank you

23 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Hold violations are restricted Fmax? I haven't seen this, but not sure how it would work. A hold violation within a domain basically means it can't run at any rate, i.e. even 1 Hz. So not sure how it would show the magnitude of failure without a negative number or something strange like that.

    --- Quote End ---

    Rysc please look here:

    http://quartushelp.altera.com/11.1/mergedprojects/tafs/tafs/tcl_pkg_sta_ver_1.0_cmd_get_clock_fmax_info.htm

    I will leave you guessing what this type of hold violation actually is...
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Rysc please look here:

    http://quartushelp.altera.com/11.1/mergedprojects/tafs/tafs/tcl_pkg_sta_ver_1.0_cmd_get_clock_fmax_info.htm

    I will leave you guessing what this type of hold violation actually is...

    --- Quote End ---

    I will add a clue that we are talking about two cases of hold violations and both should be reported in slack:

    case1 : the old concept which does not depend on speed as you mentioned but is caused by skew thingy and does not restrict fmax which is only dependent on setup slack

    case2: not skew related, affects speed and is reported in both slack and restricted fmax.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi Rysc and kaz;

    My obvious mistake was the syntax error caught by kaz on the "-" in front of the timing delay. Once I fixed this, my hold time violation went away. I did try using a virtual clock and the slack results were almost the same. In either case through the different discussions in this thread, I have learned a lot .

    Rysc :

    a) you have described the case where the FPGA sends the clk to an external register and how you setup your. If the clock and data are generated by the external device (asynchronous to any clock on the FPGA) , how will the constrains set_input_delay,set_output_delay change assuming the spec from the Ext device give you tCo min max for data respect clk

    tH min for data respect to clk

    thank you

    thanks