Common-Clock/Single-Clock FIFO - Common-Clock/Single-Clock FIFO - UG573

UltraScale Architecture Memory Resources User Guide (UG573)

Document ID
UG573
Release Date
2025-11-18
Revision
1.14 English

The common-clock FIFO (also referred to as a single-clock or Synchronous FIFO) is a first-in/first-out queue where the write interface and the read interface share a common clock domain. When using synchronous FIFOs, the CLOCK_DOMAINS attribute should be set to COMMON to eliminate clock cycle latency when asserting or deasserting flags.

The interface of the common-clock FIFO is identical to that of the independent-clocks FIFO, except that either:

  • There is only one clock input (CLK), or
  • There are two clock inputs (WRCLK and RDCLK) that must be tied to the same clock source (clock buffer)

Because a common-clock FIFO requires no synchronization between clock domains, the internal latencies from a write operation to the deassertion of EMPTY or PROGEMPTY, or from a read operation to the deassertion of FULL or PROGFULL are much faster than in an equivalent independent-clock FIFO.

Also, because a common-clock FIFO does not need to deal with the uncertainty of two unrelated clock domains, it can use the entire memory contents for FIFO storage, rather than reserving a memory location to prevent errors. Because of this, the depth of a common-clock FIFO is one word larger than an equivalent independent-clock FIFO. The following table shows the FIFO capacity in the standard and FWFT modes.

Table 1. Common-Clock FIFO Capacity Without Output Registers and with Symmetric Ports
Standard Mode FWFT Mode
18 Kb FIFO 36 Kb FIFO 18 Kb FIFO 36 Kb FIFO
4K entries by 4 bits 8K entries by 4 bits 4K + 1 entries by 4 bits 8K + 1 entries by 4 bits
2K entries by 9 bits 4K entries by 9 bits 2K + 1 entries by 9 bits 4K + 1 entries by 9 bits
1K entries by 18 bits 2K entries by 18 bits 1K + 1 entries by 18 bits 2K + 1 entries by 18 bits
512 entries by 36 bits 1K entries by 36 bits 512 + 1 entries by 36 bits 1K + 1 entries by 36 bits
512 entries by 72 bits 512 + 1 entries by 72 bits
  1. There are minor variances in depth based on certain mode settings and output register stages.
Important: Both the block RAM and FIFO require clean, free running clocks. The FIFO cannot be recovered if it is in reset or data content can be corrupted while an unstable clock, that does not meet the minimum pulse width requirement, is applied. If any of the FIFO clocks become unstable, it is recommended to either disable the appropriate clock buffers via the CE pin or only reset the FIFO after a stable clock has returned. The most common use case for this is when a gigabit transceiver loses its recovered clock (for example, the CDR loses alignment).