commit | c231cedf70c86f3383d278971906cfbd56965e69 | [log] [tgz] |
---|---|---|
author | Sam Leffler <sleffler@google.com> | Sat Oct 28 15:53:39 2023 -0700 |
committer | Sam Leffler <sleffler@google.com> | Tue Nov 14 10:30:01 2023 -0800 |
tree | c196336241c8acc7d8225fc23e5aaff5df1e7c9f | |
parent | a5f129c4a8769d47157df7e016872705e6d8706a [diff] |
sw/kelvin: revamp layout to support setting model input data Split the memory layout so there are two loadable elf segments. The second segment is one page (4096 bytes) and holds the model_output_header and a model_input region where the host can write input data that models either copy into the TfLite input data area, or, for IEEE, are passed in without copying. The page size is chosen to satsify elf loadable segment alignment. Models are expected to declare a model_input symbol with suitable size (4096 - sizeof(model_output_header)). Host support (e.g. MlCoordinator) expects this layout; it does not, in particular deduce this from the contents of the elf file. Change-Id: I34c3d6893dabbe067cf0b07e472c80e49a5652de
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 flow, while CMake is the build system for IREE.
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.
<dir>/cache/toolchain_kelvin
This project needs to be at <dir>/sw/kelvin
.
The project uses Bazel 5.1.1, to align with OpenTitan build system requirements.
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
)
bazel test //...
TODO: Add CMake flow
The binaries can be simulated with the kelvin simulator, located at <dir>/sim/kelvin
.
sim_kelvin <elf location>
Load the generated .bin
binaries to the FPGA emulator/Renode simulator.