|
| 1 | +#!/bin/bash |
| 2 | +set -e |
| 3 | + |
| 4 | +if [[ -z "${UVM_COOKBOOK}" ]]; then |
| 5 | + echo "Error: UVM_COOKBOOK environment variable is not set." |
| 6 | + echo "Set it to point to the directory containing UVM Cookbook examples." |
| 7 | +fi |
| 8 | + |
| 9 | +if [[ -z "$1" ]]; then |
| 10 | + echo "Usage: $0 <test-directory>" |
| 11 | + exit 1 |
| 12 | +fi |
| 13 | + |
| 14 | +REPO_DIR=$(dirname $(cd $(dirname $0) && pwd)) |
| 15 | +TEST_DIR="$REPO_DIR/tests/uvm-cookbook/$1" |
| 16 | +TEST_CONFIG="$TEST_DIR/test_config.sh" |
| 17 | +UVM_DIR="$REPO_DIR/third-party/uvm-2017/src" |
| 18 | +UVM_DIR_1_2="$REPO_DIR/third-party/uvm-1.2/src" |
| 19 | +export VERILATOR_ROOT="$REPO_DIR/$2" |
| 20 | +export PATH="$VERILATOR_ROOT/bin:$PATH" |
| 21 | + |
| 22 | +if [[ ! -f "$TEST_CONFIG" ]]; then |
| 23 | + echo "Error: test_config.sh not found in $TEST_DIR" |
| 24 | + exit 1 |
| 25 | +fi |
| 26 | + |
| 27 | +# Setup configs |
| 28 | +GLOBAL_DISABLED_WARNINGS="\ |
| 29 | + -Wno-ZERODLY \ |
| 30 | + -Wno-SYMRSVDWORD \ |
| 31 | + -Wno-style \ |
| 32 | + -Wno-SIDEEFFECT \ |
| 33 | + -Wno-NONSTD \ |
| 34 | + -Wno-MULTITOP \ |
| 35 | + -Wno-lint \ |
| 36 | + -Wno-LATCH \ |
| 37 | + -Wno-CONSTRAINTIGN \ |
| 38 | + -Wno-REDEFMACRO \ |
| 39 | + -Wno-INITIALDLY \ |
| 40 | + -Wno-IGNOREDRETURN \ |
| 41 | + -Wno-BLKANDNBLK \ |
| 42 | + -Wno-TIMESCALEMOD \ |
| 43 | + -Wno-COVERIGN" |
| 44 | + |
| 45 | +GLOBAL_VERILATOR_FLAGS="\ |
| 46 | + --binary \ |
| 47 | + --Mdir verilator_obj_dir \ |
| 48 | + --error-limit 15 \ |
| 49 | + -j $(nproc) \ |
| 50 | + +define+UVM_NO_DPI \ |
| 51 | + +incdir+$UVM_DIR \ |
| 52 | + $UVM_DIR/uvm_pkg.sv" |
| 53 | + |
| 54 | +source "$TEST_CONFIG" |
| 55 | +TEST_DIR="$REPO_DIR/third-party/$UVM_COOKBOOK/uvm_code_examples/$TEST_NAME" |
| 56 | + |
| 57 | +# Compose flags |
| 58 | +DISABLED_WARNINGS="$GLOBAL_DISABLED_WARNINGS $TEST_DISABLED_WARNINGS" |
| 59 | +VERILATOR_FLAGS="$GLOBAL_VERILATOR_FLAGS $TEST_VERILATOR_FLAGS" |
| 60 | + |
| 61 | +echo "Running test: $TEST_NAME" |
| 62 | + |
| 63 | +pushd "$TEST_DIR" >/dev/null |
| 64 | + |
| 65 | +# Compile |
| 66 | +verilator \ |
| 67 | + $VERILATOR_FLAGS \ |
| 68 | + $DISABLED_WARNINGS \ |
| 69 | + $SRC_FILES |
| 70 | + |
| 71 | +# Run simulation |
| 72 | +args="${SIM_ARGS:-${SIM_ARGS_1:-}}" |
| 73 | +echo " sim run #1 args: '$args'" |
| 74 | +TEMPFILE=$(mktemp) |
| 75 | +./verilator_obj_dir/Vuvm_pkg $args | tee $TEMPFILE |
| 76 | +grep "TEST PASSED" $TEMPFILE -q |
| 77 | + |
| 78 | +popd >/dev/null |
0 commit comments