Hello! In our last lesson, we took a bird's-eye view of the entire ASIC design flow, from a product idea all the way to a finished silicon chip. You learned that logic synthesis is the critical step that forms the bridge between the conceptual front-end (RTL design) and the physical back-end (layout).
This lesson will zoom in on that crucial bridge. We will explore exactly what logic synthesis is, what it does, what it needs to do its job, and what it produces. Understanding this process is fundamental to knowing how your abstract Verilog code is transformed into a real, physical circuit.
Our goal is to explain the purpose of logic synthesis and its inputs (RTL, constraints) and outputs (gate-level netlist).
1. What is Logic Synthesis?
At its core, logic synthesis is the process of automatically converting a high-level design description, like the Verilog RTL you've written, into an optimized, technology-specific implementation using basic logic gates.
Think of it as a highly specialized translator. It reads your behavioral description of the circuit (what you want it to do) and translates it into a structural description (what it is made of).
To start, watch this short segment that visually explains this transformation.
DVD - Lecture 3: Logic Synthesis - Part 1
This video from Adi Teman's "Digital VLSI Design" course provides a clear graphical overview of the synthesis process.
Watch the introduction from the beginning. Focus on the diagram that shows the three key inputs (RTL, Standard Cell Library, Design Constraints) being fed into the synthesis tool to produce the primary output (Gate-Level Netlist). This diagram perfectly frames what we'll be discussing.
As the video illustrates, synthesis isn't just a simple one-to-one translation. Its main purposes are:
- Automation: It automates the tedious and error-prone task of manually converting RTL into thousands or millions of gates.
- Abstraction: It allows you to design at a higher level (RTL) without worrying about the specific details of the underlying transistor technology.
- Optimization: This is perhaps the most important purpose. The synthesis tool analyzes your design and rebuilds it to achieve the best possible balance of Power, Performance, and Area (PPA), based on the goals you provide.
Synthesizer vs. Software Compiler
Given your interest in coding, it's useful to draw a distinction. A software compiler (like a C++ compiler) translates your code into a sequence of instructions for a processor to execute one after another. A synthesizer, on the other hand, translates your HDL code into a physical structure of parallel hardware that exists all at once.
This video segment explains this important difference.
DVD - Lecture 3: Logic Synthesis - Part 1
This part of the lecture clarifies the fundamental difference between compiling software and synthesizing hardware.
Watch the segment from the beginning. Pay attention to how a compiler targets a processor with sequential instructions, while a synthesizer creates actual hardware blocks.
2. The Inputs to Synthesis
A synthesis tool can't work in a vacuum. To perform its job of translation and optimization, it requires three essential inputs, as you saw in the first video.
Let's look at each input in detail.
1. RTL Code (Verilog/VHDL)
This is the functional description of your design that you create. The tool will only synthesize a specific subset of the language known as "synthesizable Verilog." Constructs you've used like always @(posedge clk), assign, and case statements are synthesizable. Things used for simulation, like $display or initial blocks with delays, are ignored by the synthesis tool.
2. Standard Cell Library (.lib or .db)
This is the "parts catalog" for the synthesis tool. It's a file provided by the semiconductor foundry (e.g., TSMC, GlobalFoundries) for a specific manufacturing process (e.g., 45nm, 7nm). This library contains detailed information about every single logic gate (standard cell) available, such as:
- Function: The logical operation the cell performs (e.g.,
Y = A & B). - Timing: How long it takes for the output to change after an input changes (propagation delay).
- Power: How much power the cell consumes.
- Area: The physical size of the cell on the silicon.
Without this library, the synthesis tool wouldn't know what building blocks it has available or what their characteristics are.
3. Design Constraints (SDC file)
This file contains your instructions to the synthesis tool. It doesn't describe what the circuit does, but how well it must do it. This is how you define your PPA goals. A typical Synopsys Design Constraints (SDC) file includes:
- Clock Definitions:
create_clockcommand specifies the clock period, which sets the primary performance target. - I/O Delays: Specifies the timing requirements for signals entering or leaving the chip.
- Design Rules: Foundry-specific rules, such as maximum transition time on a net or maximum fanout for a gate.
- Timing Exceptions: Instructions to ignore certain paths for timing analysis (e.g.,
set_false_path).
The following short video provides a very clear summary of these three essential inputs.
Synthesis intro (Part 1) | VLSI interview prep | Digital logic | Physical Design | Semiconductors
This concise video from the "2 minute VLSI" channel clearly identifies and explains the main inputs for synthesis.
Watch the segment explaining the inputs to the synthesis flow. Note how it clearly lists the RTL, SDC, and .lib files as the core requirements.
For a more detailed textual reference on these inputs, please review the following article.
Synthesis Methodology & Netlist Qualification
This article from Design And Reuse provides a concise yet detailed breakdown of the synthesis inputs.
Read the section titled "Synthesis input". It provides a clear list and a short description for each input file type, including .lib (Timing library), RTL, and SDC (Design constraint).
3. The Synthesis Process and its Outputs
Once the tool has all its inputs, it typically performs the synthesis in three main stages:
| Step | Description |
|---|---|
| 1. Translation & Elaboration | The tool parses the RTL code and converts it into an internal, generic Boolean representation. It's like creating a rough draft of the logic without using any specific technology parts. |
| 2. Logic Optimization | The tool applies powerful algorithms based on Boolean algebra to simplify and restructure the logic to reduce complexity. This is done in a technology-independent way to prepare the design for the final mapping. |
| 3. Technology Mapping | This is the magic step. The tool takes the optimized generic logic and maps it to the actual standard cells from the .lib file. It strategically picks cells (e.g., a fast, high-power AND gate vs. a slow, low-power one) to meet the timing, power, and area constraints defined in the SDC file. |
The following video gives a great example of this mapping process in action.
Synthesis intro (Part 1) | VLSI interview prep | Digital logic | Physical Design | Semiconductors
This video shows how a synthesis tool uses the library to map an RTL expression to a specific gate.
Watch the example from "how does the synthesis tool know which cell...". You will see how an RTL statement like A and B is mapped to an AND gate by matching the expression to the function attribute within the cell's description in the .lib file.
The Outputs of Synthesis
After the mapping and optimization are complete, the synthesis tool generates several important output files.
1. Gate-Level Netlist (.v or .vg)
This is the primary output and the most important result of synthesis. It is a Verilog file that describes the design as a large list of instantiated standard cells and the wires (nets) that connect them. This netlist no longer contains behavioral constructs like always blocks or assign statements; it is a purely structural description of the circuit. This file is the input to the next major stage in the ASIC flow: Place and Route.
For example, your simple RTL:assign led = sw1 & sw2;
Might become this in the gate-level netlist (the cell name AND2_X1 comes from the .lib file):AND2_X1 u1 (.A(sw1), .B(sw2), .Y(led));
2. Reports
The tool generates detailed reports on the final quality of the design, including:
- Timing Report: Shows whether the design meets the clock frequency target.
- Area Report: Details the total area of the chip and how many of each cell type were used.
- Power Report: Estimates the power consumption of the design.
These reports allow the designer to see if their PPA goals were met.
3. Updated Constraint File (.sdc)
The tool often generates a new SDC file to pass on to the back-end tools, containing refined constraints and information about the synthesized design.
This final reading provides a good summary of the main outputs.
Synthesis Methodology & Netlist Qualification
This section of the article clearly lists and describes the files generated by the synthesis process.
Read the section titled "Outputs". It confirms the gate-level netlist as the primary output and explains why other files, like an updated SDC, are also generated.
Conclusion
In this lesson, we've pulled back the curtain on logic synthesis, the automated process that turns your abstract RTL code into a concrete hardware implementation.
Key Takeaways:
- Purpose: Synthesis translates behavioral RTL into a structural gate-level netlist, while optimizing for performance, power, and area (PPA).
- Inputs: The three essential inputs are the RTL code (the design's function), the standard cell library (the available parts), and the design constraints (the performance goals).
- Process: Synthesis involves translating the RTL to a generic form, optimizing the logic, and mapping it to technology-specific cells from the library.
- Output: The primary output is the gate-level netlist, a structural description of the circuit ready for physical design (Place and Route).
You now understand how a design transitions from the logical realm to the physical. The standard cell library is clearly a cornerstone of this process. In our next lesson, we will dive deeper into what these libraries are and how they are created.