cva6/ci/install-verilator.sh

44 lines
1.5 KiB
Bash
Executable file

#!/bin/bash
ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
cd $ROOT/tmp
if [ -z "$NUM_JOBS" ]; then
NUM_JOBS=1
fi
VERILATOR_REPO="https://github.com/verilator/verilator.git"
VERILATOR_BRANCH="master"
# Use the release tag instead of a full SHA1 hash.
VERILATOR_HASH="v5.008"
VERILATOR_PATCH="$ROOT/verif/regress/verilator-v5.patch"
VERILATOR_BUILD_DIR=$PWD/verilator-$VERILATOR_HASH/verilator
VERILATOR_INSTALL_DIR="$(dirname $VERILATOR_BUILD_DIR)"
if [ ! -e "$VERILATOR_INSTALL_DIR/bin/verilator" ]; then
echo "Building Verilator in $VERILATOR_BUILD_DIR..."
echo "Verilator will be installed in $VERILATOR_INSTALL_DIR"
echo "VERILATOR_REPO=$VERILATOR_REPO"
echo "VERILATOR_BRANCH=$VERILATOR_BRANCH"
echo "VERILATOR_HASH=$VERILATOR_HASH"
echo "VERILATOR_PATCH=$VERILATOR_PATCH"
mkdir -p $VERILATOR_BUILD_DIR
cd $VERILATOR_BUILD_DIR
sudo apt install libfl-dev help2man
[ -d .git ] || git clone $VERILATOR_REPO -b $VERILATOR_BRANCH .
git checkout $VERILATOR_HASH
if [[ -n "$VERILATOR_PATCH" && -f "$VERILATOR_PATCH" ]] ; then
git apply $VERILATOR_PATCH || true
fi
# Generate the config script and configure Verilator.
autoconf && ./configure --prefix="$VERILATOR_INSTALL_DIR" && make -j${NUM_JOBS}
# FORNOW: Accept failure in 'make test' (segfault issue on Debian10)
make test || true
echo "Installing Verilator in $VERILATOR_INSTALL_DIR..."
make install
else
echo "Using Verilator from cached directory $VERILATOR_INSTALL_DIR."
fi
cd $ROOT