+1 855-VERIFYY

Newsletter:Special FIFO Register

Sharing data between two systems

“Special FIFO Register”

FIFO (First In First Out) is a storage register set used to send information between two systems. FIFOs make the system loosely coupled.


There are two types of FIFO available in general, based on the clocks for reading and writing :



“The two read/write Systems have the same clock”

Sync FIFO is a special register which can be read and written by either Software side (host) or Hardware side (Application logic). Both are running at same clock. So that the user can fetch the data from the FIFO as has been put in the FIFO.

SYNC FIFO has two status flags

Full flag says that the status of the FIFO is Full and more data cannot be written into it.

Empty flag says that there is no data in the FIFO and it cannot be read.

Optionally, there are two additional, configurable flags
Almost full
Almost Empty

Almost Full Flag is a flag, user can configure with the value of choice to indicate before all available space of FIFO are filled.


Almost Empty Flag is a flag, user can configure with the value of his choice to notify that he is about to read all of the available space in the FIFO.


“Two systems having different clocks”

• • •

ASYNC FIFO is the latest entry as it is a enhancement of the FIFO Register.

With async FIFO, we share the data between two clock domains. Property “type = async ” will give us access to share data between two different domains.

Properties used in IDS are

  • “fifo = true/false”
  • “type = sync/async”
  • “fifo_depth = user defined”
  • “fifo.width = user defined”
  • “fifo.full = reg field/signal”
  • “fifo.empty = reg field/signal”
  • “fifo.almost_full_val = user defined”
  • “fifo.almost_empty_val = user defined”
  • “fifo.almost_full = reg field/signal”
  • “fifo_almost_empty =reg field/signal”

By: Harshit