Synthesis to gate-level netlist
WHAT is synthesis?
Three inputs are always required:
- RTL source — your
always/processbehavioral code. - Technology library (
.lib) — the menu of available gates, each with delay, area, power. - Constraints (SDC) — clock period, input/output delays, area budget, etc.
The output is a netlist: still Verilog syntactically, but now it contains no +, if, or always @(posedge) behavior — only instantiated cells like AND2X1 u5 (.A(...), .B(...), .Y(...));.
HOW it works — the four stages
RTL ──► [1 Elaboration] ──► [2 Translation to ──► [3 Technology ──► [4 Optimization] ──► Netlist
+ parse/check generic Boolean/RTL mapping to
(GTECH) logic] real .lib cells]
Stage 1 — Elaboration/Parsing. Read HDL, check syntax, resolve parameters, build a hierarchy. Why: nothing else can happen until the tool has an internal model.
Stage 2 — Translation to generic logic (GTECH). Behavior → technology-independent Boolean network. assign y = a & b | c; becomes an abstract AND/OR graph. Why: optimize Boolean logic before committing to a specific vendor's gates.
Stage 3 — Technology mapping. Cover the Boolean network with actual library cells (e.g. replace generic 3-input logic with an AOI21X1 if one exists). Why: only real cells have real delay/area, so we must pick them to know if timing is met.
Stage 4 — Optimization. Restructure logic, resize/buffer cells, balance paths to satisfy the SDC constraints. Why: the first legal mapping is rarely the fastest or smallest.

The core numbers: timing closure
Synthesis exists mostly to hit timing. Derive the key inequality from scratch.
Setup: signal launched by FF1 on a clock edge, must be captured by FF2 on the next edge, one clock period later.
Time available for the data to travel = one clock period. But two things eat into it:
- The launching flop doesn't output instantly: clock-to-Q delay .
- The capturing flop needs data steady before its edge: setup time .
So the time left for the combinational logic (plus a margin/uncertainty) is:
Requiring the actual logic delay to fit:
Why each term: delays the start, is what synthesis controls (by choosing gates), shifts the deadline earlier, covers clock jitter/skew estimate. Everything must fit inside one period .
How synthesis reacts to negative slack: upsize gates (faster but bigger/more power), add buffers, restructure logic (e.g. balance an AND-tree), or restructure arithmetic (carry-lookahead vs ripple). This is the area–power–timing trade-off.
Worked examples
Common mistakes
80/20 — the vital few
Recall Feynman: explain to a 12-year-old
Imagine you write instructions for LEGO: "make something that adds two numbers." A magic robot (the synthesis tool) reads your instructions and picks actual LEGO bricks (real gates) from a box (the library) and snaps them together into a machine that does exactly that. But the robot also has a stopwatch: the answer must be ready before the next tick of a clock. If the machine is too slow, the robot swaps in faster (but bigger) bricks until it beats the clock. The finished pile of connected bricks — that's the gate-level netlist.
Flashcards
What are the three required inputs to logic synthesis?
What is a gate-level netlist?
Name the four synthesis stages in order.
Write the setup-timing constraint.
Define slack.
Why translate to generic (technology-independent) logic first?
Does synthesis place gates on the chip?
Why can correctly-simulating RTL still fail synthesis?
Why doesn't blindly upsizing gates always fix timing?
What does y = sel ? a : b; synthesize to?
Connections
- RTL Design and the Synthesizable Subset
- Static Timing Analysis (STA)
- Standard Cell Libraries and .lib Timing Models
- Place and Route (Physical Design)
- Setup and Hold Time in Flip-Flops
- Clock Skew and Uncertainty
- HDL & Digital Design Flow
Concept Map
Hinglish (regional understanding)
Intuition Hinglish mein samjho
Dekho, synthesis basically hardware ka compiler hai. Jaise C code ko compiler machine code banata hai, waise hi synthesis tool tumhaare RTL Verilog (jisme tum likhte ho "y = a + b" ya "if-else") ko lekar use gate-level netlist me convert karta hai — matlab real AND, OR, MUX, flip-flop cells jo ek chip pe banaye ja sakte hain. Iske liye teen cheez chahiye: tumhaara RTL, ek technology library (.lib) jisme har gate ka delay/area/power likha hota hai, aur constraints (SDC) jisme clock period waghairah diya jaata hai.
Ye kaam char steps me hota hai: pehle elaborate (code padho, check karo), phir generic logic banao (abhi kisi vendor ka gate fix nahi kiya, sirf Boolean network), phir technology mapping (ab real .lib cells se logic ko cover karo), aur last me optimization (fastest/smallest banane ke liye gates resize, buffer add karo). Isko yaad rakhne ke liye: "Every Genius Team Optimizes".
Sabse important cheez hai timing. Data ek flip-flop se nikalta hai aur agle clock edge tak doosre flop me pahunchna chahiye. To pura time budget ek clock period hai. Ismein se (flop turant output nahi deta), (capture flop ko data pehle stable chahiye), aur (clock jitter margin) ghat jaata hai — jo bacha wo tumhaare logic ke liye. Formula: . Agar slack positive hai to timing pass, negative hai to violation — tool tab faster gates lagata hai (jo bade aur zyada power lete hain). Yahi timing–area–power ka trade-off hai, aur yahi synthesis ka asli kaam hai.
Ek galti se bacho: synthesis gates ko chip pe place nahi karta — wo alag step (place & route) karta hai. Aur agar RTL simulate ho raha hai iska matlab ye nahi ki wo synthesizable hai; kuch constructs (delays, initial) sirf simulation ke liye hote hain, hardware me nahi bante.