This repository contains SystemVerilog + UVM–based verification environments simulated using Xilinx Vivado XSIM. It demonstrates industry-correct UVM compile flow, functional coverage generation, and regression-ready practices.
The project is structured as multiple folders representing incremental learning, hands-on experiments, and verification patterns. (Roadmap followed using ChatGPT.)
- End-to-end UVM verification flow on Vivado XSIM
- Blocking scoreboard using analysis FIFOs
- Factory and Config DB
- Predictor-based expected modeling
- Failure-mode driven verification (missing/extra/lag)
- Phase-aligned transaction sampling
This document describes how to install Xilinx Vivado, verify the setup, and run SystemVerilog / UVM simulations using XSIM, including coverage generation.
This README is tool-focused and applies to any Vivado-based verification project.
- Simulator: Xilinx Vivado XSIM
- Language: SystemVerilog
- Methodology: UVM (Universal Verification Methodology)
- Coverage: Functional Coverage (covergroups, coverpoints, crosses)
- Debug: XSIM debug database & waveforms
Download Vivado from the official AMD/Xilinx website:
- Vivado Design Suite (WebPACK / ML / HL editions)
- Recommended version: Vivado 2020.2 or later
During installation, ensure:
- Vivado Simulator (XSIM) is selected
- Default UVM library is installed
Vivado bin directory added to PATH
- Check Vivado/bin path added to your environment variables.
- If not, check the bin directory created in your file system after installation.
C:\Vivado\20xx.x\bin
(or)
C:\Vitis\Vivado\20xx.x\bin
- Add this path to your environment variables.
All required tools (xvlog, xelab, xsim) are pre-configured.
Source the Vivado settings script before running any command:
source /path/to/Vivado/<version>/settings64.shExample:
source /tools/Xilinx/Vivado/2023.1/settings64.shVerify installation and tool availability:
vivado -version
xvlog -version
xelab -version
xsim -versionIf any command is not found, the environment is not sourced correctly.
XSIM follows a three-step flow:
Compile → Elaborate → Simulate
Compile SystemVerilog / UVM sources:
xvlog -sv -L uvm *.svFor directories:
xvlog -sv -L uvm rtl/*.sv tb/*.svFor source files list:
xvlog -sv -L uvm -f filelist.f📌-L uvm is NOT required for pure System Verilog.
📌-L uvm tells Vivado to link against its built-in UVM library.
Without it:
uvm_component,uvm_test,uvm_envare undefined- Compilation fails
Elaborate the design and testbench:
xelab -L uvm tb_top -s sim_snapshot tb_top→ Top-level testbench modulesim_snapshot→ Compiled simulation snapshot
Run the simulation:
xsim sim_snapshot -sv_seed random -runallOr interactively:
> xsim sim_snapshot -sv_seed random
xsim% run all
xsim% exit📌 -sv_seed random is used to seed Randomization.
Simulation runs until:
$finish, or- all UVM objections are dropped
Coverage database saved in Default directory: xsim.covdb
XSIM supports functional coverage collection and HTML report generation using xcrg(Xilinx Coverage Report Generator).
More about xcrg, refer UG937.
xsim top -sv_seed random -cov_db_dir covdb_run_01 runall- Default directory:
xsim.covdb - For regression, each run must use a separate DB
- Prevents overwriting coverage data
➡️ Coverage database created at:
covdb_run_01/
mkdir reports/run_01xcrg -report_format html -dir covdb_run_01 -report_dir reports/run_01- It creates the following files.
Open in a browser:
reports/run_01/dashboard.html
Go to Groups -> Check group in Name column -> Instance
The report includes:
- Covergroups & coverpoints
- Cross coverage
- Hit/miss statistics
- Coverage percentage summary
Example xcrg html report view:
-
UVM simulations may block intentionally depending on testbench behavior
-
Hanging simulations can indicate:
- Missing transactions
- Blocking FIFOs
- Incorrect objection handling
-
Always review simulation logs carefully
- UVM version is provided by Vivado
- Assertion coverage not supported. (in 2022.X)
- Some advanced UVM features may differ across Vivado versions. (Check docs UG900 for UVM features supported, by AMD Vivado)
This setup is suitable for:
- RTL verification
- UVM-based testbenches
- Functional coverage collection
- Regression-style simulations using XSIM
Give a ⭐️ if this repo helped you!
Note: Vivado™ and XSIM™ are trademarks of AMD/Xilinx.
This repository is for educational and verification practice purposes only.


