3 ms·
Verilator and a C or C++ CPU model are your friend when you are verifying a core like this. Verilator also lets you use C and C++ verification tools (which are
by pclmulqdq 4y ago
Verilator and a C or C++ CPU model are your friend when you are verifying a core like this. Verilator also lets you use C and C++ verification tools (which are extensive for good reason) to check for Verilog bugs and find corner cases.
Companies still using UVM (most of them) instead of models in software languages are going to have a terrible time trying to check that a CPU core is bug-free.
- deleted 4y ago[deleted]
- bippingchip 4y agoI 100% agree on verilator. It’s by far the most efficient tool for many simulation and verification needs. Hands down. Even more so if you are building CPUs UVM definitely has its place still in verification flows. It for something as complex and flexible as a CPU for sure, it’s hard to beat the amount of cycles and coverage you get from verilator. (EDA license fees are a big part of that, but also the fact that verilator generates just C++ code you can integrate with the rest of your s/w flow is invaluable). But: What is also important for CPU is good validation and compliance test, (random or replayed or directed) instruction stream generators, ISS to validate agains etc. There are so much more scenarios to check because a CPU needs to handle any sequence of any instructions flawlessly. Those tools are also crucial. And they are being built or sold for RISC-V now too. And also: I much prefer combining those with verilator than with commercial eda tools. And don’t forget: before you start building a lot of RTL, you’ll typically will also build C based higher level performance models of the micro architecture, eg https://github.com/riscv-software-src/riscv-perf-model https://github.com/riscv-software-src/riscv-perf-model