[dv, cosim] Enable lock-step PC and GPR verification with MPACT-Sim

Implements the full end-to-end co-simulation comparison for scalar
instructions (PC and GPRs).

The `kelvin_cosim_checker` in UVM is to:
- Call the DPI functions to get the golden state from the simulator.
- Compare the retired PC and GPR writeback data from the DUT's RVVI
  trace against the MPACT-Sim state.
- Report `COSIM_PC_MISMATCH` or `COSIM_GPR_MISMATCH` upon failure.

Change-Id: I5d7f02c6d347b4308bc4ea8a38f08ce2407659e0
7 files changed
tree: 6588fc73ad86b4477dc0c25ce691166a581c755e
  1. doc/
  2. examples/
  3. external/
  4. hdl/
  5. hw_sim/
  6. kelvin_test_utils/
  7. lib/
  8. platforms/
  9. rules/
  10. tests/
  11. third_party/
  12. toolchain/
  13. utils/
  14. .bazelrc
  15. .bazelversion
  16. .gitignore
  17. CONTRIBUTING.md
  18. LICENSE
  19. PREUPLOAD.cfg
  20. README.md
  21. WORKSPACE
README.md

Kelvin

Kelvin is a RISC-V32IM core with a custom instruction set.

Kelvin block diagram

More information on the design can be found in the overview.

Getting Started

  • If you are hardware engineer looking to integrate Kelvin into your design, check out our integration guide.
  • If you are a software engineer looking to write code for Kelvin, start with this tutorial.

Building

Kelvin uses bazel as it's build system. The Verilated simulator for Kelvin can be generated using:

bazel build //tests/verilator_sim:core_sim

The verilog source for the Kelvin core can be generated using:

bazel build //hdl/chisel/src/kelvin:core_cc_library_emit_verilog

Verilog source for the Matcha SoC can be generated using:

bazel clean --expunge  # To generate the ToT sha
bazel build //hdl/chisel:matcha_kelvin_verilog