UltraScale Architecture Memory Resources
ug573-ultrascale-memory-resources
ug573-ultrascale-memory-resources
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapter 2: Built-in FIFO<br />
PROGFULL Flag<br />
If PROGFULL is asserted, the number of words in the FIFO is greater than or equal to<br />
PROG_FULL_THRESH.<br />
Because of the inherent latencies in the FIFO, especially for the independent-clocks FIFO,<br />
PROGFULL is always considered a pessimistic flag. This means that not all read operations<br />
might have synchronized to the WRCLK domain, and therefore the words in the FIFO might<br />
be reported as more than there actually are in the FIFO. However, because the PROGFULL<br />
flag is synchronous to the WRCLK domain, PROGFULL is generally used to determine how<br />
many locations in the FIFO are available to be written, so the over-reporting of PROGFULL<br />
guarantees that too many words are never written to the FIFO.<br />
The number of clock cycles required for a read operation to cause PROGFULL to deassert<br />
depends on the FIFO configuration. For an independent-clocks FIFO, a read operation is<br />
first synchronized internally to the WRCLK domain before it can influence the status of the<br />
PROGFULL flag, resulting in a latency from the read operation to the deassertion of<br />
PROGFULL that is a combination of a few read clocks followed by a few write clocks.<br />
The PROGFULL flag is synchronous to the WRCLK domain and is intended as a status signal<br />
for logic writing to the FIFO.<br />
Flag Assertion/Deassertion and Flag Latencies<br />
Flag assertion and deassertion timing depends on the configuration of the FIFO. The<br />
common-clock FIFO configuration is not affected by the uncertainty of two unrelated clock<br />
domains, and requires no synchronization between clock domains. Therefore, the internal<br />
latencies from a write operation to the deassertion of EMPTY or PROGEMPTY, or from a read<br />
operation to the deassertion of FULL or PROGFULL, are much faster than in an equivalent<br />
independent-clock FIFO. Similarly, a FIFO configured with asymmetric ports has additional<br />
latencies depending on the port width ratios of the read and write port. The configuration<br />
of the REGISTER_MODE, FIRST_WORD_FALL_THROUGH, and EN_ECC_PIPE attributes can<br />
increase the latency from a write operation to the deassertion of EMPTY up to three<br />
additional RDCLK cycles.<br />
Independent-clock FIFOs are synchronized between clock domains. Due to this internal<br />
synchronization between the WRCLK domain and the RDCLK domain, certain transitions<br />
take several clock cycles. For example, it takes several clock cycles (both WRCLK and RDCLK<br />
clock cycles) for the write operation to synchronize to the RDCLK domain. Only after the<br />
write operation is synchronized to the RDCLK domain is that write operation reflected in the<br />
status of the RDCLK outputs EMPTY and PROGEMPTY, and possibly cause these flags to<br />
deassert.<br />
Similarly, the internal synchronization between the RDCLK domain and the WRCLK domain<br />
also takes several clock cycles. For example, it takes several clock cycles (both RDCLK and<br />
WRCLK clock cycles) for the read operation to synchronize to the WRCLK domain. Only after<br />
the read operation is synchronized to the WRCLK domain is that read operation reflected in<br />
<strong>UltraScale</strong> <strong>Architecture</strong> <strong>Memory</strong> <strong>Resources</strong> www.xilinx.com<br />
Send Feedback<br />
74<br />
UG573 (v1.2) February 24, 2015