Skip to main content

Module backend

Module backend 

Source
Expand description

The target-backend seam.

Everything up to a placed Grid is target-agnostic (English → LoopCell IR → certified placement). Only the final Grid → bytes step is backend-specific. This module names that seam as a TargetBackend trait so a new hardware backend (e.g. the SambaNova RDU) is a tested extension point instead of a loose convention. Emission is target-specific; the proof-carrying certify is backend-agnostic (default impl), so even a backend that can’t emit its vendor config yet still proves a placement ≡ its source.

Structs§

RduBackend
The SambaNova RDU slot — the placed-grid lane, for either RDU generation (RduChip). Its target is the chip’s FabricTarget derived from RduChipFacts. It cannot emit RDA/SambaFlow config today — that needs the vendor SDK — so its emission is honestly BackendArtifact::SdkGated: it hands back the logos.spatial.neutral v2 envelope under "lane": "grid", the same envelope the spatial lane emits, with the ready-to-bridge deterministic grid dump as its body. Its proof-carrying certify works NOW (no SDK), so an RDU-bound placement already ships with a machine-checkable proof it ≡ the source. When the SDK lands, only the envelope → RDA config translation is added.
SkyVerilogBackend
The default backend: our Sky130/FPGA path. A faithful wrapper of the existing free emitters — byte-identical to calling emit_grid_verilog / emit_config_grid_verilog directly.

Enums§

BackendArtifact
What a backend produces from a placed grid.

Traits§

TargetBackend
A named codegen backend for a described FabricTarget.

Functions§

serialize_grid
A deterministic, parseable neutral dump of a placed grid — the artifact the vendor-config bridge consumes. Rows/cols are walked in order and every field is a Copy enum’s Debug, so the output is stable (no hashmap iteration). It is NOT any vendor’s format; it is the ready-to-bridge placement.