Prev: builing a SPI interface in vhdl
Next: ERROR:Simulator:222 - Generated C++ compilation was unsuccessful
From: Simon Heinzle on 29 Oct 2007 12:58 Hi FPGA Group! I'm struggling to get a fast speed (~ 200 MHz) for the DDR2 DRAM interface, generated with the Xilinx Memory Interface Generator. The complete system consists of a PCI interface, an I/O DMA buffer, a burst module bursting from DMA buffer to the DDR2 DRAM interface. What is the best way to define setup/hold times for the I/O pads (UCF)? (the RAM interface consists of a bi-dir data bus DQ, some output signals e.g. A and the DRAM clocks CK) 1. Using the OFFSET = OUT 5 ns AFTER "SYS_CLK_P"? Unfortunately, this does only work using the Input Clock Pin, but it should probably better be in reference to the DRAM clocks CK) 2. Using TIMESPEC "TS_DDR_OUT" = FROM FFS TO "DDR_OUT" 5 ns; ? Is probably better, but I'm not exactly sure. Furthermore, how would you tackle the problem if the timing at the pads cannot be met? Thanks in advance for helpful answers and pointers in the right direction! Best regards, Simon
From: Eric Crabill on 29 Oct 2007 19:28 Hi Simon, This document may be of assistance: http://www.xilinx.com/bvdocs/appnotes/xapp458.pdf Eric "Simon Heinzle" <sheinzle(a)inf.ethz.ch> wrote in message news:47261129$1(a)news1-rz-ap.ethz.ch... > Hi FPGA Group! > > I'm struggling to get a fast speed (~ 200 MHz) for the DDR2 DRAM > interface, generated with the Xilinx Memory Interface Generator. The > complete system consists of a PCI interface, an I/O DMA buffer, a burst > module bursting from DMA buffer to the DDR2 DRAM interface. > > What is the best way to define setup/hold times for the I/O pads (UCF)? > (the RAM interface consists of a bi-dir data bus DQ, some output signals > e.g. A and the DRAM clocks CK) > 1. Using the OFFSET = OUT 5 ns AFTER "SYS_CLK_P"? Unfortunately, this does > only work using the Input Clock Pin, but it should probably better be in > reference to the DRAM clocks CK) > 2. Using TIMESPEC "TS_DDR_OUT" = FROM FFS TO "DDR_OUT" 5 ns; ? Is probably > better, but I'm not exactly sure. > > Furthermore, how would you tackle the problem if the timing at the pads > cannot be met? > > Thanks in advance for helpful answers and pointers in the right direction! > > Best regards, > Simon > > >
From: Simon Heinzle on 30 Oct 2007 09:41 Thanks Eric, I checked the XApp458 and various XApp7** about Virtex 4 DDR2, as we are using a Virtex 4 FX. I'm using the DDR2 controller from the Memory Interface Generator. The main problem are the output delays. Input delays seem to be calibrated using tap delay lines. I had a working example with output delays between 4.4ns and 5.1ns (Data, Address, Control, DRAM clock). I extended that example (but no changes to the DRAM interface), now the output delays range between 4.4 ns (Data, Control, Dram Clock) and 8.9 ns (Address). What is are the best constraints to define a tight window? (I'm now using TIMESPEC ... = FROM FFS TO "OUT" 5.3 ns, which cannot be met) What is a good strategy to meet those timing constraints? Thanks in advance, Simon "Eric Crabill" <eric.crabill(a)xilinx.com> wrote in message news:fg5qai$nq03(a)cnn.xilinx.com... > Hi Simon, > > This document may be of assistance: > http://www.xilinx.com/bvdocs/appnotes/xapp458.pdf > > Eric > > "Simon Heinzle" <sheinzle(a)inf.ethz.ch> wrote in message > news:47261129$1(a)news1-rz-ap.ethz.ch... >> Hi FPGA Group! >> >> I'm struggling to get a fast speed (~ 200 MHz) for the DDR2 DRAM >> interface, generated with the Xilinx Memory Interface Generator. The >> complete system consists of a PCI interface, an I/O DMA buffer, a burst >> module bursting from DMA buffer to the DDR2 DRAM interface. >> >> What is the best way to define setup/hold times for the I/O pads (UCF)? >> (the RAM interface consists of a bi-dir data bus DQ, some output signals >> e.g. A and the DRAM clocks CK) >> 1. Using the OFFSET = OUT 5 ns AFTER "SYS_CLK_P"? Unfortunately, this >> does only work using the Input Clock Pin, but it should probably better >> be in reference to the DRAM clocks CK) >> 2. Using TIMESPEC "TS_DDR_OUT" = FROM FFS TO "DDR_OUT" 5 ns; ? Is >> probably better, but I'm not exactly sure. >> >> Furthermore, how would you tackle the problem if the timing at the pads >> cannot be met? >> >> Thanks in advance for helpful answers and pointers in the right >> direction! >> >> Best regards, >> Simon >> >> >> > >
From: Simon Heinzle on 30 Oct 2007 12:41
Hi all, I found the problem: the "Retiming" option in Synplify Pro caused the address signals to be retimed and they could therefore not be packed into an IOB flip flop. This caused a much higher delay than in the other output signals. Thanks for your help, Simon "Simon Heinzle" <sheinzle(a)inf.ethz.ch> wrote in message news:47261129$1(a)news1-rz-ap.ethz.ch... > Hi FPGA Group! > > I'm struggling to get a fast speed (~ 200 MHz) for the DDR2 DRAM > interface, generated with the Xilinx Memory Interface Generator. The > complete system consists of a PCI interface, an I/O DMA buffer, a burst > module bursting from DMA buffer to the DDR2 DRAM interface. > > What is the best way to define setup/hold times for the I/O pads (UCF)? > (the RAM interface consists of a bi-dir data bus DQ, some output signals > e.g. A and the DRAM clocks CK) > 1. Using the OFFSET = OUT 5 ns AFTER "SYS_CLK_P"? Unfortunately, this does > only work using the Input Clock Pin, but it should probably better be in > reference to the DRAM clocks CK) > 2. Using TIMESPEC "TS_DDR_OUT" = FROM FFS TO "DDR_OUT" 5 ns; ? Is probably > better, but I'm not exactly sure. > > Furthermore, how would you tackle the problem if the timing at the pads > cannot be met? > > Thanks in advance for helpful answers and pointers in the right direction! > > Best regards, > Simon > > > |