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

# Build a chip-level verilator simulation
#
# Expects three arguments: the toplevel to build, the fusesoc core and
# the intermediate Verilated binary name

set -e

if [ $# != 1 ]; then
    echo >&2 "Usage: build-chip-verilator.sh <toplevel>"
    exit 1
fi
tl="$1"

case "$tl" in
    earlgrey)
        fileset=fileset_top
        fusesoc_core=lowrisc:dv:chip_verilator_sim
        vname=Vchip_sim_tb
        verilator_options="--threads 4"
        ;;
    englishbreakfast)
        fileset=fileset_topgen
        fusesoc_core=lowrisc:systems:chip_englishbreakfast_verilator
        vname=Vchip_englishbreakfast_verilator
        # Englishbreakfast on CI runs on a 2-core CPU
        verilator_options="--threads 2"

        util/topgen-fusesoc.py --files-root=. --topname=top_englishbreakfast
        ;;
    *)
        echo >&2 "Unknown toplevel: $tl"
        exit 1
esac

# Move to project root
cd "$(git rev-parse --show-toplevel)"

. util/build_consts.sh

set -x

mkdir -p "$OBJ_DIR/hw"
mkdir -p "$BIN_DIR/hw/top_${tl}"

fusesoc --cores-root=. \
  run --flag=$fileset --target=sim --setup --build \
  --build-root="$OBJ_DIR/hw" \
  $fusesoc_core \
  --verilator_options="${verilator_options}"

cp "$OBJ_DIR/hw/sim-verilator/${vname}" \
   "$BIN_DIR/hw/top_${tl}/Vchip_${tl}_verilator"
