Speaker
Description
Modern System-on-Chip (SoC) devices are widely applicable; several boards in the LHC Phase-2 upgrade use them. However, their growing complexity, along with the increasingly intricate firmware and software development tools, makes it difficult for developers to keep up. To address this, we propose SoCks, a modular and scalable build framework for SoC devices that introduces a new layer of abstraction and reduces dependencies wherever possible while making the remaining ones comprehensible. Unlike previous approaches, SoCks enables independent builds of the firmware and software components of the SoC image, maintaining clearly defined interfaces to ensure the essential flow of information.
Summary (500 words)
Modern System-on-Chip (SoC) devices tightly integrate advanced components such as multi-core processors, AI accelerators, Field-Programmable Gate Array (FPGA) fabric, and high-speed interfaces into a single package, thereby addressing computational challenges across a broad range of domains. For the Phase-2 LHC upgrade, ATLAS and CMS will utilize several thousand of these devices. However, the increasing complexity of these systems comes at a price. Exploiting their full potential is a major challenge for firmware and software developers, one that can only be mitigated by powerful development tools. In practice, however, we have found that development tools are also growing in complexity, often becoming a barrier to effectively managing these intricate devices.
To overcome this, we propose the use of ``SoC blocks'' (SoCks): a lightweight, modular, and scalable build framework for SoC images. SoCks introduces an abstraction layer that organizes the system into a set of fundamental components, such as bootloaders, operating system (OS) kernels, file systems, and FPGA firmware. These components are declared in such a way that their interdependencies are minimized. In a typical AMD-Xilinx ZynqMP UltraScale+ SoC image, this approach results in only around ten essential build units. Unlike previous approaches, SoCks aims to build these components in isolation while maintaining clearly defined interfaces between them. This modularity allows the components to be maintained, tested, and reused more effectively. Encapsulation reduces system complexity and simplifies swapping between different component versions, such as the embedded Linux OS.
To guarantee a well-defined build environment with all required toolchains and dependencies for every component, SoCks supports a container-based build approach. The required containers can be created automatically by SoCks or provided by the user. The resulting separation of build environment and host system, together with the aforementioned encapsulation of the individual components, opens up a multitude of new possibilities. During local development, the developer is free to choose their host system and does not have to set up a development environment. Decentralized and automated validation and testing also benefit from the containerization support of SoCks through continuous integration and continuous deployment (CI/CD) practices. When these features are combined, a decentralized and partially automated development flow can be established. With this approach, only units that are the subject of current development are built locally. The remaining software and firmware components are automatically downloaded from a CI/CD pipeline and integrated into the building process, thereby significantly reducing build time, saving storage space, and reducing the number of required licenses.
This contribution will detail the process used by SoCks to build complete images for heterogeneous SoC devices. We will outline all necessary input files, showcase the well-defined interfaces between modules, and highlight the configuration possibilities available for individual modules. A brief comparison to the Yocto build flow will further illustrate the massive simplification achieved by SoCks, demonstrating how the abstraction layer dramatically reduces complexity without sacrificing flexibility. Furthermore, SoCks has been successfully used to build images for various evaluation cards and for the Serenity-S ATCA board, which is used in several sub-detector systems at CMS.