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:

  1. Logic Synthesis
  2. 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:

  1. Import Input Files (RTL code and .lib files)
  2. Elaboration of the design
  3. Read SDC (Synopsys Design Constraints) File
  4. Perform Sanity Checks to verify the design’s integrity
  5. Generic Mapping of RTL to gate-level representation
  6. Technology Mapping to specific technology gates
  7. Optimization of the design for area, power, and timing
  8. Implement DFT (Design for Testability), handled by the DFT team
  9. Incremental Optimization to further enhance the design
  10. 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!

Scroll to Top