Technology / PDK
The technology optimization pass adapts CVA6 to a specific foundry process by binding proprietary high-level abstractions — memory compilers, ICG / retention / level-shifter cells, power kits, and hard macros — at the existing PDK-swap seam. It is opt-in, additive, and macro-protected so the generic RTL path remains byte-for-byte unchanged when the pass is not armed.
Technology adaptation is the final bridge between functional RTL and manufacturable silicon. A CPU core that simulates correctly with behavioral models is not yet a chip; it must be mapped to a foundry’s cells, memories, clocking, and power network. The CVA6 technology pass performs this mapping without forking the generic RTL, so the same source can be evaluated on multiple process nodes and reused by partners who have access to different foundries.
PDK-swap seam
The seam is the set of technology-agnostic cells that a foundry can replace:
vendor/pulp-platform/tech_cells_generic/src/rtl/tc_sram.sv— SRAM macro boundary.vendor/pulp-platform/tech_cells_generic/src/rtl/tc_clk.sv— clock gating (tc_clk_gating) and clock buffers.vendor/pulp-platform/tech_cells_generic/src/rtl/tc_pwr.sv— power cells.common/local/util/sram_cache.sv—TECHNO_CUTboundary.- HPDcache
behav/blackbox/<tech>macros.
A foundry drop-in provides implementation views (.lib, .lef, .gds) and a
manifest.json under pd/pdk/<tech>/. The RTL wrapper lives under
pd/pdk/<tech>/<area>/ and is guarded by CVA6_TECH_OPT.
Two-key ignition
The pass is inert by default. It arms only when both conditions are met:
technology.optimizationPassistruein.config.ts.- A
*.tech-spec.mddocument exists undercore/**orcorev_apu/**(governed bytechnology.specGlobs).
If either key is missing, the generic path builds exactly as before.
Macro protection
Every adaptation is fenced behind the guard macro CVA6_TECH_OPT
(technology.guardMacro). When the macro is undefined, the generic path
elaborates. The `ifdef stays at the leaf; structure is still gated by
cva6_cfg_t.
Example pattern:
`ifdef CVA6_TECH_OPT
// foundry-specific tc_sram instantiation
`else
// generic behavioral tc_sram
`endifNDA protection
Proprietary foundry content lives only under pd/pdk/, which is gitignored
by default. Only these files are committed:
pd/pdk/README.md,.gitignore,manifest.example.jsonpd/pdk/core/README.md,.gitignorepd/pdk/corev_apu/README.md,.gitignorepd/pdk/technology.example/README.md,.gitignore
g6lc-build tech init <tech> scaffolds a gitignored per-tech drop-in. NDA
views (.lib, .lef, .gds, manifest.json) never enter the repository.
The protected-path model is a legal and technical necessity. Foundry libraries
are proprietary and often covered by NDAs; committing them to a public
repository would violate license agreements and expose the project to legal
risk. At the same time, the build flow must know where to find these views
when the technology pass is armed. The pd/pdk/ scaffolding provides a stable,
predictable location while the .gitignore ensures that only READMEs and
templates are tracked.
Commands
g6lc-build tech status # is the pass armed?
g6lc-build tech specs # list discovered *.tech-spec.md docs
g6lc-build tech plan # read-only adaptation plan
g6lc-build tech check # hard + soft readiness gates
g6lc-build tech init <tech> # scaffold a protected per-tech drop-intech check exits 3 when optimizationPass is on but a hard gate fails; it
exits 0 when the pass is disabled.
Readiness gates
Hard gates (must pass when armed):
- Guard macro is a valid identifier.
pd/pdk/root is gitignored.- Foundry PDK consistency (manifest or drop-ins present only when expected).
Soft gates (warned but not blocking):
requireExplicit— the user must explicitly enable the pass.
Readiness gates are the safeguards that prevent the technology pass from being
armed accidentally or with incomplete information. The guard-macro check
ensures that the ifdef in the RTL refers to a valid identifier. The
pd/pdk/ gitignore check ensures that proprietary content cannot be committed
by accident. The PDK consistency check ensures that the foundry views match the
configured technology. These gates are deliberately conservative because an
incorrect technology mapping can corrupt the netlist without failing
simulation.
SoC-readiness
An armed technology pass must still satisfy the same AGENTS.md §0 checklist as
any RTL change: synthesizability, verification, DFT, timing, power/UPF, area,
and documentation.
The SoC-readiness checklist is not waived by the technology pass; if anything, it is intensified. Foundry-specific cells have different timing arcs, power characteristics, and test requirements than behavioral models. The pass must therefore be followed by equivalence checking, DFT/MBIST verification, static timing analysis, power intent validation, and area comparison. Only when the optimized netlist passes the same functional and physical checks as the generic netlist is the technology adaptation complete.
See NDA Optimization Pass for the full agent workflow.