{"id":13408065,"url":"https://github.com/ben-marshall/awesome-open-hardware-verification","last_synced_at":"2025-07-22T05:31:22.240Z","repository":{"id":38847075,"uuid":"162694810","full_name":"ben-marshall/awesome-open-hardware-verification","owner":"ben-marshall","description":"A List of Free and Open Source Hardware Verification Tools and Frameworks","archived":false,"fork":false,"pushed_at":"2023-09-08T10:41:04.000Z","size":170,"stargazers_count":535,"open_issues_count":3,"forks_count":53,"subscribers_count":42,"default_branch":"master","last_synced_at":"2025-07-10T10:19:17.207Z","etag":null,"topics":["awesome","awesome-list","constrained-random-verification","coverage","formal-verification","hardware","python","verification","verilog","vhdl"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ben-marshall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-12-21T09:32:12.000Z","updated_at":"2025-07-01T08:00:30.000Z","dependencies_parsed_at":"2024-01-12T03:35:14.025Z","dependency_job_id":"09944350-0090-4810-a286-a595cfd14bb0","html_url":"https://github.com/ben-marshall/awesome-open-hardware-verification","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ben-marshall/awesome-open-hardware-verification","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ben-marshall%2Fawesome-open-hardware-verification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ben-marshall%2Fawesome-open-hardware-verification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ben-marshall%2Fawesome-open-hardware-verification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ben-marshall%2Fawesome-open-hardware-verification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ben-marshall","download_url":"https://codeload.github.com/ben-marshall/awesome-open-hardware-verification/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ben-marshall%2Fawesome-open-hardware-verification/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265522945,"owners_count":23781743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awesome","awesome-list","constrained-random-verification","coverage","formal-verification","hardware","python","verification","verilog","vhdl"],"created_at":"2024-07-30T20:00:50.523Z","updated_at":"2025-07-22T05:31:21.577Z","avatar_url":"https://github.com/ben-marshall.png","language":null,"funding_links":[],"categories":["🌍 Awesome Digital IC Resources","Uncategorized","Others","FPGA Design","Awesome Awesome ⭐","Control","Other Lists","Awesome List"],"sub_categories":["Physical Design","Uncategorized","TeX Lists"],"readme":"# Open Hardware Verification\n\n*A curated List of Free and Open Source hardware verification tools and frameworks.*\n\nThe aim here is to curate a (mostly) comprehensive list of available tools for verifying\nthe functional correctness of Free and Open Source Hardware designs. The list can\ninclude:\n- [Tools](#tools) which contain or implement verification related functionality\n- [Testbench Frameworks](#frameworks) which make writing testbenches easier\n- [Projects](#projects) which are good examples of free/open hardware verification efforts\n- [Verification Guides](#guides) and blog posts on how to actually go about verifying a hardware design\n- [Conferences](#conferences) where new work on open source hardware verification is talked about\n\nPull requests and submissions are encouraged!\n\n**Some Rules:**\n\nThis list focuses on *Verification* and not *design*. While there are lots of cool new\nlanguages and frameworks aimed at making hardware design easier (or at least, *not Verilog/VHDL*),\nverification can sometimes get left out in the cold.\n\nWhile some new design tools/languages claim that \"our new design tool `X` makes verification\neasier because it is written in high level language `Y`\", it can often be much harder to find\nevidence of this in terms of re-usable verification IP/frameworks/methods which are written\nin \"new language/tool `Y`\". It might seem mean, but being a new design language which \n*theoretically* makes verification easier is not enough to merit inclusion on this list. What's\nneeded is *practical* demonstration of making verification easier. This can be through libraries or\nIP which use \"new language/tool `Y`\", or in depth tutorials which explain how to use it for proper\ndesign verification.\n\nIf you're after hardware *design* tools, these awesome lists are a good place to start:\n- [awesome-hdl](https://github.com/drom/awesome-hdl)\n\nFurther, entries in this list should not only be open source themselves, but *be usable* by\npeople developing open source hardware using open source tools. For example, if company `X`\nreleases a set of re-usable verification components written using\n[UVM](https://www.accellera.org/downloads/standards/uvm)\nand SystemVerilog, is there an Free and Open Source SystemVerilog implementation which can make\nuse of them?\n\n## Contents\n\nThis list has grown a lot lately, and the original taxonomy of tools/frameworks\nI had is starting to break down. I'll probably switch to a proper website\nwhen I get the time to remember how Github Pages works.\n\n### Tools\n\n#### Formal Verification:\n\n- [Symbiyosys](#symbiyosys)\n  - [riscv-formal](#riscv-formal)\n- [MCY](#mcy) - Testbench coverage tool.\n- [EBMC / CBMC](#ebmc--cbmc) (Model checker for C/C++ and hardware designs)\n\n#### Simulation:\n\n- [Verilator](#verilator) - Verilog Simulator\n- [Icarus Verilog](#icarus-Verilog) - Icarus Verilog Simulator\n\n#### Build Systems and Continuous Integration:\n\n- [LibreCores CI](#libreCores-ci)\n- [FuseSoc](#fusesoc) - Package manager and build abstraction tool for FPGA/ASIC development.\n  - [fsva](#fsva) - FuseSoC Verification Automation\n\n#### Test / Program / Code Generators:\n\n- [AAPG (Automated Assembly Program Generator)](#aapg)\n- [riscv-dv](#riscv-dv) - Instruction sequence generator for RISC-V\n- [rggen](#rggen) (Code generation tool for configuration and status registers)\n- [FORCE-RISCV](#force-riscv) - Another instruction sequence generator for RISC-V\n\n#### Coverage:\n\n- [covered](#covered)\n\n#### Linting and Parsing:\n\n- [svlint](#svlint)\n- [sv-parser](#sv-parser)\n- [Surelog](#surelog-system-verilog-2017-pre-processor-parser)\n\n### Testbench Frameworks:\n\n- [cocotb](#cocotb) - Python based testbench environment for many simulators\n  - [python-uvm](#python-uvm) - A port of UVM 1.2 to Python and [cocotb](#cocotb).\n  - [cocotb-coverage](#cocotb-coverage) - Functional Coverage and Constrained Randomization extensions for Cocotb.\n  - [Verification IPs](#cocotb-ips) - Various cocotb packages for common interfaces: AXI/Ethernet/PCIE\n- [fvutils/pyvsc](#fvutilspyvsc) - Python packages providing a library for Verification Stimulus and Coverage\n- [chiselverify](#chisel-verify) - UVM-like verification for the Chisel HDL\n- [UVVM](#uvvm)\n- [OSVVM](#osvvm)\n- [VUnit](#vunit)\n- [V3](#v3)\n- [ROHD Verification Framework](#rohd-verification-framework) - Hardware verification framework upon [ROHD](https://github.com/intel/rohd) for building and executing testbenches.\n\n### Components / VIPs\n\n- [uvm_axi](#uvm_axi)\n- [AXI Bus Formal VIP](#axi-bus-formal-vip)\n- [AXI Bus Functional Model tvip-axi](#axi-bus-functional-model---tvip-axi)\n- [AXI SystemVerilog Modules and Verification Infrastructure](#axi-systemverilog-modules-and-verification-infrastructure)\n- [APB Bus Functional Model tvip-apb](#apb-bus-functional-model---tvip-apb)\n- [USB 1.1 Test Suite](#antmicro-usb-test-suite)\n- [Cocotb Verification IPs](#cocotb-ips) - Various cocotb packages for common interfaces: AXI/Ethernet/PCIE\n- [RISC-V-TLM](#risc-v-tlm) - A SystemC transaction level model of RISC-V\n\n### Projects\n\n- [OpenHW Group Functional Verification](#openhw-group-functional-verification)\n- [LowRISC Style Guides](#lowrisc-style-guides)\n\n### Guides \u0026 Blogs:\n\n- [Dan Gisselquist Formal Verification Blogs](#dan-gisselquist-formal-verification-blogs)\n- [Verification Gentleman Blog](#verification-gentleman-blog)\n- [Bits, Bytes and Gates](#bits-bytes-and-gates)\n\n### Conferences:\n\n- [ORCONF](#orconf)\n- [OSDA](#osda)\n- [CHIPS Alliance Workshop on Open Source Design Verification](#chips-alliance-workshop-on-open-source-design-verification)\n- [Workshop on Open-Source EDA Technology (WOSET)](#workshop-on-open-source-eda-technology-woset)\n\n---\n\n## Tools:\n\n### SymbiYosys\n\n*\"SymbiYosis a front-end driver program for Yosys-based formal hardware\nverification flows. SymbiYosys provides flows for the following formal tasks:\nBounded verification of safety properties (assertions),\nUnbounded verification of safety properties,\nGeneration of test benches from cover statements,\nVerification of liveness properties\"*\n\nSymbiYosys requires [Yosys](https://github.com/YosysHQ/yosys) (an open\nsource synthesis tool) and one or more formal reasoning engines (listed\n[here](https://symbiyosys.readthedocs.io/en/latest/quickstart.html#prerequisites)to work.\n\n- Written In: Python\n- Write Assertions In: Verilog/SystemVerilog Assertions (SVA)\n- Supports: Formal verification of correctness properties.\n- Link: https://symbiyosys.readthedocs.io/en/latest/\n\n### MCY\n\n*\"mcy is a new tool to help digital designers and project managers understand and improve testbench coverage. [...] Given a self checking testbench, mcy generates 1000s of mutations by modifying individual signals in a post synthesis netlist. These mutations are then filtered using Formal Verification techniques, keeping only those that can cause an important change in the design’s output. All mutated designs are run against the testbench to check that the testbench will detect and fail for a relevant mutation. The testbench can then be improved to get 100% complete coverage.\"*\n\n- Written In: C++ / Python\n- License: [ISC](https://github.com/YosysHQ/mcy/blob/master/COPYING)\n- Link: https://github.com/YosysHQ/mcy\n\n### Verilator\n\nVerilator is  \"the fastest free Verilog HDL simulator\". From a verification\nperspective it supports *line coverage*, *signal toggle coverage* and limited\nspecification of *functional coverage* using SystemVerilog Assertions.\nIt also allows one to write testbenches in C++ or SystemC.\n\n- Written In: C++\n- Write testbenches in: C++/SystemC/Verilog\n- Supports: Design simuation, *Coverage collection from simulations*.\n- Link: https://www.veripool.org/projects/verilator/wiki/Intro\n\n### Icarus Verilog\n\nThe excellent Icarus Verilog simulator.\nSlower than Verilator, but it supports full 4-state simulation (i.e. X's and\nZ's).\n\n- Write testbenches in: Verilog, or use [cocotb](#cocotb).\n- Link: https://github.com/steveicarus/iverilog\n\n### LibreCores CI\n\n*\"LibreCores CI is a service, which provides Continuous Integration of projects being hosted on LibreCores. The objective of the service is to improve the contributor experience and to increase trust to projects by providing automated testing and health metrics of the projects.\"*\n\n- Currently under development at the time of writing (Dec 2018)\n- Aims to allow automation of testing for hardware designs. Think \"Travis for hardware\".\n- Link: https://www.librecores.org/static/librecores-ci\n\n## AAPG\n\n*\"Automated Assembly Program Generator (aapg) is a tool that is intended to generate random RISC-V programs to test RISC-V cores.\"*\n\nFrom the [Shakti](https://gitlab.com/shaktiproject) RISC-V core project.\nActs as a way to generate random stimulus for a RISC-V core.\nOutput of the programs can then be checked between DUT and a GRM.\n\n- Link: https://gitlab.com/shaktiproject/tools/aapg\n- License: BSD 3-clause\n- Written In: Python\n\n## riscv-dv\n\nSimilar to [AAPG](#aapg), but this time from Google/ CHIPS Alliance. \nGenerates randomised RISC-V programs which can \nthen be run by the DUT and A GRM and checked for equivilence. \nIt has knowledge of interesting features like page tables, CSR access and\ntrap/interrupt handling.\nCan generate randomised instruction streams with features like loops\nand function calls etc.\n\nThis project cannot be used with current free open source HDL simulators\nsince it relies on the object orientated parts of UVM. It is still a\nuseful piece of Verification IP though, and serves as a guide for other\nsimilar projects.\nThe project also has a Python generator, which, while less capable\nas of the time of this writing, can be run with FOSS HDL simulators.\n\n- Link: https://github.com/chipsalliance/riscv-dv\n- License: Apache-2.0\n- Written In: SystemVerilog + UVM\n\n### covered\n\n*\"Covered is a Verilog code coverage analysis tool that can be useful for determining how well a diagnostic test suite is covering the design under test.\"* ... *\"Covered reads in the Verilog design files and a VCD, LXT or FST formatted dumpfile from a diagnostic run and generates a database file called a Coverage Description Database (CDD) file\"* ... \"*Once a CDD file is created, the user can use Covered to generate various human-readable coverage reports in an ASCII format or use Covered's GUI to interactively look at coverage results*\".\n\n- Link: https://github.com/anders-code/verilog-covered\n- License: GPL-2.0\n- Written In: C\n\n### svlint\n\nAn open source, MIT licensed SystemVerilog linting tool. Built on top of an open source [SystemVerilog parser](#sv-parser).\n\n- Link: https://github.com/dalance/svlint\n- License: MIT\n- Written In: Rust\n\n### sv-parser\n\nAn open source, MIT/Apache licensed SystemVerilog parser/ Useful for quickly building custom tools / checkers.\n\n- Link: https://github.com/dalance/sv-parser\n- License: MIT / Apache\n- Written In: Rust\n\n### Surelog: System Verilog 2017 Pre-processor, Parser\n\n*\"This project aims at providing a complete System Verilog 2017 front-end: \na preprocessor, a parser, an elaborator for both design and testbench.\"* \n\n*\"Linter, Simulator, Synthesis tool, Formal tools can use this front-end.\nThey either can be developed as plugins (linked with) or use this front-end\nas an intermediate step of their compilation flows\"*.\n\n- Link: https://github.com/chipsalliance/Surelog\n- License: Apache 2.0\n- Written In: C++ with Python bindings.\n\n### RgGen\n\n\"*RgGen is a code generation tool for ASIC/IP/FPGA/RTL engineers. It will\nautomatically generate soruce code related to configuration and status\nregisters (CSR), e.g. SytemVerilog RTL, UVM RAL model, Wiki documents, from\nhuman readable register map specifications.*\"\n\n- Link: https://github.com/rggen/rggen\n- License: MIT\n- Written in: Ruby\n\n\n### EBMC / CBMC\n\n**EBMC:**\n\n\"*EBMC is a Model Checker for hardware designs. It includes both bounded and\nunbounded analysis, i.e., it can both discover bugs and is also able to prove\nthe absence of bugs. It can read Netlists (ISCAS89 format), Verilog, System\nVerilog and SMV files. Properties can be given in LTL or a fragment of System\nVerilog Assertions.*\"\n\n- Link: http://www.cprover.org/ebmc/\n- Licence: http://www.cprover.org/ebmc/download/license.txt\n- Written in: _Unknown_.\n\nNote: Only the binaries for EBMC can be downloaded, no source-code is\navailable.  It's included on this list because it is a powerful tool which\nwould otherwise not be available to the open hardware community.\nFor a completely free and open tool with similar capabilities,\nlook at [SymbiYosys](#symbiyosys).\n\n**CBMC:**\n\n\"*CBMC is a Bounded Model Checker for C and C++ programs.*\"\n\n\"*Furthermore, it can check C and C++ for consistency with other languages,\nsuch as Verilog. The verification is performed by unwinding the loops in the\nprogram and passing the resulting equation to a decision procedure.*\"\n\n- Link: http://www.cprover.org/cbmc/\n  - Source: https://github.com/diffblue/cbmc\n- Licence: https://github.com/diffblue/cbmc/blob/develop/LICENSE\n- Written in: C++.\n\n### FuseSoC\n\nFrom the project README: *FuseSoC is an award-winning package manager and a set\nof build tools for HDL (Hardware Description Language) code. Its main purpose\nis to increase reuse of IP (Intellectual Property) cores and be an aid for\ncreating, building and simulating SoC solutions.*\n\nMy Opinion: If you need a tool to manage you HDL or testbench dependencies,\npackage your IP for easy sharing, or generally just make your hardware design\nand verification life easier, FuseSoC is a great place to start.\n\n- Link: https://github.com/olofk/fusesoc\n- Written in: Python\n- License: [BSD-2-Clause](https://github.com/olofk/fusesoc/blob/master/LICENSE)\n\n### fsva\n\n\"*fsva (FuseSoc Verification Automation) is a tool that aims to automate\nthe verification process of libraries and HDL design projects managed\nwith [FuseSoc](https://github.com/olofk/fusesoc) build tool/system.*\"\n\n- Link: https://github.com/m-kru/fsva\n- License: MIT\n- Written in: Python\n\n### FORCE-RISCV\n\n\"*FORCE-RISCV is an instruction sequence generator (ISG) for the RISC-V instruction set architecture. It can be used to generate tests for design verification of RISC-V processors. FORCE-RISCV uses randomization to choose instructions, registers, addresses and data for the tests, and can generate valid test sequences with very little input from the user. However, FORCE-RISCV provides a set of APIs with extensive capabilities which gives the user a high level of control over how the instruction generation takes place.*\"\n\nThis makes it similar to [riscv-dv](#riscv-dv), but you don't\nneed a SystemVerilog simulator to run it.\nIt is maintained by the [OpenHW Group](https://www.openhwgroup.org/)\n\nFeature set:\n- RV64G - (RV64I, MAFDC). (V extension support planned)\n- RISC-V privileged ISA, including full support for the U, S, and M privilege levels.\n- RISC-V traps and exceptions basic handling.\n- Support for non-trivial exception handlers is planned.\n- Full support for the v48 virtual memory systems, including 4KB, 2MB, 1GB and 512GB page sizes.\n\nDetails:\n- Link: https://github.com/openhwgroup/force-riscv\n- License: [Apache-2.0](https://github.com/openhwgroup/force-riscv/blob/master/LICENSE)\n- Written In: C++, Python3\n- Write Tests In: Python3\n\n### RISC-V-TLM\n\n\"*This is another RISC-V ISA simulator, this is coded in SystemC + TLM-2. It supports RV32IMAC Instruction set by now.*\"\n\nDetails:\n- Link: https://github.com/mariusmm/RISC-V-TLM\n- License: [GPL-3.0](https://github.com/mariusmm/RISC-V-TLM/blob/master/LICENSE)\n- Written In: C++ / SystemC\n\n## Frameworks:\n\n### Cocotb\n*\"cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.\"*\n\n- Licence: [Revised BSD License](https://github.com/cocotb/cocotb/blob/master/LICENSE)\n- Implemented in: Python\n- Write Testbeches In: Python\n- Link: https://github.com/cocotb/cocotb\n\n\n### python-uvm\n\n*\"This is a port of SystemVerilog (SV) Universal Verification Methodology (UVM) 1.2 to Python and cocotb. [...]\nUVM is not currently supported by any open source/free tools. cocotb offers excellent solution to interact\nwith any simulator (free/commercial), so testbenches can be written in Python as well. uvm-python tries to\noffer an API similar to the original SV version. This means that many UVM verificaton skills are\ntransferable from SV to Python very easily.\"*\n\n- License: [Apache-2.0](https://github.com/tpoikela/uvm-python/blob/master/LICENSE)\n- Implemented in: Python\n- Write Testbenches In: Python\n- Link: https://github.com/tpoikela/uvm-python\n- Documentation: https://uvm-python.readthedocs.io/en/latest/\n- Users Guide: https://uvm-python.readthedocs.io/en/latest/uvm_users_guide_1.2.html\n\n\n### Cocotb Coverage\n\n*Functional Coverage and Constrained Randomization Extensions for Cocotb.*\n\n*This package allows you to use constrained randomization and functional coverage techniques known from CRV (constrained random verification) and MDV (metric-driven verification) methodologies, available in SystemVerilog or e. Such extensions enable the implementation of an advanced verification environment for complex projects.*\n\nThere is also a DVCon'17 [presentation](http://events.dvcon.org/2017/proceedings/papers/02_3.pdf).\n\n- Implemented in: Python\n- Write Testbenches in: Python\n- License: [BSD-2-Clause](https://github.com/mciepluc/cocotb-coverage/blob/master/LICENSE)\n- Link: https://github.com/mciepluc/cocotb-coverage\n\n\n### Cocotb IPs\n\nListed here are various cocotb plugins for common interfaces or modules:\n\nInterface / Module | Author | License\n-------------------|--------|----------------\n[AXI Bus](https://github.com/alexforencich/cocotbext-axi)  | [Alex Forencich](http://www.alexforencich.com/wiki/en/start) |  MIT\n[Ethernet](https://github.com/alexforencich/cocotbext-eth) | [Alex Forencich](http://www.alexforencich.com/wiki/en/start) |  MIT\n[PCIe](https://github.com/alexforencich/cocotbext-pcie)    | [Alex Forencich](http://www.alexforencich.com/wiki/en/start) |  MIT\n\n\n### fvutils/pyvsc\n\n*\"PyVSC is a Python library that implements random verification-stimulus generation and coverage collection.\n[...] Currently, the Python-embedded domain-specific language supports similar features to those supported by SystemVerilog. Not all SystemVerilog features are supported, but in some cases features not supported by SystemVerilog are also supported. Please see the following section [PyVSC Features](https://py-vsc.readthedocs.io/en/latest/features.html#pyvsc-features)\"*\n\n- Written in: Python\n- License: [Apache-2.0](https://github.com/fvutils/pyvsc/blob/master/LICENSE)\n- Documentation: https://py-vsc.readthedocs.io/en/latest/\n- Link: https://github.com/fvutils/pyvsc\n\n### riscv-formal\n\nA re-usable formal verification framework for RISC-V CPU designs.\nUses the [Yosys/SymbiYosys](#symbiyosys) tools.\n\n- License: [ISC](https://github.com/SymbioticEDA/riscv-formal/blob/master/COPYING)\n- Written In: Verilog\n- Link: https://github.com/SymbioticEDA/riscv-formal\n\n### UVVM\n\n*\"Open Source VHDL Verification Library and Methodology - for very efficient VHDL verification of FPGA and ASIC - resulting also in a significant quality improvement\"*\n\nThere is also an accompanying library of user contributed VIPs: [UVVM_Community_VIPs](https://github.com/UVVM/UVVM_Community_VIPs).\n\n- License: [MIT](https://github.com/UVVM/UVVM/blob/master/LICENSE)\n- Written In: VHDL\n- Write Testbenches In: VHDL\n- Supports: [a bunch of stuff](https://github.com/UVVM/UVVM#main-features)\n- Link: https://github.com/UVVM/UVVM\n\n\n### Chisel Verify\n\nFrom the project README: *This repo is for the project to explore the\ncombination and interaction of Chisel and UVM. The ultimate goal is a\nverification framework within Scala for digital hardware described in Chisel\nalso supporting legacy components in VHDL, Verilog, or SystemVerilog.*\n\n- Written In: Scala/Chisel\n- Write testbenches in: Scala/Chisel\n- License: [Apache-2.0](https://github.com/chiselverify/chiselverify/blob/master/LICENSE.txt)\n- Link: https://github.com/chiselverify/chiselverify\n\n### OSVVM\n\nOSVVM is a VHDL verification framework, verification utility library, verification component library, and a simulator independent scripting flow.  OSVVM provides VHDL with buzz word verification capabilities including Transaction Level Modeling, Constrained Random, Functional Coverage,  Scoreboards, and Error Reporting that are simple to use and feel like built-in language features.  The reporting capabilities include HTML outputs for human readability and JUnit based XML for CI/CD tools.\n\nThe GitHub organisation includes verification components:\n- [AXI4 Full - Manager, Memory, Subordinate](https://github.com/OSVVM/AXI4)\n- [AXI4 Lite - Manager, Memory, Subordinate](https://github.com/OSVVM/AXI4)\n- [AXI4 Stream - Transmitter and Receiver](https://github.com/OSVVM/AXI4)\n- [UART - Transmitter and Receiver](https://github.com/OSVVM/UART)\n- [DPRAM - Memory Model and Controller](https://github.com/OSVVM/DpRam)\n\n- License: APACHE-2.0\n- Written In: VHDL/TCL\n- Documentation: https://osvvm.github.io/\n- Supports: Constrained Random Test Generation, Functional Coverage Collection, [and more](https://osvvm.org/about-os-vvm)\n- Link: https://osvvm.org/\n- GitHub: https://github.com/OSVVM/OsvvmLibraries\n\n### VUnit\n\n*\"VUnit is an open source unit testing framework for VHDL/SystemVerilog \\[...\\] It features the functionality needed to realize continuous and automated testing of your HDL code. VUnit doesn’t replace but rather complements traditional testing methodologies by supporting a “test early and often” approach through automation.\"*\n\nBased partially on [OSVVM](#osvvm)\n\n- Written In: VHDL/Python\n- Write Testbenches In: VHDL/System Verilog\n- License: [Mozilla Public License, v. 2.0.](https://github.com/VUnit/vunit/blob/master/LICENSE.txt) baring OSVVM components.\n- Link: https://vunit.github.io/index.html\n\n### V3\n\n*\"V3 is a new and extensible framework for hardware verification and debugging researches on both Boolean-level and word-level designs. It is a powerful tool for users and an elaborate framework for developers as well.\"*\n\nAcademic project, looks unmaintained since 2014.\n\n- Written In: C++\n- Write Testbenches In: Unclear?\n- License: [Non-commercial](https://github.com/chengyinwu/V3/blob/master/COPYING)\n- Supports: formal methods based approaches using AGIER / SAT Solving over verilog input files. Not entirely clear how one specifies correctness properties.\n- Link: https://github.com/chengyinwu/V3\n\n### ROHD Verification Framework\n*\"The [ROHD Verification Framework (ROHD-VF)](https://github.com/intel/rohd-vf) is a verification framework built upon the [Rapid Open Hardware Development (ROHD) framework](https://github.com/intel/rohd). It enables testbench organization in a way similar to UVM. A key motivation behind it is that hardware testbenches are really just software, and verification engineers should be empowered to write them as great software. The ROHD Verification Framework enables development of a testbench in a modern programming language, taking advantage of recent innovations in the software industry. With ROHD and ROHD-VF, your testbench and hardware execute natively in Dart in a single fully-debuggable process. \"*\n\n- Written in: Dart\n- Write Testbenches In: Dart with [ROHD](https://github.com/intel/rohd)\n- License: [BSD-3-Clause](https://github.com/intel/rohd-vf/blob/main/LICENSE)\n- Supports: Organizing testbenches in a way similar to UVM; natively executing, debugging, and simulating hardware and the testbench in Dart; all features of [ROHD](https://github.com/intel/rohd) including a fast event-based simulator\n- Link: https://github.com/intel/rohd-vf\n\n## Components / VIPs\n\n### uvm_axi\n\nA bus functional model for ARM's AXI bus protocol. Looks like it has been written as a standard UVM Verification Package.\nBeing written in SystemVerilog (using all of its object orientated, behavioural modelling features) makes it hard\nto re-use with the current set of FOSS simulators. It is still a good example of re-usable verification IP.\n\nLast commit in 2013, so likely un-maintained.\n\n- Link: https://github.com/funningboy/uvm_axi\n- Written in: System Verilog\n- Write Testbenches In: System Verilog\n- License: GNU Lesser General Public License\n\n### AXI Bus Formal VIP\n\nA set of formal properties for checking for correct protocol behaviour in an AXI bus.\nUsed as part of a Wishbone-AXI bus bridge, but usable with any AXI bus.\nThere is a great blog post on it's use [here](https://zipcpu.com/formal/2018/12/28/axilite.html) from ZipCPU.\nIt works with SymbiYosys.\n\n- Link: https://github.com/ZipCPU/wb2axip/blob/master/bench/formal/faxil_slave.v\n- Written in: Verilog\n- Write Testbenches In: Verilog\n- License: None specified\n\n### AXI Bus Functional Model - tvip-axi\n\nBus function model for AMBA AXI protocol.\nSupports master and slave agents, AXI4 and AXI4-Lite protocols.\nConfigurable address/data/id widths.\nSupports in/out-of-order responses, delayed responses and read interleaving.\n\n- Link: https://github.com/taichi-ishitani/tvip-axi\n- Written in: SystemVerilog and UVM\n- License: Apache-2.0\n\n### AXI SystemVerilog Modules and Verification Infrastructure\n\nSystemVerilog modules, testbenches, and test classes for AMBA AXI4 and\nAXI4-Lite.  Provides parametrizable and synthesizable implementations of many\ncommon AXI modules (e.g., crossbars, data width converters) and testbenches for\nthem.  Provides test classes (drivers and monitors) to write custom testbenches.\nProvides protocol-compliant multiplexers and demultiplexers to simplify the\nimplementation and verification of custom AXI modules.\n\n- Link: https://github.com/pulp-platform/axi\n- Written in: SystemVerilog\n- License: Solderpad Hardware License v0.51\n\n\n### APB Bus Functional Model - tvip-apb\n\nBus function model for AMBA APB protocol\n\n- Link: https://github.com/taichi-ishitani/tvip-apb\n- Written in: SystemVerilog and UVM\n- License: Apache-2.0\n\n\n### Antmicro USB Test Suite\n\n\"*This is a [Cocotb](https://github.com/cocotb/cocotb) based\n USB 1.1 test suite (to be extended to cover higher versions of \nthe standard) for FPGA IP, with testbenches for a variety of open\nsource USB cores.*\"\n\n- Link: https://github.com/antmicro/usb-test-suite-build\n- Written in: Cocotb / Python 3\n- License: Apache-2.0\n\n\n## Guides:\n\n### Dan Gisselquist Formal Verification Blogs\n\nA set of posts on experiences using [Symbiyosys/Yosys](#symbiyosys) for formally verifying a CPU design.\nIncludes lots of useful insights and guides for specific and general use cases.\n\n- Link: https://zipcpu.com/formal/formal.html\n\n### Verification Gentleman Blog\n\nWritten by [Tudor Timi](https://github.com/tudortimi):\n*\"I started the Verification Gentleman blog to store \nsolutions to small (and big) problems I've faced in my \nday to day work. I want to share them with the\ncommunity in the hope that they may be useful to someone else.\"*\n\n- Link: https://blog.verificationgentleman.com/\n- GitHub organisation with example code: https://github.com/verification-gentleman-blog\n\n### Bits Bytes and Gates\n\nThis is [Matthew Ballance's](https://github.com/mballance)\n(author of [fvutils/pycsv](#fvutilspyvsc)) blog,\nfull of \n\"*Musings on hardware and embedded software design and verification,\nand the EDA tools and methodologies that support them.*\"\n\nThere's some good stuff on using Python for coverage, constrained\nrandom stimulus generation and verification / EDA generally.\n\n- Link: http://bitsbytesgates.blogspot.com/\n\n\n## Projects\n\n### OpenHW Group Functional Verification\n\nThe [OpenHW group](https://www.openhwgroup.org/) are a\nnot-for-profit focused on \"*development of open-source cores,\nrelated IP, tools and software.*\"\n\nThis particular repository contains their functional verification\nefforts for their open source RISC-V CPUs. It's a good place\nto look at how a large verification project is planned and\norganised.\n\n- Github Link: https://github.com/openhwgroup/core-v-verif\n- Verification Strategy Document: https://core-v-docs-verif-strat.readthedocs.io/en/latest/\n- License: [Solderpad V2](https://github.com/openhwgroup/core-v-verif/blob/master/LICENSE.md)\n\n### LowRISC Style Guides\n\nThese are the style guides used by the \n[LowRISC project](https://www.lowrisc.org/)\nfor writing both RTL and UVM based testbenches.\n\n- License: [CC-BY-4.0](https://github.com/lowRISC/style-guides/blob/master/LICENSE)\n- Link: https://github.com/lowRISC/style-guides\n\n## Conferences:\n\n### ORCONF\n\n*\"ORConf is an annual conference for open source digital, semiconductor and embedded systems designers and users. Each year attendees are treated to an ever-impressive array of presentations from all corners of the open source hardware space.\"*\n\n- Link: https://orconf.org/\n\n### OSDA\n\n*\"Workshop on Open Source Design Automation (OSDA)\"*\n\n*\"This one-day workshop aims to bring together industrial, academic, and hobbyist actors to explore, disseminate, and network over ongoing efforts for open design automation, with a view to enabling unfettered research and development, improving EDA quality, and lowering the barriers and risks to entry for industry. These aims are particularly poignant due to the recent efforts across the European Union (and beyond) that mandate 'open access' for publicly funded research to both published manuscripts as well as any code necessary for reproducing its conclusions.\"*\n\n- Longer Description: https://osda.gitlab.io/motivation.html\n- Link: https://osda.gitlab.io/\n\n### CHIPS Alliance Workshop on Open Source Design Verification\n\n*\"The workshop invites contributions from industry, academia and hobbyists, either as talk or tutorial. Proposals should cover open source design simulation and verification, for example in the following categories (but not limited to):\n\n    Open source simulation tools\n    Open source design verification tools\n    Open source rapid prototyping tools and methodologies\n    Open source libraries for design verification\n    Open source standards and methodologies for design verification\n    Industry case studies of usage and integration of the aforementioned\n\nMost importantly, your submitted proposal should cover the open source aspect.\"*\n\n- Link: https://chipsalliance.org/workshops-meetings/\n- Location: Munich, Germany\n\n\n### Workshop on Open-Source EDA Technology (WOSET)\n\n*\"The WOSET workshop aims to galvanize the open-source EDA movement.\nThe workshop will bring together EDA researchers who are committed to\nopen-source principles to share their experiences and coordinate efforts\ntowards developing a reliable, fully open-source EDA flow.\"*\n\n- Link: https://woset-workshop.github.io/\n\nOften has verification related tools, presentations and papers Submissions (2-4 pages)\ncan include:\n\n- Overview of an existing or under-development open-source EDA tool.\n- Overview of support infrastructure (e.g. EDA databases and design benchmarks).\n- Open-source cloud-based EDA tools\n- Position statements (e.g. critical gaps, blockers/obstacles)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fben-marshall%2Fawesome-open-hardware-verification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fben-marshall%2Fawesome-open-hardware-verification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fben-marshall%2Fawesome-open-hardware-verification/lists"}