Forum Discussion

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

How to find out a Tco from TimeQuest

Hi all!

I'm using Quartus TQ and I have a question about the best way to measure a Tco for a FPGA pin to pin. My task is specifically for the case in that example - https://www.altera.com/content/dam/altera-www/global/en_us/pdfs/literature/wp/wp_stxtco.pdf. In Figure 2. Sample tCO Design we see 3 FFs, so commands like report_path and report_timing as I figured out can't give result immediately - I need to iteratively use them for FF-to-FF path for example. Is it another option, for example to view the summary of paths from input to output pin using one command?

Thanks in advance.

14 Replies

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

    I thought that I can use a min and max of 0 for set_input/output_delay, it just means that I give information about virtual clock and describe outside-of-FPGA clocking scheme, example of that can be seen on page 15-16 of rysc's TimeQuest User Guide (http://www.alteraforum.com/alterawiki.com/uploads/3/3f/timequest_user_guide.pdf).

    Here is my whole sdc file (I changed -max and -min from 0 to 1 just for test, it changes nothing, still reported "No setup paths were found.") :

    # **************************************************************

    # Create Clock

    # **************************************************************

    create_clock -name {CLK} -period 5.000 -waveform { 0.000 2.500 } [get_ports {CLK}]

    create_clock -name {CLK_EXT_output_side} -period 5.000 -waveform { 0.000 2.500 }

    create_clock -name {CLK_EXT_input_side} -period 5.000 -waveform { 0.000 2.500 }

    # **************************************************************

    # Create Generated Clock

    # **************************************************************

    derive_pll_clocks

    # **************************************************************

    # Set Input Delay

    # **************************************************************

    set_input_delay -clock CLK_EXT_input_side -max 1.0 [get_ports din1]

    set_input_delay -clock CLK_EXT_input_side -min 1.0 [get_ports din1]

    set_input_delay -clock CLK_EXT_input_side -max 1.0 [get_ports din2]

    set_input_delay -clock CLK_EXT_input_side -min 1.0 [get_ports din2]

    set_input_delay -clock CLK_EXT_input_side -max 1.0 [get_ports din3]

    set_input_delay -clock CLK_EXT_input_side -min 1.0 [get_ports din3]

    set_input_delay -clock CLK_EXT_input_side -max 1.0 [get_ports din4]

    set_input_delay -clock CLK_EXT_input_side -min 1.0 [get_ports din4]

    # **************************************************************

    # Set Output Delay

    # **************************************************************

    set_output_delay -clock CLK_EXT_output_side -max 1.0 [get_ports dout1]

    set_output_delay -clock CLK_EXT_output_side -min 1.0 [get_ports dout1]

    set_output_delay -clock CLK_EXT_output_side -max 1.0 [get_ports dout2]

    set_output_delay -clock CLK_EXT_output_side -min 1.0 [get_ports dout2]

    set_output_delay -clock CLK_EXT_output_side -max 1.0 [get_ports dout3]

    set_output_delay -clock CLK_EXT_output_side -min 1.0 [get_ports dout3]

    set_output_delay -clock CLK_EXT_output_side -max 1.0 [get_ports dout4]

    set_output_delay -clock CLK_EXT_output_side -min 1.0 [get_ports dout4]
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    You can't use a min and max of 0 for set_input/output_delay. And I presume you've already constrained the clocks as well.

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

    Thank you for your answer, sstrell!

    I agree, it is an old white paper and I realized it is a classic timing analyzer which is used there.

    The task is how to meet timing through a device, I mean how to calculate or view total propagation time from input pin to output pin of FPGA, like in old white paper mentioned. For I/O timing from external device of course I have to use set_input_delay and set_output_delay constraints.

    I tried to follow your suggestion ("report_timing -from [get_ports din*] -to [get_ports dout*] to generate timing reports on these paths")

    I added such constraints in sdc file:

    # **************************************************************

    # Set Input Delay

    # **************************************************************

    set_input_delay -clock CLK_EXT_input_side -max 0.0 [get_ports din1]

    set_input_delay -clock CLK_EXT_input_side -min 0.0 [get_ports din1]

    set_input_delay -clock CLK_EXT_input_side -max 0.0 [get_ports din2]

    set_input_delay -clock CLK_EXT_input_side -min 0.0 [get_ports din2]

    set_input_delay -clock CLK_EXT_input_side -max 0.0 [get_ports din3]

    set_input_delay -clock CLK_EXT_input_side -min 0.0 [get_ports din3]

    set_input_delay -clock CLK_EXT_input_side -max 0.0 [get_ports din4]

    set_input_delay -clock CLK_EXT_input_side -min 0.0 [get_ports din4]

    # **************************************************************

    # Set Output Delay

    # **************************************************************

    set_output_delay -clock CLK_EXT_output_side -max 0.0 [get_ports dout1]

    set_output_delay -clock CLK_EXT_output_side -min 0.0 [get_ports dout1]

    set_output_delay -clock CLK_EXT_output_side -max 0.0 [get_ports dout2]

    set_output_delay -clock CLK_EXT_output_side -min 0.0 [get_ports dout2]

    set_output_delay -clock CLK_EXT_output_side -max 0.0 [get_ports dout3]

    set_output_delay -clock CLK_EXT_output_side -min 0.0 [get_ports dout3]

    set_output_delay -clock CLK_EXT_output_side -max 0.0 [get_ports dout4]

    set_output_delay -clock CLK_EXT_output_side -min 0.0 [get_ports dout4]

    and also write a report_timing command:

    report_timing -from [get_ports {din1}] -to [get_ports {dout1}] -npaths 10 -detail full_path -panel_name {Report Timing} -multi_corner

    and even just report_timing -from [get_ports {din1}] -to [get_ports {dout1}]

    But I received such answer:

    Report Timing: No setup paths were found.

    So maybe I misunderstood your advice, but it didn't work for me now.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    This is a really old white paper based off of the old timing analyzer. Are you trying to meet timing through a device or are you talking about meeting I/O timing to/from external devices? You should have set_input_delay and set_output_delay constraints in your .sdc file defining the external timing delays to/from external devices.

    You can then use (based on the paper you linked):

    report_timing -from [get_ports din*] -to [get_ports dout*]

    to generate timing reports on these paths.