Hi *,
I am driving a bunch of DACs each having its own SPI bus with a Virtex4 FPGA. The test design is up and running fine (generating a sine output via an DDC generator implemented on the fabric).
Now I want to make sure it still works fine after the FPGA is stuffed with more control logic. The DACs have both setup and hold time requirements for the serial data input (SDI) vs. the serial clock (SCK).
My .ucf file should tell par the following constraint:
For i in 1 .. 15: sdi must be valid 5 ns before the rising edge on sck and stay valid for 15 ns
I tried the following constraint:
NET "dac8811_sdi" OFFSET = OUT 5 ns VALID 15 ns BEFORE "dac8811_clk" HIGH;
ISE report these errors:
Checking timing specifications ... ERROR:XdmHelpers:865 - For OFFSET specification "OFFSET=OUT 5000 pS VALID 15000 pS BEFORE dac8811_clk HIGH" on net "dac8811_sdi", the given clock net "dac8811_clk" is a device output. The OFFSET must reference a clock input net.
Great - but how do I work with clocks generated inside the FPGA? The sck signal is generated from an 100 MHz quartz using a digital clock manager (DCM_ADV) of the Virtex.
ERROR:XdmHelpers:874 - OFFSET specification "OFFSET=OUT 5000 pS VALID
15000 pS BEFORE dac8811_clk HIGH" on net "dac8811_sdi" has a VALID duration. The VALID clause is not supported on OUT-type OFFSET specifications.So I can't model a hold time requirement of an external component?
Any hints appreciated. Unfortunately, the documentation of ISE is not that helpful how something like this is modeled correctly. I am thinking about using the OFFSET AFTER constraint (the data is written on the falling edge anyway) but I had hoped that the timing analyzer will protect against the wrong frequency on the output clock as well.
Greetings, Torsten