How many clock cycles should be applied to CCLK after DONE has gone High to ensure that my FPGA device is fully operational?
DONE is released by the Startup sequence to indicate that configuration has completed.
The state is defined in BitGen using the "-g DONE_cycle" option. By default, DONE is released in cycle 4.
DONE indicates that configuration is complete and all data has been loaded, but some extra clock cycles need to be applied to ensure the startup sequence completes correctly.
The startup is controlled by a sequential 7-state machine. A conservative number for the clock cycles required after DONE is 64; this will catch most use cases where there is ideal clock of DONE and default options are used.
Some BitGen options add some extra latency to the startup sequence.
If you do not clock the startup completely, some of the following symptoms can be observed:
This will occur if the device has not reached the End of Startup state machine. The device can be fully operational before the device reaches this End of Startup state. This can lead to ICAP read and write failures or dual mode pins not operating in the correct I/O standard.
This event is indicated by the EOS signal being driven High. This can be observed in the STAT register or detected in the FPGA fabric using the STARTUP primitive.
For designs accessing the ICAP, it is good design practice to instantiate the STARTUP primitive.
This primitive has an EOS pin, which will indicate when the configuration process has completed and that the ICAP is available for read and write access.
One exception here is when the JTAG configuration is used. JTAG has top priority access to configuration logic.
If JTAG is accessing configuration logic, then ICAP read and writes will fail. This EOS pin value will not indicate that JTAG has access.