#!/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