Forum Discussion
Altera_Forum
Honored Contributor
16 years ago --- Quote Start --- Chris, Rysc wrote a brillant document on this exact issue. "how to constraint source-synchronous double-data rate interfaces" You will find it as a hit in the altera forum. I am doing this same thing and posted a question a day ago about "extra timing paths in DDR". If you look at that my .sdc is attached C --- Quote End --- Good summary. However there is simpler way that cover majority of non-DRAM source-synchronous DDR and SDR transmission cases. The solution is based on fact that in Quartus II 9.1 set_max_skew command finally works as expected*. The most common case of source-synchronous interface is the case in which transmitter is expected to drive the data signals as closely as possible to the clock/strobe signals. In this case, assuming that you already defined characteristics the internal clock, all you need is a single set_max_skew command. Example: RGMII Tx interface to the Ethernet Phy (MARVELL 88E1118 in "add delay" timing mode). The phy expects stable data signals within [0.9..2.7] ns window from tx clock edge. It means that, assuming the skew on PCB, the change of data should happen in [-1.3..+0.9] ns window from the clock edge. Let's say, the PCB eats +/- 0.3ns from the skew margin. It means that if you request max skew < 0.6ns you should be on the safe side. So just the following line to your sdc: set_max_skew -to {tx_clk txd [*] tx_ctrl[0]} 0.6 Sure, the requirements established by this line are slightly stricter than what's absolutely needed, but it's simple and it works. --- * - Please don't wast your time trying it with earlier versions of Quartus.