#!/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
        ;;
    englishbreakfast)
        fileset=fileset_topgen
        fusesoc_core=lowrisc:systems:chip_englishbreakfast_verilator
        vname=Vchip_englishbreakfast_verilator

        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="--threads 4"

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