############################################################
## Copyright: 2011 Integrated Sytems Laboratory, ETH Zurich
##            http://www.iis.ee.ethz.ch/~sha3
############################################################
##########################################################################
#  Design Setings
##########################################################################
set DESIGNNAME  "shabziger"

set timeRepDir  "timingReports_final"

##########################################################################
#  General Setings
##########################################################################
#set tempArea /scratch/$env(USER)/

#if {![file exists $tempArea]} {
#  file mkdir $tempArea
#}
#rm -r $env(TMPDIR)
#ln -s $tempArea/tmp $env(TMPDIR) .

setTrialRouteMode -useM1 true
setMultiCpuUsage -localCpu max

#set_global timing_enable_multi_threaded_reporting true
#set_table_style -no_frame_fix_width -nosplit
#set_table_style -no_frame_fix_width


##########################################################################
# load Config & FP
##########################################################################
loadConfig ./src/${DESIGNNAME}.conf 0
  # copy first setup view to ui_timinglib,max
  ::Rda_Design::Input::mmmc:copy
commitConfig

floorPlan -site CORE -d 1875 1875 60 60 60 60
source scripts/fillperi-insert.tcl

fit

##########################################################################
#  debug constrains
##########################################################################
#report_clocks
#all_constraint_modes
#check_timing

#type: clocks, endpoints, inputs, nets, loops, clock_clipping, clock_gating_inferred and constant_collision.
#check_timing -verbose -type clocks > check_timing.clocks.rpt

##########################################################################
#  place RAM macros
##########################################################################

# for instance
# probably it would be better to leave some space at the top for the
# buffers that go to the pins


#setObjFPlanBox Instance top/i_RAM3 148.8 1126.975 771.26 1726.2
#setObjFPlanBox Instance top/i_RAM3 164.2 1111.575 786.66 1710.8
#setObjFPlanBox Instance top/i_RAM2 1506.94 1389.375 1726.2 1726.2
#setObjFPlanBox Instance top/i_RAM1 1075.049 1533.33 1408.899 1726.2
#setObjFPlanBox Instance top/i_RAM3 164.2 1110.975 786.66 1710.2
#setObjFPlanBox Instance top/i_RAM2 1490.94 1373.375 1710.2 1710.2
#setObjFPlanBox Instance top/i_RAM1 1075.049 1517.33 1408.899 1710.2
setObjFPlanBox Instance top/i_RAM3 168.0 1110.975 790.36 1710.2
setObjFPlanBox Instance top/i_RAM2 1481.65 1373.375 1696.051 1710.2
setObjFPlanBox Instance top/i_RAM1 1081.19 1517.33 1419.899 1710.2

#addHaloToBlock 10 10 10 10 top/i_RAM3
#addHaloToBlock 10 10 10 10 top/i_RAM2
#addHaloToBlock 10 10 10 10 top/i_RAM1

# Add halo and fix ram instances
# If there is a way to set the instances fixed wothout dbSet
# I would be happy..
foreach rname {RAM1 RAM2 RAM3} {
  addHaloToBlock 10 10 10 10 top/i_${rname}
  selectInst top/i_${rname}
  dbSet selected.pStatus fixed
}

createObstruct 148.8 1101.0 158.0 1110.975
createObstruct 148.8 1709.4 158.0 1720.2

createObstruct 1710.8 1711.0   1726.2 1720.2
createObstruct 1710.8 1363.375 1726.2 1374.6


# we need to remove the rows here
cutRow

#addRoutingHalo -space 0 -top ME8 -bottom ME1 -allBlocks

#relativePlace top/i_RAM3  CORE  -alignedBy T -orientation R0
#relativePlace top/i_RAM2  CORE  -alignedBy T -orientation R0
#relativePlace top/i_RAM1  CORE  -alignedBy TR -orientation R0

redraw

##########################################################################
#  power Route
##########################################################################
source scripts/shabziger_grid.tcl 


##########################################################################
# Placement
##########################################################################
source scripts/welltap.tcl

#setPlaceMode -reorderScan false -modulePlan false 
#setPlaceMode -congEffort medium \
#             -timingDriven 0 \
#             -modulePlan 1 \
#             -doCongOpt 0 \
#             -ignoreScan 1 \
#             -reorderScan 0 

# moduleplan is multi-threaded.. important detail :) 

## KGF1 timedriven + module plan + rpSpreadEffort
setPlaceMode -congEffort high \
             -timingDriven 1 \
             -modulePlan 1 \
             -doCongOpt 0 \
             -ignoreScan 0 \
             -reorderScan 0 \
             -rpSpreadEffort high


placeDesign -prePlaceOpt

source scripts/tiehilo.tcl


# saveDesign    save/chip_${DESIGNNAME}.place.enc
##########################################################################
# time Opt
##########################################################################
optDesign -preCTS -drv -outDir ${timeRepDir} -prefix ${DESIGNNAME}_preCTS-drv

#timedesign -reportOnly -outDir ${timeRepDir} -prefix ${DESIGNNAME}.preCTS-drv
timedesign -reportOnly -expandedViews -outDir ${timeRepDir} -prefix ${DESIGNNAME}.preCTS-drv.expV

setOptMode -setupTargetSlack -.050
optDesign -preCTS -outDir ${timeRepDir} -prefix ${DESIGNNAME}.preCTS-opt
#timedesign -preCTS -outDir ${timeRepDir} -prefix ${DESIGNNAME}.preCTS-opt
timedesign -reportOnly -expandedViews -outDir ${timeRepDir} -prefix ${DESIGNNAME}.preCTS-opt.expV
#wireload -instanceBased -outfile preCTS

saveDesign    save/chip_${DESIGNNAME}.preCTS-opt.enc
##########################################################################
# CTS
##########################################################################
setCTSMode -reportHTML true
clockDesign -specFile src/${DESIGNNAME}.ctstch -outDir ${timeRepDir} -fixedInstBeforeCTS

#exec mv *.ctsrpt* ${timeRepDir}/..
#exec rm *.rguide *.cts_trace 
timedesign -reportOnly -expandedViews -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postCTS.expV

setOptMode -setupTargetSlack -.050
optDesign -postCTS -outDir ${timeRepDir}
timedesign -reportOnly -expandedViews -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postCTS-opt.expV
#wireload -instanceBased -outfile postCTS

saveDesign    save/chip_${DESIGNNAME}_postCTS.enc

##########################################################################
# route
##########################################################################
setNanoRouteMode -quiet -routeInsertAntennaDiode 1
setNanoRouteMode -quiet -routeWithTimingDriven 1
setNanoRouteMode -quiet -drouteStartIteration default
setNanoRouteMode -quiet -routeTopRoutingLayer default
setNanoRouteMode -quiet -routeBottomRoutingLayer default
setNanoRouteMode -quiet -drouteEndIteration default
setNanoRouteMode -quiet -routeWithTimingDriven true
setNanoRouteMode -quiet -routeWithSiDriven false
routeDesign -globalDetail

saveDesign    save/chip_${DESIGNNAME}_routed.enc
#wireload -instanceBased -outfile postRoute


##########################################################################
# time Opt
##########################################################################
setExtractRCMode -engine postRoute -effortLevel low -coupled false -reduce 0.0

## hold
timedesign -postroute -hold -outDir ${timeRepDir}
##setOptMode -holdTargetSlack 0.2
##optDesign -postroute -hold

## setup
timedesign -expandedViews -postroute -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postroute.expV
setOptMode -setupTargetSlack 0
optDesign -postroute -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postrouteopt
timedesign -expandedViews -reportOnly -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postrouteopt.expV

## do not run these automatically, only if there is need

## One more optimize.. 
#setOptMode -setupTargetSlack 0
#optDesign -postroute -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postrouteopt2
#timedesign -expandedViews -reportOnly -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postrouteopt2.expV
#saveDesign    save/chip_${DESIGNNAME}_final2.enc

## One more optimize.. 

#setOptMode -setupTargetSlack 0.06
#optDesign -postroute -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postrouteopt3
#timedesign -expandedViews -reportOnly -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postrouteopt3.expV
#saveDesign    save/chip_${DESIGNNAME}_final3.enc

















##########################################################################
# Insert Filler Cells
##########################################################################
source scripts/fillcore-insert.tcl

#wireload -instanceBased -outfile RoutedOpt
saveDesign    save/chip_${DESIGNNAME}_final.enc


# saveDesign    save/chip_${DESIGNNAME}_fillcore.enc
##########################################################################
# verify
##########################################################################
#source scripts/checkdesign.tcl

##########################################################################
# Save files
##########################################################################
source scripts/shabziger_exportall.tcl


Generated on Tue Nov 22 15:16:34 CET 2011
Home