Sei sulla pagina 1di 4

###### This document is to give a idea about the PD Flow #####

DATA PREPARATION:
Make a setup file which contains all the files mentioned below:

.vg (generally DFT Inserted netlist)


.sdc (timing constraint file)
.libs
.lefs (tech lef, macro lef and std. cell lefs)
.io (pin assignment file if any)
.cdbs (celtic libraries for cross talk analysis)
Libgens

AUDIT CHECKS

Check the design for the type of cells, IO Pin, Physical info
checkDesign all outDir <path>
Check the design for check timing loops, combo loops
check_timing

Utilization
Memory aspect ratio wrt core aspect ratio
Check for preplace timing
timeDesign prePlace outDir <path>

FLOORPLAN

Define global net connectivity


globalNetConnect VDD -type pgpin -pin VDD* -inst * -module {} -override -verbose
globalNetConnect VSS -type pgpin -pin VSS* -inst * -module {} -override -verbose
Fix Io pin status
Add endCaps (at both the ends of each std. cell row)
addEndCap -postCap <cell_name> -preCap <cell_name>

Place macros
Add soft blockages around macros
Spacing between macros (based on no. of pins, making sure enough space is left
between macros for timing fixes)
Add tapCells
addWellTap -cell <cell_name> -cellInterval 50.00 -checkerBoard -fixedGap startRowNum 1

Add endCaps (along the edges of the macros)


addEndCap -postCap <cell_name> -preCap <cell_name>
Check the placement
checkPlace
Save the design
saveDesign DBS/init.enc

PG PLAN

Draw the PG Stripes


For vertical layer
addStripe -block_ring_top_layer_limit <layer_name> -max_same_layer_jog_length
<num> -padcore_ring_bottom_layer_limit <layer_name> -set_to_set_distance
<num> -ybottom_offset <num> -stacked_via_top_layer <layer_name> padcore_ring_top_layer_limit <layer_name> -spacing <num> -merge_stripes_value
<num> -direction horizontal -layer <layer_name> -block_ring_bottom_layer_limit
<layer_name> -width <num> -nets {VSS VDD } -stacked_via_bottom_layer
<layer_name> -allow_jog_block_ring <num>
For horizontal layer
addStripe -block_ring_top_layer_limit <layer_name> -max_same_layer_jog_length
<num> -padcore_ring_bottom_layer_limit <layer_name> -set_to_set_distance
<num> -stacked_via_top_layer <layer_name> -padcore_ring_top_layer_limit
<layer_name> -spacing <num> -xleft_offset <num> -allow_jog_padcore_ring <num>
-xright_offset <num> -layer <layer_name> -block_ring_bottom_layer_limit
<layer_name> -width <num> -nets {VSS VDD } -stacked_via_bottom_layer
<layer_name> -allow_jog_block_ring <num>
add vias
editPowerVia -skip_via_on_wire_shape {Ring Followpin Corewire Blockwire Iowire
Padring Fillwire Noshape} -bottom_layer <layer_name> -add_vias 1 -top_layer
<layer_name>
SRoute
sroute -connect { corePin floatingStripe} -layerChangeRange { lower_layer_name
top_layer_name } -blockPinTarget { nearestTarget } -deleteExistingRoutes checkAlignedSecondaryPin 1 -allowJogging 0 -crossoverViaBottomLayer
<lower_layer_name> -allowLayerChange 0 -targetViaTopLayer <top_layer_name> crossoverViaTopLayer <top_layer_name> -targetViaBottomLayer
<lower_layer_name> -viaConnectToShape { stripe } -corePinMaxViaWidth <num> corePinLayer 2 -targetPenetration { stripe <num> }
Check for opens and shorts
Save the design
saveDesign DBS/init.enc

PLACE

Attach the IO Buffers


attachIOBuffer -in <buffer_name> -out <buffer_name> -port -markFixed excludeClockNet -baseName MPIN_BUF -excNetFile <file_name>
Set the attributes for placement
To specify the tool to perform placement based on timing driven, congestion driven,
module aware placement, so on.
Place the std. Cells
placeDesign
Check the placement
checkPlace
Tool generally performs trial route automatically. Check for congestion (make sure there
are no local hotspots and the congestion value is in the specified limit)
Save the design
saveDesign DBS/place.enc

PRE CTS OPT

This is the 1st optimization in the design


The optimization can be done by giving priority to the specific path groups, we can use
the creatPathGroup option to create the path groups.
optDesign preCTS outDir <path> -numPaths <no .of paths to report>
Save the design
saveDesign DBS/prects.enc

CTS
Before creating the clock tree spec, we must enable the all modes (func,
scan,mbist,bscan) in which the design is being run

Generate the clock tree spec


createClockTreeSpec file <file_name> -buffer_list <list of buffer to be used>
Set the skew value, insertion delay, leaf and non leaf transition, list of inverters and
buffers to be used.
Clock group, leaf pins, exclude pins,
Specify the NDR (non default rules)
Macro models
Analyze the clock tree and check the coverage of the clock tree network
ckSynthesis check -forceReconvergent

Build the clock


ckSynthesis -forceReconvergent
Save the design
saveDesign DBS/cts.enc

POST CTS OPT


In postCTS stage, we can perform the optimization for both setup and hold.

Optimize the design by propagating the clocks


To propagate the clocks use set_propagated_clocks [all_clocks]
optDesign postCTS outDir <path> -numPaths <num>
to optimize for hold
optDesign postCTS hold outDir <path> -numPaths <num>

Save the design


saveDesign DBS/postcts.enc

DETAIL ROUTE

Perform the detail route


Make sure the attributes for SI aware route is set
globalDetailRoute
Save the design
saveDesign DBS/route.enc

POSTROUTE OPT

Optimize the design if any timing violations are there


optDesign postRoute
Save the design
saveDesign DBS/postroute.enc

PDV

Check the design for shorts, opens


Perform LVS, LPC, DRC, Antenna Checks

Potrebbero piacerti anche