64f0da6d7393b662c56c6fc1a13a7369d2f7131f
[yosys.git] / tests / xsthammer / run-check.sh
1 #!/bin/bash
2
3 use_vivado=false
4 checkdir="check"
5
6 if [ "$1" = "-vivado" ]; then
7 use_vivado=true
8 checkdir="check_vivado"
9 shift
10 fi
11
12 if [ $# -eq 0 ]; then
13 echo "Usage: $0 <job_id>" >&2
14 exit 1
15 fi
16
17 job="$1"
18 set --
19
20 set -e
21 mkdir -p $checkdir check_temp/$job
22 cd check_temp/$job
23
24 {
25 echo "module ${job}_top(a, b, y_rtl, y_xst);"
26 sed -r '/^(input|output) / !d; /output/ { s/ y;/ y_rtl;/; p; }; s/ y_rtl;/ y_xst;/;' ../../rtl/$job.v
27 echo "${job}_rtl rtl_variant (.a(a), .b(b), .y(y_rtl));"
28 echo "${job}_xst xst_variant (.a(a), .b(b), .y(y_xst));"
29 echo "endmodule"
30 } > ${job}_top.v
31
32 for mode in nomap techmap; do
33 {
34 if $use_vivado; then
35 echo "read_verilog ../../vivado/$job.v"
36 else
37 echo "read_verilog -DGLBL ../../xst/$job.v"
38 fi
39 echo "rename $job ${job}_xst"
40
41 echo "read_verilog ../../rtl/$job.v"
42 echo "rename $job ${job}_rtl"
43 if [ $mode = techmap ]; then
44 echo "techmap ${job}_rtl"
45 fi
46
47 echo "read_verilog ${job}_top.v"
48 echo "read_verilog ../../xl_cells.v"
49
50 echo "hierarchy -top ${job}_top"
51 echo "flatten ${job}_xst"
52 echo "flatten ${job}_rtl"
53 echo "flatten ${job}_top"
54 echo "opt_clean"
55
56 echo "rename ${job}_xst ${job}_xst_${mode}"
57 echo "rename ${job}_rtl ${job}_rtl_${mode}"
58 echo "rename ${job}_top ${job}_top_${mode}"
59 echo "dump -outfile ${job}_top_${mode}.il ${job}_xst_${mode} ${job}_rtl_${mode} ${job}_top_${mode}"
60 } > ${job}_top_${mode}.ys
61 ../../../../yosys -q ${job}_top_${mode}.ys
62 done
63
64 {
65 echo "read_ilang ${job}_top_nomap.il"
66 echo "read_ilang ${job}_top_techmap.il"
67 echo "sat -timeout 60 -verify-no-timeout -show a,b,y_rtl,y_xst -prove y_rtl y_xst ${job}_top_nomap"
68 echo "sat -timeout 60 -verify-no-timeout -show a,b,y_rtl,y_xst -prove y_rtl y_xst ${job}_top_techmap"
69 if [[ $job != expression_* ]]; then
70 echo "eval -brute_force_equiv_checker ${job}_rtl_nomap ${job}_xst_nomap"
71 echo "eval -brute_force_equiv_checker ${job}_rtl_techmap ${job}_xst_techmap"
72 fi
73 } > ${job}_cmp.ys
74
75 if ../../../../yosys -l ${job}.log ${job}_cmp.ys; then
76 mv ${job}.log ../../$checkdir/${job}.log
77 rm -f ../../$checkdir/${job}.err
78 touch ../../$checkdir/${job}.log
79 else
80 mv ${job}.log ../../$checkdir/${job}.err
81 rm -f ../../$checkdir/${job}.log
82 fi
83
84 exit 0
85