Documentation
Documentation
Documentation
Contents:
1- RTL editing ………………………………………………………………………………………………………………..........
2- RTL simulation …………………………………………………………………………………………………………………..
3- Logic synthesis …………………………………………………………………………………………………………………..
4- Formality checking …………………………………………………………………………………………………………….
5- Placement and route ………………………………………………………………………………………………………...
- Data setup …………………………………………………………………………………………………………………..
- Floorplanning ………………………………………………………………………………………………………………
- Power network ……………………………………………………………………………………………………………
- Placement …………………………………………………………………………………………………………………..
- Clock tree synthesis …………………………………………………………………………………………………….
- Routing ……………………………………………………………………………………………………………………….
- STD filling …………………………………………………………………………………………………………………...
- Metal filling …………………………………………………………………………………………………………………
- Writing output data …………………………………………………………………………………………………….
6- Physical verification …………………………………………………………………………………………………………..
- DRC checking ………………………………………………………………………………………………………………
- LVS checking ……………………………………………………………………………………………………………….
7- Formality checking ….…………………………………………………………………………………………………………
8- Static timing analysis …………………………………………………………………………………………………………
9- Problems and solutions …………………………………………………………………………………………………….
Placement and Route
Data setup
First, we have a problem in memory macro cells that are generated from TSMC memory compiler.
We tried to design a memory cell with TSMC memory compiler that is 1K * 8 bit memory block with
disabling M5 from power mesh.
After generating all files of memory cell, we found that the metal stack of this cell in gds file (using gds
viewer “Klayout”) is from M1 to M4 (as expected), as M4 is power straps of memory macro cell.
But we found in generated .Lef file, blockage on M5 for all macro area that immunes router from
connecting any shapes (nets or vias) on M4, that makes power and ground pins are not connecting with
chip power network.
We tried to modify in .Lef file (hack generated .Lef file from memory compiler) and remove this blockage
on M5 manually.
After doing this we found that, power and ground pins on macros are connected to whole design power
network and everything is ok without DRC violations.
Library manager generates ndm library format of standard cells, macro cells, IO pads, and physical only
cells depending on timing model in .db file and frame view in .lef file.
We use generate ndm from library manager to create our design libraries.
- Reading different RC models:
We have different models of RC parasitics of tluplus files that are typical, worst C, best C, worst RC, and
best RC.
Optimization tool uses different scenarios to optimize the design to meet all scenarios without any
timing violations.
Figure-2 shows dimensions of both height and width for core and die dimensions also offset between
die and core areas (all dimensions in um)
The following table shows important notes when choosing dimensions of layout:
Dimension note
Core width = 1350.4 Must be multiple of 0.2 (cell site)
Core height = 1275.4 Must be multiple of 1.4 (site row)
When you don’t respect the above dimension rules, you will get a lot of DRC violations that are not
solvable manually.
The following table shows DRC violations and their reasons when you don’t respect dimension rules:
Dimension reason
NW, OD spacing
NW enclosure Because of misalignment of top pads.
P+ active extension Because of empty areas of standard cells.
Overlap of PP and OD
Important note that you must take into account is NW and OD layers must be continuous to avoid the
above problems plus another problems like LUP.
- Macro placement:
We place macros in the lower area of chip, after more tries this gets good result according to congestion
analysis.
We also flip macros to 180 degree, as macro pins is on bottom site of block that also get good results, as
shown in figure-3.
- IO pad placement:
According to IO pads there are IO pads plus special power pads, the following table shows IO pads plus
special pads we use in our design.
Also good choosing of core to die offset, will help to get more good results.
These methods are done with trying and debugging to get good results, figure-4 shows IO pad
placement.
So, corner pads and filler pads must be added to guarantee continuity of all layers in pads.
PFILLxx and PCORNER pads are used as filling and corner pads.
Here, we tell the tool to not care about hierarchy in placing standard cells, to use ultra-effort congestion
analysis, and to use high effort timing driven placement.
Powerplanning
Make sure that you make placement legalization to prevent standard cells overlapping.
Problem Solution
- Using higher metal layers to build straps.
- Good distribution of metal straps.
High IR drop (from 55mv to 33mv)
- Using inner metal layers to break VIAs tower.
- Placing power pads in the middle order of each side.
Good distribution of metal straps helps us to reduce congestion
High routing congestion
before placement stage.
Some metal trunks are not Using M7 as horizontal ring instead of M9.
connected to power pad
Figure-6 shows metal trunks problem as these opens prevent short between VDD and VSS with vertical
strap, and figure-7 shows metal trunks after solving this problem.
Figure-6 Figure-7
Placement
Good placement deals with good congestion analysis and good timing of paths.
As we show the maximum overflow is from 7 to 16 (this is actually a big value that will make DRC errors
in routing stage like shorts).
After debugging, we found that the most congested cell is AOI cell, as it has large number of input pins
as shown in figure-9.
- Performing placement:
We perform placement by using place_opt command in synopsis ICC tool.
Only 7 nets are overflow from 4 to 3, and 133 nets are from 2 to 1.
Also using higher metal layer to build clock roots helps us to get good results.
Clock buffer guarantee that rising transition and falling transition are equal.
1. build_clock
2. route_clock
3. final_opto
We control the tool to route nets with remaining metal layers (from M2 to M7), and reach to cell pins by
metal contacts to M1.
- Performing routing:
We use route_opt command in synopsis ICC tool.
But here there is a problem, DCAP cells have metal shapes in different metal layers especially in metal1,
so we will get DRC violations with routed wires.
After adding filler cells, we remove STD cells with violations using remove_stdcell_fillers_with_violation
command in ICC tool.
After that we add normal filler cells that is have empty metal shapes inside these cells.
And when we tell layout tool (IC compiler in our case), take this list of filler cells to be used during STD
filling, ICC start filling with smallest filler cell.
Using only smallest filler cells which have no OD shapes will make a minimum OD density violations.
When you follow the above technique of STD filling, you will get your design free of PO minimum
density violations, OD minimum density violations, and LUP violations.
Metal filling
Figure-11
After making metal filling using pattern base technique, we will get our design free of any minimum
density violations on metal layers, OD layer, PO layer, and dummy layers.
DRC checking
- Pre-DRC checking:
1. Generate your layout GDS file from your layout tool.
2. For pattern based metal fill, use ICV or Calibre to generate separately filling files and
then merge all files using Calibre.
3. Active MIXED_SCHEME to define different datatypes.
4. Check your results using ICV or Calibre.
- Pre-LVS settings:
1. Make sure that power and ground nets are physically connected not only logically.
2. Generate netlist with excluding physical only cells, nothing else.
3. Generate GDS file only with option “output_pin all”, there is no need to generate all text of all
nets and shapes, use default settings.
4. Modify layer map file for correctly map text on text layers not on metal layers.
5. Generate GDS after adding filler cells to make sure that N-well and P-substrate are connected to
VDD and VSS using TAP cells.