From d34db0e4e0c7fd9057545148829e13d990cb4d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20V=C3=B6rg?= Date: Mon, 8 Dec 2025 15:53:15 +0100 Subject: [PATCH 1/2] Hi Cairo, Please integrate the Scale4Edge.json at the Unified Access Page. --- ips/Scale4Edge.json | 64 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 ips/Scale4Edge.json diff --git a/ips/Scale4Edge.json b/ips/Scale4Edge.json new file mode 100644 index 0000000..21a6da7 --- /dev/null +++ b/ips/Scale4Edge.json @@ -0,0 +1,64 @@ +[ + { + "Project": "Scale4Edge", + "Name": "UPEC: Formal Security Verification", + "URL": "https://github.com/RPTU-EIS/symbolic-pmp; https://github.com/RPTU-EIS/upec-boom-verification-suite", + "License": "", + "Status": "Date of Availability 2025-04-27", + "Description": "Unique Program Execution Checking (UPEC) is a method for formally verifying the security of hardware at the RTL. UPEC checks whether confidential data in the system can be stolen by an attacker (user program) for any programs that can be executed on the hardware. UPEC detects all confidentiality violations that are made possible by so-called transient execution side channels of the microarchitecture. Spectre and Meltdown are well-known examples of this class of vulnerabilities. In addition, UPEC also uncovers all confidentiality vulnerabilities that can arise due to design errors (“HW bugs”), which easily occur when implementing protection mechanisms. In Phase 1 of the Scale4Edge project, the security analysis focuses primarily on cores ranging from smaller in-order cores to larger out-of-order processors. The focus is on transient execution side channels. In Phase 2, UPEC will be extended to entire SoCs. SoCs pose different security challenges than processor cores, including secure system integration, functional design flaws, and system integrity violations.", + "WI": [], + "Partners": [ + "RPTU" + ], + "Comment": "Image Speculative program execution can enable side channel Figure: Speculative program execution can enable side channel Unique Program Execution Checking (UPEC) is a method for formally verifying the security of hardware at the RTL. UPEC checks whether confidential data in the system can be stolen by an attacker (user program) for any programs that can be executed on the hardware. UPEC detects all confidentiality violations that are made possible by so-called transient execution side channels of the microarchitecture. Spectre and Meltdown are well-known examples of this class of vulnerabilities. In addition, UPEC also uncovers all confidentiality vulnerabilities that can arise due to design errors (“HW bugs”), which easily occur when implementing protection mechanisms. In Phase 1 of the Scale4Edge project, the security analysis focuses primarily on cores ranging from smaller in-order cores to larger out-of-order processors. The focus is on transient execution side channels. In Phase 2, UPEC will be extended to entire SoCs. SoCs pose different security challenges than processor cores, including secure system integration, functional design flaws, and system integrity violations. Links Verification IP used for UPEC verification UPEC verificaiton suite for the BOOM processor Visibility Publicly available! ISA Compliance Not Applicable Status Planned Date of Availability 2025-04-27 Contact RPTU Kaiserslautern-Landau Wolfgang Kunz Gottlieb-Daimler-Straße 47 67663 Kaiserslautern Deutschland Contact Email wolfgang.kunz@rptu.de Contact Phone +49 631 205 2603 Asset Reference Formale Security Analyse (UPEC) Target TRL at the end of phase 1 TRL6: Prototyp in vereinfachter/simulierter Einsatzumgebung --> Anwendungsfälle Target TRL at the end of phase 2 TRL6: Prototyp in vereinfachter/simulierter Einsatzumgebung --> Anwendungsfälle Component is required for safety critical systems Nein Category Formal Functional Security Verification", + "Category": [ + "Formal Functional Security Verification" + ] + }, + { + "Project": "Scale4Edge", + "Name": "Moonlight", + "URL": "https://scale4edge-new.edacentrum.de/node/112", + "License": "Send an email to eyck@minres.com", + "Status": "Date of Availability 2025-07-31", + "Description": "Moonlight is a subsystem around a TGC core developed by MINRES. The Good Core (TGC) [1] is a highly flexible, scalable and expandable RISC-V processor core and the TGC variant to be used in the subsystem is configurable. Moonlight contains a configurable APB3 subsystem with a customizable number of different peripherals, e.g., GPIO, UART, Timer, SPI, I2S Receiver, DMA. It features an AMBA-compatible high-speed bus connecting a memory system, a CPU, and an APB bridge. As optional additions, application-specific components as well as bridges to other bus systems can be integrated. [1] https://scale4edge-new.edacentrum.de/node/112", + "WI": [], + "Partners": [ + "MINRES" + ], + "Comment": "Image Moonlight Moonlight is a subsystem around a TGC core developed by MINRES. The Good Core (TGC) [1] is a highly flexible, scalable and expandable RISC-V processor core and the TGC variant to be used in the subsystem is configurable. Moonlight contains a configurable APB3 subsystem with a customizable number of different peripherals, e.g., GPIO, UART, Timer, SPI, I2S Receiver, DMA. It features an AMBA-compatible high-speed bus connecting a memory system, a CPU, and an APB bridge. As optional additions, application-specific components as well as bridges to other bus systems can be integrated. [1] https://scale4edge-new.edacentrum.de/node/112 Visibility Publicly available! License Send an email to eyck@minres.com ISA Compliance Not Applicable Status In progress Date of Availability 2025-07-31 Contact MINRES Eyck Jentzsch Keltenhof 2 85579 Neubiberg Deutschland Contact Email eyck@minres.com Asset Reference TGC Cores Target TRL at the end of phase 1 TRL6: Prototyp in vereinfachter/simulierter Einsatzumgebung --> Anwendungsfälle Target TRL at the end of phase 2 TRL6: Prototyp in vereinfachter/simulierter Einsatzumgebung --> Anwendungsfälle Component is required for safety critical systems Nein Category RISC-V Subsystem", + "Category": [ + "RISC-V Subsystem" + ] + }, + { + "Project": "Scale4Edge", + "Name": "QTA - QEMU Timing Analyzer", + "URL": "https://scale4edge-new.edacentrum.de/ait-and-stackanalyzer-risc-v", + "License": "The source code of the QTA plugin is freely available with the front end for AbsInT aiT file import at github under: https://github.com/hni-sct/qemu-qta.", + "Status": "Date of Availability 2023-08-31", + "Description": "The QEMU Timing Analyzer (QTA) is a QEMU plugin which extends QEMU for the time annotated execution of binary programs. QTA has been tested only for RISC-V and TriCore. As the implementation extends QEMU through TCG plugin API it should be compatible with any other ISA and all future QEMU versions . QTA comes with a frontend that can import output files from AbsInt aiT WCET analysis.", + "WI": [], + "Partners": [ + "Paderborn University / Heinz Nixdorf Institut" + ], + "Comment": "The QEMU Timing Analyzer (QTA) is a QEMU plugin which extends QEMU for the time annotated execution of binary programs. QTA has been tested only for RISC-V and TriCore. As the implementation extends QEMU through TCG plugin API it should be compatible with any other ISA and all future QEMU versions . QTA comes with a frontend that can import output files from AbsInt aiT WCET analysis. Links QTA on github Visibility Publicly available! License The source code of the QTA plugin is freely available with the front end for AbsInT aiT file import at github under: https://github.com/hni-sct/qemu-qta. ISA Compliance Not Applicable Status Available Date of Availability 2023-08-31 Contact Paderborn University / Heinz Nixdorf Institut Wolfgang Mueller Fürstenallee 11 33106 Paderborn Deutschland Contact Email wolfgang@acm.org Asset Reference aiT and StackAnalyzer for RISC-V Target TRL at the end of phase 1 TRL5: Versuchsaufbau in vereinfachter Einsatzumgebung --> Optimierte Plattform Target TRL at the end of phase 2 TRL5: Versuchsaufbau in vereinfachter Einsatzumgebung --> Optimierte Plattform Component is required for safety critical systems Nein", + "Category": [] + }, + { + "Project": "Scale4Edge", + "Name": "muRISCV-NN", + "URL": "https://github.com/tum-ei-eda/muriscv-nn", + "License": "Apache-2.0 license", + "Status": "Date of Availability 2022-06-01", + "Description": "We introduce muRISCV-NN, an open-source compute library for embedded and microcontroller class systems. muRISCV-NN targets to provide an open-source, and vendor-agnostic compute library targeting all RISC-V-compliant platforms for supplying a HW/SW interface between industry-standard deep learning libraries and emerging ultra-low-power compute platforms. Forked from ARM’s CMSIS-NN library, muRISCV-NN provides optimized scalar kernels written in plain C as an efficient and highly portable baseline. Additionally, we provide hand-optimized vectorized kernels employing either the V or P extensions. muRISCV-NN is designed to be lightweight and modular, and is implemented as a static library that can be linked to the application software and accessed through a single header file. Furthermore, muRISCV-NN is bit-accurate to CMSIS-NN and can, thus, be used as a drop-in replacement with only minor changes to the compilation flow. This makes its use with higher-level frameworks completely transparent and enables a seamless transition from ARM-based systems to RISC-V. As a proof of concept, we provide full integration support with both TensorFlow Lite for Microcontrollers and microTVM. We demonstrate the effectiveness of muRISCV-NN on the MLPerf Tiny benchmark, observing up to a 9x speedup and 5x EDP reduction compared to the plain C-Version of CMSIS-NN across all four benchmarks.", + "WI": [], + "Partners": [ + "Technical University of Munich" + ], + "Comment": "Image muRISCV-NN Logo We introduce muRISCV-NN, an open-source compute library for embedded and microcontroller class systems. muRISCV-NN targets to provide an open-source, and vendor-agnostic compute library targeting all RISC-V-compliant platforms for supplying a HW/SW interface between industry-standard deep learning libraries and emerging ultra-low-power compute platforms. Forked from ARM’s CMSIS-NN library, muRISCV-NN provides optimized scalar kernels written in plain C as an efficient and highly portable baseline. Additionally, we provide hand-optimized vectorized kernels employing either the V or P extensions. muRISCV-NN is designed to be lightweight and modular, and is implemented as a static library that can be linked to the application software and accessed through a single header file. Furthermore, muRISCV-NN is bit-accurate to CMSIS-NN and can, thus, be used as a drop-in replacement with only minor changes to the compilation flow. This makes its use with higher-level frameworks completely transparent and enables a seamless transition from ARM-based systems to RISC-V. As a proof of concept, we provide full integration support with both TensorFlow Lite for Microcontrollers and microTVM. We demonstrate the effectiveness of muRISCV-NN on the MLPerf Tiny benchmark, observing up to a 9x speedup and 5x EDP reduction compared to the plain C-Version of CMSIS-NN across all four benchmarks. Links Open-Source Repository Visibility Publicly available! ISA Compliance RISC-V for Low Power SoC RV32I - Base Integer, 32-bit RV64I - Base Integer, 64-bit P - Packed-SIMD Instructions V - Vector Operations Status Available Date of Availability 2022-06-01 Contact Technical University of Munich Philipp van Kempen Arcisstr. 21 80333 München Deutschland Contact Email philipp.van-kempen@tum.de Target TRL at the end of phase 1 TRL3: Nachweis der Funktionsfähigkeit --> Plattform ohne Parametrisierbarkeit Target TRL at the end of phase 2 TRL4: Versuchsaufbau im Labor --> Plattform mit Parametrisierung Component is required for safety critical systems Nein Category Software Library", + "Category": [ + "Software Library" + ] + } +] \ No newline at end of file From c660b135cfee7f2760c2cc16547c8f661cc45f45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20V=C3=B6rg?= Date: Mon, 8 Dec 2025 16:21:17 +0100 Subject: [PATCH 2/2] Hi Cairo, please add the Scale4Edge logo --- images/Scale4Edge-logo.png | Bin 0 -> 21801 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/Scale4Edge-logo.png diff --git a/images/Scale4Edge-logo.png b/images/Scale4Edge-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..abd14cdf1451e4332a7a60e1335c8fba1b170159 GIT binary patch literal 21801 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 O&BFBT=@MhNi2nkTVtpq7 literal 0 HcmV?d00001