#!/bin/tcsh -f /bin/rm -f temp* set RBPLACETEST4 = ~/bin/PlaceUtil_linux.exe set METAPLACER = ~/bin/MetaPl-Capo8.8_linux.exe set PARQUET = ~/bin/Parquet.exe #set ROWIRONING = ~/bin/RowIroningTest1.exe set WLCALC = ~/bin/WLCalc-Linux.exe #save the initial netlist with macros shredded $RBPLACETEST4 -saveAsNodesShredHW tempShred -f $1.aux #place the shredded netlist /usr/bin/time -f "RealTime: %E , UserTime: %U , SystemTime: %S" $METAPLACER -f tempShred.aux -save -repartSmallWS if($status != 0) then echo "didn't finish 1'st Metaplacer run successfully" exit(1) endif echo "Ending ShredRun "$1 mv out.pl tempShred.pl #Reconstruct shredded macros by averaging locs of sub-cells and #determining orientation $RBPLACETEST4 -savePlacementUnShred $1.pl -f tempShred.aux echo "HPWL after shred run is " $WLCALC -f $1.aux /bin/cp -f $1.pl $1ShredUnshred.pl #save the whole netlist in floorplan format $RBPLACETEST4 -saveAsNodesFloorplan temp4 -f $1.aux #Run the floorplanner. Use physical clustering to form soft macros #/usr/bin/time -f "\nRealTime: %E , UserTime: %U , SystemTime: %S\n" $PARQUET -f temp4 -saveCapoPl temp4 -solveMulti -clusterPhysical -dontClusterMacros -minWL -solveTop -maxWSHier 0 -AR 1 -maxWS 20 -takePl -soft -initCompact #For low temperature annealing use following /usr/bin/time -f "\nRealTime: %E , UserTime: %U , SystemTime: %S\n" $PARQUET -f temp4 -saveCapoPl temp4 -solveMulti -clusterPhysical -dontClusterMacros -minWL -solveTop -maxWSHier -10 -AR 1 -maxWS 20 -takePl -soft -initCompact -startTime 30 if($status != 0) then echo "didn't finish Floorplanner run successfully" exit(1) endif echo "Ending FloorplanRun "$1 #save floorplan results in original design /bin/cp -f temp4.pl $1.pl #fix the macro locations to those provided by floorplanner $RBPLACETEST4 -fixMacros -saveAsNodes temp5 -f $1.aux #remove sites under macros $RBPLACETEST4 -remSitesMacro -saveAsNodes temp5 -f temp5.aux #add dummy filler cells $RBPLACETEST4 -addDummy 15 -saveAsNodes temp6 -f temp5.aux #place standard cells around Macros /usr/bin/time -f "\nRealTime: %E , UserTime: %U , SystemTime: %S\n" $METAPLACER -f temp6.aux -save -repartSmallWS if($status != 0) then echo "didn't finish 2'nd Metaplacer run successfully" exit(1) endif echo "Ending FinalRun "$1 mv out.pl temp6.pl $RBPLACETEST4 -savePlNoDummy out -f temp6.aux /bin/cp -f out.pl temp5.pl /bin/cp -f out.pl $1.pl /bin/cp -f out.pl {$1}_final.pl #$ROWIRONING -f temp5.aux -ironMixed -ironWindow 10 -ironPasses 4 -smPlAlgo DynamicP -save out #mv out.pl $1.pl $WLCALC -f $1.aux #For saving final placement as LEF/DEF with macros marked as fixed #$RBPLACETEST4 -fixMacros -saveAsNodes temp6 -f $1.aux #$RBPLACETEST0 -saveLEFDEF $1LD -f temp6.aux