Skip to content
Branch: master
Go to file


Failed to load latest commit information.
Latest commit message
Commit time
Jan 24, 2020

"Open Source VHDL Verification Methodology" (OSVVM) Repository Latest tag Apache License 2.0

About Open Source VHDL Verification Methodology (OSVVM)

Open Source VHDL Verification Methodology (OSVVM) provides utility and model libraries that simplify your FPGA and ASIC verification tasks. Using these libraries you can create a simple, readable, and powerful testbench that is suitable for either a simple FPGA block or a complex ASIC.

This repository contains the OSVVM Utility Library. Download it using git:
git clone

OSVVM is the #1 VHDL Verification Methodology

According to the 2018 Wilson Verification Survey, OSVVM is the:

  • #1 VHDL Verification Methodology
  • #1 FPGA Verification Methodology in Europe (ahead of SystemVerilog + UVM)

The OSVVM Utility Library

The OSVVM utility library offers the same capabilities as those provided by other verification languages (such as SystemVerilog and UVM):

  • Transaction-Level Modeling
  • Constrained Random test generation
  • Functional Coverage with hooks for UCIS coverage database integration
  • Intelligent Coverage Random test generation
  • Utilities for testbench process synchronization generation
  • Utilities for clock and reset generation
  • Transcript files
  • Error logging and reporting - Alerts and Affirmations
  • Message filtering - Logs
  • Scoreboards and FIFOs (data structures for verification)
  • Memory models

Download the OSVVM Utility library using git:
git clone

The OSVVM Model Library

The OSVVM model library is a growing set of models commonly used for FPGA and ASIC verification.
The library currently contains the following repositories:

  • Verification IP
    • Repository that includes all of the OSVVM model library as submodules.
    • Download the entire OSVVM model library using git clone with the "--recursive" flag:
      $ git clone --recursive
    • Note submodules are not included in the GitHub zip files
  • AXI4 Lite
    • Master
    • Slave transactor model
  • AXI Stream
    • Master
    • Slave
  • UART
    • Transmitter (aka master) - with error injection
    • Receiver (aka slave) - with error injection
  • OSVVM Common - Required
    • Shared transcript interfaces
  • OSVVM Scripts
    • Recommended. Script layer on top of tcl
    • Common simulator compilation and execution methodology

We use the word models as short hand for Transaction Based Models (TBM). They are simply an entity and architecture coded in an effective manner for verification. Some use other terminology such as VHDL verification components (VVC) - these are the same thing. Historically we used Bus Functional Models (BFM). However, recently we abandoned BFM due to others using BFM to refer to their own lesser capable subprogram based approach.

OSVVM models use records for the transaction interfaces, so connecting them to your testbench is simple - connect only a single signal.

Testbenches are in the Git repository, so you can run a simulation and see a live example of how to use the models.

OSVVM Forums - currently broken:
License: Apache License 2.0 Copyright: Copyright © 2006-2020 by SynthWorks Design Inc.

Release History

For current release information see osvvm_release_notes.pdf

The following has a bad habit of falling behind the current release:

  • Apr-2018 - 2018.04 Minor updates to AlertLogPkg, CoveragePkg, ScoreboardGenericPkg, TbUtilPkg, MessagePkg
  • May-2017 - 2017.05 Minor additions to AlertLogPkg, CoveragePkg, and ScoreboardGenericPkg
  • Nov-2016 - 2016.11 Added VendorCovApiPkg, ScoreboardGenericPkg, TbUtilPkg, ResolutionPkg
  • Jan-2016 - 2016.01 Fix limit of 32 AlertLogIDs, Updates for GHDL (Purity and L.all(L'left)),
  • Jul-2015 - 2015.06 Addition of MemoryPkg
  • Mar-2015 - 2015.03 Bug fixes to AlertLogPkg (primarily ClearAlerts, but also matching names)
  • Jan-2015 - 2015.01 Not here. Addition of AlertLogPkg, TranscriptPkg,OsvvmContext, and OsvvmGlobalPkg.
  • Dec-2014 - 2014.07a Fixed memory leak in CoveragePkg.Deallocate. Replaced initialized pointers with initialization functions
  • Jul-2014 - 2014.07 Not here. Added names to coverage bins. Added option during WriteBin so that a bin prints PASSED if its count is greater than the coverage goal, otherwise FAILED.
  • Jan-2014 - 2014.01 RandomPkg: RandTime, RandIntV, RandRealV, RandTimeV. CoveragePkg: Support merging of coverage bins.
  • May-2013 - 2013.05 RandomPkg: Big Vector Randomization.

Starting with 2016.01, this repository was handed off to Jim Lewis (OSVVM Developer) and became the GIT site for OSVVM
Releases prior to 2016.01 were uploaded by Patrick Lehmann

You can’t perform that action at this time.