Parasitic Extraction
The idea
After routing, timing and power depend on the resistance and capacitance of the real wires, not on estimates. Resistance is local:
Rresistance of one straight wire segmentRsheetsheet resistance of the layer, set by its material and thicknesslength, widththe drawn dimensions of the segment
plus the resistance of every via along the way. Capacitance is not local. Each wire couples to the substrate, to the layers above and below, and to its neighbors on the same layer, and at small pitches the neighbor coupling dominates. The exact answer comes from solving the electrostatic field around the conductors. Field solvers such as FastCap (Nabors and White, 1991) do this with boundary elements accelerated by multipole expansions, but even so they are far too slow for the billions of wire segments on a chip.
Production extractors are therefore pattern-based. Before any design is extracted, a field solver characterizes a library of typical cross-sections for the process (a wire with neighbors at various spacings, with and without metal above and below) into tables. The extractor then scans the layout, identifies the configuration around each segment, looks up its capacitance, and writes a netlist of resistors and capacitors for the timer.
Watch it work: one wire, turned into resistors and capacitors
One routed net beside two neighbours, with illustrative values. The walkthrough computes each segment's resistance from its shape, looks up its capacitance in a pattern table, and assembles the network that timing analysis reads.
The fine print
Pattern tables are only as good as their coverage. Unusual geometry falls between the patterns, so accuracy is checked by comparing against a field solver on sample structures. Coupling capacitance also depends on whether the neighbors switch at the same time; extraction reports it as separate coupling capacitors and leaves the interpretation to timing analysis.
Where you meet it today
OpenRCX, OpenROAD's extractor, works from a per-process rules file of
this kind, and extract_parasitics runs in the flow's final report
before sign-off timing. The timing catalog's interconnect pages pick up
where extraction leaves off.