Home Knowledge Base Design Rule Check (DRC)

Design Rule Check (DRC) is the automated verification step that scans every polygon in a chip's layout against the foundry's manufacturing rules — flagging any geometry that would cause a systematic yield failure if sent to fabrication. A DRC deck encodes 3000–5000 rules at a 3 nm node, covering minimum width, spacing, enclosure, area, density, antenna ratio, and multi-patterning color assignment for every layer in the BEOL and FEOL. Zero DRC violations is a hard tape-out gate: foundries will not accept a GDS with known rule violations.

Why DRC exists — the link between design and yield. Every lithographic and etch step has physical limits: optics can't resolve features below a minimum pitch, CMP can't planarize if metal density is too high or too low, and electroplating can't fill a via that's too narrow relative to its depth. DRC rules are the foundry's quantified expression of these limits — derived from process development experiments (split lots, short-loop test structures) and optical simulations. A single rule violation can create a repeating defect across every die on every wafer, making DRC the first and most critical line of defense against systematic yield loss.

Categories of design rules:

Rule categoryExampleWhy it matters
Minimum widthM1 width ≥ 14 nmBelow this, litho can't resolve the line reliably
Minimum spacingM1 space ≥ 14 nmToo close → short circuit from bridging defects
EnclosureVia enclosed by metal ≥ 3 nm on all sidesUnder-enclosure → via lands partially on dielectric
Minimum areaPoly area ≥ 0.001 µm²Tiny polygons lift off during CMP or etch
Density (min/max)Metal density 20–80% in 50×50 µm windowCMP requires uniform density for planarity
Antenna ratioGate-area / metal-area ≤ 1000:1 per layerExcess metal during etch charges the gate oxide → damage
End-of-line (EoL)Line end extension ≥ 5 nm past via centerShort line ends pull back during litho → open
Via spacingV1 to V1 ≥ 26 nmAdjacent vias interact during etch fill
Multi-patterning colorAdjacent features must have different colorsSame-mask features too close can't be resolved
Latch-upN-well to P-well spacing ≥ 200 nmPrevents parasitic thyristor triggering

DRC vs LVS — the verification pair. DRC checks that every shape is manufacturable; Layout-Versus-Schematic (LVS) checks that the layout implements the correct circuit. Both must pass clean before tape-out:

A layout can pass DRC (all shapes are legal) but fail LVS (a wire is connected to the wrong net). Conversely, it can pass LVS (correct connectivity) but fail DRC (a spacing violation that would short in manufacturing). Both tools run the same extracted layout database but apply fundamentally different checks.

How DRC tools work — the engine. Modern DRC engines (Siemens Calibre, Synopsys ICV, Cadence Pegasus) perform geometric Boolean operations on the full-chip layout:

1. Layer derivation: Combine drawn layers using AND/OR/NOT/SIZE operations to derive process-intent layers (e.g., "active AND poly = gate"). 2. Edge-based and polygon-based checks: For each rule, find all pairs of edges or polygons within interaction distance and test the rule predicate (width, spacing, enclosure, area). 3. Hierarchical processing: Exploit the design's cell hierarchy to avoid checking identical standard cells billions of times — only check unique cell interiors once, then verify cell-to-cell abutment. 4. Error reporting: Output a database of violations with coordinates, rule ID, and violating polygons — designers view these in the layout editor and fix them.

Runtime at 3 nm on a full GPU (~800 mm² equivalent flat): 12–48 hours on a 100+ core server with 500 GB+ RAM, producing millions of initial violations on first pass that are iterated down to zero through ECO fixes.

Multi-patterning DRC — coloring rules. At 7 nm and below, the tightest metal pitches (28–36 nm) are below the resolution of a single lithographic exposure. Self-aligned double/quadruple patterning (SADP/SAQP) or EUV multi-patterning splits one design layer into 2–4 physical masks. The DRC deck must verify:

At N3/N2, coloring constraints add 500–1000 rules on top of the baseline geometric DRC.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 460" font-family="system-ui,sans-serif">
  <rect width="760" height="460" fill="#1a1a17" rx="12"/>
  <text x="380" y="28" fill="#c9c3f2" font-size="15" text-anchor="middle" font-weight="600">DRC — design rule categories and verification flow</text>

  <!-- Left: example rule violations -->
  <text x="50" y="55" fill="#8a8a86" font-size="11">Common DRC violations (exaggerated for clarity)</text>

  <!-- Min width violation -->
  <rect x="50" y="75" width="150" height="65" fill="#1f1f1c" stroke="#3a3a37" stroke-width="1" rx="5"/>
  <rect x="70" y="90" width="5" height="35" fill="#c98a2e" stroke="#e0913a" stroke-width="0.8"/>
  <line x1="78" y1="100" x2="90" y2="100" stroke="#bf4040" stroke-width="0.8"/>
  <text x="95" y="103" fill="#bf4040" font-size="8">too narrow!</text>
  <text x="125" y="130" fill="#8a8a86" font-size="8" text-anchor="middle">Min width</text>

  <!-- Min spacing violation -->
  <rect x="210" y="75" width="150" height="65" fill="#1f1f1c" stroke="#3a3a37" stroke-width="1" rx="5"/>
  <rect x="230" y="88" width="18" height="35" fill="#c98a2e" stroke="#e0913a" stroke-width="0.8"/>
  <rect x="253" y="88" width="18" height="35" fill="#c98a2e" stroke="#e0913a" stroke-width="0.8"/>
  <line x1="248" y1="100" x2="253" y2="100" stroke="#bf4040" stroke-width="1.5"/>
  <text x="255" y="133" fill="#bf4040" font-size="8">too close!</text>
  <text x="285" y="130" fill="#8a8a86" font-size="8" text-anchor="middle">Min spacing</text>

  <!-- Enclosure violation -->
  <rect x="370" y="75" width="150" height="65" fill="#1f1f1c" stroke="#3a3a37" stroke-width="1" rx="5"/>
  <rect x="410" y="88" width="50" height="30" fill="#c98a2e" stroke="#e0913a" stroke-width="0.8" rx="1"/>
  <rect x="425" y="95" width="14" height="14" fill="#6a6a67" stroke="#afafab" stroke-width="1" rx="1"/>
  <line x1="439" y1="100" x2="460" y2="100" stroke="#bf4040" stroke-width="0.8"/>
  <text x="462" y="103" fill="#bf4040" font-size="7">via overhang</text>
  <text x="445" y="130" fill="#8a8a86" font-size="8" text-anchor="middle">Enclosure</text>

  <!-- Density violation -->
  <rect x="530" y="75" width="150" height="65" fill="#1f1f1c" stroke="#3a3a37" stroke-width="1" rx="5"/>
  <rect x="545" y="85" width="120" height="40" fill="#2a2a28" stroke="#6f6f6a" stroke-width="0.5"/>
  <rect x="550" y="88" width="8" height="8" fill="#c98a2e" opacity="0.6"/>
  <rect x="562" y="88" width="8" height="8" fill="#c98a2e" opacity="0.6"/>
  <text x="605" y="110" fill="#bf4040" font-size="8" text-anchor="middle">density <20%</text>
  <text x="605" y="130" fill="#8a8a86" font-size="8" text-anchor="middle">Density (fill needed)</text>

  <!-- Center: DRC flow -->
  <rect x="50" y="165" width="660" height="120" fill="#1f1f1c" stroke="#3a3a37" stroke-width="1" rx="8"/>
  <text x="380" y="190" fill="#c9c3f2" font-size="12" text-anchor="middle" font-weight="500">DRC verification flow</text>

  <!-- Flow boxes -->
  <rect x="80" y="210" width="100" height="40" fill="#2a3a2a" stroke="#6fbf6f" stroke-width="1.2" rx="4"/>
  <text x="130" y="233" fill="#bff0bf" font-size="9" text-anchor="middle">GDS layout</text>

  <line x1="182" y1="230" x2="210" y2="230" stroke="#6f6f6a" stroke-width="1.5" marker-end="url(#drcarr)"/>

  <rect x="212" y="210" width="110" height="40" fill="#3a3a5a" stroke="#8a8abf" stroke-width="1.2" rx="4"/>
  <text x="267" y="227" fill="#c9c3f2" font-size="9" text-anchor="middle">DRC engine</text>
  <text x="267" y="241" fill="#8a8a86" font-size="7" text-anchor="middle">(Calibre/ICV/Pegasus)</text>

  <line x1="324" y1="230" x2="352" y2="230" stroke="#6f6f6a" stroke-width="1.5" marker-end="url(#drcarr)"/>

  <rect x="354" y="210" width="100" height="40" fill="#3a2a2a" stroke="#bf6f6f" stroke-width="1.2" rx="4"/>
  <text x="404" y="227" fill="#f0bfbf" font-size="9" text-anchor="middle">Violations DB</text>
  <text x="404" y="241" fill="#8a8a86" font-size="7" text-anchor="middle">(coordinates + rule ID)</text>

  <line x1="456" y1="230" x2="484" y2="230" stroke="#6f6f6a" stroke-width="1.5" marker-end="url(#drcarr)"/>

  <rect x="486" y="210" width="90" height="40" fill="#3a3a28" stroke="#e8d44d" stroke-width="1.2" rx="4"/>
  <text x="531" y="227" fill="#e8d44d" font-size="9" text-anchor="middle">Fix (ECO)</text>
  <text x="531" y="241" fill="#8a8a86" font-size="7" text-anchor="middle">widen/space/fill</text>

  <line x1="578" y1="230" x2="606" y2="230" stroke="#6f6f6a" stroke-width="1.5" marker-end="url(#drcarr)"/>

  <rect x="608" y="210" width="80" height="40" fill="#2a3a2a" stroke="#6fbf6f" stroke-width="1.5" rx="4"/>
  <text x="648" y="227" fill="#bff0bf" font-size="9" text-anchor="middle">DRC clean</text>
  <text x="648" y="241" fill="#6fbf6f" font-size="7" text-anchor="middle">→ tape-out</text>

  <!-- Rule deck input -->
  <rect x="212" y="258" width="110" height="25" fill="#2a2a3a" stroke="#5a5a8a" stroke-width="1" rx="3"/>
  <text x="267" y="275" fill="#9a9adf" font-size="8" text-anchor="middle">Rule deck (3000+ rules)</text>
  <line x1="267" y1="258" x2="267" y2="250" stroke="#5a5a8a" stroke-width="1"/>

  <!-- Bottom: scale comparison -->
  <rect x="50" y="305" width="320" height="140" fill="#1f1f1c" stroke="#3a3a37" stroke-width="1" rx="8"/>
  <text x="210" y="330" fill="#c9c3f2" font-size="12" text-anchor="middle" font-weight="500">DRC complexity scaling</text>

  <text x="70" y="355" fill="#d4d4d0" font-size="10">130 nm: ~200 rules · minutes to run</text>
  <text x="70" y="375" fill="#d4d4d0" font-size="10">45 nm: ~800 rules · hours</text>
  <text x="70" y="395" fill="#d4d4d0" font-size="10">7 nm: ~2000 rules + MP coloring</text>
  <text x="70" y="415" fill="#e0913a" font-size="10">3 nm: ~4000 rules + SAQP · 12–48 hrs</text>
  <text x="70" y="435" fill="#c9c3f2" font-size="10">2 nm: ~5000+ rules + BSPDN layers</text>

  <!-- Right bottom: DRC vs LVS -->
  <rect x="390" y="305" width="340" height="140" fill="#1f1f1c" stroke="#3a3a37" stroke-width="1" rx="8"/>
  <text x="560" y="330" fill="#c9c3f2" font-size="12" text-anchor="middle" font-weight="500">DRC vs LVS</text>

  <rect x="410" y="350" width="140" height="35" fill="#3a3a28" stroke="#e8d44d" stroke-width="1.2" rx="4"/>
  <text x="480" y="365" fill="#e8d44d" font-size="9" text-anchor="middle">DRC: is it printable?</text>
  <text x="480" y="378" fill="#8a8a86" font-size="8" text-anchor="middle">geometric only</text>

  <rect x="570" y="350" width="140" height="35" fill="#2a3a4a" stroke="#6fafcf" stroke-width="1.2" rx="4"/>
  <text x="640" y="365" fill="#bff0e4" font-size="9" text-anchor="middle">LVS: is it correct?</text>
  <text x="640" y="378" fill="#8a8a86" font-size="8" text-anchor="middle">netlist comparison</text>

  <text x="560" y="410" fill="#d4d4d0" font-size="9" text-anchor="middle">Both must pass clean → tape-out gate</text>
  <text x="560" y="430" fill="#8a8a86" font-size="9" text-anchor="middle">DRC clean ≠ LVS clean (independent checks)</text>

  <defs><marker id="drcarr" markerWidth="6" markerHeight="6" refX="5" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6" fill="none" stroke="#6f6f6a" stroke-width="1"/></marker></defs>
</svg>

Waivers and known violations. Not every DRC violation is a true error — some are intentional (analog layout tricks, test structures, or legacy IP blocks that have proven silicon). Designers submit waiver requests with justification; the foundry reviews and grants a limited "DRC waiver" for specific rules at specific coordinates. Waivered violations are tracked but don't block tape-out. At advanced nodes, waiver management is itself a significant engineering effort — a complex SoC may carry 100–500 waivers.

What DRC means for AI accelerator development. A 3 nm GPU tape-out takes 6–12 months of DRC closure iteration. The first full-chip DRC run typically shows millions of violations; the team iterates through macro-level fixes (fill insertion, spacing adjustments, via doubling), standard-cell swaps, and routing ECOs to converge to zero. At 2 nm with BSPDN, designers face additional DRC rules for the backside metal layers and nano-TSVs — rules that have never existed before. DRC closure time is the longest single task in the physical-design schedule, accounting for 20–30% of total design-to-tape-out time.

drc basicsdesign rule checkdesign rules

Explore 500+ Semiconductor & AI Topics

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