Hardware Architecture & Toolchain

SAPHO

Scalable-Architecture Processor for Hardware Optimization

You do not program this processor. You author it.

Most processors are built first and programmed later. SAPHO turns that around: you write the algorithm in , a language of our own with C at the base and hardware in the syntax, and the toolchain emits a Verilog processor shaped by those exact lines. What the program never asks for is never built.

media_movel.cmm · 8 blocks built · drag to turn, hover a block
01

Three programs, three different processors

ula.v · generate if

The whole trick is one instantiation: each instruction your program uses becomes a Verilog parameter set to 1, and each block sits behind a generate if on it. Not used, not built. Pick a program; the dotted tokens are the ones that become hardware, so point at one.

media_movel.cmmint · 16 bits
while (1)
{
    x[3] = x[2];              // shift the history
    x[2] = x[1];
    x[1] = x[0];
    x[0] = in(0);             // new sample

    soma = x[0] + x[1] + x[2] + x[3];
    out(0, soma >> 2);    // mean, no divider
}
media_movel.vgenerated
processor #(
    .NUBITS(16), .NBMANT(10), .NBEXPO(5),
    .LOD(1), .SET(1), .INN(1), .OUT(1),
    .JMP(1), .JIZ(1), .ADD(1), .SHR(1)
    // every other instruction stays 0
) u_proc ( /* ... */ );
ALU submodules built2 / 30

FIG. 1 One button runs the chain: cmmcomp → appcomp → asmcomp → .v + .mif + testbench; the TASM terminal prints this same inventory on every build. The chain in detail · See it as a circuit, in PRISM

02

A waveform that speaks your language

simulation harness · asm + C± tracks

A SAPHO simulation carries two extra tracks: the assembly instruction retiring on each clock, and the C± line it came from. One turn of the filter loop below; run it, or drag across.

INN 0  cycle 7/15
x[0] = in(0);
clk acc

FIG. 2 In the IDE the tracks are decoded straight from the build, for any program, with your variables shown by name. How the tracks work · Waves, viewers and layouts

05

Field record

deployed · published · taught

  Running at CERN

A SAPHO processor drives the real-time pulse simulator used in test benches for the TileCal calorimeter electronics of the ATLAS experiment.

  Published

The architecture and its program-driven resource allocation are described in the platform's reference article, with results on FPGA.

  Taught at UFJF

SAPHO is the platform of the Programmable Logic Devices course: every student designs, compiles and simulates a processor of their own. The manual follows the course order, Verilog first, then C±, then both together.

06

What changed

straight from the release notes

Loading the release notes…

Every release, in full, on GitHub

One installer. The whole platform.

The button always fetches the latest release, straight from GitHub.

Download Latest Release Install, step by step Manual as PDF
 latest release · NIPS-CERN 1.1 ·