| #!/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" |
| make_options="-j 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" |
| make_options="-j 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}" \ |
| --make_options="${make_options}" |
| |
| cp "$OBJ_DIR/hw/sim-verilator/${vname}" \ |
| "$BIN_DIR/hw/top_${tl}/Vchip_${tl}_verilator" |