Hardware and software build flow with SoCMake
Risto Pejašinović, Alessandro Caratelli, Anvesh Nookala, Benoît Walter Denkinger, Marco Andorno
TL;DR
The paper presents SoCMake, a CMake-based open-source build tool designed to unify hardware and software build flows for system-on-chip designs. It introduces an IP-block abstraction and VLNV-based naming to manage reusable hardware IP, integrates EDA tool backends, and provides packaging and cross-language support (C++, C, assembly) to enable end-to-end SoC generation. Built atop mature software tooling, SoCMake leverages CMake and Make to offer robust parallelization, testing, and dependency management, addressing gaps in existing hardware build systems. The work promises a stable API (1.0.0) by late 2024 and aims to broaden EDA tool support, improving reuse, verification, and automation in SoC development.
Abstract
The increasing demand for electronics is driving shorter development cycles for application-specific integrated circuits (ASICs). To meet these constraints, hardware designers emphasize reusability and modularity of IP blocks, leveraging standard system-on-chip (SoC) architectures with integrated processors and common interconnects. While these architectures reduce design and verification efforts, they also introduce complexity, as verification must encompass both hardware and software execution. To enhance reusability, hardware IP blocks are often described in higher-abstraction-level languages such as Chisel and SystemRDL, relying on compilers to generate Verilog for RTL simulation and implementation. At the system level, SoC modeling and verification leverage C++ and SystemC, underscoring the need for software compilation. Consequently, an effective build system must support both hardware design flows and software compilation, including cross-compilation for C++, C, and assembly. Existing hardware build systems lack sufficient support for software compilation, necessitating the development of a new solution. In response, the Microelectronics section of CERN initiated SoCMake, initially as part of the System-on-Chip Radiation Tolerant Ecosystem (SOCRATES). Designed to automate the generation of fault-tolerant RISC-V SoCs for high-energy physics environments, SoCMake has since evolved into a generic open-source build tool for SoC generation.
