#!/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 -