Pessimistic Full and Empty - 1.0 English

Embedded FIFO Generator LogiCORE IP Product Guide (PG327)

Document ID
PG327
Release Date
2023-05-10
Version
1.0 English

When independent clock domains are selected, the full flag (full, almost_full) and empty flag (empty, almost_empty) are pessimistic flags. The full and almost_full flags are synchronous to the write clock (wr_clk) domain, while empty and almost_empty are synchronous to the read clock (rd_clk) domain.

The full flags are considered pessimistic flags because they assume that no read operations have taken place in the read clock domain. The almost_full flag is guaranteed to be asserted on the rising edge of wr_clk when there is only one available location in the FIFO, and full is guaranteed to be asserted on the rising edge of wr_clk when the FIFO is full. There can be a number of clock cycles between a read operation and the deassertion of full. The precise number of clock cycles for full to deassert is not predictable due to the crossing of clock domains and synchronization logic.

The empty flags are considered pessimistic flags because they assume that no write operations have taken place in the write clock domain. The almost_empty flag is guaranteed to be asserted on the rising edge of rd_clk when there is only one more word in the FIFO, and empty is guaranteed to be asserted on the rising edge of rd_clk when the FIFO is empty. There can be a number of clock cycles between a write operation and the deassertion of empty. The precise number of clock cycles for empty to deassert is not predictable due to the crossing of clock domains and synchronization logic.