| #!/bin/bash | |
| set -ex | |
| rm -rf test_cells.tmp | |
| mkdir -p test_cells.tmp | |
| cd test_cells.tmp | |
| # don't test $mul to reduce runtime | |
| # don't test $div and $mod to reduce runtime and avoid "div by zero" message | |
| ../../../yosys -p 'test_cell -n 5 -w test all /$alu /$fa /$lcu /$lut /$macc /$mul /$div /$mod' | |
| cat > template.txt << "EOT" | |
| %module main | |
| INVARSPEC ! bool(_trigger); | |
| EOT | |
| for fn in test_*.il; do | |
| ../../../yosys -p " | |
| read_ilang $fn | |
| rename gold gate | |
| synth | |
| read_ilang $fn | |
| miter -equiv -flatten gold gate main | |
| hierarchy -top main | |
| write_smv -tpl template.txt ${fn#.il}.smv | |
| " | |
| nuXmv -dynamic ${fn#.il}.smv > ${fn#.il}.out | |
| done | |
| grep '^-- invariant .* is false' *.out || echo 'All OK.' | |