Standalone encoder and decoder for Soundstream

- Extract setup code from the existing soundstream application into a
  library target.
- Rename the existing soundstream application to soundstream_e2e.
- Encoder and decoder applications for Soundstream, which run a single
  invocation of their model, and populate the `output_header` section so
  that the results can be retrieved.
- Enable c++17 to use std::optional
- Remove the TF_LITE_STATIC_MEMORY define (as we are using the heap in
  the soundstream library now)
- Fix the definition of operator delete so the linker resolves it
  properly
- Add a definition of operator new (which calls malloc)

Change-Id: I446f135825f77744bbe561105b5e156c51b3bc0c
12 files changed
tree: beef1d0155167b73063a47254ca6ff6659c4d2d0
  1. build_tools/
  2. crt/
  3. docs/
  4. examples/
  5. host_tools/
  6. platforms/
  7. tests/
  8. tflm/
  9. third_party/
  10. toolchains/
  11. .bazelrc
  12. .bazelversion
  13. .gitignore
  14. PREUPLOAD.cfg
  15. README.md
  16. WORKSPACE
README.md

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 flow, while CMake is the build system for 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 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 //...

CMake

TODO: Add CMake flow

Run the executable

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.