Usage

Building the SDK

The applications are built with RISC-V LLVM 18 or later.

Important

For LLVM versions less than 15, linker relaxation is not supported and thus disabled.

Tip

Recommended for new users: use the pre-built container (Docker or Singularity, see below). The container ships with the correct LLVM toolchain, picolibc, and all Python dependencies pre-installed — no manual toolchain setup needed.

CMake Variables

All build methods use the same CMake variables:

  • TARGET_PLATFORM – hardware target to build for (required; see Targets)

  • TOOLCHAIN_DIR – path to the LLVM installation root (required if not on PATH)

  • PICOLIBC_DIR – path to the prebuilt picolibc installation (required; see make picolibc-multilib)

  • HARDWARE_BACKEND – simulation back-end: RTL (default), GVSOC or ASIC

  • CHIMERA_UNIFIED_ELF – when ON, merges device and host ELFs into a single mixed-ISA file suitable for simulation (requires lief; default OFF)

Targets

The SDK supports multiple hardware targets. Available targets are defined in targets/CMakeLists.txt under AVAILABLE_TARGETS:

  • chimera-convolve – target for the CONVOLVE project (RV64IMC host + RV32IMAFD cluster)

  • chimera-host – host-only target (no cluster devices)

  • chimera-open – default target with multiple Snitch clusters

Testing

You can test functional correctness with the event-based simulator GVSoC. To install GVSoC:

make gvsoc

By default, GVSoC is installed in install/gvsoc. Override with GVSOC_INSTALL_DIR.

Run a test with the unified ELF:

./install/bin/gvsoc --target=chimera \
    --binary build/bin/chimera_unified_<test>.elf run