yosys/tests/sva/runtest.sh

91 lines
1.6 KiB
Bash
Raw Normal View History

2023-08-11 20:59:39 -05:00
#!/usr/bin/env bash
set -e
2017-07-28 08:33:30 -05:00
prefix=${1%.ok}
prefix=${prefix%.sv}
prefix=${prefix%.vhd}
test -f $prefix.sv -o -f $prefix.vhd
generate_sby() {
cat <<- EOT
[options]
mode bmc
depth 10
expect $1
[engines]
smtbmc yices
[script]
EOT
2017-07-28 08:33:30 -05:00
if [ -f $prefix.sv ]; then
if [ "$1" = "fail" ]; then
2022-05-09 02:01:57 -05:00
echo "read -sv ${prefix}_fail.sv"
2017-07-28 08:33:30 -05:00
else
2022-05-09 02:01:57 -05:00
echo "read -sv $prefix.sv"
2017-07-28 08:33:30 -05:00
fi
fi
if [ -f $prefix.vhd ]; then
2022-05-09 02:01:57 -05:00
echo "read -vhdl $prefix.vhd"
fi
cat <<- EOT
prep -top top
chformal -early -assume
[files]
EOT
2017-07-28 08:33:30 -05:00
if [ -f $prefix.sv ]; then
echo "$prefix.sv"
fi
if [ -f $prefix.vhd ]; then
echo "$prefix.vhd"
fi
if [ "$1" = "fail" ]; then
cat <<- EOT
[file ${prefix}_fail.sv]
\`define FAIL
\`include "$prefix.sv"
EOT
fi
}
if [ -f $prefix.ys ]; then
set -x
$PWD/../../yosys -q -e "Assert .* failed." -s $prefix.ys
elif [ -f $prefix.sv ]; then
2017-07-28 08:33:30 -05:00
generate_sby pass > ${prefix}_pass.sby
generate_sby fail > ${prefix}_fail.sby
# Check that SBY is up to date enough for this yosys version
if sby --help | grep -q -e '--status'; then
set -x
sby --yosys $PWD/../../yosys -f ${prefix}_pass.sby
sby --yosys $PWD/../../yosys -f ${prefix}_fail.sby
else
echo "sva test '${prefix}' requires an up to date SBY, skipping"
fi
2017-07-28 08:33:30 -05:00
else
generate_sby pass > ${prefix}.sby
# Check that SBY is up to date enough for this yosys version
if sby --help | grep -q -e '--status'; then
set -x
sby --yosys $PWD/../../yosys -f ${prefix}.sby
else
echo "sva test '${prefix}' requires an up to date SBY, skipping"
fi
2017-07-28 08:33:30 -05:00
fi
{ set +x; } &>/dev/null
touch $prefix.ok