Altera_Forum
Honored Contributor
13 years agoCyclone IV GX: Output Skew at DDR LVDS Output
Hello,
my task is to implement a source synchronous interface between a Cyclone IV GX EP4CGX50CF23C6 and an Arria V (B3 ES). Therefore I've read a lot about constraining this (AN433, Altera Webside, Altera Wiki) and even had a look at the online training video but anyhow I am stuck somewhere and totally unsure if I am on the right way. At our interface the clock is sent together with the data (up to 16 lanes in parallel in each direction) edge-aligned to reduce PLL usage. This all should be done at 200MHz using DDR LVDS to achieve a datarate of 400Mbit per second and pin. TX: To achieve the lowest amount of skew between data and clock output I also used a DDIO_OUT instance to drive the clock offchip. Driving the clock via a second pll tab is no option as there are no more pll ressources available. RX: The receiver shifts the clock by +90 degree and clocks the DDIO_IN Megafunction using a seperate RX PLL (source synchronous mode). Constraints: Here I used the example 32 of AN433 page 38 and adjusted the output_clock to use the DDIO_OUT output for the clock signal. Hopefully this should do the job. The RX is similar to example 56 with edge-aligned input_clock and exceptions added. The allowed skew is +/- 200 ps, so 400 ps in total. Result: The RX path meets timing with 0.773 ns setup and 0.308 ns hold slack, but the TX path fails timing with negative slack in setup as well as hold timing, -0.118 ns and -0.187 ns. The RX path looks fine so that should be ok but what can I do to get a better TX performance? All together the total output skew is 705 ps (2 * 200 + 118 + 187). Looking at the datasheet the skew between channels (TCCS) should be less than 200 ps in total or did I get that wrong? In nearly all guidelines and examples there is a constraint of +/- 100 or 125 ps skew but how can I reach that value or even get near it. So this is where I am stuck - not sure if there is an error in my constraints or if the cyclone iv is simply unable to drive that high frequency. I did the same on the Arria V and did also fail timing. Could someone help me? I attached my example project so one can see what I am doing. Just compile g1.qpf and run report_lvds.tcl in the timequest timing analyzer. Thank you