diff options
author | Clifford Wolf <clifford@clifford.at> | 2015-10-14 00:37:41 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2015-10-14 00:47:04 +0200 |
commit | 821f1b85343dab5105c55ce688ed2180c69bec54 (patch) | |
tree | 73a068cecff0cec14987847d86ba5974f50afe55 /backends/smt2 | |
parent | 7bcd2a4bb3592e8a472fb63e4cd1cc47cdc50de4 (diff) | |
download | yosys-821f1b85343dab5105c55ce688ed2180c69bec54.tar.gz yosys-821f1b85343dab5105c55ce688ed2180c69bec54.tar.bz2 yosys-821f1b85343dab5105c55ce688ed2180c69bec54.zip |
Added yosys-smtbmc
Diffstat (limited to 'backends/smt2')
-rw-r--r-- | backends/smt2/Makefile.inc | 14 | ||||
-rw-r--r-- | backends/smt2/smtbmc.py | 7 |
2 files changed, 20 insertions, 1 deletions
diff --git a/backends/smt2/Makefile.inc b/backends/smt2/Makefile.inc index 4e0a393a8..65cb6e3d5 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 80c2c3cf8..f6b6efdc0 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)) |