############################################################ ## Copyright: 2011 Integrated Sytems Laboratory, ETH Zurich ## http://www.iis.ee.ethz.ch/~sha3 ############################################################ # v0.2- - Tue Oct 4 13:38:00 CEST 2011 # - added a gate count report option # v0.1 - - Mon Sep 26 10:29:20 CEST 2011 # - first version ########################################################################## # enc.tcl ########################################################################## setDelayCalMode -engine signalStorm set dbgGPSAutoCellFunction 1 set_global report_timing_format {instance arc cell slew load delay arrival} set_global timing_defer_mmmc_object_updates true setDoAssign on -buffer BUFM2W set env(TMPDIR) "../tmp" setDesignMode -process 65 ########################################################################## # Design Setings ########################################################################## set path [pwd] regexp {(ethz_)([^/]+)/[^/]+$} $path matched namep1 namep2 regexp {(gmu_)([^/]+)/[^/]+$} $path matched namep1 namep2 set DESIGNNAME ${namep1}${namep2} set CLOCK $env(CLOCK) set COREUT $env(COREUT) set timeRepDir timingReports_${CLOCK}_${COREUT} set saveDir save_${CLOCK}_${COREUT} set outDir out_${CLOCK}_${COREUT} if {![file exists $saveDir]} { exec mkdir $saveDir exec mkdir $outDir } ############################################################################## # General Setings ########################################################################## 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 ../../common/encounter/block.conf 0 # copy first setup view to ui_timinglib,max set rda_Input(ui_netlist) "../synopsys/netlists/${DESIGNNAME}.v" ::Rda_Design::Input::mmmc:copy commitConfig floorPlan -site CORE -r 1 $COREUT 0.0 0.0 0.0 0.0 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 ########################################################################## # power Route ########################################################################## source scripts/globalnet.tcl sroute -connect { corePin } \ -allowLayerChange 1 clearDrc redraw ########################################################################## # Placement ########################################################################## source scripts/welltap.tcl ## KGF 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 $saveDir/block_${DESIGNNAME}.place.enc ########################################################################## # time Opt ########################################################################## optDesign -preCTS -drv -outDir ${timeRepDir} -prefix ${DESIGNNAME}.preCTS-drv setOptMode -setupTargetSlack -.025 optDesign -preCTS -outDir ${timeRepDir} -prefix ${DESIGNNAME}.preCTS-opt # saveDesign $saveDir/block_${DESIGNNAME}.preCTS-opt.enc ########################################################################## # CTS ########################################################################## setCTSMode -reportHTML true clockDesign -specFile ../../common/encounter/block.ctstch -outDir ${timeRepDir} -fixedInstBeforeCTS #exec mv *.ctsrpt* ${timeRepDir}/.. #exec rm *.rguide *.cts_trace setOptMode -setupTargetSlack -.025 optDesign -postCTS -outDir ${timeRepDir} # saveDesign $saveDir/block_${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 $saveDir/block_${DESIGNNAME}_routed.enc ########################################################################## # time Opt ########################################################################## setExtractRCMode -engine postRoute -effortLevel low -coupled false -reduce 0.0 ## hold #timedesign -postroute -hold -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postroute ##setOptMode -holdTargetSlack 0.2 ##optDesign -postroute -hold ## setup setOptMode -setupTargetSlack 0 optDesign -postroute -outDir ${timeRepDir} -prefix ${DESIGNNAME}.postroute-opt #saveDesign $saveDir/block_${DESIGNNAME}_route-opt.enc ########################################################################## # Report ########################################################################## analyzeFloorplan -keepPlacement -outfile ${timeRepDir}/${DESIGNNAME}_analyzeFP.rpt set headBox [dbFPlanBox [dbHeadFPlan [dbgHead]]] set coreBox [dbFPlanCoreBox [dbHeadFPlan [dbgHead]]] set size_file [open ${timeRepDir}/${DESIGNNAME}_size.rpt a] puts $size_file "**************************** Size report *****************************" puts $size_file "Die width : [expr [dbDBUToMicrons [lindex $headBox 2]] - [dbDBUToMicrons [lindex $headBox 0]]]" puts $size_file "Die height : [expr [dbDBUToMicrons [lindex $headBox 3]] - [dbDBUToMicrons [lindex $headBox 1]]]" puts $size_file "Core width : [expr [dbDBUToMicrons [lindex $coreBox 2]] - [dbDBUToMicrons [lindex $coreBox 0]]]" puts $size_file "Core height : [expr [dbDBUToMicrons [lindex $coreBox 3]] - [dbDBUToMicrons [lindex $coreBox 1]]]" puts $size_file "**********************************************************************" close $size_file reportCongestArea -outfile ${timeRepDir}/${DESIGNNAME}_reportCongestA.rpt reportGateCount -outfile ${timeRepDir}/${DESIGNNAME}_reportGate.rpt -stdCellOnly reportRoute ########################################################################## # Insert Filler Cells ########################################################################## source scripts/fillcore-insert.tcl ########################################################################## # Save files ########################################################################## # global variable for written the sdf checks checks correctly with a tripl set_global timing_recompute_sdf_in_setuphold_mode true # Write out SDF write_sdf -precision 4 -min_period_edges posedge -remashold \ -min_view hold_fast_view -typ_view func_slow_view -max_view func_slow_view \ $outDir/${DESIGNNAME}.sdf.gz # This netlist contains all filler cells and everything. # this can be used for simulation saveNetlist $outDir/${DESIGNNAME}.v -excludeLeafCell -includePhysicalInst # layout setStreamOutMode -SEvianames ON -specifyViaName %t_VIA # you can set an alternative top name with -structureName streamOut $outDir/${DESIGNNAME}.gds.gz -mapFile tech/streamOut_noObs.map -outputMacros -merge { \ /usr/pack/umc-65-kgf/umc/ll/uk65lscllmvbbr/a02/gds/uk65lscllmvbbr.gds \ /usr/pack/umc-65-kgf/umc/ll/uk65lscllmvbbl/a02/gds/uk65lscllmvbbl.gds \ /usr/pack/umc-65-kgf/umc/ll/uk65lscllmvbbh/a02/gds/uk65lscllmvbbh.gds \ /usr/pack/umc-65-kgf/umc/ll/u065gioll25mvir/a03/gds/u065gioll25mvir_8m1t0f1u.gds \ } saveDesign $saveDir/block_${DESIGNNAME}_final.enc ########################################################################## exit