| #!/bin/bash |
| |
| export CALIBRE_HOME=/usr/local/google/edatools/mentor/calibre/2018.4.34.26/aoj_cal_2018.4_34.26/ |
| export MGC_TMPDIR=/tmp |
| export MGC_CALIBRE_LAYOUT_TMP_FILE=/tmp/query_results |
| |
| export CALIBRE_DISABLE_RHEL5_WARNING=1 |
| export USE_CALIBRE_VCO=aoj |
| |
| export CALIBRE_VERSION_DASH=2018.4_34.26 |
| export CALIBRE_VERSION_DOT=$(echo $CALIBRE_VERSION_DASH | sed -e's/_/./') |
| |
| export MGC_HOME=/usr/local/google/edatools/mentor/calibre/$CALIBRE_VERSION_DOT/aoj_cal_$CALIBRE_VERSION_DASH/ |
| export PATH=${MGC_HOME}/bin:${PATH} |
| |
| export MGLS_LICENSE_FILE=1817@gchips-licenses.corp.google.com |
| export LM_LICENSE_FILE=1717@gchips-licenses.corp.google.com |
| |
| export PDK_HOME="/data/pdks/skywater/s8/V1.3.0" |
| |
| if [ -z $VERSION ];then |
| echo "Missing VERSION" |
| exit 1 |
| fi |
| export TEST_DIR=/usr/local/google/home/tansell/work/openflow-drc-tests/ |
| export JOB_HOME=$TEST_DIR/torture_tests/$VERSION/ |
| if [ ! -d "$JOB_HOME" ]; then |
| echo "$JOB_HOME doesn't exist?" |
| exit 1 |
| fi |
| |
| # drcmr runset file uses export PDK_HOME2 for local (to this repo) rules-file: |
| # $PDK_HOME2/DRC/Calibre/s8_drcRules_MR (aka $TEST_DIR/pdk/skywater/s8/V1.3.0-mr/DRC/Calibre/s8_drcRules_MR) |
| export PDK_HOME2="$TEST_DIR/pdk/skywater/s8/V1.3.0-mr" |
| |
| for GDS_FILE in $JOB_HOME/*.gds{,.gz,.xz}; do |
| if [ ! -e "$GDS_FILE" ]; then |
| continue # above brace-expansion keeps non-existent star forms: '.../*.gds.gz' |
| fi |
| |
| # check for ambiguity(error); and optionally decompress. |
| # Keep source & decompress to a .gds in parallel; and afterwards delete .gds. |
| # This due to suspicion TEST_DIR or JOB_HOME elsewhere/later subject to a 'git add --all', |
| # which would commit (intended temporary) uncompressed files. Better would be decompress |
| # to a scratch-dir that is git-ignored or outside of TEST_DIR; but without visibility |
| # into rest of system not clear if works to restructure use of (exports)JOB_HOME,JOB_NAME. |
| GDS_BASE=${GDS_FILE%.xz} |
| GDS_BASE=${GDS_BASE%.gz} |
| GDS_FILEX=${GDS_BASE}.xz |
| GDS_FILEG=${GDS_BASE}.gz |
| GDS_DEL="" |
| nbr=0 |
| [ -e "$GDS_BASE" ] && (( nbr++ )) |
| [ -e "$GDS_FILEX" ] && (( nbr++ )) |
| [ -e "$GDS_FILEG" ] && (( nbr++ )) |
| if [[ $nbr != 1 ]]; then |
| echo "$GDS_FILE ambiguous, $nbr variants" |
| continue |
| fi |
| |
| if [ -e "$GDS_FILEX" ]; then |
| unxz -c <"$GDS_FILE" >"$GDS_BASE" |
| stat=$? |
| if [[ "$stat" != 0 ]]; then |
| echo "Failed($stat) to: unxz --force $GDS_FILE" |
| continue |
| fi |
| echo "completed: unxz --force $GDS_FILE" |
| GDS_FILE="$GDS_BASE" |
| GDS_DEL="$GDS_BASE" |
| fi |
| if [ -e "$GDS_FILEG" ]; then |
| gunzip -c <"$GDS_FILE" >"$GDS_BASE" |
| stat=$? |
| if [[ "$stat" != 0 ]]; then |
| echo "Failed($stat) to: gunzip --force $GDS_FILE" |
| continue |
| fi |
| echo "completed: gunzip --force $GDS_FILE" |
| GDS_FILE="$GDS_BASE" |
| GDS_DEL="$GDS_BASE" |
| fi |
| |
| export JOB_NAME="$(basename -s .gds $GDS_FILE)" |
| # export JOB_NAME=s8pir_10r_vcells_lvs |
| # export JOB_NAME=torture_test_s8 |
| echo |
| echo |
| echo |
| echo "export JOB_HOME='$JOB_HOME'" |
| echo "export JOB_NAME='$JOB_NAME'" |
| echo "=====================================" |
| if [ ! -e $JOB_HOME/$JOB_NAME.gds ]; then |
| echo "Did not find '$JOB_HOME/$JOB_NAME.gds'" |
| exit 1 |
| fi |
| |
| set -x |
| |
| cd $TEST_DIR |
| git checkout HEAD $TEST_DIR/runsets/*_runset |
| #sed -i -e"s@\$JOB_HOME@$JOB_HOME@" $TEST_DIR/runsets/*_runset |
| |
| cd ~/github/google/skywater-pdk/s8/V1.3.0 |
| # temp. disable all but the drcMR deck: |
| # calibre -gui -drc -runset $TEST_DIR/runsets/s8_drc_runset -batch > $JOB_HOME/$JOB_NAME.drc_runset.log 2>&1 |
| # calibre -gui -drc -runset $TEST_DIR/runsets/s8_fill_runset -batch > $JOB_HOME/$JOB_NAME.fill_runset.log 2>&1 |
| # calibre -gui -drc -runset $TEST_DIR/runsets/s8_latchup_runset -batch > $JOB_HOME/$JOB_NAME.latchup_runset.log 2>&1 |
| # calibre -gui -drc -runset $TEST_DIR/runsets/s8_lures_runset -batch > $JOB_HOME/$JOB_NAME.lures_runset.log 2>&1 |
| # calibre -gui -drc -runset $TEST_DIR/runsets/s8_soft_runset -batch > $JOB_HOME/$JOB_NAME.soft_runset.log 2>&1 |
| # calibre -gui -drc -runset $TEST_DIR/runsets/s8_stress_runset -batch > $JOB_HOME/$JOB_NAME.stress_runset.log 2>&1 |
| # calibre -gui -lvs -runset $TEST_DIR/runsets/s8_lvs_runset -batch > $JOB_HOME/$JOB_NAME.lvs_runset.log 2>&1 |
| # calibre -gui -pex -runset $TEST_DIR/runsets/s8_xRC_runset -batch > $JOB_HOME/$JOB_NAME.xRC_runset.log 2>&1 |
| # drcmr runset file uses export PDK_HOME2 for local rules-file: |
| # $PDK_HOME2/DRC/Calibre/s8_drcRules_MR (aka $TEST_DIR/pdk/skywater/s8/V1.3.0-mr/DRC/Calibre/s8_drcRules_MR) |
| calibre -gui -drc -runset $TEST_DIR/runsets/s8_drcmr_runset -batch > $JOB_HOME/$JOB_NAME.drcmr_runset.log 2>&1 |
| |
| find $JOB_HOME -type f -exec sed -i -e's/... [0-9][0-9] [0-9 ][0-9]:[0-9][0-9]:[0-9][0-9] 2.../... XX XX:XX:XX 2.../' \{\} \+ |
| |
| if [ -n "$GDS_DEL" ]; then |
| rm -f "$GDS_DEL" |
| echo "completed: rm -f $GDS_DEL" |
| fi |
| |
| done |
| exit 0 |