Read These
Read These
Read These
ITF - Interconnect Technology File. This file contains a description of the process crosssection
and connectivity section. It also describes the thicknesses and physical attributes of the
conductor and dielectric layers.
TLU+ File
It stands for Table Look Up file. TLU+ file is a binary file which is a kind model contains
advanced process effect that can be used to extract RC value from interconnects. The file
contains metal capacitance at different spacing and width in the form of a lookup table which
provides high accuracy and run-time.
The LEF (Library Exchange Format) file is the abstract view of cells. It only gives the idea about
PR boundary, pin position and metal layer information of a cell. To get the complete
information about the cell, DEF (Design Exchange Format) file is required.
At this point, you can use the following command to tell the tool:
set_clock_group -asynchronous -group C1 -group C2
2. logical exclusive
If there are two clocks in a circuit, but there is a selection signal to control the two clocks, as
shown below:
Such two clocks should be declared as logical exclusive. The command is as follows:
create_clock -period 10 -name C1 -waveform {0 5} [get_ports C1]
create_clock -period 20 -name C2 -waveform {0 12} [get_ports C2]
set_clock_groups -logically_exclusive -group C1 -group C2
3. physical exclusive
If two clocks are defined on the same port, it is impossible for the two clocks to exist at the
same time at the physical level. At this time, they need to be declared as physical exclusive.
For example, in the following circuit, since C1 and C2 are interactive between F3 and F4, and
between F1 and F2, it can only be C1-C1 or C2-C2, and C1-C2 or C2-C1 cannot appear.
At this time, you need to create two generated clocks at the output of MUX, and then declare
them as physical exclusive
Question:
In the second figure, if you declare C1 C2 as physical exclusive, what will happen?
Although both logical exclusive and physical exclusive can ensure that there is no timing check
between C1 and C2,
But in the case of logical exclusive, the tool will calculate the crosstalk between C1 and C2, and
in the case of physical exclusive, it will not calculate the crosstalk
In the second figure, C1 and C2 have their own separate traces. There may be crosstalk
between them, so they cannot be declared as physical exclusive.
Finally, attach an explanation of the difference between logical exclusive and physical exclusive
in a textbook:
PVT
RC corners
In below 90nm or in deep submircron nodes:
The contribution of interconnect delay in a timing path become significant and Coupling
Cap component (Cc) in net delay can significantly alter slack values at an endpoint of a timing
path.
So, RC corners have to be split up as per the contribution of each component Ground
Capacitance (Cg) and Coupling capacitance (Cc).
So on top of the 2 conventional RC corners Cmax and Cmin, foundry came up with 2 more RC
corners.
5 types of RC corners:
Cbest
Cworst
RCworst
RCbest
Typical
Based on experience, it was found that C-based extraction provides worst and best case over
RC for internal timing paths because Capacitance dominates short wire. However, for large
design, inter-block timing paths were often worst with RC worst parasitic since R dominates
for long wires.
Clock Tree Exceptions
• Non- Stop Pin
• Exclude Pin
• Float Pin
• Stop Pin
• Don’t Touch Subtree
• Don’t Buffer Nets
• Don’t Size Cells
Non- Stop Pin:
• Nonstop pins trace through the endpoints that are normally considered as endpoints of the
clock tree.
• Example :
• The clock pin of sequential cells driving generated clock are implicit non-stop pins.
• Clock pin of ICG cells.
Ignore pins:
• These are also clock endpoints that are excluded from clock tree timing calculations and
optimizations. The tool uses ignore pins only in calculation and optimizations for design
rule constraints. During CTS the tool isolate ignore pins from the clock tree by inserting a
guide buffer before the pin.
• Beyond the ignore pins the tool never performs skew or insertion delay optimization but
it does perform design rule fixing.
• Ignore pins are:
• Source pins of clock trees in the fanout of another clock
• Non clock inputs pins of sequential cells
• Output ports
******************************************************************************
A netlist consisting of 500k gates and I have to estimate die area and floorplanning. How do I
go about it?
There are 2 methods to estimate die area:
Method 1:
Each cell has got its area according to a specific library. Go through all your cells and multiply
each cell in its corresponding area from your vendor’s library. Then you can take some density
factor – usually for a standard design you should have around 80% density after placement. So
from this data you can estimate your required die area.
Method 2:
One more way of doing it is, Load the design in the implementation tool, try to change the
floorplan ( x & y coordinates ) in a such a way that the Starting utilization will be around 50% -
to- 60%. Again, it depends on the netlist quality & netlist completion status (like Netlist is 75%,
80% & 90% completed).
Core utilization percentage indicates the amount of core area used for cell placement. The
number is calculated as a ratio of the total cell area (for hard macros and standard cells or soft
macro cells) to the core area. A core utilization of 0.8, for example, means that 80% of the core
area is used for cell placement and 20 percent is available for routing.
When core utilization area increased to 90%, macros got placed outside core area so does it
mean that increase in core utilization area decreases width and height?
If you go on with 90% then there may be a problem of congestion and routing problem. It
means that you can’t do routing within this area. Sometimes you can fit within 90% utilization
but while go on for timing optimization like upsize and adding buffers will lead to increase in
size. So in this case you can’t do anything so we need to come back to floorplan again. So to be
on safer side we are fixing to 70 to 80% utilization.
Why do we remove all placed standard cells, and then write out floorplan in DEF format.
What’s use of DEF file?
DEF deals only with floorplan size. So to get the abstract of the floorplan, we are doing like this.
Saving and loading this file we can get this abstract again. We don’t need to redo floorplan.
Can area recovery be done by downsizing cells at path with positive slack?
Yes, Area recovery can be done by downsizing cells at path with positive slack. Also deleting
unwanted buffers will also help in area recovery
We can manipulate IR drop by changing number of power straps. I increased power straps
which reduced IR drop, but how many power straps can I keep adding to reduce IR drop? How
to calculate number of straps required. What problems can arise with increase in number of
straps?
We can use tools to calculate IR drop (ex:- Voltagestrom, Redhawk) if drop is high. Based on
that we can add straps. But if you do projects repeatedly you will come to know that this much
straps is enough. In this case you will not need tools. It’s having calculation but it’s not accurate
it’s an approximate one. Number of straps will create problem in routing also it affects area. So
results will be in routing congestion. To number of power straps required for a design click
here.
aprPGConnect, is used for logical connection of all VDD, VSS nets of all modules. so how do we
connect all VDD, VSS to global VDD /VSS nets before placement?
The aprPGConnect, is used for logical connection of all VDD, VSS nets of all modules. For
physical connection you can use the axgCreateStandardcellRails command to create the
standard cell rails and through them connect to the rings or the straps depending upon power
delivery design.
A design has memory and analog IP. How to arrange power and ground lines in floor-plan. Is
it separate digital and analog power lines? It is important to design power-ground plan on
ASIC?
Basically you have to make sure to keep analog and digital rails isolated from one another. All
hard macro and memory blocks need to have a vdd/vss pair ring around them. Memories are
always on the side or corners of your chip. Put a pair of vdd/vss ring around your design. This is
usually called core power ring.
Create a pair of vertical vdd/vss every 100 micron. This is called the power straps and on either
side taps into the core power ring. put a pair of vdd/vss around every analog block and strap
these analog rings (using a pair of vdd/vss) and run them to your package vdd/vss rings.
Keep in mind that in every place a digital vdd/vss crosses analog vdd/vss straps, then you need
to cut the digital vdd/vss on either side of the analog crossing to isolate the analog from digital
noise. you need to dedicate pins on your chip for analog power and ground. Now we come to
the most time consuming part of this, HOW THICK SHOULD YOU MAKE all these rings/straps.
The answer is this is technology dependent. Look into the packaging documentations, they
usually have guidelines for how to calculate the thickness of you power rings. Some even have
applications that calculate all this for you and makes the cuts for analog/digital crossings.
In my design, core PG ring and strips were implemented by M6/M7,and strips in vertical
orientation is M6.I use default method to connect M6 strips to stand cell connection,M1,the
vias from V12,V23,.. to V56 will block the routing of M2,..M6, it will increase congestion to
some extent. I want to know is there any good method to avoid congestion when add strips or
connect strips to standard cell connection?
In Synopsys ICC, there was a command controlling the standard cell utilization under power
straps. Using this you can have some sort of channels passing through stacked vias, between
standard cells. This limits the detours done because of these stacked vias and allows more
uniform cell placement resulting and a reduced congestion. in Soc Encounter, The command
setPrerouteAsObs can be used to control standard cell density under power strips. But the
100% via connection from M1 to M6 under wide strip metal still block other nets’ routing.
How to control via generation when do special route for standard cell, such as how to reserve
gaps between vias for other net routing?
To remove those stack vias you need to:
▪ Either returns back to floorplan step, where power straps and power/ground preroute vias are
dropped. Normally vias are dropped regularly to reduce power & ground resistance; therefore
maximum numbers of vias are dropped over power/ground nets. Therefore you need to check
your floorplan scripts. They should be after horizontal & vertical power strap generation at M6
& M7.
▪ If the vias to be removed are at specific regions you can delete them at any step, but before
global routing of course to allow global route be aware of resources/obstructions. In this case
as you’ll increase the power/ground resistance you should confirm this methods validity by IR
Drop analysis.
▪ If IR Drop is an issue, another option would be placing standard cell placement percentage
blockages (Magma has percentage blockages which is good at reducing blockages). This is the
safest method as you don’t need to delete those stacked M1-to-M5 vias anymore. However as
you’ll need to reduce placement density this will cost you some unused area.
Normally routing blockages should be placed before global routing to force global router to
respect these blockages. Most Place and Route tools runs the first global routing at placement
step and then updates it incrementally, therefore add blockages before placement. Otherwise if
you want to use it after any global/detail routing is done, you may need to update global
routing first (may be incrementally).
How to find the reason for congestion in particular region? How to reduce congestion?
First analyze placed congested database, and find out the hot spot which is highly congested.
What actually happens in power planning? What is the main aim of power planning?
The main aim of power planning is to ensure all the cells in the design are able to get sufficient
power for proper functioning of the design. During the power planning the power rings and
power straps are created to distribute power equally across the design.
Power straps are provided for the regulated power supply throughout the block or chip.
Number of straps depends on the voltage and the current of your design. You must design the
power grid that will provide equal power from all sides of the block. You can also use the early
rail analysis method determine the IR drop in your block and lay the sufficient power stripes.
What is the minimum space between two macros? How we can find minimum space of
macros?
The distance between macro = (no. of pins of macros*pitch*2)/no. of available routing layers
For example, the design has 2 macros having the pins of 50 each macro and pitch = 0.50 and
available metals are 8. Then space between macros = ((50+50)*0.5*2)/8 = 12.5
What are the steps needed to be taken care while doing Floorplaning?
▪ Die Size Estimation
▪ Pin/pad location
▪ Hard macro placement
▪ Placement and routing blockage
▪ Location and area of the soft macros and its pin locations
▪ Number of power pads and its location.
Note: For block level Die size and Pin placement comes from TOP
▪ Die/Block Area
▪ I/Os Placed
▪ Macros placed
▪ Power Grid Design
▪ Power Pre-routing
▪ Standard cell placement areas
****************************************************************
Aspect Ratio(Ar) = Horizontal routing resource (H)/Vertical routing resource (V)
Core Utilization (Cu): It indicates the amount of core area used for cell placement. The number
is calculated as a ratio of the total cell area (for hard macros and standard cells or soft macro
cells) to the core area. A core utilization of 0.8, for example, means that 80% of the core area is
used for cell placement and 20 percent is available for routing.
Core Utilization(Cu) = Standard Cell area/(Row area + Channel area)
Row to Core Ratio (Rcr): It indicates the amount of channel space to provide for routing
between the cell rows. The smaller the number, the more space is left for routing. A value of
1.0 leaves no routing channel space.
Rcr = Row area / Core area (H x V)
Total utilization T(F) of floorplan F is derived using the following equation:
T(F) = (A(m) + A(p) + A(s) ) / A
Design rule checks(DRC) is the process of checking that the geometry in the GDS file
follows the rules given by the foundry.
Logical equivalence checks(LVC) is the process of equivalence check between pre and
post design layout.
Sanity checks are an important step for physical design engineers to make sure that the inputs
received for physical design are correct and consistent. Any issues in the input files may cause
problems in the later stages. So it is important to perform the sanity checks in the initial stage
that is when the design is loaded in PnR tool and before the start of the floorplan.
Here is a list of checks which must be performed before the floorplan of design.
Figure-1: Sanity checks before floorplan
Library Check:
In library check, basically, we validate the libraries before starting the physical design by
checking the consistency between the physical and logical library. It also checks the quality of
both libraries and reports the error if any. The cells used in the design must be present in the
logical as well as in the physical library.
Innovus commands:
checkDesign -physicalLibrary : This command will check the physical library and report that all
the cells used in design have their LEF view or not.
checkDesign -timigLibrary : This command will check the timing library and report that all the
cells used in design have defined in timing library or not.
checkDesign -all : This command will check the missing or inconsistent library and design data.
ICC command:
check_library : Performs consistency checks between the logical and physical library, across the
logical library and within the physical library.
Netlist Check:
Netlist must be checked for consistency. This check analyzes the currently loaded netlist and
reports the inconsistency if any. Netlist check mainly checks:
Innovus command:
checkDesign -netlist
ICC command:
check_design
SDC Check:
SDC file must be checked before start the design. Some of the common issues in SDC file are as
follow.
1. Unconstrained path
2. Clock is reaching to all synchronous elements
3. Multiclock driven registers
4. Unconstrained endpoint
5. Input/output delay missing for a port
6. Slew or load constraint missing for a port
7. Missing clock definition
Innovus command:
check_timing
ICC command:
check_timing
******************************************************************************
1. check_library
2. check_timing
3. report_constraint
4. report_timing
5. report_qor
6. check_design
7. check_legality
check_library:
check_library validates the libraries i.e., it performs consistency checks between logical and
physical libraries, across logical libraries, and within physical libraries. This command checks
library qualities in three main areas: Physical library quality Logic versus physical library
consistency Logic versus logic library consistency
check_timing
PNR tool wont optimize the paths which are not constrained. So we have to check any
unconstrained paths are exist in the design. check_timing command reports unconstrained
paths. If there are any unconstrained paths in the design, run the report_timing_requirements
command to verify that the unconstrained paths are false paths.
Unconstrained_endpoints. _________________
report_constraints
It reports to check the following parameters. Worst Negative Slack (WNS) Total Negative Slack
(TNS) Design Rule Constraint Violations
report_timing
report_timing displays timing information about a design. The report_timing command
provides a report of timing information for the current design. By default, the report_timing
command reports the single worst setup path in each clock group.
report_qor
report_qor displays QoR information and statistics for the current design. This command
reports timing-path group and cell count details, along with current design statistics such as
combinational, noncombinational, and total area. The command also reports static power,
design rule violations, and compile-time details.
check_design
check_design checks the current design for consistency. The check_design command checks
the internal representation of the current design for consistency, and issues error and warning
messages as appropriate.
a. inputs/Outputs 300
g. Cells 152
k. Nets 1226
Error messages indicate design problems of such severity that the compile command does not
accept the design Warning messages are informational and do not necessarily indicate design
problems. However, these messages should be investigated.
Warnings
Potential problems detected by this command include Unloaded input ports or undriven output
ports Nets without loads or drivers or with multiple drivers
Cells or designs without inputs or outputs
check_legality
reports overlap and cells placement related violation like orientation, overlaps etc.
If a simple question comes before you that "What will impact on the delay of a standard
cell if temperature varies? " Are you going to answer straightforward the delay of the cell will
increase with temperature OR The delay of the cell will decrease with temperature? If you are
going with either of the above answers, Then you need to spare some moment in this article
and understand the concept of Temperature Inversion.
In general, as temperature increases, the delay of standard cells increases because of mobility
degradation at higher temperatures. But in lower technology nodes the impact of temperature
on the delay of the cell is inverse. In lower nodes, the delay of the cell decreases with an
increase in temperature. So in the lower technology node, the effect of temperature on the
delay of the cell is inverted and this effect is called the temperature inversion. The main reason
behind this inversion is in the lower technology node, the effect of the threshold voltage is
dominating over the mobility.
So an appropriate answer to the above question could be we should answer this question with
respect to the technology node. One can say that at the lower technology nodes as
temperature increases the delay of cell decreases. Here lower technology node means the
technology node below 65nm. Why part of this question is important, but we should wait if it is
asked further. In the next part, we will learn why temperature inversion occurs.
The following section will explain in detail of factors affecting the delay of cells and their
variation.
The delay of a cell is simply the time required to charge/discharge the load capacitance. The
charging and discharging time of the load capacitor depends on the drain current. If the drain
current is high, it will take a lesser time to charge/discharge the load capacitor and so delay will
be lesser and vice-versa. Now let's see the dependency of drain current Id.
The drain current Id is directly proportional to the mobility of charge carriers. So as the
temperature increases, the lattice scattering increases, and ultimately the mobility of the
charge carrier decreases which leads to the decrease in drain current Id and so it increases in
the delay of the cell.
Now let's come to the second important factor, the term (Vgs - Vt) in the above equation is
called overdrive voltage. There is a variation in threshold voltage with temperature as per the
following equation,
As temperature increases, the threshold voltage decrease, and overdrive voltage increases. This
overdrive voltage is more dominating in the lower technology node because in the lower
technology node the Vgs and Vt are more closers and so a slight change in Vt will have more
impact on overdrive voltage. But in a higher technology node since Vgs is much larger than Vt
so a slight change in Vt not causes much change in overdrive voltage. Again the Id is
proportional to the squire of overdrive voltage. So changes in overdrive voltage are further
amplified and it is dominating over the mobility in lower technology node.
So There are two major factors that drive the variation in cell delay, mobility and overdrive
voltage. In lower technology nodes overdrive voltage is more dominating which causes the
temperature inversion effect.