fix(tb): fix run_tb.sh TCL variable extraction
Convert TCL 'set VAR path' to bash VAR=path before executing xvlog/xelab/xsim commands extracted from xsim_run.tcl files.
This commit is contained in:
39
run_tb.sh
39
run_tb.sh
@@ -57,26 +57,27 @@ echo "========================================"
|
|||||||
echo " Running testbench for: $MODULE"
|
echo " Running testbench for: $MODULE"
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
|
|
||||||
# Run xvlog + xelab + xsim commands directly (not via vivado batch)
|
# Save TCL variables as bash variables, run commands with substitution
|
||||||
# Extract and execute xvlog, xelab, xsim lines from the TCL
|
execute_tcl() {
|
||||||
grep -E '^xvlog ' "$TCL_FILE" | while read -r cmd; do
|
local tcl_file="$1"
|
||||||
if [[ "$cmd" != \#* ]]; then
|
local tmp_script="/tmp/run_tb_$$.sh"
|
||||||
echo " $cmd"
|
|
||||||
eval "$cmd" 2>&1 | grep -E "ERROR|WARNING|analyzing|Compiling|Built" || true
|
# Convert TCL 'set VAR value' to bash 'VAR=value'
|
||||||
fi
|
{
|
||||||
|
grep -E '^set [A-Z_]+ ' "$tcl_file" | while read -r _ var value; do
|
||||||
|
echo "${var}=${value}"
|
||||||
done
|
done
|
||||||
|
|
||||||
grep -E '^xelab ' "$TCL_FILE" | while read -r cmd; do
|
# Extract xvlog, xelab, xsim commands with bash variable expansion
|
||||||
if [[ "$cmd" != \#* ]]; then
|
grep -E '^(xvlog|xelab|xsim) ' "$tcl_file" | while read -r cmd; do
|
||||||
echo " $cmd"
|
printf 'echo " %s"\n' "$cmd"
|
||||||
eval "$cmd" 2>&1 | grep -E "ERROR|WARNING|Compiling|Built" || true
|
printf '%s 2>&1\n' "$cmd"
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
} > "$tmp_script"
|
||||||
|
|
||||||
echo ""
|
chmod +x "$tmp_script"
|
||||||
echo "--- Running simulation ---"
|
. "$tmp_script"
|
||||||
grep -E '^xsim ' "$TCL_FILE" | while read -r cmd; do
|
rm -f "$tmp_script"
|
||||||
if [[ "$cmd" != \#* ]]; then
|
}
|
||||||
eval "$cmd" 2>&1
|
|
||||||
fi
|
execute_tcl "$TCL_FILE"
|
||||||
done
|
|
||||||
|
|||||||
Reference in New Issue
Block a user