feat(bus): Add TileLink-UL primitives

This commit introduces a collection of primitive modules for building
TileLink-UL interconnects, including FIFOs, sockets, and a width
bridge.

The new modules are:
- TlulFifoSync: A synchronous TileLink FIFO with optional spare
  side-channels.
- TlulFifoAsync: An asynchronous TileLink FIFO for clock domain
  crossing, built on the rocket-chip AsyncQueue.
- TlulSocket1N: A 1-to-N socket for steering requests from a single
  host to one of N devices.
- TlulSocketM1: An M-to-1 socket that arbitrates requests from M
  hosts to a single device using a round-robin arbiter.
- TlulWidthBridge: A bridge for connecting TileLink-UL buses of
  different widths.

Each of these modules is accompanied by a comprehensive cocotb test
suite to ensure its correctness.

Change-Id: I2ca34caad9332b0621a68957c043a91deee45999
12 files changed
tree: 952c899da41243dae45144168d4f4eb585d02780
  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