| #!/bin/bash |
| |
| set -ex |
| |
| yosys_bin="/usr/local/synthesis/src/yosys/yosys" |
| iverilog_bin="iverilog" |
| |
| all_modes="yosys hana vis icarus odin" |
| all_sources="always01 always02 always03 arrays01 forgen01 forgen02" |
| |
| gcc -o cmp_tbdata cmp_tbdata.c |
| |
| for src in $all_sources; do |
| echo; echo |
| $yosys_bin -o ${src}_tb.v -b autotest ${src}.v |
| $iverilog_bin -o ${src}_tb ${src}_tb.v ${src}.v |
| ./${src}_tb > ${src}_tb.out |
| for mode in $all_modes; do |
| simlib="" |
| [ -f ${src}_${mode}.v ] || continue |
| [ -f simlib_${mode}.v ] && simlib="simlib_${mode}.v" |
| if $iverilog_bin -o ${src}_${mode}_tb -s testbench ${src}_tb.v ${src}_${mode}.v $simlib; then |
| ./${src}_${mode}_tb > ${src}_${mode}_tb.out |
| else |
| rm -f ${src}_${mode}_tb.out |
| fi |
| done |
| done |
| |
| set +x |
| echo; echo; echo |
| |
| { |
| for mode in $all_modes; do |
| echo -en "\t$mode" |
| done; echo |
| |
| for src in $all_sources; do |
| echo -n "$src" |
| for mode in $all_modes; do |
| if [ -f ${src}_${mode}.v ]; then |
| if [ ! -s ${src}_${mode}_tb.out ]; then |
| echo -en "\tmissing" |
| elif ./cmp_tbdata ${src}_tb.out ${src}_${mode}_tb.out; then |
| echo -en "\tok" |
| else |
| echo -en "\tfailed" |
| fi |
| else |
| echo -en "\terror" |
| fi |
| done; echo |
| done |
| } | expand -t12 |
| |