JitMeas-verilog/sims/compile_design.sh
2024-11-28 17:12:50 +01:00

81 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
FILENAME=$1
BASENAME=`basename $1`
DUMPFILE=$BASENAME.vcd
PREPROCFILE=$BASENAME.preproc
OUTFILE=$BASENAME.out
echo "\n"
# modul nevének kinyerése
MODULENAME=$(grep -E "^module (.)+" "$FILENAME" | cut -d\; -f1 | awk '{print $2}')
echo "Module: '$MODULENAME'"
# szimulációban szerepeltetendő jelek kinyerése
SIMSIGNALS=$(grep -E '^([^/]+)( `s )' "$FILENAME" | sed 's/[#(;][.]*//' | awk '{print $NF}')
if [ "$SIMSIGNALS" ] # ha vannak kiválasztott jelek
then
VARSTODUMP=""
# szimulálandó jelek összeírása a $dumpvars-hoz
for SIGNAME in $SIMSIGNALS
do
if [ "$VARSTODUMP" ]
then
VARSTODUMP="$VARSTODUMP, $MODULENAME.$SIGNAME"
else
VARSTODUMP="$MODULENAME.$SIGNAME"
fi
done
echo "Signals to display: $VARSTODUMP"
else # ha nincsenek
echo "No signals marked explicitly to simulate. Dumping all."
VARSTODUMP=$MODULENAME
fi
# szimulációs kiírási sorrend kinyerése
SIGSORT=$(grep -E '^(//# )' "$FILENAME" | sed 's|//# ||' | sed 's/, /,/g')
if [ "$SIGSORT" ] # ha meg van adva lista, akkor TCL-scriptet generál belőle
then
TCLSCRIPT="gtkwave::deleteSignalsFromListIncludingDuplicates [ gtkwave::getDisplayedSignals ]\n\n"
for line in $SIGSORT # parancs generálása soronként
do
TCLSCRIPT="$TCLSCRIPT gtkwave::addSignalsFromList [split \"$line\" ,]\n"
done
TCLFILENAME="$BASENAME.tcl";
# TCL-script kimentése
echo "$TCLSCRIPT" > "sims/$TCLFILENAME"
echo "Signal sorting TCL-file saved in 'sims/$TCLFILENAME'"
fi
# $dumpvars(...) beírása a fájlba
sed "/initial begin/a \$dumpfile(\"$DUMPFILE\");\n \$dumpvars(0, $VARSTODUMP);" "$FILENAME" > "$PREPROCFILE"
echo "\n"
# Verilog-fájl fordítása
iverilog -Wall "$PREPROCFILE" -o "sims/$OUTFILE"
rm "$PREPROCFILE"
#cd sims
# szimuláció futtatása
vvp "sims/$OUTFILE"
mv $DUMPFILE "sims/$DUMPFILE"
#cd -