fail svinterfaces testcases on yosys error exit
[yosys.git] / tests / vloghtb / common.sh
1 log_pass()
2 {
3 printf "%-15s %s %s %s\n" "$1" "$2" "`printf "%20s" "$2" | tr -d a-zA-Z0-9_ | tr ' ' .`" "pass."
4 }
5
6 log_fail()
7 {
8 printf "%-15s %s %s %s\n" "$1" "$2" "`printf "%20s" "$2" | tr -d a-zA-Z0-9_ | tr ' ' .`" "FAIL."
9 }
10
11 test_autotest()
12 {
13 # Usage:
14 # test_autotest <test_name> <synth_script> <mod_name> <vlog_file>
15
16 test_name="$1"
17 synth_cmd="$2"
18 mod_name="$3"
19 vlog_file="$4"
20
21 mkdir -p log_test_$test_name
22 rm -rf log_test_$test_name/$mod_name.*
23
24 ../../yosys -q -l log_test_$test_name/$mod_name.out -o log_test_$test_name/$mod_name.v -p "$synth_cmd" "$vlog_file"
25 cat spec/${mod_name}_spec.v scripts/check.v >> log_test_$test_name/$mod_name.v
26 iverilog -o log_test_$test_name/$mod_name.bin -D"REFDAT_FN=\"refdat/${mod_name}_refdat.txt\"" log_test_$test_name/$mod_name.v
27
28 if log_test_$test_name/$mod_name.bin 2>&1 | tee -a log_test_$test_name/$mod_name.out | grep -q '++OK++'; then
29 mv log_test_$test_name/$mod_name.out log_test_$test_name/$mod_name.txt
30 log_pass test_$test_name $mod_name
31 else
32 mv log_test_$test_name/$mod_name.out log_test_$test_name/$mod_name.err
33 log_fail test_$test_name $mod_name
34 exit 1
35 fi
36 }
37
38 test_equiv()
39 {
40 # Usage:
41 # test_equiv <test_name> <synth_script> <sat_options> <mod_name> <vlog_file>
42
43 mkdir -p log_test_$1
44 rm -f log_test_$1/$4.txt
45 rm -f log_test_$1/$4.err
46
47 if ! ../../yosys -q -l log_test_$1/$4.out - 2> /dev/null <<- EOT
48 read_verilog $5
49 proc;;
50
51 copy $4 gold
52 rename $4 work
53
54 cd work
55 $2
56 cd ..
57
58 miter -equiv -ignore_gold_x -make_outputs -make_outcmp gold work miter
59 flatten miter
60 sat $3 -verify -prove trigger 0 -show-inputs -show-outputs miter
61 EOT
62 then
63 log_fail test_$1 $4
64 mv log_test_$1/$4.out log_test_$1/$4.err
65 exit 1
66 fi
67
68 log_pass test_$1 $4
69 mv log_test_$1/$4.out log_test_$1/$4.txt
70 }
71
72 test_febe()
73 {
74 # Usage:
75 # test_febe <test_name> <synth_script> <extension> <backend> <frontend> <sat_options> <mod_name> <vlog_file>
76 # $1 $2 $3 $4 $5 $6 $7 $8
77
78 mkdir -p log_test_$1
79 rm -f log_test_$1/$7.txt
80 rm -f log_test_$1/$7.err
81
82 if ! ../../yosys -q -l log_test_$1/$7.out - 2> /dev/null <<- EOT
83 echo on
84 read_verilog $8
85 $2
86 design -save gold
87 dump
88 $4 log_test_$1/$7$3
89 design -reset
90 $5 log_test_$1/$7$3
91
92 design -copy-from gold -as gold $7
93 rename $7 gate
94
95 miter -equiv -flatten -ignore_gold_x -make_outputs -make_outcmp gold gate miter
96 sat $6 -verify -prove trigger 0 -show-inputs -show-outputs miter
97 EOT
98 then
99 log_fail test_$1 $7
100 mv log_test_$1/$7.out log_test_$1/$7.err
101 exit 1
102 fi
103
104 log_pass test_$1 $7
105 mv log_test_$1/$7.out log_test_$1/$7.txt
106 }