I recently completed a PCI-E Gen 1.0 line card design. The line card consisted of 4 Spartan 6 FPGAs sharing one PCIE reference clock. Early on in the design there was a decision to solely use the PCIE reference clock to clock all the internal logic from this PCIE reference clock and hence no on board crystal was used. The FPGAs interface to a bunch of servos on the other side over 10/100MBS interface and the FPGAs used the DCM to divide the PCIE- Reference clock to 25MHz and used for the MII and the PHY interface. There was a lot of Receive Data valid errors on the PHY interface which was attributed to the PCIE reference clock and its inherent jitter of 30KHz to 33KHz(Spread spectrum modulation). We decided to turn off the SSC function in the host software and we stopped seeing the receive error and things are back to normal. I wanted to ask and see if others had different experience using the PCIE-ref clock for clocking all FPGA logic including the 25MHz PHY interface. I was under the impression that the FPGA's DCM would clean up the PCI- reference clock after it gets in to the PCIE MGT hard macro before it was divided down. This is my first FPGA design and hence would appreciate some insight.
All a DCM can do is add jitter - it's a tapped delay line, so the output clock can jitter as the taps change. And for the same reason it can't remove any jitter that is already there.
If you want to "clean up" the clock signal, you need to use a PLL - check the datasheet to see if the FPGA PLLs can cope with the spread-spectrum PCIe clock. Or use a dedicated clock cleaning PLL device.