The RTL-to-GDSII flow is the sequence of steps that turns a register-transfer-level (RTL) description of a design into the polygon database a foundry manufactures. Logic synthesis converts RTL into a netlist of standard cells. Physical design places those cells on the die, builds the clock tree, and routes the wires. Sign-off checks timing with real wire parasitics and verifies the layout against manufacturing rules and the original netlist. The final output is a GDSII file, and handing it to the foundry is called tape-out.

15 min read | Intermediate Level

What You'll Learn

  • The main steps from RTL to GDSII and what each one produces
  • What a synthesized netlist and a timing constraint file look like
  • Which checks at each stage catch which kinds of problems
  • How RTL decisions show up later in the physical flow

The Flow at a Glance

RTL-to-GDSII implementation flow
The RTL-to-GDSII flow. Front-end steps (blue) turn RTL into a netlist; physical design (orange) turns the netlist into layout; sign-off (green) checks timing and manufacturability before the GDSII database goes to the foundry.
StepInputOutputMain question answered
RTL design + simulationSpecificationVerified RTLDoes the design do the right thing?
Logic synthesisRTL, timing constraints, cell libraryGate-level netlistWhich cells implement this logic, fast and small enough?
FloorplanningNetlist, die size targetDie outline, block and macro positions, I/O, power gridWhere does everything go at a high level?
PlacementFloorplan, netlistA legal position for every cellCan connected cells sit close together without congestion?
Clock tree synthesisPlaced designBuffered, balanced clock networkDoes the clock reach every flop with small skew?
RoutingPlaced design with clock treeMetal wires and vias for every netCan every connection be drawn within the rules?
Extraction + static timing analysisRouted layoutTiming reports at all cornersDoes every path meet setup and hold with real wires?
Physical verificationFinal layoutDRC and LVS resultsCan it be manufactured, and does it match the netlist?
Tape-outClean layoutGDSII (or OASIS) databaseReady for mask making

Front End: From RTL to Netlist

Synthesis reads RTL plus a constraint file that describes clocks and I/O timing. Without constraints, synthesis has no timing target and paths are left unchecked.

ConstraintExampleWhat it tells the tools
Clock definition1 GHz clock (1 ns period)The required time for every register-to-register path
Clock uncertainty50 psMargin for jitter and supply noise
Input delay300 ps after the clock edgeHow late each input arrives from outside
Output delay300 ps before the next edgeHow much time the outside logic needs

The result is a gate-level netlist: a list made only of cell instances from the library and the wires connecting them.

Design function (RTL):   Y = (A . B) + C

Synthesized netlist (illustrative cell and pin names; every library uses its own):
  U1 : AOI21_X1   inputs A1 = A, A2 = B, B = C     output N1 = NOT((A . B) + C)
  U2 : INV_X1     input  A  = N1                   output Y  = NOT N1

An equivalence check then proves mathematically that the netlist performs the same function as the RTL, without simulation vectors. It is repeated after every major netlist change in the physical flow.

Quick Check

Q: Synthesis finishes with no timing violations, but the design has no clock-definition constraint. Is timing safe?

Show Answer

No. Without a clock definition, register-to-register paths have no required time, so they are unconstrained and never reported as failing. "No violations" means nothing was checked. Always review the report of unconstrained paths.

Back End: Physical Design

Physical design, step by step (simplified)

  Floorplan   : choose die size; place large macros (SRAMs, analog, I/O);
                build the power grid (rings, stripes, rails)
  Placement   : put every standard cell in a legal row position;
                optimize wire length and timing; avoid congested areas
  CTS         : build the clock tree; fix hold violations it reveals
  Routing     : draw every wire on the metal layers, obeying spacing and width rules
  Optimize    : resize cells, insert buffers, fix timing and design-rule violations
                (small netlist edits here are called ECOs - engineering change orders)
  Fill        : add filler cells and metal fill for manufacturing uniformity

Where Does the Back End Take the Most Time?

For a large SoC, the physical flow is iterative and often takes longer than writing the RTL. Timing closure - repeatedly finding failing paths and fixing them by resizing, buffering, moving cells, or changing RTL - can take many weeks. Large designs are split into hierarchical blocks, each placed and routed separately and then assembled at the top level.

Sign-Off: Timing and Physical Verification

CheckWhat it verifiesTypical failures
Static timing analysis (multi-corner)Setup and hold on every path at every process, voltage, and temperature corner, with extracted parasitics and crosstalkLong paths, hold violations after CTS, crosstalk delay
IR drop and electromigrationSupply voltage at every cell; current density in wiresWeak power grid, hot spots
DRC (design rule check)Every shape obeys the foundry's width, spacing, enclosure, and density rulesSpacing violations, missing fill
LVS (layout vs. schematic)The layout's connectivity matches the netlist exactlyShorts, opens, missing connections
Antenna and other checksManufacturing-induced damage risks, such as long wires charging gate oxides during etchingLong unprotected wires on thin gates

Only when every check is clean at every corner does the design tape out: the final layout is written as a GDSII (or the newer OASIS) file and sent to the foundry, which uses it to make the photomasks.

Where Do Flow Mistakes Get Expensive?

A mask set for an advanced process is very expensive, and a manufacturing cycle takes months. A bug that escapes sign-off can force a re-spin: new masks and another fabrication run. This is why teams invest heavily in verification before tape-out, and why sign-off checks are run on the exact final database.

How RTL Decisions Show Up Later

RTL decisionWhere it shows up in the flow
Deep combinational logic between registersTiming closure struggles in placement and STA
Signals that must cross the die in one cycleUnfixable wire delay after placement
High-fanout controls from a single flopLarge buffer trees, extra delay and power
Gated or generated clocks built from logicDifficult CTS, extra constraints, glitch risk
Large memories written as arraysHuge flip-flop-based storage unless replaced with SRAM macros
Unintended latches from combinational logic that leaves an output unspecified for some inputsUnexpected latches in the netlist, timing-analysis complications

Common Mistakes

Mistake #1: Treating post-synthesis timing as final

Synthesis only estimates wire delay. Real wire lengths, clock-tree latency, and crosstalk appear after placement and routing. Timing is only closed when it passes with extracted parasitics at all corners.

Mistake #2: Missing or incomplete constraints

Paths without constraints are not timed and cannot fail, which hides real problems. Every clock, generated clock, and I/O must be constrained, and the unconstrained-path report should be empty or fully explained.

Mistake #3: Ignoring synthesis warnings

Inferred latches, multiple drivers, and undriven nets usually mean the RTL does not describe the intended hardware. Simulation may still pass while the netlist behaves differently. Review and clear synthesis warnings before moving on.

Mistake #4: Skipping equivalence checks after netlist changes

Every optimization and ECO modifies the netlist. Without an equivalence check against the RTL, a functional change introduced during implementation can reach silicon.

Practice Exercise

Challenge: Which Step Catches It?

For each problem, name the step or check most likely to catch it first:

  1. An FSM goes to the wrong state for one input sequence.
  2. A combinational logic description leaves an output unspecified for some input combinations.
  3. A 4 mm route between two blocks has negative setup slack.
  4. Two metal wires are drawn too close together.
  5. A buffer inserted during optimization accidentally connects to the wrong net.
Hint

Think about what each check compares: behaviour against intent, netlist against RTL, timing against constraints, layout against rules, or layout against netlist.

Solution
1. RTL simulation (functional verification)
2. Synthesis warnings: an inferred latch
3. Post-placement / post-route static timing analysis with extracted wires
4. DRC (design rule check)
5. Equivalence checking (netlist vs. RTL); LVS would also catch a layout
   that does not match its netlist
  

Summary

In this tutorial, you learned:

  • Logic synthesis turns RTL and constraints into a gate-level netlist of library cells
  • Floorplanning, placement, clock tree synthesis, and routing turn the netlist into a layout
  • Static timing analysis with extracted parasitics, at every corner, decides whether timing is met
  • DRC checks manufacturability; LVS checks that the layout matches the netlist
  • Equivalence checking proves that netlists still match the RTL after every change
  • The final GDSII database goes to the foundry at tape-out
  • RTL choices such as logic depth, clocking, and memory style strongly affect every later step
Did you find what you were looking for?

Quiz

No quiz questions available for this article.