Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
17258 Discussions

Timing Constraint help for source sync interface.

Altera_Forum
Honored Contributor II
1,414 Views

Hi, 

 

I have a source synchronous data input bus running at 280 MHz on a cyclone V. I can't close timing. I can register the inputs using the fast inputs on the IOE, but there is a skew between the clock delay at the IOE vs. the internal fabric that the tools can't reliably close on. I can't get the signal from the IOE to the fabric (the fabric to fabric timing closes). I am attempting to capture the data using the IOE DDR elements as I think I would then have enough margin to get the data off the IOE and into the fabric.  

 

I have: 

 

280 -> PLL / 2 -> 140 MHz clock -> DDR block input clock 

 

I am trying to figure out how to write the timing constraints for proper analysis. There is a 0.1 ns delay from the rising edge of the 280 MHz clock to the data. 

 

I have the following: 

 

derive_pll_clocks -create_base_clocks 

derive_clock_uncertainty 

 

set ckper 3.46 

create_clock -name inclock -period [expr $ckper] [get_ports {i_clock_in}] 

create_clock -name virt_inclock -period [expr $ckper] 

set_input_delay -clock virt_inclock 0.1 [get_ports {i_data_in 

[*]}] 

 

I am getting a bunch of failures because I think that the timing analyzer is looking at false paths (setup rising to rising, hold rising to falling) based on going through the "Constraining Double Data Rate Source Synchronous Interfaces" tutorial. But that tutorial has the DDR clock at the input pin, not an SDR clock at the input pin. 

 

Any suggestions?
0 Kudos
1 Reply
Altera_Forum
Honored Contributor II
736 Views

If I understood you. 

You want the 280 clk as input to PLL which will output 140 clk, data will go to ddrio which will output two parallel streams which will be recombined at 280 inside fabric. Sounds good idea. 

I will generate a second clk from pll at 280 zero phase. 

I will then take the two streams further into another set of registers (fabric) then combine them and I think this second register set is crucial. 

 

your constraints look ok to me. The rising/falling edge of 140 clk is internal and TQ should take care of it (Idoubt you get failures here but if so then cut path between irrelevant edges such as rising to falling....) 

TQ will know the offset of .1 ns relative to 280 clk and that is enough. everything else is internal and known to the tool
0 Kudos
Reply