This repository demonstrates the capabilities of SoCMake, a CMake-based build system, in compiling UVM verification environments for both SystemC and SystemVerilog. The aim is to facilitate performance comparisons and provide a robust example of building and running these environments with SoCMake.
A simple CRC verilog module is used as a DUT. While the APB register file is generated with PeakRDL-regblock.
Ensure the following dependencies are installed to fully utilize the repository:
- CMake: Required for SoCMake
- PeakRDL-regblock: Required for register block generation in both environments.
- Verilator: Needed to simulate DUT in SystemC-based simulations.
- Questasim: Used for simulating SystemVerilog UVM environments.
SoCMake will take care of the rest of the dependencies (SystemC, UVM-SystemC, UVM-SystemVerilog, CRCpp).
TODO - SoCMake can also compile Verilator in case it is not present, as well as setup Python virtual environment and install PeakRDL-regblock dependency.
apb_crc/
: Contains APB CRC dut files, RTL sources, and register definitions, as well as SoCMake recipe.sc-uvm/
: SystemC UVM environment, using CRCpp as ref model.sv-uvm/
: SystemVerilog UVM environment, using CRCpp through DPI.
- Install dependencies
- Clone the repository
git clone https://github.com/Risto97/apb_crc_uvm_socmake.git
cd apb_crc_uvm_socmake
- Configure project
cd sc-uvm
mkdir build && cd build
cmake ../
- Print help for possible targets, options, IPs
make help_all
- Compile and run
make -j
./apb_crc_sc_uvm
- Configure project
cd sc-uvm
mkdir build && cd build
cmake ../
- Print help for possible targets, options, IPs
make help_all
- Compile and run
make run_crc_tb_top_modelsim
This project is licensed under the GPL-3.0 license.