Synthesis
Synthesis is the process of converting RTL i.e. synthesizable Verilog code to technology-specific gate-level netlist. Netlist basically includes nets, sequential and combinational cells, and their connectivity information.
Goals of Synthesis -
- To get a gate-level netlist
- Inserting clock gates
- Logic optimization
- Inserting DFT logic
- Logic equivalence between RTL and netlist should be maintained
Inputs for Synthesis Tool -
- .tf- technology-related information.
- .lib-timing info of standard cell & macros
- .v- RTL code.
- SDC- Timing constraints.
- UPF- power the intent of the design.
- Scan config- Scan related info like scan chain length, scan IO, which flops are to be considered in the scan chains.
For Physical aware synthesis -
- RC co-efficient file (tluplus).
- LEF/FRAM- abstract view of the cell.
- Floorplan DEF- locations of IO ports and macros.
Synthesis Flow -
---------------------------
---------------------------
Analyze -
---------------
This step do syntax checking on RTL (Verilog) code
---------------
This step do syntax checking on RTL (Verilog) code
Elaborate -
-----------------
First, all lower-level blocks brought into synthesis tool.
Verilog code and arithmetic operators are converted into Gtech and DW components. These are technology-independent libraries.
Gtech- contains basic logic gates &flops.
DesignWare- contains complex cells like FIFO, counters.
Analyses the design hierarchy.
Removes empty switches and dead branches.
Detects asynchronous reset.
Converts decision trees to mux.
Converts synchronous to Dlatch/DFF.
Do FSM Pass:
Detects FSM logic and extracts the no of input, output bits and state bits.
Converts FSM logic to basic logic.
Do Memory Pass:
Merging DFF to memory write(memwr) and memory read (memrd)
Consolidating memwr/memrd cells
Generate memory (mem) cells
Mapping mem cells to basic logic
-----------------
First, all lower-level blocks brought into synthesis tool.
Verilog code and arithmetic operators are converted into Gtech and DW components. These are technology-independent libraries.
Gtech- contains basic logic gates &flops.
DesignWare- contains complex cells like FIFO, counters.
Analyses the design hierarchy.
Removes empty switches and dead branches.
Detects asynchronous reset.
Converts decision trees to mux.
Converts synchronous to Dlatch/DFF.
Do FSM Pass:
Detects FSM logic and extracts the no of input, output bits and state bits.
Converts FSM logic to basic logic.
Do Memory Pass:
Merging DFF to memory write(memwr) and memory read (memrd)
Consolidating memwr/memrd cells
Generate memory (mem) cells
Mapping mem cells to basic logic
Import timing and power constraints -
--------------------------------------------------------------
Once the design is extracted in the form of technology-independent cells, timing constraints are imported from the SDC file.
If the design consists of multiple power domains, then using the UPF power domains, isolation cells, level shifters, power switches, retention flops are placed.
--------------------------------------------------------------
Once the design is extracted in the form of technology-independent cells, timing constraints are imported from the SDC file.
If the design consists of multiple power domains, then using the UPF power domains, isolation cells, level shifters, power switches, retention flops are placed.
Clock gating -
----------------------
Due to the high switching activity of clock a lot of dynamic power is consumed. One of the techniques to lower the dynamic power is clock gating.
Clock gating is inserted in existing design for design power reduction.
(We will discuss clock gating in details in another topic)
----------------------
Due to the high switching activity of clock a lot of dynamic power is consumed. One of the techniques to lower the dynamic power is clock gating.
Clock gating is inserted in existing design for design power reduction.
(We will discuss clock gating in details in another topic)
Optimization -
- Performs logic and design optimization.
- Overall Optimization can be categorized as follows
- Logic optimization & Design optimization.
Logic optimization:
- Constant folding
- Detect identical cells
- Optimize mux (dead branches in mux)
- Consolidate mux and reduce inputs (many to single)
- Remove DFF with a constant value
- Remove unused cells and wires
Design optimization:
- Reduce TNS and WNS
- Power Optimization
- Area Optimization
- Meet the timing DRV’s
- Incremental clock gating
DFT insertion (Design for Testing) -
------------------------------------------------------
DFT circuits are used for testing each and every a node in the design.
More the numbers of nodes that can be tested with some targeted pattern, more is the coverage. Scan chains are inserted in scan-based designs.
(We will discuss details scan-based design in later topic)
DFT circuits are used for testing each and every a node in the design.
More the numbers of nodes that can be tested with some targeted pattern, more is the coverage. Scan chains are inserted in scan-based designs.
(We will discuss details scan-based design in later topic)
Incremental Compile -
------------------------------------
Technology mapping of DFT circuit
Optimization of the design
------------------------------------
Technology mapping of DFT circuit
Optimization of the design
Outputs of Synthesis -
------------------------------------
------------------------------------
- Netlist
- SDC file
- UPF file
- Scan Def
How to Qualify Synthesis Results?
--------------------------------------------------------------
--------------------------------------------------------------
- Synthesis results can be qualified based on the following points –
- Check if the RTL and netlist are logically equivalent (LEC/FM).
- Check if SDC and UPF are generated after synthesis and also check their completeness.
- Check if there are any assign statements.
- Combinational loops
- Un-clocked registers
- unconstrained IO’s
- IO delay missing
- Un-expandable clocks
- Master-slave separation
- multiple clocks
- Checks related to design
- Floating pins
- multi driven inputs
- un-driven inputs
- un-driven outputs
- normal cells in the clock path
- pin direction mismatch
- Check for don’t use cells