#!/bin/bash

# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Script to run fpv (formal property verification) using Jasper Gold
#
# Usage: To run fpv on module foo, type
#   fpv foo
#
# Here are some examples:
#   fpv rv_plic_fpv
#   fpv gpio
#
# More options:
# -p:  provide core file path
# -gui: run JasperGold GUI
# -cov: run coverage
# -chk: run checks for assumptions: deadlock, conflict, live chks
# -t: choose which formal tool to use, default using jaspergold, also support
# vcf(VC Formal)
#
# Example:
#   fpv pinmux_fpv -p vip:pinmux_fpv -gui -cov -t jg
#
# Note that the module to be tested needs to have an _fpv testbench
# and a corresponding core file for this to work.

set -e

export DUT_TOP=$1
shift
gui=0
tool="jg"
flag="fileset_top"
export COV=0
export CHECK=0
export COMMON_MSG_TCL_PATH=$(readlink -f tools/jaspergold/jaspergold_common_message_process.tcl)

while [ "$1" != "" ]; do
  case "$1" in
    "-p")
      shift
      CORE_PATH=$1
      ;;
    "-gui")
      gui=1
      echo "using jasper gold GUI"
      ;;
    "-cov")
      COV=1
      echo "enable FPV coverage"
      ;;
    "-chk")
      CHECK=1
      echo "enable assumption checks"
      ;;
    "-t")
      shift
      tool=$1
      echo "running in tool: $tool"
      ;;
    "-flag")
      shift
      flag=$1
      echo "flag is set to: $flag"
      ;;
  esac
  shift
done

echo "-------------------------------------------------------------------------"
echo "-- Generate file list using FuseSoC"
echo "-------------------------------------------------------------------------"
echo ""
echo "Top: $DUT_TOP"
echo ""

\rm -Rf build jgproject
# we just run the setup for the default target in order to generate the filelist
if [ "${CORE_PATH}" == "" ]; then
  if [[ $DUT_TOP == *"_fpv" ]]; then
    CORE_PATH="fpv:${DUT_TOP}"
  else
    CORE_PATH="dv:${DUT_TOP}_sva"
  fi
fi
echo "core_file path: lowrisc:${CORE_PATH}"

fusesoc --cores-root ../.. run --tool=icarus --target=formal --flag=${flag} --setup "lowrisc:${CORE_PATH}"

echo "-------------------------------------------------------------------------"
echo "-- Run JasperGold"
echo "-------------------------------------------------------------------------"

cd build/*${FPV_TOP}*/formal-icarus

if [ "${tool}" == "jg" ]; then
  if [ "${gui}" == "1" ]; then
    jg ../../../tools/jaspergold/fpv.tcl \
       -proj ../../../jgproject \
       -allow_unsupported_OS \
       | tee ../../../fpv.log
  else
    jg -batch \
      ../../../tools/jaspergold/fpv.tcl \
      -proj ../../../jgproject \
      -allow_unsupported_OS \
      -command exit \
      | tee ../../../fpv.log
  fi
elif [ "${tool}" == "vcf" ]; then
  vcf -f fpv_vcf.tcl
fi
cd -

echo "-------------------------------------------------------------------------"
echo "-- Done"
echo "-------------------------------------------------------------------------"
