run_invs.tcl 4.67 KB
Newer Older
1
# This script was written and developed by ABKGroup students at UCSD. However, the underlying commands and reports are copyrighted by Cadence. 
sakundu committed
2
# We thank Cadence for granting permission to share our research to help promote and foster the next generation of innovators.
3 4 5
source lib_setup.tcl
source design_setup.tcl

sakundu committed
6
setMultiCpuUsage -localCpu 16
7 8
set util 0.3

9 10 11 12
set handoff_dir  "./syn_handoff"

set netlist ${handoff_dir}/${DESIGN}.v
set sdc ${handoff_dir}/${DESIGN}.sdc 
13
source mmmc_setup.tcl
14

sakundu committed
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
set rptDir summaryReport/ 
set encDir enc/

if {![file exists $rptDir/]} {
    exec mkdir $rptDir/
}

if {![file exists $encDir/]} {
    exec mkdir $encDir/
}

# default settings
set init_pwr_net VDD
set init_gnd_net VSS

# default settings
set init_verilog "$netlist"
set init_design_netlisttype "Verilog"
set init_design_settop 1
34 35
set init_top_cell "$DESIGN"
set init_lef_file "$lefs"
sakundu committed
36 37 38 39 40 41

# MCMM setup
init_design -setup {WC_VIEW} -hold {BC_VIEW}
set_power_analysis_mode -leakage_power_view WC_VIEW -dynamic_power_view WC_VIEW

set_interactive_constraint_modes {CON}
42 43
setAnalysisMode -reset
setAnalysisMode -analysisType onChipVariation -cppr both
sakundu committed
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

clearGlobalNets
globalNetConnect VDD -type pgpin -pin VDD -inst * -override
globalNetConnect VSS -type pgpin -pin VSS -inst * -override
globalNetConnect VDD -type tiehi -inst * -override
globalNetConnect VSS -type tielo -inst * -override


setOptMode -powerEffort low -leakageToDynamicRatio 0.5
setGenerateViaMode -auto true
generateVias

# basic path groups
createBasicPathGroups -expanded

## Generate the floorplan ##
60
if {[info exist ::env(PHY_SYNTH)] && $::env(PHY_SYNTH) == 1} {
61
    defIn ${handoff_dir}/${DESIGN}.def
62 63
    source ../../../../util/gen_pb.tcl
    gen_pb_netlist
64 65
} else {
    defIn $floorplan_def
66
    addHaloToBlock -allMacro $HALO_WIDTH $HALO_WIDTH $HALO_WIDTH $HALO_WIDTH
67 68 69
    place_design -concurrent_macros
    refine_macro_place
}
70

71 72 73 74 75 76
### Write postSynth report ###
echo "Physical Design Stage, Core Area (um^2), Standard Cell Area (um^2), Macro Area (um^2), Total Power (mW), Wirelength(um), WS(ns), TNS(ns), Congestion(H), Congestion(V)" > ${DESIGN}_DETAILS.rpt
source ../../../../util/extract_report.tcl
set rpt_post_synth [extract_report postSynth]
echo "$rpt_post_synth" >> ${DESIGN}_DETAILS.rpt

77 78 79 80 81 82 83
### Write out the def files ###
source ../../../../util/write_required_def.tcl

### Add power plan ###
source ../../../../../Enablements/NanGate45/util/pdn_config.tcl
source ../../../../util/pdn_flow.tcl

84
saveDesign ${encDir}/${DESIGN}_floorplan.enc
sakundu committed
85 86 87

setPlaceMode -place_detail_legalization_inst_gap 1
setFillerMode -fitGap true
88
setDesignMode -topRoutingLayer $TOP_ROUTING_LAYER
89
setDesignMode -bottomRoutingLayer 2 
sakundu committed
90 91

place_opt_design -out_dir $rptDir -prefix place
92
saveDesign $encDir/${DESIGN}_placed.enc
sakundu committed
93

94 95 96
set rpt_pre_cts [extract_report preCTS]
echo "$rpt_pre_cts" >> ${DESIGN}_DETAILS.rpt

sakundu committed
97 98 99 100 101 102 103 104 105 106 107
set_ccopt_property post_conditioning_enable_routing_eco 1
set_ccopt_property -cts_def_lock_clock_sinks_after_routing true
setOptMode -unfixClkInstForOpt false

create_ccopt_clock_tree_spec
ccopt_design

set_interactive_constraint_modes [all_constraint_modes -active]
set_propagated_clock [all_clocks]
set_clock_propagation propagated

108 109 110 111
saveDesign $encDir/${DESIGN}_cts.enc
set rpt_post_cts [extract_report postCTS]
echo "$rpt_post_cts" >> ${DESIGN}_DETAILS.rpt

sakundu committed
112 113 114 115 116 117
# ------------------------------------------------------------------------------
# Routing
# ------------------------------------------------------------------------------
setNanoRouteMode -drouteVerboseViolationSummary 1
setNanoRouteMode -routeWithSiDriven true
setNanoRouteMode -routeWithTimingDriven true
118
setNanoRouteMode -routeUseAutoVia true
sakundu committed
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134

##Recommended by lib owners
# Prevent router modifying M1 pins shapes
setNanoRouteMode -routeWithViaInPin "1:1"
setNanoRouteMode -routeWithViaOnlyForStandardCellPin "1:1"

## limit VIAs to ongrid only for VIA1 (S1)
setNanoRouteMode -drouteOnGridOnly "via 1:1"
setNanoRouteMode -drouteAutoStop false
setNanoRouteMode -drouteExpAdvancedMarFix true
setNanoRouteMode -routeExpAdvancedTechnology true

#SM suggestion for solving long extraction runtime during GR
setNanoRouteMode -grouteExpWithTimingDriven false

routeDesign
135
#route_opt_design
136
saveDesign ${encDir}/${DESIGN}_route.enc
137 138 139 140 141

### Run DRC and LVS ###
verify_connectivity -error 0 -geom_connect -no_antenna
verify_drc -limit 0

142 143
set rpt_post_route [extract_report postRoute]
echo "$rpt_post_route" >> ${DESIGN}_DETAILS.rpt
144
defOut -netlist -floorplan -routing ${DESIGN}_route.def
sakundu committed
145

146 147 148 149 150
#route_opt_design
optDesign -postRoute
set rpt_post_route [extract_report postRouteOpt]
echo "$rpt_post_route" >> ${DESIGN}_DETAILS.rpt

sakundu committed
151
summaryReport -noHtml -outfile summaryReport/post_route.sum
152 153
saveDesign ${encDir}/${DESIGN}.enc
defOut -netlist -floorplan -routing ${DESIGN}.def
sakundu committed
154 155

exit