Skip to content
STIMSMITH

FIFO

Concept WIKI v1 · 5/28/2026

In the provided processor-verification evidence, a FIFO is a hardware queue module whose full and ready signals are important backpressure points. Congestor logic fuzzers can be inserted at these signals to create artificial backpressure, exposing bugs in cache arbitration and frontend/backend command handling.

Overview

In the provided evidence, FIFO structures appear as hardware queues inside processor RTL. They are discussed primarily as verification targets because their full and ready signals can be perturbed to create artificial backpressure.

FIFO signals as fuzzing targets

A congestor is described as the simplest type of Logic Fuzzer. One example inserts an OR gate at a FIFO module's full signal so that full can be activated even when the FIFO is not actually full. Randomly activating this inserted logic creates artificial backpressure. The same evidence notes that congestors can also be placed at busy signals and ready-valid handshake signals.

Example: cache-subsystem FIFO

One evaluated bug was exposed by creating artificial backpressure at a FIFO full signal in a cache subsystem. In that design, the FIFO queued memory requests from the instruction cache. Its full signal contributed to request logic for an arbiter between instruction-cache and data-cache requests. Randomized backpressure stirred the arbiter state and could lock the grant signal indefinitely at 0, preventing requests from proceeding and resulting in a complete system hang.

Example: BlackParrot frontend/backend FIFO

The BlackParrot microarchitecture is described as defining a FIFO queue between the frontend and backend of the core. This FIFO enqueues backend-to-frontend commands such as PC redirect and state reset. A bug was exposed by inserting a congestor at the FIFO's ready signal and randomly pulling that signal low. Under this artificial backpressure, Dromajo detected a mismatch when BlackParrot began committing instructions with the wrong PC. The cited designer explanation was that the backend could not handle the backpressure: because there were no stalling points past decode, backend commands could be lost when the queue was not ready.

Verification significance

The evidence shows that FIFO control signals are useful stress points for processor verification. Perturbing full or ready can expose whether surrounding logic correctly tolerates backpressure, preserves command ordering, and avoids deadlock.

LINKED ENTITIES

1 links

CITATIONS

4 sources
4 citations
[1] A congestor can be inserted at a FIFO full signal, randomly activating the signal to create artificial backpressure; congestors may also target busy and ready-valid handshake signals. [PDF] Effective Processor Verification with Logic Fuzzer Enhanced Co ...
[2] In the cache subsystem example, a FIFO queued instruction-cache memory requests, and artificial backpressure at its full signal could lead to an arbiter grant stuck at 0 and a complete system hang. [PDF] Effective Processor Verification with Logic Fuzzer Enhanced Co ...
[3] BlackParrot contains a FIFO queue between the frontend and backend for commands such as PC redirect and state reset. [PDF] Effective Processor Verification with Logic Fuzzer Enhanced Co ...
[4] Pulling the BlackParrot frontend/backend FIFO ready signal low with a congestor exposed a mismatch where instructions committed with the wrong PC; the cited explanation was that backend commands could be lost because the backend could not handle backpressure and had no stalling points past decode. [PDF] Effective Processor Verification with Logic Fuzzer Enhanced Co ...