Skip to content

aqdarahmad/uvm-fifo-sim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

▢️ How to Run

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.

About

This project presents the verification of a FIFO design using the UVM.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors