Académique Documents
Professionnel Documents
Culture Documents
seongchew.lim@icdsgroup.com
ABSTRACT
Using Synopsys Astro place n route tool for ASIC physical design flow is presented in this
paper. The paper will introduce the Astro methodology flow from synthesized netlist to gds. The
paper will cover Design database setup, floorplan, power pre-route, placement, clock tree
synthesis, and route phases. This paper will also cover some of the physical design sharing like
power pre-route pattern and scripts that being used for physical design and also some
introductions on the clock timing. The paper will not cover topics like IR drop, Power Leakage
and Cross Talk issues that are critical to the UDSM design.
1.0 Introduction
While there are various commercial Place n Route tools available in the market, each tool might
be having different tool flow varies from the algorism they are using. Physical designer is
eagerly hoped for One-stop design platform in order to save the time and effort during design
cycle. Synopsys IC Compiler is one of the choices that can provide the one-stop solution. By
using IC Compiler, Astro will be able to workout together with Physical Compiler to meet
timing for high complexity of modern ASIC design. In this paper, I will purely discuss the Astro
Methodology backend flow.
The flow used in this paper has made several ASIC designs success. However, the flow may
vary according to various complexities of the design and analysis required on the ASIC. To
identify the Place n Route constraints and issues upfront, one can run additional ‘prototyping
flow’ that give fast result analysis. For some complexity design that difficult to meet timing, one
can run more optimization cycles to meet timing. Synopsys RCMD Flow is also a good reference
on Astro script-based methodology flow for the user to refer.
Some physical design sharing and useful scripts will be introduced here. The power structure for
the Hard Macros that used in SoC could affect the Top Level power planning. Example: How the
power ports in Hard Macros are being connected in Top level. (Ring, horizontal stripes or
vertical stripes) Also, in solvnet, you might be able to find some useful scripts that can help
improve design efficiency like ‘schAddTextToPads’ scheme code & perl script.
The Astro methodology flow will cover the topics below (as shown in figure 1):
a) Design Input Preparation: IO information to create TDF file, Estimate Die Size &
Power required for the design.
b) Design Database Setup: Setup the Design Library (including reference libraries)
and read-in netlist & design constraints, expand & bind netlist, reserve
hierarchical information and timing setup.
c) Floor planning: Create floor plan based on result from die size estimation, read in
the tdf file that created accordingly with the IO information, and also Macros
placement.
d) Power Pre-route: For those designs with high consuming of time on power pre-
route, it is recommended to put the power pre-route process after clock tree
synthesis (CTS). That is because the macro placement (floorplan) may change
frequently before that, in order to get better timing result. However, if the
floorplan has been finalized, the physical designer can start doing power pre-route
here.
e) Placement: this include Pre-place optimization, In-place optimization, and Post-
place optimization phase1.
f) Clock Tree Synthesis: This will include Clock Tree Synthesis & Optimization; it
will also cover Post-place optimization phase 2 (Post-CTS optimization).
g) Route: This includes clock route, signals route and antenna.
h) Post-route CTO and optimization: workout together with Star-RCXT to ensure
the timing result is correlating with Primetime.
i) Chip finishing: Fill Notch & Gap, Filler Cells, Metal Slots and Pad Text.
Floorplanning
Define Die Size
IO placement
Macro placement
Power planning or Pre-route
Fill Gap/Notch
Star-RCXT Extraction
b) Getting Process Data files – make sure the technology file, TLU+ model
(Table Look Up), Star-RCXT nxtgrd and mapping file are corrects.
c) Getting Place n Route Design Input Data – Gate Level Netlist, Design
Constraint File, macros design models (such as lib / db, lef, gds and Milkyway
DB), and also the standard/IO cells design models. It will be good to have LM
view (Timing view in Milkyway database that created using .lib or .db format)
in order to have better correlation with Primetime.
2.2) Place n Route Process for ASIC Design (This will include Design
Planning, Design Implementation, Route & Chip Finishing, Astro top
level physical verifications and design output).
ii. Floor-planning the physical design by define the die size, power
scheme, Pads/Pins locations and Macros placement. For die size, you
can refer to the result from die size estimation. The die size estimation
basically will calculate in both Core Limited and Pad Limited and see
which one the design is belongs to. For Power planning, you may need
to refer to power analysis tool result (E.g. Power compiler), and decide
the Ring width, Block ring width, and also Stripes number, width and
spacing in between. Once you have those numbers, you can do “Setup
floorplan” in Astro. For Pads/Pins locations definition, if you don’t
have tdf file, you can dump out the preliminary ‘tdf’ file from Astro
and then edit the ‘tdf’ file with desired location and sequence, and read
back into Astro database. The ‘tdf’ file consists of the boundary and
iii. After the Hard-macros placed, if the power pre-route is very time
consuming, the physical designer have the optional to perform this step
after clock tree synthesis phase. This is because the floor-plan may
have major changes if the timing margin given is very less and cause
difficulty to achieve timing target. If this is the case, we would not have
to spend extra time to redo the power pre-route. However, the physical
designer will need to do power planning upfront to reserve enough
room for power pre-route later.
If you need to do power analysis like Astro Rail, you will need to do
power pre-route earlier. Route the power rings, stripes, and follow-pins.
The width of the power bus must be big enough to give sufficient
power to the design. The power planning must be also aware of the IR
Drop and Electro-migration issues in the design.
iv. Perform In-Placement Optimization, one can trade off between routing
& timing ratio in this process. You have the option of weighting cell
placement to optimize various factors of your design (Congestion,
Timing, Power, IR Drop, and Heat). In-Placement optimization
performs cell sizing, cell moving, cell bypassing, buffer/inverter
insertion, gate duplication, and net splitting optimization techniques.
v. Perform Post Placement Optimization, to fix the setup time and max
violations. (Hold time will be fixed after Clock Tree Synthesis is
completed and propagated clock being set)
During this step you achieve the most significant change to the placed
design (in terms of the number of inserted buffers and inverters, and
moved cells). You employ topology-based optimization methodology,
high fan-out net optimization algorithms, and different cell moving
techniques—as well as fast cell sizing—to achieve fast layout
optimization results
vii. Perform Clock Tree Optimization (CTO) for improve timing and skew.
Clock tree optimization is an important procedure in Astro clock tree
synthesis. It improves both clock skew and clock insertion delay by
performing buffer sizing, buffer relocation, gate sizing, gate relocation,
level adjustment, reconfiguration, delay insertion, dummy load
insertion, and balancing inter-clock delays. Set clocks propagated and
mark clock tree after CTS done.
xi. Perform power pre-route on the design if you have not done so.
While the route flow has completed, the designer can extract the RC by using
Star-RCXT, and create Parasitic View for the Milkyway Database. By doing
this, Astro timing engine shall be able to calculate the timing more accurately
and give proper fix later. If there are still timing violations after the route
flow, you may try to do post route optimizations to fix them. In later released
of the binary versions, the post route optimizations (Post Route Optimization
and Advance Route Optimization) have been combined into one called
‘Detail Route Placement / Route Optimization’ (astPostRouteOpt “DR”).
Once the timings are met, the designer can do ‘Search & Repair’ with
Antenna fix option selected. If some antenna violations cannot be fixed, the
designer can add diode on the violation nets. Finally the designer can finish
all the tasks remaining like Add Filler Cells (Pad and Standard Cells), Metal
Slotting, Add Dummy Metals, and fill Notch & Gap.
2.3) Design ECO (Engineering Change Order) Flow – The user can use
either ECO-by-Change-File or ECO-by-Net-Compare to do ECO for
your design. For the detail ECO flow in Astro, please refer to Astro User
guides in SOLD.
The ECO should apply to the following:
a) After Design Verification, if there are design / timing issues, the netlist
will be changed in order to solve the issues, the Place n Route Designer
shall perform ECO for these changes.
Some of the memory compiler may design the power stripes in very high
congested structure (as shown in figure 2), meaning that the gap between
power stripes (or power ports) are pretty small, that may cause routing issues
when the Place n Route tools trying to connect all the memory power ports to
the Top level. Example like there may not have enough rooms for the
memory signals to route out; also, the top level routing may have problems
due to high-congested power connections. By solving these, the user can
choose to drop some of the extra power connections that connected from top
level to the power stripe ports in the memory cells.
Figure 2
b) Another script to be introduced here is Scheme script to add net name text to
I/O pads using combined scripts from scheme code
“scmAddTextToPads.scm” and perl script “scmAddTextToPads.pl” that
can be found in SolvNet. (Attached into this paper as well)
Usage:
scmAddTextToPads "portName" "layerName" "textHeight" edgeOffset
portName = name of the port inside of the I/O pad to which the top
level net is assigned in the netlist.
layerName = name of layer text is to be added on
textHeight = height of text to be added, in microns
edgeOffset = Desired offset from the outside edge of the I/O pad.
(positive value puts it closer to the center, negative value
puts it outside the I/O pad boundary)
Example:
scmAddTextToPads "PAD" "METAL6" "10" 40
Notes:
1) This routine assumes that the I/O pad default orientation is vertical
with the bond opening connection at the bottom. If yours is different
than that, you need to modify the scheme. Look for the section where
the variable transcode is being tested. Change the value for the transcode
test to correspond to the correct pad orientation.
2) The scheme script assumes the perl script is in the local directory and
named scmAddTextToPads.pl. In the scheme script it is called with the line
(system "perl scmAddTextToPads.pl").
If the perl is not in the local directory, edit this line in the scheme to give it
the correct path to the perl script.
; transcode 0 = no rotation
; transcode 2 = rotate 90 ccw
; transcode 4 = rotate 180
; transcode 6 = rotate 270 ccw
(if ( = transcode 0)
; Vertical pad with bond opening at the bottom
(begin
(define width (- x2 x1))
(define offset (/ width 2))
(define xl (+ offset x1))
(define yl (+ edgeOffset y1))
(define txtorient "rotate 90")
(define txtjustify "left-bottom")
)
)
(if ( = transcode 2)
; Horizontal pad with bond opening at right
(begin
(define width (- y2 y1))
(define offset (/ width 2))
(define xl (- x2 edgeOffset))
(define yl (+ offset y1))
(define txtorient "rotate 0")
(define txtjustify "right-bottom")
)
)
(if ( = transcode 4)
; Vertical pad with bond openeing at top
(begin
(define width (- x2 x1))
(define offset (/ width 2))
(define xl (+ offset x1))
(define yl (- y2 edgeOffset))
(define txtorient "rotate 90")
(define txtjustify "right-bottom")
)
)
(display "texting net ") (display "\"") (display net) (display "\"")
(display " of pad instance ") (display "\"") (display instanceName) (display "\"")
(newline)
(geAddText)
(setFormField "Add Text" "Layer" layernum)
(setFormField "Add Text" "Height" txtheight)
(setFormField "Add Text" "Text" net)
(setFormField "Add Text" "Transform" txtorient)
(setFormField "Add Text" "Justify" txtjustify)
#----------------scmAddTextToPads.pl-----------------------
open (fhandle, "< pads.dump") || die ("cant open the file \n");
open (fhandle1, "> pads.out") || die ("cant open the file \n");
while (<fhandle>) {
if ($_ =~ /\"/) {
open (fhandle, "< pads.out") || die ("cant open the file \n");
open (fhandle1, "> pads.txt") || die ("cant open the file \n");
while (<fhandle>) {
if ($_ =~ /\"/) {
#------------------end of scmAddTextToPads.pl------------------
a) What is setup time and hold time? How are they affecting the timing?
Setup time is the minimum time that a data input pin of a sequential device
must be stable before the clock transition.
Hold time is minimum time that a data input pin of a sequential device must
be stable after the clock transition.
From the Equation (1), we can minimize t delay and t skew in order to achieve
target t period that is actually the target of the Clock Tree Synthesis. t set up and
t prop. delay can be minimized by tools for logic synthesis and also depends on
the manufacturing process in use.
The clock skew can affect the timing as shown in the 2 equations below:
Worst case – Setup
Equation 2: Clock skew + Tsetup + Datapath max <= clock period
Tsetup is the setup time of the endpoint
Datapath max is the maximum delay requirement between 2 sequential
elements plus clock-to-out time of the start-point.
In this physical design flow, Synopsys Star-RCXT is being used to extract the RC values from
the Design Cell and Astro will take these values (create PARA view for the design cell) to
calculate the timing path. By doing this, Astro will be able to report the timing more accurately
and have better correlation with Primetime. Creating the Milkyway Parasitic view will also give
advantageous on next post route optimization since Astro will be able to catch up real timing
violations and fix them properly.
5.0 Acknowledgements
6.0 References
[1] “Astro User Guide”, Synopsys, Version W- 2004.12
[2] “SolvNet (https://solvnet.synopsys.com)”, Synopsys
[3] “Astro Recommended Script-based Methodology”, Synopsys