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
Source: From a Friend in PDFundamentals Group---Thanking him for sharing his knowledge