3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-03-01 19:26:55 +00:00
yosys/tests/symfpu/run-test.sh
Krystine Sherwin 1629c2bd3d
tests/symfpu: Add cover checks
Include mask/map for abc inputs (and switch to `anyconst` instead of `anyseq`).
Add false divide check for mantissa.
Covers aren't currently being tested by anything (and have to be removed for `sat`), but I've been using it locally with SBY to confirm that the different edge cases are able to be verified (e.g. when verifying HardFloat against symfpu while using the masked inputs to reduce solver time).
2026-02-20 13:56:17 +13:00

45 lines
855 B
Bash
Executable file

#!/usr/bin/env bash
set -eu
source ../gen-tests-makefile.sh
rm -f *_edges.*
prove_rm() {
op=$1
rm=$2
defs=$3
ys_file=${op}_${rm}_edges.ys
echo "symfpu -op $op -rm $rm" > $ys_file
if [[ $rm != "DYN" ]] then
echo "sat -prove-asserts -verify" >> $ys_file
fi
echo """\
chformal -remove
opt
read_verilog -sv -formal $defs -D${rm} edges.sv
chformal -remove -cover
chformal -lower
prep -top edges -flatten
sat -set-assumes -prove-asserts -verify
""" >> $ys_file
}
prove_op() {
op=$1
defs=$2
rms="RNE RNA RTP RTN RTZ DYN"
for rm in $rms; do
prove_rm $op $rm "$defs"
done
}
prove_op sqrt "-DSQRT"
prove_op add "-DADD -DADDSUB -DADDS"
prove_op sub "-DSUB -DADDSUB -DADDS"
prove_op mul "-DMUL -DMULS"
prove_op div "-DDIV"
prove_op muladd "-DMULADD -DMULS -DADDS"
generate_mk --yosys-scripts