TFMicro integration into KelvinV2 ecosystem.

Successful integration necessitated modifications across the repository.

Revisions to the build system encompass:
 * Workspace has been reconfigured to facilitate the download of the tflite_micro repository and its associated dependencies.
 * rules/repos.bzl file now incorporates new repositories for download.
 * rules/utils.bzl file has been updated to include the generate_cc_arrays tool.

The tflite_micro patch incorporates:
 * Patches designed to disable -pthreads within ruy and gemmlowp.
 * Adjustments to the visibility of the generate_cc_array and hello_world models.

Regarding the toolchain, the following changes have been implemented:
* Removal of freestanding attributes.
* Addition of no-exceptions and no-rtti flags.
* Introduction of a new tcm.ld file to facilitate high-memory kelvin_binaries.

Validation was conducted using tests/cocotb/tutorial/tflite_micro_test.cc.
Toolchain Validation bazel test tests/cocotb/...

Change-Id: I3cc05b9ad6a23d4c20c1b9c074b1b8a6b18dae5d
14 files changed
tree: 5f4a77104d14ad9b44a1fdbf95590cba03351e94
  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