packages/chip/docs/pd/multi-pdk-portability.md
The Eliza chip targets one production node (TSMC N2P primary, A14 stretch, Intel 14A 2nd source, Samsung SF2P backup) but runs PD across a fleet of open PDKs so that the methodology, RTL, constraints, and signoff harness are portable before $250M-$500M of NRE is committed to one foundry.
This document is the methodology contract. The executable side is:
pd/openlane/portability-index.yaml — config-to-PDK mappingscripts/check_pdk_portability.py — verifies every config has matching
library + corner manifest and that advanced-node lanes remain blockedscripts/project_ppa_to_n2p.py — applies published vendor scaling factors
to open-PDK / ASAP7 PPA shapes to project N2P / A14 envelopedocs/evidence/process/multi-pdk-closure.yaml — closure evidence per PDK| Stage | PDK-agnostic | PDK-locked |
|---|---|---|
| RTL elaboration (Yosys read) | yes | — |
| Yosys synthesis pre-tech-map | yes | — |
| Yosys tech-map | — | yes (cell library) |
| ABC mapping | — | yes (Liberty per corner) |
| Floor-plan utilization target | mostly | tile-size / utilization sweet-spot differs per PDK |
| Macro placement (DREAMPlace / AlphaChip / OpenROAD) | mostly | — (algorithm is PDK-agnostic; cost weights tune per PDK) |
| Global / detailed route | — | yes (DRC, layer stack, via rules) |
| Clock tree (CCOpt / TritonCTS / mesh-hybrid) | algorithm yes, cell library no | — |
| STA | structurally yes | Liberty + RC per PDK |
| DRC | — | yes |
| LVS | — | yes |
| Antenna | — | yes |
| Density / fill | — | yes |
| PDN extraction | — | yes (frontside vs BSPDN especially) |
So the rule is: synthesize the same RTL against every PDK, expect different numbers, expect identical pass/fail shape on the methodology checks.
pd/openlane/portability-index.yaml is the canonical map. Each entry pins:
open_no_gate or blocked_until_foundry_agreement)scripts/check_pdk_portability.py walks the index and verifies:
access_gate: blocked_until_foundry_agreement.evidence
pointer to a closure record exists.pd/openlane/config.sky130.json.pd/openlane/runs/RUN_2026-05-19_05-08-54 is
clean DRC + LVS at 142,274 std-cells, 3.24 mm² die, 0 macros.
Hold + slew + cap violations open — see
pd/signoff/manifest.yaml.scripts/project_ppa_to_n2p.py.pd/n2p-stub/, pd/a14-stub/, pd/intel-14a-stub/, pd/sf2p-stub/.make pdk-portability-check # verify every config has manifests + access gate + macro cross-ref
make pdk-portability-test # unit tests for the portability checker
make pdk-access-gate # advanced-node procurement evidence (fail-closed)
make ppa-projection # project open / ASAP7 PPA to N2P / A14 / Intel 14A / SF2P
make die-area-budget-check # 100-130 mm² envelope cross-check vs die-shot cohort
Each command writes a structured report to docs/evidence/process/. Reports
include:
evidence_class (real open-pdk / predictive shape / procurement-blocked)The portability checker cross-references pd/macros/manifest.yaml (owned by
the PD agent): every Sky130 and IHP SG13G2 library manifest must declare the
same hard-macro set the PD agent has declared. Drift on either side fails the
gate.
The PPA projection script runs a 4096-sample Monte Carlo over the
public-disclosure 1-sigma bands documented in
docs/evidence/process/ppa-projection.yaml, producing p10 / p50 / p90 bands
per target node (N2P / A14 / Intel 14A / Samsung SF2P). Outputs remain
projection_only_never_signoff.
Portability ends at: (a) the LPDDR PHY (no open PHY exists at any node; license required from Synopsys / Cadence / Rambus); (b) the SRAM compiler at advanced nodes (foundry-only); (c) the antenna / dummy-fill / density rules at advanced nodes; (d) the commercial signoff EDA flow.
Portability is methodology and RTL, not silicon-equivalence. A clean Sky130 closure does not prove a clean N2P closure. It proves that the project can drive a real PDK-locked flow end-to-end and is therefore competent to operate a commercial flow when seats are bought.