aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2019-11-05 15:07:56 +0000
committerYann Herklotz <git@yannherklotz.com>2019-11-05 15:07:56 +0000
commit32892b32d380e3e6f464e1030470ef8710a2a398 (patch)
tree99a7b9b376f426bedff6c9bb21545794539c9db7 /scripts
parentdbdea9bc47513b3643c981043c806647fdcf89b4 (diff)
downloadverismith-32892b32d380e3e6f464e1030470ef8710a2a398.tar.gz
verismith-32892b32d380e3e6f464e1030470ef8710a2a398.zip
Update reducer script
Diffstat (limited to 'scripts')
-rw-r--r--scripts/reducer.sh30
1 files changed, 22 insertions, 8 deletions
diff --git a/scripts/reducer.sh b/scripts/reducer.sh
index b09cecd..e79812d 100644
--- a/scripts/reducer.sh
+++ b/scripts/reducer.sh
@@ -2,35 +2,45 @@
for i in $(seq 0 100); do
echo "INFO: Run ${i}"
- dir="$(dirname "$(find /mnt/data/projects/verismith/runs/yosys_0.8/run_5 -name 'reduce*' -type f | shuf | uniq)")"
+ dir="$(dirname "$(find /mnt/data/projects/verismith/runs/yosys_0.8/run_5 -name 'reduce*' -type f | shuf | head -1)")"
dest="$(pwd)/run_${i}"
+ interesting="${dest}/creduce/interesting.sh"
+ vfile="${dest}/creduce/rtl.v"
+ orig="$(pwd)"
+
+ echo "INFO: Picked ${dir}"
cp -r $dir $dest
mkdir -p "${dest}/creduce"
if [[ -f "${dest}/reduce_yosys.v" ]]; then
echo "INFO: Detected crash"
- echo >"${dest}/creduce/interesting.sh" <<EOF
+ cat >$interesting <<EOF
/mnt/data/tools/yosys/constant/bin/yosys -q -p "read_verilog rtl.v; synth; write_verilog -noattr syn_yosys.v" >yosys.log 2>&1
grep "vector::_M_range_check:" yosys.log
-exit $?
+exit \$?
EOF
elif [[ -f "${dest}/reduce_identity_yosys.v" ]]; then
echo "INFO: Detected mis-synthesis"
- echo >"${dest}/creduce/interesting.sh" <<EOF
+ cat >$interesting <<EOF
#!/usr/bin/env bash
+grep -v -E '^[[:space:]]*reg[[:space:]].*=.*0.*;' rtl.v | grep '^[[:space:]]*reg[[:space:]].*[^,+-]*;'
+if [[ \$? -eq 0 ]]; then exit 1; fi
+
cp "${dest}/equiv_identity_yosys/top.v" .
cp "${dest}/equiv_identity_yosys/proof.sby" .
+sed -i 's:/home/vagrant/.cabal/store/ghc-8.6.5/verismith-0.4.0.1-[a-f0-9]*/share:/home/ymherklotz/projects/verismith:' proof.sby
+
/mnt/data/tools/yosys/constant/bin/yosys -q -p "read_verilog rtl.v; synth; write_verilog -noattr syn_yosys.v" >yosys1.log 2>&1 || exit 1
grep -v "Warning: Resizing cell port" yosys1.log >yosys.log
grep "Warning" yosys.log
-greturn=$?
-if [[ $greturn -eq 0 ]]; then exit 1; fi
+greturn=\$?
+if [[ \$greturn -eq 0 ]]; then exit 1; fi
sed -i -E 's/((module[0-9]+)|top)/\1_2/' syn_yosys.v
sed -E 's/((module[0-9]+)|top)/\1_1/' rtl.v >syn_identity.v
@@ -46,6 +56,10 @@ EOF
continue
fi
- cp "${dest}/identity/syn_identity.v" "${dest}/creduce/rtl.v"
- creduce --abs-timing --no-c "${dest}/creduce/interesting.sh" "${dest}/creduce/rtl.v"
+ cp "${dest}/identity/syn_identity.v" "$vfile"
+ chmod +x "$interesting"
+ cd "${dest}/creduce"
+ time creduce --abs-timing --no-c ./interesting.sh rtl.v >creduce.log
+ cd "${orig}"
+ echo "INFO: Done"
done