Virtio implementation in SystemVerilog.
These 3rd party tools and libraries must be installed to build and run tests:
- CMake - build, test and package project
- IntelFPGA Quartus - synthesis tool for Intel FPGAs
- Verilator - simulator, lint and coverage tool
- SystemC 2.3.1 - SystemC C++ library
- SystemC Verification 2.0 - SystemC data randomization
- UVM-SystemC 1.0 - UVM for SystemC
- Natural Docs - code documentation generator
- GoogleTest - C++ unit test framework
- SVUnit - SystemVerilog unit test framework
- GTKWave - waveform viewer
- WaveDrom - digital timing diagram
- README.md - this read me file in MarkDown format
- LICENSE - license file
- CMakeLists.txt - CMake root script for building and testing project
- doc - configuration files for code documentation generator
- rtl - RTL source files
- src - C++ source files
- include - C++ include headers
- tests - unit tests and verification tests in SystemC using Google Test or UVM and SystemVerilog using SVUnit
- cmake - additional CMake scripts for building project
- scripts - additional scripts in TCL or Python for building project
Clone repository:
git clone [email protected]:tymonx/virtio.git
Change current location to repository directory:
cd virtio
Clone git submodules:
git submodule init
git submodule update
Create build directory:
mkdir build
Change current location to build directory:
cd build
Create build scripts using CMake:
cmake ..
Build project using CMake:
cmake --build . --target all
Or build project using make:
make -j`nproc`
To build documentation:
cmake --build . target doc
Built HTML documentation can be found in:
doc/html
To view HTML documentation, open it using web browser:
<WEB_BROWSER> doc/html/index.html
Run all unit tests:
ctest
Run only unit tests for AXI4-Stream:
ctest -R axi4_stream
All waveforms generated from unit tests are located in:
output
All unit tests logs are stored in:
Testing/Temporary/LastTest.log
Run Verilator coverage after running all tests:
cmake --build . --target verilator-coverage