fix(tb): fix Vivado 2019.2 compatibility and add run_tb.sh
- Replace -include_dirs . with -i . (Vivado 2019.2 syntax)
- Add --timescale 1ns/1ps to all xelab commands
- Add LD_PRELOAD comment for ncurses compatibility
- Add run_tb.sh convenience script
Usage: ./run_tb.sh mod_add
./run_tb.sh --list
- Update spec with Vivado 2019.2 compatibility notes
This commit is contained in:
82
run_tb.sh
Executable file
82
run_tb.sh
Executable file
@@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
# run_tb.sh - Run Vivado XSIM testbench for a module
|
||||
#
|
||||
# Usage: ./run_tb.sh <module>
|
||||
# ./run_tb.sh mod_add
|
||||
# ./run_tb.sh --list
|
||||
#
|
||||
# Prerequisites:
|
||||
# Vivado 2019.2 at /opt/Xilinx/Vivado/2019.2/
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
VIVADO_SETTINGS="/opt/Xilinx/Vivado/2019.2/settings64.sh"
|
||||
|
||||
if [ "$1" = "--list" ]; then
|
||||
echo "Available modules:"
|
||||
for d in "$SCRIPT_DIR"/sync_rtl/*/TB; do
|
||||
if [ -f "$d/xsim_run.tcl" ]; then
|
||||
name=$(basename "$(dirname "$d")")
|
||||
echo " $name"
|
||||
fi
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <module_name>"
|
||||
echo " $0 --list"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
MODULE="$1"
|
||||
TB_DIR="$SCRIPT_DIR/sync_rtl/$MODULE/TB"
|
||||
TCL_FILE="$TB_DIR/xsim_run.tcl"
|
||||
|
||||
if [ ! -f "$TCL_FILE" ]; then
|
||||
echo "ERROR: No xsim_run.tcl found for module '$MODULE'"
|
||||
echo " Expected: $TCL_FILE"
|
||||
echo " Run '$0 --list' to see available modules"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Source Vivado environment
|
||||
if [ -f "$VIVADO_SETTINGS" ]; then
|
||||
source "$VIVADO_SETTINGS"
|
||||
else
|
||||
echo "ERROR: Vivado settings not found at $VIVADO_SETTINGS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Fix ncurses compatibility for Vivado 2019.2 on modern Linux
|
||||
export LD_PRELOAD="${LD_PRELOAD}${LD_PRELOAD:+:}/usr/lib64/libtinfo.so.5"
|
||||
|
||||
cd "$SCRIPT_DIR"
|
||||
echo "========================================"
|
||||
echo " Running testbench for: $MODULE"
|
||||
echo "========================================"
|
||||
|
||||
# Run xvlog + xelab + xsim commands directly (not via vivado batch)
|
||||
# Extract and execute xvlog, xelab, xsim lines from the TCL
|
||||
grep -E '^xvlog ' "$TCL_FILE" | while read -r cmd; do
|
||||
if [[ "$cmd" != \#* ]]; then
|
||||
echo " $cmd"
|
||||
eval "$cmd" 2>&1 | grep -E "ERROR|WARNING|analyzing|Compiling|Built" || true
|
||||
fi
|
||||
done
|
||||
|
||||
grep -E '^xelab ' "$TCL_FILE" | while read -r cmd; do
|
||||
if [[ "$cmd" != \#* ]]; then
|
||||
echo " $cmd"
|
||||
eval "$cmd" 2>&1 | grep -E "ERROR|WARNING|Compiling|Built" || true
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "--- Running simulation ---"
|
||||
grep -E '^xsim ' "$TCL_FILE" | while read -r cmd; do
|
||||
if [[ "$cmd" != \#* ]]; then
|
||||
eval "$cmd" 2>&1
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user