SCMI Support for Power Controller Subsystem
- Type: Semester Thesis
- Professor: Prof. Dr. L. Benini
Today’s High Performance Computing (HPC) systems are complex architectures requiring on-chip dedicated HW resources, namely Power Control Subsystems (PCS), to dynamically control the power consumption with short time constants, to prevent thermal hazards (thermal capping) and to meet the overall power budget (power capping) while interacting with external management interfaces like OS. In ARM based SoCs the PCS (System Control Processor, SCP) interacts with the OS via the System Control and Management Interface (SCMI) protocol , which provides a set of OS-agnostic standard SW and HW interfaces  for power domain, voltage, clock and sensor management through a shared mailbox system with the PCS.
ControlPULP is a RISC-V PCS platform developed at IIS and based on PULP    which relies on FreeRTOS   to implement a Power Control Firmware (PCF)  routine. ControlPULP has a lightweight support for SCMI-based interaction. This means either a lightweight testbench environment in HW and lightweight protocol support in SW.
The goal of this project is to extend the actual SCMI support leveraging both HW and SW interfaces:
- Get to know the protocol by reading the SCMI specification document 
- Extend the RTL testbench setup to be specification-compliant and a stable verification environment;
- Implement and test a selected subset of the SCMI protocol functions in SW and integrate them as a PCF  library.
- Stretch goal: ControlPULP comes with an FPGA implementation on Xilinx ZCU102, where the PCS design can be controlled from an embedded Linux environment on the board. Implement mailbox-based SCMI mechanism on the FPGA platform (to be discussed for fine-grained planning).
- 20% Literature / architecture review
- 60% Low-level C programming
- 20% Evaluation
- Experience with C programming
- Experience with digital design in SystemVerilog as taught in VLSI I
- Experience with FPGA mapping as taught in VLSI I
 ARM SCP Firmware
 PULP (GitHub repository)
 FreeRTOS for PULP based systems (GitHub repository)