- Python 72.8%
- Rust 14.9%
- Shell 4.7%
- Verilog 3.6%
- SourcePawn 2.9%
- Other 1.1%
| baselines | ||
| crates | ||
| docs | ||
| out/impl | ||
| python/pdkpy | ||
| tests | ||
| .gitignore | ||
| backlog-methodology.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| NOTICE | ||
| PARTNER_SIM_ENGINE_README.md | ||
| pyproject.toml | ||
| README.md | ||
| sitecustomize.py | ||
| tmp_selfheat_override_test.sp | ||
| todo.md | ||
Virtual N2-Class PDK
This repository is a portability-focused, non-signoff virtual PDK for a hypothetical N2-class stacked nanosheet CMOS process.
It is intended for:
- architecture and RTL exploration
- early mixed-signal planning
- library and flow bring-up
- portability work before access to a real foundry kit
It is not intended for:
- manufacturing signoff
- foundry-faithful DRC, LVS, or extraction
- product EM, IR, ESD, aging, or yield closure
Technology stance
- logic-centric stacked nanosheet gate-all-around CMOS
VDD_CORE = 0.70 Vnominal- threshold options:
LVT,SVT,HVT,LONG - discrete device sizing through sheet count, finger count, and optional longer channel selection
- macro-based SRAM instead of custom bitcell authoring
Repository layout
python/pdkpy/data/source/: package-owned shipped source collateral, includingmodels/,libs/,tech/,verification/,examples/,integrations/, andmanifests/python/pdkpy/data/runtime/: packaged runtime fixture/output baseline surface used by installed package routespython/pdkpy/: installed Python package surfacepython/pdkpy/app/: source-tree maintenance and repo workflow helpersdocs/: user, release, and backlog documentationout/: generated local outputs, summaries, and validation artifacts
Supported Product Surface
The supported public product surface is pdkrs and pdkpy.
pdkrs: installed command entry point for the Rust-backed product routespdkpy: installed Python package and companion command entry point for orchestration and ecosystem integrationpython/pdkpy/app/: source-tree maintenance and repo workflow helpers, not the supported public APIsitecustomize.py: checkout-local development bootstrap only, not part of the supported installed product surface
From an installed environment, the shortest product-surface smoke path is:
python -m pip install -e .
pdkpy surface --json
pdkrs validate bindings --json
pdkrs validate acceptance --json
pdkrs validate manifests --json
pdkrs readiness score --json
For a concise map of the repo, see docs/repository-organization.md. For a command matrix that groups canonical virtual-PDK flows, product subsystem flows, and manufacturable-target alignment checks, see docs/run-matrix.md.
For release-candidate checks and the source/generated artifact policy, see docs/release-checklist.md and python/pdkpy/app/flow/run_release_artifact_policy.sh. For the CI-ready release-quality contract, see docs/release-quality-ci.md, manifests/release_quality.json, and python/pdkpy/app/flow/run_release_quality.sh.
For custom simulator developers, see docs/custom-simulator-integration.md, manifests/custom_simulator_contract.json, and python/pdkpy/app/flow/run_custom_simulator_contract.sh.
For a compact simulator onboarding corpus, see docs/golden-simulation-corpus.md, manifests/golden_simulation_corpus.json, and python/pdkpy/app/flow/run_golden_simulation_corpus.sh.
For a documentation index, see docs/README.md. For a test-suite index, see tests/README.md.
For the shortest executable path through the repo, see docs/quickstart.md. For support levels and what the repo does or does not claim, see docs/validation-policy.md.
Quick start
From the repository root:
python -m pip install -e .
pdkpy surface --json
pdkrs readiness score --json
These installed commands exercise the supported product surface directly. The source-tree flow wrappers below remain useful for broader repo maintenance and unported workflow coverage.
From the repository root, for source-tree workflows:
source python/pdkpy/app/env/setup.sh
python/pdkpy/app/env/check_toolchain.sh --require-openroad
python/pdkpy/app/sim/run_ngspice_smoke.sh
python/pdkpy/app/flow/run_spec_validation.sh
python/pdkpy/app/flow/run_characterization_consistency.sh
python/pdkpy/app/flow/run_yosys_smoke.sh
python/pdkpy/app/flow/run_klayout_drc_smoke.sh
python/pdkpy/app/flow/run_netgen_lvs_smoke.sh
python/pdkpy/app/flow/run_pv_stack.sh
python/pdkpy/app/flow/run_openroad_smoke.sh
python/pdkpy/app/flow/run_openroad_parity.sh
python/pdkpy/app/flow/run_sram_macro_integration.sh
python/pdkpy/app/flow/run_interoperability_stack.sh
python/pdkpy/app/flow/run_provenance_stack.sh
python/pdkpy/app/flow/run_reproducibility_stack.sh
python/pdkpy/app/flow/run_behavioral_model_stack.sh
python/pdkpy/app/flow/run_rf_flow.sh
python/pdkpy/app/flow/run_mixed_signal_cosim.sh
python/pdkpy/app/flow/run_rc_stack.sh
python/pdkpy/app/flow/run_benchmarks.sh
python/pdkpy/app/regress/run_local_regression.sh
The flow scripts fail cleanly if the required tools are not installed. run_openroad_smoke.sh also supports a Docker fallback using openroad/orfs by default.
For a deeper walkthrough of the collateral, flow assumptions, and how to extend the kit, see docs/tutorial.md.
For a shorter navigation guide across scripts, manifests, examples, configs, and generated outputs, see docs/repository-organization.md.
For the most common test and tutorial commands grouped by purpose, see docs/run-matrix.md.
For audience-specific tutorial tracks, also see docs/tutorial-novice-circuits.md, docs/tutorial-proprietary-users.md, docs/tutorial-open-source-users.md, and docs/tutorial-expert-reference.md.
For Ubuntu installation, offline setup, and primers on each FOSS tool used here, see docs/tooling-setup.md.
For local verification and one-command airplane prep, see python/pdkpy/app/env/check_toolchain.sh and python/pdkpy/app/env/prepare_offline_session.sh.
For the prioritized roadmap and active execution backlog, see docs/unaddressed/notes/README.md and the numbered notes under docs/unaddressed/notes/.
For the initial machine-readable PDK contract, see docs/spec/open-pdk-spec.md, manifests/pdk.json, and python/pdkpy/app/flow/run_spec_validation.sh.
For benchmark definitions and golden expectations, see benchmarks/README.md and benchmarks/golden/smoke_benchmarks.json.
For the generated Liberty methodology, consistency gate, and consumed advanced-characterization analysis, see docs/characterization.md, docs/advanced-characterization-consumption.md, libs/liberty/characterization/, python/pdkpy/app/flow/run_characterization.sh, python/pdkpy/app/flow/run_characterization_consistency.sh, and python/pdkpy/app/flow/run_advanced_characterization_consumption.sh.
For deterministic statistical mismatch and RC-variation proxy evidence, see docs/statistical-variation.md and python/pdkpy/app/flow/run_statistical_variation.sh.
For the shipped resettable, scan-capable, clock-gating, and physical-support cell strategy, see docs/low-power-and-support-cells.md.
For executable scan-chain, boundary-scan-style replay, and ATPG-facing metadata, see docs/dft-scan-atpg.md and python/pdkpy/app/flow/run_dft_scan_demo.sh.
For executable MBIST-style memory test, single-address repair replay, and ECC/parity detection collateral, see docs/mbist-repair-ecc.md and python/pdkpy/app/flow/run_mbist_demo.sh.
For SRAM retention/redundancy/fuse modeling boundaries built on that MBIST evidence, see docs/sram-retention-redundancy.md and python/pdkpy/app/flow/run_sram_retention_redundancy.sh.
For bounded formal proof, equivalence, coverage, and runtime-parity evidence, see docs/formal-coverage-runtime-parity.md and python/pdkpy/app/flow/run_formal_coverage.sh.
For the executable switched-domain power-gating demo and the remaining UPF/signoff boundary, see docs/power-gating.md, docs/upf-low-power-intent.md, and python/pdkpy/app/flow/run_power_gating_demo.sh.
For richer multi-design OpenROAD implementation results, parity summaries, and current upstream gaps, see docs/openroad-parity.md and python/pdkpy/app/flow/run_openroad_parity.sh.
For the broader physical-verification stack across KLayout, Netgen, and Magic, see docs/pv-stack.md and python/pdkpy/app/flow/run_pv_stack.sh.
For RC-aware digital and analog comparison benches plus routed pre-route-versus-routed timing deltas, see docs/rc-stack.md, python/pdkpy/app/sim/run_rc_impact_benchmarks.sh, and python/pdkpy/app/flow/run_rc_stack.sh.
For the compiler-style SRAM request matrix, generated macro views, and richer integration cases, see docs/sram-compiler.md, docs/sram-macro-integration.md, python/pdkpy/app/sram/compile_sram_metadata.py, and python/pdkpy/app/flow/run_sram_macro_integration.sh.
For executable memory-cell and periphery foundation collateral beneath the current SRAM macro story, see docs/memory-foundation.md, libs/sram/foundation/README.md, and python/pdkpy/app/flow/run_memory_foundation.sh.
For canonical snapshot export plus source/runtime interoperability checks, see docs/interoperability.md, baselines/canonical/README.md, and python/pdkpy/app/flow/run_interoperability_stack.sh.
For licensing, provenance, and signed-manifest support, see docs/provenance.md, baselines/provenance/README.md, and python/pdkpy/app/flow/run_provenance_stack.sh.
For pinned environment baselines, profile definitions, and live environment validation, see docs/reproducible-environments.md, environments/README.md, and python/pdkpy/app/flow/run_reproducibility_stack.sh.
For reference Verilog-A sources plus the primary OpenVAF -> OSDI -> ngspice path and the secondary ngspice fallback models, see docs/behavioral-models.md, models/behavioral/README.md, and python/pdkpy/app/flow/run_behavioral_model_stack.sh.
For broader simulator-runtime parity and the current Xyce discovery boundary, see docs/simulator-runtime-parity.md, manifests/simulator_runtime_parity.json, and python/pdkpy/app/flow/run_simulator_runtime_parity.sh.
For editable xschem sources that map back to the current OTA, RF passive, and SAR8 mixed-signal flow anchors, see docs/xschem-projects.md and python/pdkpy/app/flow/run_xschem_project_stack.sh.
For product-style analog block examples built on the compiled behavioral-model stack, see docs/analog-reference-designs.md and python/pdkpy/app/flow/run_analog_reference_designs.sh.
For the current RF and high-frequency flow, touchstone artifacts, lumped EM proxies, and transient-periodic/phase-noise proxy reporting, see docs/rf-flow.md, examples/rf/topmetal_passives/README.md, manifests/rf_flow.json, and python/pdkpy/app/flow/run_rf_flow.sh.
For the reusable SerDes/PHY methodology foundation that later PCIe, Ethernet, and USB-C work builds on, see docs/phy-serdes-foundation.md, manifests/phy_serdes.json, and python/pdkpy/app/flow/run_phy_serdes_demo.sh.
For the real open manufacturable PDK target matrix that future Tiny Tapeout and multi-PDK work must reference, see docs/manufacturable-pdk-targets.md, manifests/manufacturable_pdk_targets.json, and python/pdkpy/app/flow/run_manufacturable_pdk_targets.sh.
For the product-style digital subsystem contract tying SRAM, CDC, low-power, power-gating, DFT, MBIST, and future Tiny Tapeout candidacy together, see docs/product-digital-subsystems.md, manifests/product_digital_subsystems.json, and python/pdkpy/app/flow/run_product_digital_subsystems.sh.
For the local Tiny Tapeout-style wrapper around the compact telemetry subsystem candidate, see docs/tiny-tapeout-reference.md, manifests/tiny_tapeout.json, and python/pdkpy/app/flow/run_tiny_tapeout_demo.sh.
For the current SKY130 / Tiny Tapeout evidence level for that wrapper, see docs/sky130-tiny-tapeout-evidence.md, manifests/sky130_tiny_tapeout_evidence.json, and python/pdkpy/app/flow/run_sky130_tiny_tapeout_evidence.sh.
For the current GF180MCU and IHP SG13G2 evidence levels, see docs/gf180-ihp-target-evidence.md, manifests/gf180_ihp_target_evidence.json, and python/pdkpy/app/flow/run_gf180_ihp_target_evidence.sh.
For target-aware translated flow metadata across SKY130, GF180MCU, and IHP SG13G2, see docs/manufacturable-flow-matrix.md, manifests/manufacturable_flow_matrix.json, and python/pdkpy/app/flow/run_manufacturable_flow_matrix.sh.
For the machine-readable modernization scorecard that summarizes shipped, proxy, metadata-only, and translated-config support levels, see docs/modernization-scorecard.md, manifests/modernization_scorecard.json, and python/pdkpy/app/flow/run_modernization_scorecard.sh.
For the first PCIe-oriented link-training, L0/L1/recovery, and TLP replay proxy built on that PHY foundation, see docs/pcie-subsystem.md, manifests/pcie.json, and python/pdkpy/app/flow/run_pcie_subsystem_demo.sh.
For the first Ethernet MAC/PCS-oriented subsystem proxy built on that PHY foundation, see docs/ethernet-subsystem.md, manifests/ethernet.json, and python/pdkpy/app/flow/run_ethernet_subsystem_demo.sh.
For the first USB-C / USB3-oriented attach, orientation, SuperSpeed-link, and low-power proxy built on that PHY foundation, see docs/usb-c-usb3-subsystem.md, manifests/usb.json, and python/pdkpy/app/flow/run_usb_subsystem_demo.sh.
For the reusable mixed-signal bridge harness spanning SAR8 replay and a trimmed-reference monitor example, see docs/mixed-signal-cosim.md, python/pdkpy/app/mixed_signal/run_sar8_cosim.py, python/pdkpy/app/mixed_signal/run_refmon_trim_cosim.py, and python/pdkpy/app/flow/run_mixed_signal_cosim.sh.
For the local-first regression gate, see docs/local-regression.md, manifests/local_regression.json, and python/pdkpy/app/regress/run_local_regression.sh.
First real artifacts included here
- BSIM-CMG-oriented process-model source collateral plus translated ngspice-friendly executable corners and passive models
- starter SPICE wrappers for
n2n_*andn2p_*devices - starter core-cell SPICE, Verilog, Liberty, and LEF collateral
- resettable and scan-capable sequential cells plus a starter integrated clock-gate
- executable DFT scan replay collateral with internal scan, boundary access, and ATPG-facing pattern metadata
- executable MBIST memory-test replay collateral with SRAM macro access, repair remap, and ECC/parity detection checks
- explicit SRAM retention/redundancy/fuse metadata with executable MBIST-backed repair replay and no foundry fuse-programming claim
- bounded formal/property proof, exhaustive equivalence miter, and coverage/runtime-parity rollup evidence
- tie, filler, decap, antenna, tap, and endcap support-cell abstracts
- executable power-gating demo collateral with a switched-domain model, isolation, retention observation, and always-on support behavior
- example inverter-chain and OTA smoke benches
- abstract KLayout DRC and Netgen LVS smoke harnesses
- broader positive/negative PV suites for KLayout DRC, abstract Netgen LVS, and Magic trust-boundary probing
- synthesis, OpenROAD smoke, and multi-design implementation parity scripts wired to the chosen naming scheme
- RC-aware digital and analog comparison benches plus a validated RC-stack summary tying LEF RC, OpenROAD parasitic estimates, and SPICE impact together
- metadata-driven SRAM macro views plus a placed-and-timed
sram_wrap32integration example - executable memory-cell and periphery foundation collateral tying the SRAM macro story back to a 6T bitcell and key row/column support blocks
- a compiler-style SRAM macro matrix plus a dual-port packet-buffer integration example
- a canonical interoperability snapshot plus runtime invariants for
counter,gated_accum8, andsram_wrap32 - a provenance and licensing stack with deterministic source-manifest export, SHA-256 sidecars, and optional GPG signing helpers
- a reproducibility stack with a pinned validated-host tool and image baseline plus live environment validation
- a behavioral-model layer with reference Verilog-A sources plus compiled OSDI delivery and regression-backed fallback parity checks
- product-style analog reference blocks for a low-voltage trimmed reference and comparator family with machine-readable targets
- checked-in
xschemproject anchors for the OTA, RF passive benches, and the SAR8 mixed-signal correspondence surface - an RF passive flow that generates
S1P/S2Partifacts and validates passive quality trends against the behavioral VCO baseline - executable SerDes/PHY lane methodology collateral with training, CDR/equalization proxies, loopback, and compliance-boundary reporting
- executable PCIe-oriented subsystem collateral with LTSSM, DLLP credit, L0/L1/recovery, and TLP acceptance checks
- executable Ethernet-oriented subsystem collateral with PHY link bring-up, PCS block-lock, MAC frame/FCS checks, and low-power idle replay
- executable USB-C / USB3-oriented subsystem collateral with Type-C attach/orientation, PD-ready, SuperSpeed link, recovery, and U1 wake checks
- a checked manufacturable-PDK target matrix for SKY130, GF180MCU, and IHP SG13G2 so future Tiny Tapeout and multi-PDK flows have a real contract surface
- a product-style digital subsystem contract aggregating SRAM-backed, CDC, low-power, power-gating, DFT, and MBIST examples with an explicit Tiny Tapeout candidate boundary
- a local Tiny Tapeout-style telemetry wrapper with pin-map, SKY/IHP target-family metadata, and an explicit no-submission boundary
- a SKY130 / Tiny Tapeout evidence contract showing local generic synthesis evidence while explicitly preserving no-submission, no-physical-verification boundaries
- a GF180MCU / IHP SG13G2 evidence contract that keeps those targets at translated-config support until real local implementation artifacts exist
- a multi-PDK manufacturable flow matrix with translated configs for
sky130A,gf180mcuD, andihp-sg13g2across the counter, Tiny Tapeout wrapper, and telemetry subsystem examples - a modernization scorecard that ties shipped capabilities, proxy boundaries, Tiny Tapeout status, and multi-PDK support levels into one checked contract
- a reusable mixed-signal bridge harness that reproduces SAR settling/trim behavior plus trimmed-reference monitor recovery through real RTL execution
Naming conventions
- core cells:
n2_core__* - IO cells:
n2_io__* - SRAM macros:
n2_sram__* - NMOS devices:
n2n_* - PMOS devices:
n2p_*
Release caveat
This state is releaseable as an exploratory virtual PDK baseline. It is not a tapeout kit.