#!/bin/bash
# Copyright (c) 2016 Princeton University                                                                         
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of Princeton University nor the
#       names of its contributors may be used to endorse or promote products
#       derived from this software without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY PRINCETON UNIVERSITY "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL PRINCETON UNIVERSITY BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

OPENPITON_LVS_RUN=1

source $DV_ROOT/tools/calibre/script/common/calibre_env

if [ ! -d "lvsRun" ]; then
    mkdir "lvsRun"
fi

echo "#################### OPENPITON SETUP LVS LOG BEGIN ####################" > lvsRun/calibre.lvs.log
$DV_ROOT/tools/calibre/script/lvs/setup_lvs $PWD $OPENPITON_CALIBRE_LVS_DECK "$OPENPITON_GDS2SP_BBOX_CELLS" "$OPENPITON_LVS_BBOX_CELLS" >> lvsRun/calibre.lvs.log
setup_lvs_retval=$?
echo "####################  OPENPITON SETUP LVS LOG END  ####################" >> lvsRun/calibre.lvs.log

LVS_NUM_CORES=10

if [ $setup_lvs_retval -eq 0 ]
then
    cd lvsRun
    echo "####################   OPENPITON V2LVS LOG BEGIN   ####################" >> calibre.lvs.log
    # Translate ICC Verilog netlist output to LVS format (spice)
    ./v2lvs.sh &>> calibre.lvs.log
    echo "####################    OPENPITON V2LVS LOG END    ####################" >> calibre.lvs.log
	echo "####################   CALIBRE GDS->SP LOG BEGIN   ####################" >> calibre.lvs.log
	calibre -spice change_names_icc.sp -turbo $LVS_NUM_CORES _openpiton.gds2sp.cal_ >> calibre.lvs.log
    echo "####################    CALIBRE GDS->SP LOG END    ####################" >> calibre.lvs.log
	echo "####################     CALIBRE LVS LOG BEGIN     ####################" >> calibre.lvs.log
    calibre -turbo $LVS_NUM_CORES -lvs -hier -nowait _openpiton.lvs.cal_ >> calibre.lvs.log
    echo "####################      CALIBRE LVS LOG END      ####################" >> calibre.lvs.log
    cd ..
else
    echo "ERROR: setup_lvs encountered an error." >> lvsRun/calibre.lvs.log
fi
