Synthesis
Synthesis
M.POOJITHA
SYNTHESIS
Synthesis is a process of converting the RTL,VHD,HDL code into TECHNOLOGY
SPECIFIED Gate level Netlist.
It involves mapping the functionality specified in the RTL code to a library of standard cells, such as
NAND, NOR, XOR gates, etc., provided by the target technology.
INPUTS:
● RTL
● LIB
● LEF
● Floorplan DEF
● SDC
● UPF
OUTPUTS:
● SDC
● DEF
● Scan DEF (.def)
● UPF
Required Files for Synthesis:
● RTL Code: The RTL code serves as the input, written in hardware description
languages like Verilog or VHDL, which captures the desired behavior of the
design.
● Constraint File: The constraint file guides the synthesis tool, providing
● Translation: It enables the transformation of RTL code, which captures the design's
hardware.
● Optimization: Synthesis optimizes the design for various metrics, such as area,
Physical Aware Synthesis : Physical aware synthesis requires additional floorplan DEF
contains physical information like IO ports placements,macro placement
information,blockages information.
Additionally ,we use RC co-efficient file as one of the inputs to compute a more accurate
wire delay values compared to the WLM(Wire Load Model)method.
ADVANTAGES OF PHYSICAL AWARE SYNTHESIS
● Better PPA( Power,Performance,Area).
● Better timing correlation with PNR.
● Better turnaround time (reduces the number of iterations).
● Improvement in power.
● PNR runtime also reduces because of lesser violations.
Logic Synthesis flow:
DIFFERENCE BETWEEN LOGIC AWARE SYNTHESIS AND
PHYSICAL AWARE SYNTHESIS:
1. TO calculate the Net Delays Wire Load Models 1. TLU+ Files are used to calculate the Net delays
are used.
3. PPA is not accurate compare to Physical aware 3. We use floor plan DEF as a input to get better PPA
Synthesis
4. Runtime is less compare to physical aware 4. Runtime is more compared to Logic aware synthesi
synthesis
DC Synthesis Flow
Library Objects:
● link_library
● target_library
● symbol_library
● synthetic_library
link_library: It used for linking the design . it contains the libraries that are used to
reference macros and other cells that are not synthesized by the the design compiler.
Target_library:It is used for Technology mapping.it contains the cells that are used to
synthesize the design. It contains the technology specific low level cells
(AND,OR,DEF,etc…)
symbol_library: It contains definitions of the graphic symbols that represent library
cells in the schematics.
● Semiconductor vendors maintain and distribute the symbol libraries.
● DC uses symbol libraries to generate the design schematic .
● Must use design vision to view the design schematic.
This sets the drive strength of the CLK and RST input ports to the highest
value.
Set_driving_cell: It is typically used along with set_driving_cell
to model the drive resistance of the cell driving the input port.
● Example usage of set_driving_cell
● set_driving_cell -lib_cell BUFX4 -pin ZN [all_inputs]
● The set_drive and set_driving_cell commands help the
synthesis tool accurately estimate the timing and optimize the design.
set_load -subtract_pin_load 0.025 [get_nets UCNT0/NET5] # Subtract pin cap from net
load
set_fanout_load:The "set_fanout_load" command in synthesis
tools like Synopsys Design Compiler is used to set the specified fanout
load on the output ports.
This command allows designers to define the load that an output port
can drive, influencing the design performance and characteristics.
By setting the fanout load, designers can optimize the design for factors
like area, speed, and power consumption based on their specific
requirements.
TIMING OPTIMIZATION TECHNIQUES
This technique involves the use of multi-bit flip-flops (MBFFs) to reduce power
consumption and improve timing in integrated circuit (IC) designs.
By clustering registers into MBFFs, clock circuitry can be shared, leading to a
reduction in the number of clock sinks and enhancing power optimization.
MBFFs offer benefits such as reduced clock tree length, which in turn decreases
clock-tree buffers and power consumption, ultimately improving design skew.
Additionally, MBFF merging mechanisms have been introduced to optimize
power consumption during the physical implementation stage of ICs,
demonstrating significant power reduction in clock tree networks while
maintaining good timing and routing convergence.
Constant flop Propagation
● This process is crucial for improving timing and balancing delays within a design. Register
retiming can be performed using tools like Precision Synthesis, which offers algorithms to
move registers forward or backward to address negative path slack.
● Register retiming is particularly beneficial for FPGA designs, enabling the adjustment of
register locations to equalize delays and optimize clock period and area. This technique is
instrumental in managing routing delay issues and enhancing the performance of complex
FPGA designs by strategically placing sequential elements to minimize path delays.
Register_duplication
Register duplication is a synthesis optimization technique used to reduce the fan-out of registers and improve
timing performance. It involves creating multiple copies of a register to drive different destinations, reducing
the number of loads on each copy.
● Maximum Fan-Out assignment: Specifies the maximum number of destinations a register can drive
before being duplicated
● Manual Logic Duplication: Allows manually duplicating specific registers to optimize timi
Register duplication can help in the following scenarios:
The concept of buffer aware placement in synthesis involves strategically placing buffers in
VLSI circuits to optimize performance, reduce power consumption, and address timing issues.
This technique is crucial in modern circuit design due to the increasing dominance of
interconnect delays over gate delays as technology scales down. Buffer insertion is essential for
achieving timing objectives and fixing electrical violations in interconnects.
Tools like physical synthesis play a key role in this process by optimizing placement, timing,
power consumption, and crosstalk effects in integrated circuit designs.
Overall, buffer aware placement in synthesis is a critical aspect of VLSI circuit design, ensuring
efficient signal propagation, reduced power consumption, and enhanced timing characteristics in
modern integrated circuits.
Automatic timing control
● Automatic timing control in synthesis involves the automated synthesis of
controllers for timed systems, where algorithms are used to find winning
strategies for certain games.
● This process focuses on the optimization problem defined over an infinite
prediction/control horizon, addressing issues related to discrete-time hybrid
systems and nonlinear systems that require specific smoothness
assumptions.
● The aim is to develop efficient algorithmic implementations that provide
exact solutions to optimal control problems for constrained or hybrid
systems.
Via ladder support
● Via ladder support is a stacked via that starts from the pin
layer and extends into an upper layer where the router
connects to it.
● Via ladder reduces the via resistance which can improve
the performance and Electromigration robustness.
● The tool can automatically insert the via ladder for cell
pins on timing critical paths.
Creating path groups by giving specific weightage and applying critical
range
Tocreate path groups with specific weightage and critical range in synthesis, you can use the
group_path command in Design Compiler. Here's how it works:
group_path -name <group_name> -weight <weight_value> -critical_range <range_value> -from
<from_list> -to <to_list>
● group_name: Specifies the name of the path group you want to create
● weight_value: Assigns a weight to the path group. The violations are multiplied by this
weight to determine the cost. A higher weight means the paths in this group will be optimized
more aggressively. The value can range from 0 to 100, with 1 being the default.
● range_value: Specifies the critical range. All paths in the group whose timing violation is
within this range of the worst violator will be optimized, not just the worst violator. This can
improve results at the cost of longer compile times.
● from_list: Specifies the start points of the paths to include in the group
● to_list: Specifies the endpoints of the paths to include in the group.