Synthesis
Synthesis
Synthesis : Synthesis is the process of converting technology independent RTL to Technology dependent
Gate level netlist.
Synthesis flow :
Reading input files : The synthesis tool (genus) reads and process these input files to
generate a gate-level-netlist.
And tool uses the information from these files to make optimizations,meet constraints and
produce netlist.
Generic Mapping : The logic netlist mapped to the target tech library.The tech library
includes information about the logic gates and their characteristics.
Logic cell mapping : In this,mapping logical elements in a design in a design described in
HDL, to physical std cells available in target tech library.
Optimization : The synthesized netlist is optimized to meet the design goals like
minimizing power consumption, maximizing performance , reducing area.
Export output files : After completing the synthesis process , we need to export certain
output files that are useful for further process of chip manufacturing .
Inputs and Outputs for Synthesis :
Synthesis
tool
RTL : RTL is an abstraction level of the hardware description language that focuses on
defining how data moves between registers, simulating the operation of digital
circuitry.And these files are saved with “.v” .
Library files : The.lib (library) file contains important information about the electrical
behavior of the standard cells used in the IC design. It includes data such as cell timing
models, power characteristics, voltage thresholds, and other parameters necessary for
accurate timing analysis.
Constraints file : SDC is a short form of “Synopsys Design Constraint”. SDC is a
common format for constraining the design which is supported by almost all Synthesis,
PnR and other tools. Generally, timing, power and area constraints of design are provided
through the SDC file and this file has extension .sdc.
UPF : UPF stands for Unified Power Format.It contains power related information.
Netlist : Netlist is a textual description of a circuit made of components in vlsi design and it
contains all the gate level information and the connection between these gates.
Slack : It is difference between the required times and the actual arrival time for a signal.
Required time (RT) :The time within which data is required to arrive at some internal node
of the design.
RT = Clock period - setup time
Arrival time (AT) : Which is also called as actual time and defined as the time in which data
arrives at the internal node. It incorporates all the net and logic delays in between the
reference input point and the destination node.
AT = Tclk-q + Comb delay
Setup Slack = Required time - Arrival time
Hold slack = Arrival time - Required time
Now checking the Slack in reg to reg path :
After Synthesis, in the timing report (reg2reg) setup =77,Tclk=1200 ,Tclkq=95.
Required time = Tclk – setup = 1200 – 77 = 1123
Arrival time = Tclk-q + Tcomb = 95+1028=1123
Slack = RT – AT = 1123 –1123 = 0
Ibex reports:
Unresolved References 0
Empty Modules 0
Unloaded Port(s) 8
Unloaded Sequential Pin(s) 0
Unloaded Combinational
Pin(s) 0
Undriven Port(s) 0
Undriven Leaf Pin(s) 0
Undriven hierarchical pin(s) 0
Multidriven Port(s) 0
Multidriven Leaf Pin(s) 0
Multidriven hierarchical Pin(s) 0
Multidriven unloaded net(s) 0
Constant Port(s) 6
Constant Leaf Pin(s) 0
Constant hierarchical Pin(s) 0
Preserved leaf instance(s) 0
Preserved hierarchical
instance(s) 0
Feedthrough Modules(s) 0
Libcells with no LEF cell 0
Physical (LEF) cells with no
libcell 0
editPin -pin $pins -layer {M3 M5} -snap TRACK -spacing 1 -spreadDirection clockwise -pattern fill_track -start {0.0 0.0} -end {0.0 80.0} -edge 0
editPin -pin $pins -layer {M3 M5} -snap TRACK -spacing 1 -spreadDirection clockwise -pattern fill_track -start {0.0 0.0} -end {0.0 80.0} -edge 1
Pin placement at edge 2
editPin -pin $pins -layer {M3 M5} -snap TRACK -spacing 1 -spreadDirection clockwise -pattern fill_track -start {0.0 0.0} -end {0.0 80.0} -edge 2
editPin -pin $pins -layer {M3 M5} -snap TRACK -spacing 1 -spreadDirection clockwise -pattern fill_track -start {0.0 0.0} -end {0.0 80.0} -edge 3
Pin placement with input pins in one location and output pins in another location
get_ports [all_inputs | all_outputs] --- it will give list of input and output pins
set pin_list_name [get_ports [all_inputs | all_outputs]]
editPin -pin $input_pin_list -layer {M3 M5} -snap TRACK -spacing 1 -spreadDirection clockwise -pattern fill_track -start {0.0 0.0} -end {0.0 80.0} -edge 1 ----- for inputpins
editPin -pin $output_pin_list -layer {M4 M6} -snap TRACK -spacing 1 -spreadDirection clockwise -pattern fill_track -start {0.0 0.0} -end {0.0 80.0} -edge 3 ----- for outputpins
Floorplan outputs :
1.get core and boundary area
2.IO ports/pins placed
3.macros placement done
4.floorplan def file (.def or .fp)
Placement
Placement :
Placement is the process of placing the standard cells inside the core boundary in an optimal
location. The tool tries to place the standard cell in such a way that the design should have
minimal congestions and the best timing.
Placement does not place only the standard cells present in the synthesized netlist but also
places many physical only cells and adds buffers/inverters as per the requirement to meet the
timings, DRV, and foundry requirements. Here are the basic steps which the tool performs
during the placement and optimization stage.
1.Pre Placement
2.Initial Placement / Course Placement / Global Placement
3.Legalization
4.HFNS (Hign Fanout Net Synthesis)
5.Iteration for Congestion, Timing, DRV, and Power Optimization
6.Area recovery
7.Scan-Chain Reorder
8.Tie Cell insertion.
Inputs :
1.Gate-level netlist
2.Floorplan database
3.Constraints file
4.Logical and physical library files.
1.Pre Placement : Before starting the actual placement of the standard cells present in the
synthesized netlist, we need to place various physical only cells like end-cap cells, well-tap
cells, IO buffers, antenna diodes, and spare cells.
2. Initial Placement / Course Placement / Global Placement : In this,the placement tool
determines the approximate locations of each cells according to the timing and congestion.
3.Legalization : During legalization placement,the tool will move the cells to legal locations
to avoid overlap between cells.
4. HFNS (Hign Fanout Net Synthesis) : It is the process of buffering the high fanout nets to
balance the load.
5. Iteration for Congestion, Timing, DRV, and Power Optimization : In this step tool
first, do an early global route and estimate the routing overflow/congestions in the design.
The tool tries to initially minimize the congestion in this stage. Next, the tool starts the RC
extraction to calculate the delay for setup analysis. The tool tries to minimize the setup WNS
and TNS in this step. Similarly, the tool also tries to minimize the DRV and Power in this
stage.Congestion Reduced by using some techniques like Halos or keepout margin ,cell
padding,blockages .
Scan chain re-ordering : Is the process of reconnecting the scan chains to optimize the
routing by re ordering the scan chain connection will improve congetiono and timing.
Tie Cell insertion : There are some unused inputs of logic gates in the netlist which is tied to
either vdd or vss, is not recommended and for that we have tie high and tie low cells in the
library.