Forum Discussion

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

Source-Synch I/O Constraints

I've read just about every post by Rysc and Kaz on constraints. Many thanks for their contributions to this forum.

I'm having trouble getting the constraints right for a source synchronous interface that's driven by mux from 3 separate sources. Two of the sources are Input to Output paths, while the third source is internally generated.

Here's what I have for constraints WRT this interface so far:

create_clock -name clkA -period 37.037 
create_clock -name clkB -period 37.037 
# # Create generated clocks at output of mux
create_generated_clock -name clk_pll -source }]  -add
create_generated_clock -name clkA_muxout -source   -add
create_generated_clock -name clkB_muxout -source   -add
# # Create generated clocks at clock out pin
create_generated_clock -name clk_pll_ext -source }]  -add
create_generated_clock -name clkA_ext -source   -add
create_generated_clock -name clkB_ext -source   -add
# # Tsu of ext. device = 1.4ns
# # Th of ext. device = 1.4ns
set_output_delay -clock clk_pll_ext -min -1.4 }] -add_delay
set_output_delay -clock clk_pll_ext -max 1.4 }] -add_delay
set_output_delay -clock clkA_ext -min -1.4 }] -add_delay
set_output_delay -clock clkA_ext -max 1.4 }] -add_delay
set_output_delay -clock clkB_ext -min -1.4 }] -add_delay
set_output_delay -clock clkB_ext -max 1.4 }] -add_delay

I'm receiving the following warning from TQ:

Warning (332088): No paths exist between clock target "mclk_p" of clock "clk_pll_ext" and its clock source.  Assuming zero source clock latency.
Warning (332088): No paths exist between clock target "mclk_p" of clock "clkA_ext" and its clock source.  Assuming zero source clock latency.
Warning (332088): No paths exist between clock target "mclk_p" of clock "clkB_ext" and its clock source.  Assuming zero source clock latency.

It appears that TQ is correctly analyzing the Input to Output paths from ClkA/B to mclk. However, clk_pll to output is not being analyzed...

Here's what I have for clock groups:

set_clock_groups -asynchronous 
  .... other clocks
  -group 
set_clock_groups -exclusive 
  -group  
  -group  
  -group 

I feel like I'm missing something simple here. Any ideas?

EDIT: Just to clarify the system architecture.

The design has two synchronous input interfaces including clock and data. Those two interefaces are muxed with an internally generated set of clock and data and driven on the output. Both clock and data are muxed on the output.

13 Replies

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

    I generally don't use the pre-canned I/O analysis, but create my own TQ_analysis.tcl file and put stuff in like so:

    report_timing -setup -npaths 50 -detail full_path -to [get_ports {m_data_p[*]}] -panel_name "m_data_p||setup"

    report_timing -hold -npaths 50 -detail full_path -to [get_ports {m_data_p[*]}] -panel_name "m_data_p||hold"

    I do it for most interfaces and so the reports are tailored to those interfaces. (Anything you miss still shows up in the summary/hold/recovery/removal reports, so if something failed you'd know about it). Now if the above says no paths exist, it needs to be analyzed why. (I'm not sure on first glance, but fixing the create_generated_clock shouldn't have broken anything. Did the paths show up before?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    There we go! Running it manually gives me what I'm looking for. I would have expected the macro to do that for me since it's called Report _ALL_ I/O Timing. :-)

    Thanks for the help!

    EDIT: To answer your question - No, it did not show up before the change to the SDC.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I assume it means all types of I/O timing(inputs, outputs, port to port, and setup/hold of each), as it still has a parameter for number of paths to report in each case, which is defaulting to 1000. This where I think TimeQuest's scripting capabilities come through, as searching through more than a thousand paths is a pain.