Synthesis in VLSI is the essential process that converts Register Transfer Level (RTL) code, commonly written in Verilog, into a gate-level netlist that is customized for a specific technology. This transformation is not only crucial but also needs to meet important constraints related to area, timing, and power. Let’s dive deeper into the concept and its importance.
Why is Synthesis in VLSI Important?
Synthesis in VLSI bridges the gap between high-level design representations and the final gate-level implementation of a circuit. It ensures that the circuit meets the required specifications in terms of performance, area, and power consumption. The process involves several key tasks, such as logic optimization, technology mapping, and timing analysis, all aimed at enhancing the circuit’s efficiency and reliability.
Types of Synthesis in VLSI
There are two main types of synthesis techniques used to convert RTL code into a gate-level netlist:
- Logic Synthesis
- Physical Aware Synthesis
Logic Synthesis in VLSI
Logic Synthesis is the process where RTL code is transformed into a gate-level netlist using specialized tools and techniques. The goal of logic synthesis is to optimize the design by reducing complexity while ensuring that it meets area, timing, and power constraints.
Common tools used in logic synthesis include:
- Genus by Cadence
- Design Compiler by Synopsys
A newer tool gaining popularity is Fusion Compiler by Synopsys, which combines the capabilities of synthesis and place-and-route (PnR) into a single solution.
Logic Synthesis Flow
The typical steps in the logic synthesis process are:
- Import Input Files (RTL code and .lib files)
- Elaboration of the design
- Read SDC (Synopsys Design Constraints) File
- Perform Sanity Checks to verify the design’s integrity
- Generic Mapping of RTL to gate-level representation
- Technology Mapping to specific technology gates
- Optimization of the design for area, power, and timing
- Implement DFT (Design for Testability), handled by the DFT team
- Incremental Optimization to further enhance the design
- Generate Outputs such as Netlist, SDC, and Reports
Detailed Steps of Logic Synthesis
Here are the detailed tasks involved in logic synthesis:
1. Import Necessary Files
- RTL Code: The design’s high-level description.
- Timing Libraries (.lib files): These provide necessary timing information.
- SDC File: Contains constraints like clock definitions and timing requirements.
2. Elaboration
During this phase, the RTL code is expanded and structured. Key actions include:
- Data Structure Creation: Combines multiple RTL files into a single netlist.
- Register Inference: Identifies components like mux, latches, and flip-flops based on conditions.
- HDL Optimization: Removes unnecessary logic or code inefficiencies.
3. Read SDC File
The SDC file contains timing constraints and design rules. It ensures that the design meets all required specifications, helping to avoid Design Rule Violations (DRV).
4. Sanity Checks
Sanity checks are done to verify the quality of the input files. Key checks include:
- check_design: Detects issues like combinational loops or unintended latches.
- check_timing: Verifies the timing constraints, ensuring there are no missing clock definitions.
5. Generic Mapping
At this stage, the RTL code is mapped to a gate-level representation. This step is technology-agnostic, meaning it doesn’t depend on specific technology libraries.
6. Technology Mapping
Technology mapping converts generic gates into specific gates that correspond to the chosen technology library.
7. Optimization
Optimization focuses on refining the design. This can involve restructuring logic or adjusting cells to meet area, power, and timing constraints.
8. Implement DFT
Design for Testability (DFT) adds extra logic to help test the design for manufacturing defects. This step ensures the circuit is testable and robust.
9. Incremental Optimization
After the DFT implementation, further optimizations are done to improve performance.
10. Generate Outputs
At the end of the process, the outputs include:
- Optimized Gate-Level Netlist
- SDC File
- Scan DEF
- Reports on area, power, and timing
Physical Aware Synthesis in VLSI
Physical Aware Synthesis is a more advanced approach than logic synthesis. It not only converts RTL code into a gate-level netlist but also positions standard cells within the core area to meet area, power, and timing requirements.
Inputs for Physical Aware Synthesis
Here are the key input files for physical aware synthesis:
- RTL Code
- Physical Libraries (.lef)
- Timing Libraries (.lib)
- SDC File
- MMMC File
- Floorplan DEF (optional)
- UPF (Unified Power Format) — optional if there are multiple power domains
Outputs of Physical Aware Synthesis
The key outputs of this process are:
- Gate-Level Netlist
- SDC File
- Scan DEF
- Reports
- Placed DEF File
- MMMC File
Example Synthesis Command Template
Here’s a sample Tcl script used to automate the synthesis process:
set_db / .library { ../LIB/slow.lib }
set_db / .lef_library { ../LEF/example_tech.lef }
read_hdl "../test/and.v"
elaborate
read_sdc "../constraints/example.sdc"
check_design
check_timing
syn_generic
syn_map
syn_opt
write_hdl > output_netlist.vg
write_sdc > output.sdc
report area > area.rpt
report timing > timing.rpt
report power > power.rpt
Conclusion
Synthesis plays a critical role in the VLSI design flow by transforming high-level RTL code into an optimized gate-level design. By understanding the various synthesis techniques, such as logic synthesis and physical aware synthesis, engineers can design efficient, reliable circuits that meet all performance, power, and area requirements.
Feel free to ask if you have any questions about the synthesis process or need further clarification!