Support kelvin HW to be built in hw/matcha

* Refactor the dependency so hw/matcha only fetches chisel dependency
* Build fusesoc kelvin.core to define the IP based on the verilog code
* Sync ClockGate.v based on the findings in hw/matcha (and remove the
  copy there to avoid duplication)

Change-Id: I5bcee3bbacd6dbeca800b169cb1a3a0b7df311e3
6 files changed
tree: b05f2cc6df84f0fc122e0ded7eb2dbf29ca6215f
  1. doc/
  2. external/
  3. hdl/
  4. lib/
  5. rules/
  6. tests/
  7. utils/
  8. .bazelrc
  9. .gitignore
  10. CONTRIBUTING.md
  11. LICENSE
  12. PREUPLOAD.cfg
  13. README.md
  14. 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.

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: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