| #!/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" |