#!/bin/sh
#
# Runs pipo to create a Cadence DFII library
# from final.gds2 from SOC Encounter
# 
# Johannes Grad, OSU

# Customize here:

echo $CDS_SITE/lib

techlibsDir=$CDS_SITE/lib

osucellsDir=$OSUcells/lib

echo $techlibsDir
echo $osucellsDir
#############################################################

sourceFile=final.gds2
$UNIX_TOOLS/echo "Checking if $sourceFile exists......\c"
if (test ! -f $sourceFile ) then
    echo "FAILED"
    echo $sourceFile does not exist!
    echo Please run Encountner first or rerun if necessary
    exit 127
fi
echo "OK"

$UNIX_TOOLS/echo "Determining top-level name.........\c"
toplevel=`grep "set my_toplevel" encounter.conf | awk '{print $3;}'`
df2LibName=$toplevel
echo "OK ($toplevel)"

$UNIX_TOOLS/echo "Creating temporary cds.lib.........\c"
if (test -f cds.lib) 
    then mv cds.lib cds.lib.piposave
fi
echo "DEFINE $df2LibName ./$df2LibName">cds.lib
echo "DEFINE basic $techlibsDir/basic">>cds.lib
echo "OK"

$UNIX_TOOLS/echo "Determining Technology.............\c"
leffile=`grep "leffile" encounter.conf | awk '-F"' '{print $2;}' | awk -F/ '{print $NF}'`
if (test $leffile = "osu025_stdcells.lef") then
    echo "OK (TSMC 0.25um)"
    echo "DEFINE NCSU_TechLib_tsmc03 $techlibsDir/NCSU_TechLib_tsmc03">>cds.lib 
    sourceDir=$osucellsDir/tsmc025/OSU_stdcells_tsmc025
    sourceLib=OSU_stdcells_tsmc025
    echo "DEFINE $sourceLib $sourceDir">>cds.lib
elif (test $leffile = "osu05_stdcells.lef") then
    echo "OK (AMI 0.5um)"
    echo "DEFINE NCSU_TechLib_ami06 $techlibsDir/NCSU_TechLib_ami06">>cds.lib
    sourceDir=$osucellsDir/ami05/OSU_stdcells_ami05
    sourceLib=OSU_stdcells_ami05
    echo "DEFINE $sourceLib $sourceDir">>cds.lib
elif (test $leffile = "osu05_stdcells.stacks.lef") then
    echo "OK (AMI 0.5um stacks)"
    echo "DEFINE NCSU_TechLib_ami06 $techlibsDir/NCSU_TechLib_ami06">>cds.lib
    sourceDir=$osucellsDir/ami05/OSU_stdcells_ami05
    sourceLib=OSU_stdcells_ami05
    echo "DEFINE $sourceLib $sourceDir">>cds.lib
elif (test $leffile = "osu018_stdcells.lef") then
    echo "OK (TSMC 0.18um)"
    echo "DEFINE NCSU_TechLib_tsmc02 $techlibsDir/NCSU_TechLib_tsmc02">>cds.lib
    sourceDir=$osucellsDir/tsmc018/OSU_stdcells_tsmc018
    sourceLib=OSU_stdcells_tsmc018
    echo "DEFINE $sourceLib $sourceDir">>cds.lib
elif (test $leffile = "osu035_stdcells.lef") then
    echo "OK (AMI 0.35um)"
    echo "DEFINE NCSU_TechLib_tsmc04_4M2P $techlibsDir/NCSU_TechLib_tsmc04_4M2P">>cds.lib
    sourceDir=$osucellsDir/ami035/OSU_stdcells_ami035
    sourceLib=OSU_stdcells_ami035
    echo "DEFINE $sourceLib $sourceDir">>cds.lib
else
    echo "FAILED"
    echo "Unknown .lef file used for P&R. Sorry."
    exit 127
fi

$UNIX_TOOLS/echo "Removing old library...............\c"
$UNIX_TOOLS/rm -rf $df2LibName 
echo "OK ($df2LibName)"

$UNIX_TOOLS/echo "Creating new DFII library..........\c"
mkdir $df2LibName
cp $sourceDir/cdsinfo.tag $df2LibName
cp $sourceDir/prop.xx     $df2LibName
echo "OK ($df2LibName)"


$UNIX_TOOLS/echo "Creating PIPO script file..........\c"
echo  streamInKeys = list\(nil                                     >pipotemp.scr
echo          \'runDir                          \".\"             >>pipotemp.scr
echo          \'inFile                          \"final.gds2\"    >>pipotemp.scr
echo          \'primaryCell                     \"\"              >>pipotemp.scr
echo          \'libName                         \"$df2LibName\"   >>pipotemp.scr
echo          \'techfileName                    \"\"              >>pipotemp.scr
echo          \'scale                           0.001000          >>pipotemp.scr
echo          \'units                           \"micron\"        >>pipotemp.scr
echo          \'errFile                         \"PIPO.LOG\"      >>pipotemp.scr
echo          \'refLib                          t                 >>pipotemp.scr
echo          \'hierDepth                       32                >>pipotemp.scr
echo          \'maxVertices                     1024              >>pipotemp.scr
echo          \'checkPolygon                    nil               >>pipotemp.scr
echo          \'snapToGrid                      t                 >>pipotemp.scr
echo          \'arrayToSimMosaic                t                 >>pipotemp.scr
echo          \'caseSensitivity                 \"preserve\"      >>pipotemp.scr
echo          \'zeroPathToLine                  \"lines\"         >>pipotemp.scr
echo          \'convertNode                     \"ignore\"        >>pipotemp.scr
echo          \'skipUndefinedLPP                t                 >>pipotemp.scr
echo          \'ignoreBox                       nil               >>pipotemp.scr
echo          \'reportPrecision                 nil               >>pipotemp.scr
echo          \'runQuiet                        nil               >>pipotemp.scr
echo          \'saveAtTheEnd                    nil               >>pipotemp.scr
echo          \'noWriteExistCell                nil               >>pipotemp.scr
echo          \'NOUnmappingLayerWarning         nil               >>pipotemp.scr
echo          \'cellMapTable                    \"\"              >>pipotemp.scr
echo          \'layerTable                      \"gds2_icfb.map\" >>pipotemp.scr
echo          \'textFontTable                   \"\"              >>pipotemp.scr
echo          \'restorePin                      0                 >>pipotemp.scr
echo          \'propMapTable                    \"\"              >>pipotemp.scr
echo          \'propSeparator                   \",\"             >>pipotemp.scr
echo          \'userSkillFile                   \"\"              >>pipotemp.scr
echo          \'rodDir                          \"\"              >>pipotemp.scr
echo          \'refLibOrder                     \"$sourceLib\"    >>pipotemp.scr
echo          \'keepStreamCells                 nil               >>pipotemp.scr
echo  \)  >>pipotemp.scr
echo "OK"

$UNIX_TOOLS/echo "Running PIPO (GDS Stream-In).......\c"
pipo strmin pipotemp.scr
grep "* Warning *" PIPO.LOG
grep "* Fatal *" PIPO.LOG
echo ""
echo ""

$UNIX_TOOLS/echo "Creating IHDL script file..........\c"
$UNIX_TOOLS/rm -f ihdl_file
echo dest_sch_lib:=$df2LibName        >ihdl_file
echo ref_lib_list:=basic, $sourceLib  >>ihdl_file
echo power_net:=vdd!                  >>ihdl_file
echo ground_net:=gnd!                 >>ihdl_file
echo "OK"

$UNIX_TOOLS/echo "Running IHDL (Verilog In)..........\c"
echo ""
ihdl -param ihdl_file -precompilelibrary $sourceLib final.v
echo ""

$UNIX_TOOLS/echo "Cleaning up........................\c"
$UNIX_TOOLS/rm -f cds.lib
$UNIX_TOOLS/rm -f pipotemp.scr
$UNIX_TOOLS/rm -f ihdl_file
if (test -f cds.lib.piposave) then 
   mv cds.lib.piposave cds.lib 
fi
echo "OK"
echo "Good by."

