7–10 Nov 2023
SLAC
America/Los_Angeles timezone

Rapid Firmware/Software Development with SLAC's Open-Source Tools: SURF, RUCKUS, and ROGUE

9 Nov 2023, 14:05
15m
48/1-112C/D - Redwood C/D (SLAC)

48/1-112C/D - Redwood C/D

SLAC

45
Oral RDC4: Readout and ASICs RDC4

Speaker

Ryan Herbst (SLAC)

Description

SLAC Instrumentation has developed a set of open-source tools that provide an extensible firmware library (SURF), coupled with a robust build system (RUCKUS), and a power hardware abstraction and readout layer (ROGUE) which, when combined, support rapid firmware/software development. This package is gaining traction in the community, with partner labs utilizing and improving the open-source repository.

The SLAC Ultimate RTL Framework (SURF) is a firmware framework that provides the building blocks commonly used in all firmware designs. It is a substantial VHDL library, built upon more than 10 years of development. It is extensively used in AMD/Xilinx FPGAs and custom digital ASIC designs. The framework comprises VHDL-based intellectual properties (IPs) for commonly implemented modules. It has been widely adopted by numerous experiments and applications. SURF is open source and published on GitHub.

Ruckus is our common build system for ASIC digital logic and FPGA firmware. This build system is a hybrid of Makefile and TCL scripts. Ruckus is not a replacement for the synthesis tools but rather a wrapper on top of them. Ruckus helps with repeatable synthesis project creation and configuration. Ruckus supports Xilinx Vivado for FPGA firmware and Synopsys Design Compiler for digital ASIC synthesis.

Rogue is our modular mixed Python/C++ software platform, named Rogue, that allows for both powerful and user-friendly interaction with firmware and hardware modules. Rogue enables the integration of Python and C++ plug-in modules into its data flow and register manager layers, facilitating ease of development and high-performance data processing. Rogue is not simply a wrapped C++ platform but a carefully architected platform that allows for the tight integration of C++ and Python. Its core C++ classes can be subclassed in Python with a common set of pluggable interfaces, enabling true mixed development. Rogue is deployed as a set of C++ and Python libraries that can integrate with third-party C++ and Python software, allowing for maximum flexibility when integrating into larger systems.

Early Career No

Primary authors

Presentation materials