Home Knowledge Base Process Design Kit (PDK)

Process Design Kit (PDK) is the complete package of files, models, and rules that a foundry delivers to chip designers so they can design circuits that will manufacture correctly on that process node — it is the contract between fabrication and design. A PDK contains SPICE transistor models (BSIM-CMG, PSP), standard-cell and I/O libraries characterized across PVT corners, technology LEF files defining metal-stack geometry, design-rule-check (DRC) decks, layout-versus-schematic (LVS) netlists, parasitic extraction (PEX) rules, electromigration limits, and reliability models. Without a PDK, a designer cannot simulate, lay out, verify, or tape out a chip. Every CFS simulator — from the Transistor sim at /transistor to the Interconnect sim at /interconnect — models the same physics that PDK characterization captures.

What's inside a PDK — the file taxonomy:

ComponentFormatPurposeWho consumes it
SPICE models (transistor)BSIM-CMG / PSP / HiSIMI-V, C-V, noise, mismatch for all device flavorsCircuit simulators (Spectre, HSPICE, Xyce)
Standard-cell libraryLiberty (.lib) + LEF + GDSPre-characterized gates/FFs with timing, power, noiseSynthesis (Genus/DC), PnR (Innovus/ICC2)
I/O libraryLiberty + GDS + IBISI/O pad cells (ESD, driver, receiver)Top-level integration
Technology LEFLEF (Cadence format)Metal/via layers, pitches, widths, spacing rulesPlace-and-route tools
DRC rule deckCalibre SVR / ICV / PegasusGeometric design rules (min width, spacing, enclosure)Physical verification
LVS rule deckCalibre / ICV / PegasusNetlist extraction + comparison to schematicPhysical verification
PEX rulesStarRC / QRC rule filesParasitic R, C, L extraction from layout geometryTiming sign-off (STA)
EM/IR rulesEM spec + PDN guidelinesCurrent-density limits per metal layer and viaReliability sign-off
Reliability modelsHCI, BTI, TDDB modelsAging/degradation over product lifetimeReliability simulation
PCells / iPDKSkill / Python / OpenAccessParameterized layout generators for custom devicesAnalog/custom layout
DocumentationPDF + onlineDesign manual, process specs, known issuesAll designers

PDK corners — spanning the manufacturing window. Silicon fabrication has inherent variation: threshold voltage, oxide thickness, metal resistance, and capacitance all fluctuate across wafers and lots. The PDK provides pre-characterized models at multiple corners:

A full sign-off requires running timing across the "worst-case corners": SS/low-V/125°C for setup, FF/high-V/−40°C for hold — and often 50+ additional Monte Carlo / AOCV statistical points for yield-aware closure.

SPICE models — the transistor contract. The foundry measures thousands of transistors across process splits, then fits the data to a compact model (BSIM-CMG for FinFET/GAA, PSP for planar). The model captures:

$$I_{DS} = f(V_{GS}, V_{DS}, V_{BS}, L, W, N_{\text{fin}}, T, \text{stress}, \text{aging}\ldots)$$

with 300–600 parameters per device flavor (NMOS/PMOS × SVT/LVT/HVT × multiple channel lengths). Accuracy target: <2% error vs measured silicon across the full bias range. Mismatch parameters ($A_{V_T}$, $A_{\beta}$) capture random dopant fluctuation for SRAM and analog yield.

The standard-cell library — pre-built logic. The PDK's cell library (see the CFS "standard cell" keyword) provides 500–2000 logic cells, each independently characterized by SPICE into Liberty tables across all PVT corners. The timing closure flow (synthesis → PnR → STA → ECO) operates entirely on these Liberty models — never on raw SPICE during physical design. Library quality (density, speed, leakage) directly determines the PPA (performance, power, area) achievable on the node.

DRC and LVS — the manufacturing contract. Design rules encode everything the fab can and cannot print:

A modern DRC deck at 3 nm contains 3000–5000 individual rules. A single violation can cause a systematic yield loss across every die on the wafer.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 440" font-family="system-ui,sans-serif">
  <rect width="760" height="440" fill="#1a1a17" rx="12"/>
  <text x="380" y="28" fill="#c9c3f2" font-size="15" text-anchor="middle" font-weight="600">PDK — from foundry process to chip design</text>

  <!-- Foundry side (left) -->
  <rect x="30" y="55" width="200" height="160" fill="#3a2a2a" stroke="#bf6f6f" stroke-width="1.3" rx="8"/>
  <text x="130" y="78" fill="#f0bfbf" font-size="11" text-anchor="middle" font-weight="500">Foundry (fab)</text>
  <text x="130" y="100" fill="#8a8a86" font-size="9" text-anchor="middle">Measures silicon</text>
  <text x="130" y="118" fill="#8a8a86" font-size="9" text-anchor="middle">Defines design rules</text>
  <text x="130" y="136" fill="#8a8a86" font-size="9" text-anchor="middle">Characterizes devices</text>
  <text x="130" y="154" fill="#8a8a86" font-size="9" text-anchor="middle">Qualifies reliability</text>
  <text x="130" y="180" fill="#bf6f6f" font-size="10" text-anchor="middle">TSMC / Intel / Samsung</text>
  <text x="130" y="200" fill="#8a8a86" font-size="9" text-anchor="middle">GlobalFoundries / SMIC</text>

  <!-- PDK (center, the deliverable) -->
  <rect x="270" y="55" width="220" height="160" fill="#2a3a4a" stroke="#6fafcf" stroke-width="2" rx="8"/>
  <text x="380" y="78" fill="#bff0e4" font-size="12" text-anchor="middle" font-weight="600">PDK</text>
  <text x="380" y="98" fill="#d4d4d0" font-size="9" text-anchor="middle">SPICE models (.scs/.lib)</text>
  <text x="380" y="114" fill="#d4d4d0" font-size="9" text-anchor="middle">Std-cell Liberty (.lib/.db)</text>
  <text x="380" y="130" fill="#d4d4d0" font-size="9" text-anchor="middle">Tech LEF + GDS layers</text>
  <text x="380" y="146" fill="#d4d4d0" font-size="9" text-anchor="middle">DRC / LVS decks</text>
  <text x="380" y="162" fill="#d4d4d0" font-size="9" text-anchor="middle">PEX rules (RC extraction)</text>
  <text x="380" y="178" fill="#d4d4d0" font-size="9" text-anchor="middle">EM / reliability specs</text>
  <text x="380" y="198" fill="#6fafcf" font-size="9" text-anchor="middle">PCells + documentation</text>

  <!-- Arrow foundry → PDK -->
  <line x1="232" y1="135" x2="268" y2="135" stroke="#bf6f6f" stroke-width="2" marker-end="url(#pkarr)"/>
  <text x="250" y="125" fill="#8a8a86" font-size="7" text-anchor="middle">delivers</text>

  <!-- Design side (right) -->
  <rect x="530" y="55" width="200" height="160" fill="#2a3a2a" stroke="#6fbf6f" stroke-width="1.3" rx="8"/>
  <text x="630" y="78" fill="#bff0bf" font-size="11" text-anchor="middle" font-weight="500">Chip Designer</text>
  <text x="630" y="100" fill="#8a8a86" font-size="9" text-anchor="middle">Simulates circuits</text>
  <text x="630" y="118" fill="#8a8a86" font-size="9" text-anchor="middle">Synthesizes RTL → gates</text>
  <text x="630" y="136" fill="#8a8a86" font-size="9" text-anchor="middle">Places & routes</text>
  <text x="630" y="154" fill="#8a8a86" font-size="9" text-anchor="middle">Verifies DRC/LVS</text>
  <text x="630" y="172" fill="#8a8a86" font-size="9" text-anchor="middle">Signs off timing/power/EM</text>
  <text x="630" y="200" fill="#6fbf6f" font-size="10" text-anchor="middle">Nvidia / Apple / AMD</text>

  <!-- Arrow PDK → designer -->
  <line x1="492" y1="135" x2="528" y2="135" stroke="#6fafcf" stroke-width="2" marker-end="url(#pkarr)"/>
  <text x="510" y="125" fill="#8a8a86" font-size="7" text-anchor="middle">enables</text>

  <!-- Bottom: PVT corners matrix -->
  <rect x="30" y="240" width="700" height="180" fill="#1f1f1c" stroke="#3a3a37" stroke-width="1" rx="8"/>
  <text x="380" y="265" fill="#c9c3f2" font-size="12" text-anchor="middle" font-weight="500">PVT corner matrix — what the PDK characterizes</text>

  <!-- Process axis -->
  <text x="120" y="295" fill="#e0913a" font-size="10" text-anchor="middle" font-weight="500">Process</text>
  <rect x="60" y="305" width="50" height="22" fill="#3a3a28" stroke="#e8d44d" stroke-width="1" rx="3"/>
  <text x="85" y="320" fill="#e8d44d" font-size="9" text-anchor="middle">SS</text>
  <rect x="115" y="305" width="50" height="22" fill="#3a3a28" stroke="#8a8a86" stroke-width="1" rx="3"/>
  <text x="140" y="320" fill="#8a8a86" font-size="9" text-anchor="middle">TT</text>
  <rect x="170" y="305" width="50" height="22" fill="#3a3a28" stroke="#6fbf6f" stroke-width="1" rx="3"/>
  <text x="195" y="320" fill="#6fbf6f" font-size="9" text-anchor="middle">FF</text>
  <rect x="60" y="332" width="50" height="22" fill="#3a3a28" stroke="#6fafaf" stroke-width="1" rx="3"/>
  <text x="85" y="347" fill="#6fafaf" font-size="9" text-anchor="middle">SF</text>
  <rect x="115" y="332" width="50" height="22" fill="#3a3a28" stroke="#9a8adf" stroke-width="1" rx="3"/>
  <text x="140" y="347" fill="#9a8adf" font-size="9" text-anchor="middle">FS</text>

  <!-- Voltage axis -->
  <text x="320" y="295" fill="#e0913a" font-size="10" text-anchor="middle" font-weight="500">Voltage</text>
  <rect x="270" y="305" width="45" height="22" fill="#3a2a3a" stroke="#bf6faf" stroke-width="1" rx="3"/>
  <text x="292" y="320" fill="#dfafdf" font-size="9" text-anchor="middle">−10%</text>
  <rect x="320" y="305" width="45" height="22" fill="#3a2a3a" stroke="#8a8a86" stroke-width="1" rx="3"/>
  <text x="342" y="320" fill="#8a8a86" font-size="9" text-anchor="middle">nom</text>
  <rect x="370" y="305" width="45" height="22" fill="#3a2a3a" stroke="#bf6faf" stroke-width="1" rx="3"/>
  <text x="392" y="320" fill="#dfafdf" font-size="9" text-anchor="middle">+10%</text>

  <!-- Temperature axis -->
  <text x="540" y="295" fill="#e0913a" font-size="10" text-anchor="middle" font-weight="500">Temperature</text>
  <rect x="475" y="305" width="50" height="22" fill="#2a2a3a" stroke="#6f6fbf" stroke-width="1" rx="3"/>
  <text x="500" y="320" fill="#9a9adf" font-size="9" text-anchor="middle">−40°C</text>
  <rect x="530" y="305" width="50" height="22" fill="#2a2a3a" stroke="#8a8a86" stroke-width="1" rx="3"/>
  <text x="555" y="320" fill="#8a8a86" font-size="9" text-anchor="middle">25°C</text>
  <rect x="585" y="305" width="50" height="22" fill="#2a2a3a" stroke="#bf4040" stroke-width="1" rx="3"/>
  <text x="610" y="320" fill="#bf4040" font-size="9" text-anchor="middle">125°C</text>

  <!-- Worst-case corners -->
  <text x="380" y="375" fill="#d4d4d0" font-size="10" text-anchor="middle">Worst-case sign-off:</text>
  <text x="380" y="395" fill="#e8d44d" font-size="10" text-anchor="middle">Setup: SS / low-V / 125°C (slowest) — Hold: FF / high-V / −40°C (fastest)</text>
  <text x="380" y="415" fill="#8a8a86" font-size="9" text-anchor="middle">Full matrix = 5 × 3 × 3 = 45 corners minimum · Monte Carlo AOCV adds 50+ statistical views</text>

  <defs><marker id="pkarr" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8" fill="none" stroke="#6fafcf" stroke-width="1.5"/></marker></defs>
</svg>

Open-source PDKs — democratizing chip design. Google/SkyWater's SKY130 (130 nm, 2020) and GlobalFoundries' GF180MCU (180 nm, 2022) are open PDKs freely available to anyone — enabling university research, startups, and open-source EDA tool development (OpenROAD, OpenLane, Magic, ngspice) without the NDA-gated access that foundry PDKs traditionally require. While these are mature nodes (not competitive for AI chips), they let designers learn the full RTL-to-GDS flow on real, manufacturable technology — and several Google-sponsored shuttle runs have taped out functional chips using SKY130 at zero cost.

What PDK means for AI chip teams. Designing a frontier AI accelerator at 3–5 nm means working with a PDK that contains: ~4800 standard cells × 5+ PVT corners (24,000+ Liberty views), 600-parameter FinFET/GAA SPICE models, 4000+ DRC rules, multi-patterning-aware coloring constraints, and EM limits that require coupled thermal-electrical analysis. The PDK is updated quarterly as the foundry improves the process; each update can shift timing margins by 5–10%, requiring re-validation of the entire design. The PDK is not documentation — it is the executable specification of the manufacturing process.

layoutpdkasicfpga

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.