aboutsummaryrefslogtreecommitdiffstats
path: root/tests/vloghtb/common.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vloghtb/common.sh')
-rw-r--r--tests/vloghtb/common.sh70
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/vloghtb/common.sh b/tests/vloghtb/common.sh
new file mode 100644
index 000000000..3965b04ca
--- /dev/null
+++ b/tests/vloghtb/common.sh
@@ -0,0 +1,70 @@
+log_pass()
+{
+ printf "%-15s %s %s %s\n" "$1" "$2" "`printf "%20s" "$2" | tr -d a-zA-Z0-9_ | tr ' ' .`" "pass."
+}
+
+log_fail()
+{
+ printf "%-15s %s %s %s\n" "$1" "$2" "`printf "%20s" "$2" | tr -d a-zA-Z0-9_ | tr ' ' .`" "FAIL."
+}
+
+test_autotest()
+{
+ # Usage:
+ # test_autotest <test_name> <synth_script> <mod_name> <vlog_file>
+
+ test_name="$1"
+ synth_cmd="$2"
+ mod_name="$3"
+ vlog_file="$4"
+
+ mkdir -p log_test_$test_name
+ rm -rf log_test_$test_name/$mod_name.*
+
+ ../../yosys -q -l log_test_$test_name/$mod_name.out -o log_test_$test_name/$mod_name.v -p "$synth_cmd" "$vlog_file"
+ cat spec/${mod_name}_spec.v scripts/check.v >> log_test_$test_name/$mod_name.v
+ iverilog -o log_test_$test_name/$mod_name.bin -D"REFDAT_FN=\"refdat/${mod_name}_refdat.txt\"" log_test_$test_name/$mod_name.v
+
+ if log_test_$test_name/$mod_name.bin 2>&1 | tee -a log_test_$test_name/$mod_name.out | grep -q '++OK++'; then
+ mv log_test_$test_name/$mod_name.out log_test_$test_name/$mod_name.txt
+ log_pass test_$test_name $mod_name
+ else
+ mv log_test_$test_name/$mod_name.out log_test_$test_name/$mod_name.err
+ log_fail test_$test_name $mod_name
+ exit 1
+ fi
+}
+
+test_equiv()
+{
+ # Usage:
+ # test_equiv <test_name> <synth_script> <sat_options> <mod_name> <vlog_file>
+
+ mkdir -p log_test_$1
+ rm -f log_test_$1/$4.txt
+ rm -f log_test_$1/$4.err
+
+ if ! ../../yosys -q -l log_test_$1/$4.out - 2> /dev/null <<- EOT
+ read_verilog $5
+ proc;;
+
+ copy $4 gold
+ rename $4 work
+
+ cd work
+ $2
+ cd ..
+
+ miter -equiv -ignore_gold_x -make_outputs -make_outcmp gold work miter
+ flatten miter
+ sat $3 -verify -prove trigger 0 -show-inputs -show-outputs miter
+ EOT
+ then
+ log_fail test_$1 $4
+ mv log_test_$1/$4.out log_test_$1/$4.err
+ exit 1
+ fi
+
+ log_pass test_$1 $4
+ mv log_test_$1/$4.out log_test_$1/$4.txt
+}