Fix "write_xaiger", and to write each box contents into holes
[yosys.git] / backends / smt2 / test_cells.sh
1 #!/bin/bash
2
3 set -ex
4
5 rm -rf test_cells
6 mkdir test_cells
7 cd test_cells
8
9 ../../../yosys -p 'test_cell -muxdiv -w test all /$alu /$macc /$fa /$lcu /$lut /$shift /$shiftx'
10
11 cat > miter.tpl <<- EOT
12 ; #model# (set-option :produce-models true)
13 (set-logic QF_UFBV)
14 %%
15 (declare-fun s () miter_s)
16 (assert (|miter_n trigger| s))
17 (check-sat)
18 ; #model# (get-value ((|miter_n in_A| s) (|miter_n in_B| s) (|miter_n gold_Y| s) (|miter_n gate_Y| s) (|miter_n trigger| s)))
19 EOT
20
21 for x in $(set +x; ls test_*.il | sort -R); do
22 x=${x%.il}
23 cat > $x.ys <<- EOT
24 read_ilang $x.il
25 copy gold gate
26
27 cd gate
28 techmap; opt; abc;;
29 cd ..
30
31 miter -equiv -flatten -make_outputs gold gate miter
32 hierarchy -check -top miter
33
34 dump
35 write_smt2 -bv -tpl miter.tpl $x.smt2
36 EOT
37 ../../../yosys -q $x.ys
38 if ! cvc4 $x.smt2 > $x.result; then
39 cat $x.result
40 exit 1
41 fi
42 if ! grep unsat $x.result; then
43 echo "Proof failed! Extracting model..."
44 sed -i 's/^; #model# //' $x.smt2
45 cvc4 $x.smt2
46 exit 1
47 fi
48 done
49
50 set +x
51 echo ""
52 echo " All tests passed."
53 echo ""
54 exit 0
55