FIFO Verification Using UVM π Project Overview
This project presents the verification of a FIFO (First-In First-Out) design using the Universal Verification Methodology (UVM). The objective is to validate the functional correctness, reliability, and robustness of the FIFO under various operating scenarios using a modular and reusable UVM-based verification environment.
π― Project Objectives
Verify correct FIFO read and write operations
Validate FIFO full and empty conditions
Ensure data integrity and FIFO ordering
Apply core UVM concepts (agents, sequences, monitors, scoreboard)
Perform functional and code coverage analysis
Debug and analyze waveforms efficiently
ποΈ Verification Environment Architecture
The verification environment is structured according to UVM best practices and includes:
πΉ Test
Defines verification scenarios
Starts read/write sequences
Controls simulation execution
πΉ Environment (env)
Integrates FIFO agents and scoreboard
Connects monitors to the scoreboard
πΉ Agent
Active Agent
Includes sequencer, driver, and monitor
Drives read/write transactions to the FIFO DUT
Passive Agent
Includes monitor only
Observes FIFO outputs without driving signals
πΉ Driver
Converts sequence items into pin-level FIFO signals
Drives read and write control signals
πΉ Sequencer & Sequences
Generate FIFO transactions
Support directed and random stimulus
πΉ Monitor
Samples FIFO interface signals
Sends observed transactions to the scoreboard via analysis ports
πΉ Scoreboard
Stores expected data during write operations
Compares expected data with actual read data
Reports mismatches using UVM reporting mechanism
πΉ DUT (FIFO)
RTL implementation of FIFO memory and control logic
π Scoreboard & Checking Strategy
Expected data is stored in a queue during write operations
On read operations, expected data is popped and compared with actual output
Reporting:
UVM_ERROR for data mismatches
UVM_WARNING for unexpected but non-fatal behavior
UVM_FATAL for critical configuration issues
π§ͺ Test Scenarios
FIFO reset behavior
Write operations until FIFO is full
Read operations until FIFO is empty
Simultaneous read and write
Randomized read/write sequences
π Coverage & Debugging Tools
This project uses Cadence verification tools for coverage analysis and debugging:
IMC (Integrated Metrics Center) Used to collect and analyze functional and code coverage, ensuring verification completeness and identifying untested scenarios.
SimVision Used for waveform visualization and debugging, enabling signal tracing and detailed analysis of FIFO behavior during simulation.
βοΈ Tools & Technologies
SystemVerilog
UVM (Universal Verification Methodology)
Cadence Xcelium β Simulation
IMC (Integrated Metrics Center) β Coverage Analysis
SimVision β Debugging & Waveform Analysis
π Project Structure βββ rtl/ β βββ fifo.sv β βββ interface/ β βββ fifo_if.sv β βββ component/ β βββ fifo_seq_item.sv β βββ fifo_sequences.sv β βββ fifo_driver.sv β βββ fifo_monitor.sv β βββ fifo_sequencer.sv β βββ fifo_agent.sv β βββ fifo_scoreboard.sv β βββ fifo_env.sv β βββ test/ β βββ fifo_test.sv β βββ tb_top.sv β βββ README.md
Compile RTL and UVM testbench
Run simulation using Cadence Xcelium
View waveforms using SimVision
Analyze coverage using IMC
π Conclusion
This project demonstrates a structured and scalable UVM-based verification environment for FIFO designs. It highlights the use of modular components, automated checking via a scoreboard, effective coverage analysis using IMC, and efficient debugging through SimVision.