Altera_Forum
Honored Contributor
17 years agoGeneral time constraint questions
Q7.2 web, timequest, niosII
I admit I have been one of those who have been happy just putting the minimal clock settings into the classic timing and relying on recoding and tweaking the optimizer settings, and maybe using DSE to get those pesky timing violations to go away. Recently I have started to follow astroboys guidelines for quartus settings: http://www.alteraforum.com/forum/showthread.php?t=235&highlight=settings On my recent project I have tried to understand timequest enough that I can fully constrain the design, but so far it seems like opening a can of worms. I have started with the Basic SDC Example and also kwalt's timequest summary: http://www.altera.com/support/examples/timequest/exm-timequest.html http://www.alteraforum.com/forum/showthread.php?t=1269 To come up with a basic sdc like so: # Global fMAX of 100 MHz # All detected clocks will be constrained with a 100 MHz requirement # derive_clocks -period "100MHz" create_clock -period "50Mhz" -name clk_ext clk_ext create_clock -period "24Mhz" -name clk_ff clk_ff # Automatically apply a generate clock on the output of phase-locked loops (PLLs) # This command can be safely left in the SDC even if no PLLs exist in the design derive_pll_clocks set_clock_groups -exclusive -group { clk_ext inst|the_pll_logic|the_pll|altpll_component|pll|clk[0] inst|the_pll_logic|the_pll|altpll_component|pll|clk[1] } -group { clk_ff inst|the_pll_main|the_pll|altpll_component|pll|clk[0] inst|the_pll_main|the_pll|altpll_component|pll|clk[1] } # Constrain the input I/O path set_max_delay -from [all_inputs] -to [all_registers] 1 set_min_delay -from [all_inputs] -to [all_registers] 2 # Constrain the output I/O path set_max_delay -from [all_registers] -to [all_outputs] 3 The design uses two external clocks to PLLs. One 24mhz external that is 15/4 for a 90Mhz Nios core and sdram clock. One 50mhz external that is 1:1 and drives a user defined chunk of logic. Does the SDC seem correct for this? When I compile I get a large number of timing violations, and I think I have been recoding things that I should not need to. The design was working with occasional problems so I think the design is not so far off as the errors would suggest, and that I have not constrained it properly. I have a few divided down clocks, some of which do not matter. The only way forward I see is to attack one problem at a time so here goes: Kind of unrelated, but the avalon spec says that clock crossing logic is automatically inserted. I have lots of timing violations that say otherwise. When and where does this happen?