Verilator 4.0 - Open Simulation Goes Multithreaded
summary
Verilator 4.0 generates C++ from SystemVerilog-like RTL and adds multithreaded macro-task partitioning that groups many micro-tasks into ~10x macro tasks, assigns them statically to threads to avoid cache thrash, and uses semaphore-style sync across macro-task edges. Measured gains: ~30% single-thread speedup over 3.9.6, 1.9x on 4 logical CPUs (2.5x when pinned to one socket), and up to 5.5x on 12 threads with ~52% scalability. Also adds LXT2 waveform output and improved linting and runtime options.
AI-written summary · about
chapters (14)
- 0:00Start
- 1:39Verillator is a compiler
- 3:33Example: Linting a Verilog Module
- 4:39Example: Translation
- 5:25Verilator in Standard IP
- 7:33Multithreading Algorithm Begins
- 9:30Merge micro tasks, only macro tasks remain
- 10:02Schedule macro tasks onto threads
- 11:41Benchmarks
- 12:34Verilator Performance vs. Big 3
- 14:16Beware Which Cores Are Used
- 15:36Verillator Multithreaded Performance on 48 core machine
- 17:02Verillator Gantt Report (4 threads)
- 18:37Conclusion: Adopt Verilator
related talks
24mOpen source RTL verification with Verilator
22mOpen source design testing and verification with UVM and Verilator
23mUnlocking Open Source RISC-V SoC Verification
09mLightning Talk: Design Verification with Step-and-Compare for RISC-V...
23mCORE-V Verification Test Bench – Commercial Qualit...
21mCombined Dynamic and Formal Verification Approach to Processor Verification
21mCloud-based Verification of Open Source RISC-V Cores Using the Metrics Cloud Platform and Codasip SweRV Support Package
19mThe role of software in validating silicon IP
