|
| 1 | +#!/bin/bash |
| 2 | +set -e |
| 3 | + |
| 4 | +if [[ -z "$1" ]]; then |
| 5 | + echo "Usage: $0 <test-directory>" |
| 6 | + exit 1 |
| 7 | +fi |
| 8 | + |
| 9 | +REPO_DIR=$(dirname $(cd $(dirname $0) && pwd)) |
| 10 | +TEST_DIR="$REPO_DIR/tests/uvm-cookbook/$1" |
| 11 | +TEST_CONFIG="$TEST_DIR/test_config.sh" |
| 12 | + |
| 13 | +if [[ ! -f "$TEST_CONFIG" ]]; then |
| 14 | + echo "Error: test_config.sh not found in $TEST_DIR" |
| 15 | + exit 1 |
| 16 | +fi |
| 17 | + |
| 18 | +# Setup configs |
| 19 | +GLOBAL_DISABLED_WARNINGS="\ |
| 20 | + -Wno-ZERODLY \ |
| 21 | + -Wno-SYMRSVDWORD \ |
| 22 | + -Wno-style \ |
| 23 | + -Wno-SIDEEFFECT \ |
| 24 | + -Wno-NONSTD \ |
| 25 | + -Wno-MULTITOP \ |
| 26 | + -Wno-lint \ |
| 27 | + -Wno-LATCH \ |
| 28 | + -Wno-CONSTRAINTIGN \ |
| 29 | + -Wno-REDEFMACRO \ |
| 30 | + -Wno-INITIALDLY \ |
| 31 | + -Wno-BLKANDNBLK \ |
| 32 | + -Wno-TIMESCALEMOD \ |
| 33 | + -Wno-COVERIGN" |
| 34 | + |
| 35 | +GLOBAL_VERILATOR_FLAGS="\ |
| 36 | + --binary \ |
| 37 | + --Mdir verilator_obj_dir \ |
| 38 | + --error-limit 15 \ |
| 39 | + -j $(nproc) \ |
| 40 | + -DSEQUENCER_WORKAROUND \ |
| 41 | + -DADD_ATTRIBUTE_WORKAROUND \ |
| 42 | + +define+UVM_NO_DPI \ |
| 43 | + +incdir+$UVM_HOME \ |
| 44 | + $UVM_HOME/uvm_pkg.sv" |
| 45 | + |
| 46 | +# Default number of simulation runs |
| 47 | +SIM_ITERATIONS=1 |
| 48 | + |
| 49 | +source "$TEST_CONFIG" |
| 50 | +TEST_DIR="$REPO_DIR/third-party/uvm-examples/ref_uvc_design/uvm_code_examples/$TEST_NAME" |
| 51 | + |
| 52 | +# Compose flags |
| 53 | +DISABLED_WARNINGS="$GLOBAL_DISABLED_WARNINGS $TEST_DISABLED_WARNINGS" |
| 54 | +VERILATOR_FLAGS="$GLOBAL_VERILATOR_FLAGS $TEST_VERILATOR_FLAGS" |
| 55 | + |
| 56 | +echo "Running test: $TEST_NAME" |
| 57 | +echo " iterations: $SIM_ITERATIONS" |
| 58 | + |
| 59 | +pushd "$TEST_DIR" >/dev/null |
| 60 | + |
| 61 | +# Compile |
| 62 | +$VERILATOR \ |
| 63 | + $VERILATOR_FLAGS \ |
| 64 | + $DISABLED_WARNINGS \ |
| 65 | + $SRC_FILES |
| 66 | + |
| 67 | +# Run simulation (possibly multiple times) |
| 68 | +if ((SIM_ITERATIONS <= 1)); then |
| 69 | + args="${SIM_ARGS:-${SIM_ARGS_1:-}}" |
| 70 | + echo " sim run #1 args: '$args'" |
| 71 | + ./verilator_obj_dir/Vuvm_pkg $args |
| 72 | +else |
| 73 | + for ((i = 1; i <= SIM_ITERATIONS; i++)); do |
| 74 | + var="SIM_ARGS_$i" |
| 75 | + args="${!var}" |
| 76 | + echo " sim run #$i args: '$args'" |
| 77 | + ./verilator_obj_dir/Vuvm_pkg $args |
| 78 | + done |
| 79 | +fi |
| 80 | + |
| 81 | +popd >/dev/null |
0 commit comments