Forum Discussion

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

Help with timequest inputs constraints

Hi, I'm trying to define input constraints for an input data bus received by an A2D. The launch clock in the A2D is a derived PLL clock which is sent from the FPGA to the A2D and the latch clock is also a derived PLL clock, both clocks are generated by the same PLL and have the same frequency (40MHz), the A2D clock has a phase shift of 180 degrees (The clocks schematic is attached). The A2D data is launched in the A2D clock (the shifted clock) falling edge and latched in the FPGA clock rising edge, the data clock to out delay (in the A2D) is 10ns. My SDC file is attached, I'm not sure what is wrong with it but i'm getting paths with negative setup slack in the timequest analysis results, i have attached a screenshot of the results. What am i doing wrong? Should i define the A2D clock as a virtual clock? Any other ideas? Thanks!

14 Replies

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

    --- Quote Start ---

    What about the clock output pin delay and the internal routing delay from the PLL output to the output pin? how can the timequest know those delays? it doesn't know that this virtual clock has also a delay on its way from the pll output to the fpga output (besides the board delay). How can i find those delays?

    --- Quote End ---

    The user should provide relation of virtual clk to base clk (at pin of fpga). This has nothing to do with PLL and internal fpga or clk out pin. Just delay from base clk pin at fpga to virtual clk pin on device. The tool needs that and leave the rest for it. The tool will calculate PLL effect as it generates latch clk at the receiving end

    In your case your base clk is 24MHz I believe. yet your device clk is 40. I need to see what setup relationship the tool gets. If you get one clk period or so then that is ok . If you are getting zero or very tight then you need multicycle to correct the tool's behavoiur. If unsure about any failure you need to see the relationship as seen by tool and you coud be surprised sometimes. On the other hand there is no point passing timing when the constraints are wrong. and it is unfair when it fails timing but due to incorrect relationship.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I tried again to check the setup relationship between those clocks, but unfortunately without success.

    That is what i wrote in the sdc file:

    create_clock -period 41.666 -name main_clk_in_24 [get_ports {clk_24_a}]

    create_clock -period 20.83 -name usb_if_in_clk_48 [get_ports {clk_usb_if}]

    create_clock -period 25 -name adc_clk

    derive_pll_clocks

    set_clock_groups -exclusive

    -group [get_clocks {u_fpga|RT_acq_digital_design|clk_manage|u_pll|altpll_component|pll|clk[0]}]

    -group [get_clocks {u_fpga|RT_acq_digital_design|clk_manage|u_pll|altpll_component|pll|clk[2]}]

    -group [get_clocks {u_fpga|RT_acq_digital_design|clk_manage|u_pll|altpll_component|pll|extclk[0]}]

    -group [get_clocks {main_clk_in_24}]

    -group [get_clocks {usb_if_in_clk_48}] \

    set_input_delay -clock adc_clk -max 10 [get_ports {adc_b*}] -clock_fall

    set_input_delay -clock adc_clk -min 5 [get_ports {adc_b*}] -clock_fall

    I chose "check timing" and got in the report the same columns as before: "Slack", "from node", "to node", launch clock", "latch clock".

    Are you sure that Quartus 8.0 can show the setup relationship?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    you better download a free latest version at least to get view of what you want.

    version 8 is too old though it was new at the time of release, with as usual claims of fantastic features.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    O.K i will try to download a newer version, thank you very much for your help!