summaryrefslogtreecommitdiff
path: root/backends/smt2
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-10-14 00:37:41 +0200
committerClifford Wolf <clifford@clifford.at>2015-10-14 00:47:04 +0200
commit821f1b85343dab5105c55ce688ed2180c69bec54 (patch)
tree73a068cecff0cec14987847d86ba5974f50afe55 /backends/smt2
parent7bcd2a4bb3592e8a472fb63e4cd1cc47cdc50de4 (diff)
Added yosys-smtbmc
Diffstat (limited to 'backends/smt2')
-rw-r--r--backends/smt2/Makefile.inc14
-rw-r--r--backends/smt2/smtbmc.py7
2 files changed, 20 insertions, 1 deletions
diff --git a/backends/smt2/Makefile.inc b/backends/smt2/Makefile.inc
index 4e0a393a..65cb6e3d 100644
--- a/backends/smt2/Makefile.inc
+++ b/backends/smt2/Makefile.inc
@@ -1,3 +1,17 @@
OBJS += backends/smt2/smt2.o
+ifneq ($(CONFIG),mxe)
+ifneq ($(CONFIG),emcc)
+TARGETS += yosys-smtbmc
+
+yosys-smtbmc:
+ $(P) sed '3 { p; s|.*|sys.path += [os.path.dirname(__file__) + p for p in ["/share/python3", "/../share/yosys/python3"]]|; }' \
+ < backends/smt2/smtbmc.py > yosys-smtbmc.new
+ $(Q) chmod +x yosys-smtbmc.new
+ $(Q) mv yosys-smtbmc.new yosys-smtbmc
+
+$(eval $(call add_share_file,share/python3,backends/smt2/smtio.py))
+endif
+endif
+
diff --git a/backends/smt2/smtbmc.py b/backends/smt2/smtbmc.py
index 80c2c3cf..f6b6efdc 100644
--- a/backends/smt2/smtbmc.py
+++ b/backends/smt2/smtbmc.py
@@ -13,13 +13,15 @@ so = smtopts()
def usage():
print("""
-python3 smtbmc.py [options] <yosys_smt2_output>
+yosys-smtbmc [options] <yosys_smt2_output>
-t <max_steps>
default: 20
-c <vcd_filename>
write counter-example to this VCD file
+ (hint: use 'write_smt2 -wires' for maximum
+ coverage of signals in generated VCD file)
-i <min_steps>
instead of BMC run temporal induction
@@ -43,6 +45,8 @@ for o, a in opts:
elif o == "-i":
tempind = True
min_steps = int(a)
+ elif o == "-m":
+ topmod = a
elif so.handle(o, a):
pass
else:
@@ -112,6 +116,7 @@ if tempind:
print("%s PASSED." % smt.timestamp())
break
+
else: # not tempind
for step in range(max_steps+1):
smt.write("(declare-fun s%d () %s_s)" % (step, topmod))