refactor(fpga): Replace tlgen xbar with Chisel-based KelvinXbar

This commit replaces the legacy `tlgen`-based crossbar with the new,
data-driven Chisel-based `KelvinXbar` in the FPGA design. This change
simplifies the build system, improves maintainability, and provides a
more flexible and robust interconnect.

Key changes:
- Removed the `tlgen` and `post_process_xbar.py` infrastructure from
  the FPGA build system.
- Instantiated the new `KelvinXbar` in `kelvin_soc.sv`, replacing the
  old crossbar and all associated width-sizers.
- Updated the clocking and reset logic to support the new crossbar's
  asynchronous domains, placing the Ibex core on its own clock.
- Removed the now-redundant Verilog implementations of the TileLink-UL
  primitives (FIFOs, sockets, width bridges).
- Added integrity generation to the `CoreTlul` module to ensure data
  integrity on the TileLink bus.
- Increased the FPGA clock frequency to 80MHz.

Change-Id: I340658419ca5cc93acee481c16334aeb026b2e7e
27 files changed
tree: df6c375c3259669b31a287455047a52f92505056
  1. doc/
  2. examples/
  3. external/
  4. fpga/
  5. hdl/
  6. hw_sim/
  7. kelvin_test_utils/
  8. lib/
  9. platforms/
  10. rules/
  11. tests/
  12. third_party/
  13. toolchain/
  14. utils/
  15. .bazelrc
  16. .bazelversion
  17. .gitignore
  18. CONTRIBUTING.md
  19. LICENSE
  20. PREUPLOAD.cfg
  21. README.md
  22. 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