Logic Synthesis · Before Synthesis Even Starts

Standard Cell Library Selection

The gate-level netlist synthesis can produce is fundamentally bounded by the library it's allowed to map onto. Which library, which cells within it, and which threshold-voltage flavors are even available to the optimizer are decisions made before RTL ever reaches the synthesis tool — and they set the ceiling on the PPA result just as firmly as any SDC constraint does.

Physical Library Variants

Library Types: Matching the Library to the Design Goal

Standard-cell libraries at a given process node typically ship in a few physical variants, distinguished mainly by cell height (measured in routing tracks) — taller cells fit wider transistors, which drive more current, which means faster switching at the cost of more area and leakage.

⤢ Click to zoom Track height sets the speed / area / leakage tradeoff 7–8T (UHD / LP) smallest area, lowest leakage, slowest 9–10T (HD / mainstream) balanced default for most bulk logic 12T+ (HS / HP) ≈20% faster than HD, more area & leakage reported leakage of a 14T library can run ≈62.5% higher than the equivalent 10T library for the same logic

Taller-track libraries (HS/HP) trade area and leakage for raw speed; shorter-track libraries (UHD/LP) trade speed for density and low leakage. Real chips commonly mix multiple library types across different blocks or voltage domains rather than committing the whole die to one.

Library classTypical track heightOptimized forUsed where
High Speed / High Performance (HS/HP)12T and tallerMaximum drive strength, speedPerformance-critical blocks: CPU cores, high-frequency datapaths
High Density (HD)9–10TBalanced PPAMainstream default for the bulk of most designs
Ultra-High Density / Low Power (UHD/LP)7–8TMinimum area, minimum leakageArea- or power-constrained blocks: always-on domains, cost-sensitive IoT designs
Beyond Raw PPA

Selection Criteria

CriterionWhy it matters
Process node & foundry PDK matchThe library must be qualified and silicon-proven for the exact node and metal stack being taped out — a library built for a different metal stack revision isn't just suboptimal, it's often simply unusable
Voltage domain coverageMust be characterized at every VDD the design actually plans to operate at, including any near-threshold or DVFS operating points — see Low Power Design → DVFS & AVS
Timing model completenessOlder NLDM tables vs. current-source models (CCS/ECSM) and whether LVF/POCV sigma data is included at all — directly determines what statistical signoff methodology is even possible, see Static Timing Analysis → Sigma & Statistical Guardbanding
Cell height compatibilityMust match the height already committed to by existing hard macros/IP in the floorplan — mixing incompatible heights breaks row legalization
Characterization corner coverageNeeds data across every PVT corner the design signs off at, and increasingly aging/EOL corners too — see Fabrication → Process Corners and Static Timing Analysis → Aging & Reliability
Vendor track record / IP sourceFoundry reference library vs. third-party physical IP (e.g. Arm/Artisan) vs. in-house — a tradeoff between cost, support, and confidence the library has actually been proven in silicon before
Cell family completenessFull drive-strength granularity, scan-capable variants of every sequential cell, and (if the design uses UPF multi-voltage) level shifters and isolation cells actually being present at all — see UPF & IPF
Cell Selection Policy

What Actually Goes Into Synthesis: The Don't-Use List

Not every cell in a qualified library is fair game for automatic technology mapping. Synthesis tools support a dont_use attribute (Design Compiler's term; other tools have equivalents) that excludes specific cells from the optimizer's available palette entirely — the cell still exists in the library and can still be instantiated manually, it just won't be chosen automatically during synthesis.

Cell category typically marked don't-useWhy it's excluded from automatic mapping
Extreme high-drive-strength cells (e.g. X16, X32)Letting the optimizer freely reach for these on ordinary logic burns large area and power and can drop oversized footprints into otherwise dense, congested regions — reserved for the rare path that genuinely needs that much drive
Dedicated clock buffers/invertersReserved exclusively for the CTS tool to insert while building the clock network (Physical Design → CTS) — excluding them from general logic synthesis keeps the clock tree built from a known, controlled cell subset
Tristate / bus-keeper cellsOnly wanted on the specific shared-bus structures a designer explicitly intends — not something an optimizer should introduce on its own initiative
LatchesSynchronous flows aren't supposed to infer transparent latches from RTL at all; excluding latch cells from the synthesis mapping target is a blunt but effective backstop
Legacy flip-flop types (JK, SR, etc.)Kept in the library only for manual instantiation or compatibility; D-type is the standard synthesis inference target, so these are excluded from automatic mapping
Level shifters / isolation / retention cellsReserved for UPF-driven insertion at real power-domain boundaries only (UPF & IPF) — inserting one outside an actual domain crossing would be functionally meaningless or wrong
Cells flagged with known corner/SI issuesFoundry or internal characterization occasionally flags specific cells as unreliable at certain corners or voltages; excluding them chip-wide is safer than trusting every engineer to remember by hand
Legacy/deprecated cellsKept only so existing, already-taped-out revisions can still be rebuilt or ECO'd — excluded from new synthesis runs so new logic doesn't grow a dependency on a cell being phased out
dont_use vs. dont_touch: these are frequently confused but solve different problems. dont_use excludes a cell type from the library palette available to the optimizer generally. dont_touch protects a specific existing instance or piece of logic from being resynthesized or restructured at all, regardless of which cells are otherwise allowed — used to lock down hand-optimized logic, black-boxed macros, or netlist sections between an ECO and a full re-run.
Threshold-Voltage Policy

Multi-Vt Flavors as a Library-Selection Policy

Low Power Design → Multi-Threshold Voltage Design covers the underlying delay/leakage physics of Vt flavors in circuit terms. From the synthesis setup side, it's a library-selection and default-policy question: which Vt flavors are even included in the target library set handed to the tool, and what's the default mix the optimizer is steered toward before any manual intervention.

⤢ Click to zoom Typical default Vt-mix policy across a design's area HVT — default for most non-critical logic SVT — baseline LVT/ULVT small slice, ECO-reserved Typical dual-Vt default library set for synthesis: SVT + HVT only. LVT/ULVT cells are often left OUT of the initial default set entirely, and swapped in surgically only on specific failing paths during timing ECO.

Leaving the fastest, leakiest flavors out of the default synthesis library set is a deliberate policy choice — it stops the optimizer from reaching for a fast-but-leaky cell "just because it can" on paths that never needed it, reserving that leakage budget for the handful of paths that actually do.

Naming varies by foundry: the four-flavor stack (ULVT/LVT/SVT/HVT, increasing Vt in that order) is common industry shorthand, but exact naming conventions differ by foundry and node — some processes label the baseline flavor "RVT" (regular-Vt) instead of SVT. Always check the specific PDK's naming before assuming a match across foundries.
Field Observation

Vt Variance Doesn't Always Rank the Way You'd Expect

Threshold voltage isn't a fixed number even for a single flavor — it's the mean of a distribution, and that distribution's spread (σVt) comes from random dopant fluctuation (RDF), work-function-metal granularity on FinFET/GAA devices, line-edge roughness, and — critically for multi-Vt libraries — the dose and placement tolerance of whichever masked implant step was used to shift a given flavor away from the process's natural, un-implanted channel doping. It's tempting to assume the three flavors rank predictably (e.g. "HVT is always the noisiest, LVT the tightest," or vice versa), but several teams working on recent advanced-node projects have reported the opposite of the naive assumption: SVT cells showing higher sensitivity to process/technology variation than expected relative to the other flavors, in some cases more sensitive than either neighbor.

⤢ Click to zoom Why a "middle" flavor can end up the most variation-sensitive implant dose / channel doping → resulting Vₜ flat region dose tolerance → small ΔVₜ steep transition region same dose tolerance → LARGE ΔVₜ saturating region → small ΔVₜ whichever flavor's target Vt happens to land on the steep part of the dose→Vₜ curve inherits the most variance from a given implant tolerance — that flavor isn't always the "extreme" one

Vt is a nonlinear function of implant dose. A flavor sitting on the flat, saturating part of the curve stays tight even with real dose variation; a flavor whose target happens to land on the steep transition region amplifies the same dose tolerance into a much larger Vₜ spread. Which flavor that is depends on the specific process's implant recipe — it is not guaranteed to be the highest- or lowest-Vt flavor.

This lines up with what process patents and characterization data show more generally: an implant step introduced specifically to shift Vt away from the natural background doping adds its own dose and placement variation on top of intrinsic RDF, and one comparative study found HVT devices showing larger turn-on-voltage variation than SVT while LVT showed less variation than SVT — a real ordering, but not a universal one, since the underlying implant recipe (and therefore which flavor sits on the curve's steep region) differs by foundry and node. At advanced FinFET/GAA nodes the picture shifts again: Vt is set largely by work-function-metal (WFM) deposition rather than channel implant, and foundries have reported actively tightening the Vt-variation (Pelgrom) coefficient through improved WFM processing as they've expanded to five- and six-flavor Vt offerings spanning 200–250mV of range — meaning the specific sensitivity ranking across flavors is very much a live, node-specific engineering variable, not a fixed rule of thumb.

Practical takeaway: don't carry over an assumed variance ranking (e.g. "SVT is always the safe, tightly-controlled default") from one node or foundry to the next. POCV/LVF sigma data is characterized per cell, per timing arc, per flavor in the actual target library — pull the real numbers for the specific PDK in use rather than assuming. If characterization shows SVT genuinely carrying outsized sigma in a given library, that's a legitimate, data-driven reason to bias the default Vt-mix policy away from treating SVT as the default baseline — for instance shifting more non-critical logic to HVT and using SVT more narrowly — the opposite of the conventional assumption. See Static Timing Analysis → Sigma & Statistical Guardbanding for how that per-cell sigma actually gets combined into signoff margin.

Sources