| # Kelvin SW Repository | |
| This project contains the BSP to build the SW artifact that can run on the | |
| Kelvin core, and integrated as part of the Shodan repository. | |
| The project supports two build systems -- Bazel and CMake -- for OSS integration | |
| reasons. Bazel is used by [TFLM](https://github.com/tensorflow/tflite-micro) | |
| flow, while CMake is the build system for [IREE](https://github.com/openxla/iree). | |
| ## Prerequisite | |
| If you get this project from Project Shodan manifest, you are all set. If not, | |
| you need to have following projects as well to build the project successfully. | |
| * Kelvin crosscompile toolchain: Under `<dir>/cache/toolchain_kelvin` | |
| This project needs to be at `<dir>/sw/kelvin`. | |
| ## Code structure | |
| * build_tools: Build tool/rules for both Bazel and CMake | |
| * crt: Kelvin BSP | |
| * examples: Source code to build Kelvin SW artifacts. | |
| * host_tools: host tool to generate the intrinsic header and toolchain op files | |
| * platforms: Crosscompile platform setup for Bazel. | |
| * tests: Tests to exercise features of the Kelvin core. | |
| * tflm: Support code and optimized routines for TFLM. | |
| * third_party: Third party repositories for Bazel. | |
| * toolchains: Crosscomple toolchain setup for Bazel. | |
| ## Build the project | |
| ### Bazel | |
| The project uses Bazel 5.1.1, to align with | |
| [OpenTitan](https://github.com/lowRISC/opentitan) build system requirements. | |
| ```bash | |
| bazel build //... | |
| ``` | |
| To run the unit tests (with the kelvin_sim ISS) | |
| Make sure the Environment variable `$ROOTDIR` is set to the root directory | |
| of the local repo (or run `source build/setup.sh`) | |
| ```bash | |
| bazel test //... | |
| ``` | |
| ### CMake | |
| ```note | |
| TODO: Add CMake flow | |
| ``` | |
| ## Run the executable | |
| The binaries can be simulated with the kelvin simulator, located at | |
| `<dir>/sim/kelvin`. | |
| ```note | |
| sim_kelvin <elf location> | |
| ``` | |
| Load the generated `.bin` binaries to the FPGA emulator/Renode simulator. | |