#!/bin/bash # create the different verilator builds # usage: # do-rtl-build.sh sim # run rtl build for simulations and copy back results # do-rtl-build.sh fpga # run rtl build for fpga and don't copy back results # turn echo on and error on earliest command set -ex # get shared variables SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" source $SCRIPT_DIR/defaults.sh cd $REMOTE_CHIPYARD_DIR ./scripts/init-submodules-no-riscv-tools.sh # Constellation can run without espresso, but this improves # elaboration time drastically pushd $REMOTE_CHIPYARD_DIR/generators/constellation scripts/install-espresso.sh $RISCV popd if [ $1 = "group-accels" ]; then pushd $REMOTE_CHIPYARD_DIR/generators/gemmini/software git submodule update --init --recursive gemmini-rocc-tests pushd gemmini-rocc-tests ./build.sh popd popd fi # choose what make dir to use case $2 in "sim") REMOTE_MAKE_DIR=$REMOTE_SIM_DIR ;; "fpga") REMOTE_MAKE_DIR=$REMOTE_FPGA_DIR ;; esac # enter the verilator directory and build the specific config on remote server make -C $REMOTE_MAKE_DIR clean read -a keys <<< ${grouping[$1]} # need to set the PATH to use the new verilator (with the new verilator root) for key in "${keys[@]}" do export COURSIER_CACHE=$REMOTE_COURSIER_CACHE export JVM_MEMORY=10G export JAVA_TMP_DIR=$REMOTE_JAVA_TMP_DIR make -j$REMOTE_MAKE_NPROC -C $REMOTE_MAKE_DIR FIRRTL_LOGLEVEL=info ${mapping[$key]} done