Skip to content

Level RISC-V โ€” Development Tools Guide

This document describes the open-source development tools used in the Level RISC-V project, how to install them, and usage examples.


๐Ÿ“Š Tool Summary

Tool Category Rating License Description
Verilator Simulation โญโญโญโญโญ LGPL Fastest open-source RTL simulator
Spike RISC-V ISS โญโญโญโญโญ BSD Official RISC-V reference simulator
Slang (pyslang) Linting โญโญโญโญโญ MIT Most comprehensive SV parser/linter
Yosys Synthesis โญโญโญโญโญ ISC RTL synthesis framework
svlint Linting โญโญโญโญ MIT Fast SV style linter
GTKWave Waveform โญโญโญโญ GPL Mature VCD/FST viewer
Surfer Waveform โญโญโญโญ MIT Modern, GPU-accelerated viewer
> Rating scale: โญ Basic โ†’ โญโญโญโญโญ Professional

๐Ÿš€ Simulation Tools

Version: 5.026
Rating: โญโญโญโญโญ
Website: https://verilator.org

Verilator is the fastest open-source simulator that compiles SystemVerilog/Verilog RTL to C++/SystemC.

Features

  • โœ… SystemVerilog 2017 support
  • โœ… Multi-threaded simulation
  • โœ… Lint and static analysis
  • โœ… Coverage analysis
  • โœ… FST/VCD waveform output
  • โœ… C++ testbench integration

Installation

# Ubuntu 24.04
sudo apt install verilator

# From source (recommended, more up to date)
git clone https://github.com/verilator/verilator
cd verilator && git checkout v5.026
autoconf && ./configure --prefix=/opt/verilator
make -j$(nproc) && sudo make install

Usage

make verilate                    # Build model
make run_verilator TEST_NAME=rv32ui-p-add
make lint                        # Verilator lint (--lint-only -Wall)

Spike (RISC-V ISS)

Rating: โญโญโญโญโญ
Website: https://github.com/riscv-software-src/riscv-isa-sim

Official RISC-V Instruction Set Simulator. Used as a golden model.

Features

  • โœ… All RISC-V ISA extensions
  • โœ… Commit trace log output
  • โœ… Interactive debugging
  • โœ… Memory model support

Usage

make spike TEST_NAME=rv32ui-p-add   # Run with Spike
make compare_logs                    # Compare RTL vs Spike

Icarus Verilog

The project has no Makefile target for Icarus: Level RTL uses advanced SystemVerilog and does not practically build with Icarus. You may install and try it separately; the official flow is Verilator / ModelSim.


๐Ÿ” Linting Tools

Slang (pyslang)

Version: 9.1.0
Rating: โญโญโญโญโญ
Website: https://sv-lang.com

The most comprehensive SystemVerilog parser and linter. Full IEEE 1800-2023 alignment.

Features

  • โœ… Full SV 2023 support
  • โœ… Semantic analysis
  • โœ… Type checking
  • โœ… 200+ lint rules
  • โœ… Python bindings (pyslang)

Installation

pip install pyslang
# or
make lint_install

Usage

make slang_lint      # Run lint
make slang_check     # Detailed analysis

Sample Output

rtl/core/cpu.sv:182:78: error: no implicit conversion from 'int' to 'spec_type_e'
rtl/core/cpu.sv:309:16: warning: 'case' marked 'unique' has 'default' label

svlint

Version: 0.9.5
Rating: โญโญโญโญ
Website: https://github.com/dalance/svlint

Fast SystemVerilog style and naming linter. Rust-based.

Features

  • โœ… Fast execution
  • โœ… TOML configuration
  • โœ… Customizable rules
  • โœ… CI/CD friendly

Installation

make lint_install
# or
cargo install svlint

Usage

make svlint          # Run lint

Configuration (.svlint.toml)

[option]
exclude_paths = ["subrepo/", "build/"]

[rules]
prefix_module = false
style_keyword_1space = true
case_default = true

Verilator Lint

Rating: โญโญโญโญ

Built-in Verilator lint.

Usage

make lint                # Static analysis (--lint-only -Wall)

๐Ÿ“Š Waveform Viewer

GTKWave

Rating: โญโญโญโญ
Website: http://gtkwave.sourceforge.net

Mature, widely used waveform viewer.

Features

  • โœ… VCD, FST, LXT2 support
  • โœ… TCL scripting
  • โœ… Signal search
  • โœ… Analog waveform

Installation

sudo apt install gtkwave

Usage

make gtkwave                    # Open latest waveform
make run_verilator TRACE=1      # Simulation with trace

Surfer

Rating: โญโญโญโญ
Website: https://surfer-project.org

Modern, GPU-accelerated waveform viewer. Rust-based.

Features

  • โœ… GPU acceleration
  • โœ… Modern UI
  • โœ… Fast large-file loading
  • โœ… VCD, FST, GHW support

Installation

make surfer_install
# or
cargo install --git https://gitlab.com/surfer-project/surfer surfer

Usage

make surfer                     # Open waveform
make surfer_file WAVE_FILE=path # Open specific file
make wave_compare               # GTKWave vs Surfer comparison

๐Ÿ”จ Synthesis Tools

Yosys

Rating: โญโญโญโญโญ
Website: https://yosyshq.net/yosys

Open-source RTL synthesis framework.

Features

  • โœ… Verilog/SystemVerilog parsing
  • โœ… Various optimization passes
  • โœ… FPGA and ASIC targets
  • โœ… Formal verification support

Installation

sudo apt install yosys

Usage

make yosys_check                # Synthesis check
make yosys_synth                # Full synthesis

๐Ÿงช Test Framework

riscv-tests

Official RISC-V ISA test suite.

make isa                        # Run all ISA tests
make t T=rv32ui-p-add           # Single test

riscv-arch-test

RISC-V architecture compliance tests.

make arch                       # Run all arch tests

CoreMark

Embedded system benchmark.

make run_coremark               # CoreMark (Verilator)

๐Ÿ“‹ Quick Reference

Command Description
make verilate Build Verilator model
make run_verilator TEST_NAME=... Run simulation
make svlint Run svlint
make slang_lint Run Slang lint
make lint_all Run all linters
make lint_install Install lint tools
make gtkwave Open GTKWave
make surfer Open Surfer
make yosys_check Yosys synthesis check
make isa Run ISA tests
make html Generate test dashboard

๐Ÿ”ง Troubleshooting

Verilator Errors

BLKLOOPINIT error:

# --Wno-BLKLOOPINIT added in verilator.mk

VL_SYSTEM_IN error:

# Upgrade to Verilator 5.026

svlint Configuration Error

# Check the .svlint.toml file
# Rule names may be invalid

pyslang Import Error

pip install --upgrade pyslang

๐Ÿ“š Additional Resources


Last updated: November 2025