It seems that small changes can dramatically affect the speed of the
default solver (yices2), while z3 is unaffected.
Let's use the one that gives the best results.
if msg is not None:
self.assertEqual(str(warns[0].message), msg)
- def assertFormal(self, spec, mode="bmc", depth=1):
+ def assertFormal(self, spec, mode="bmc", depth=1, solver=""):
caller, *_ = traceback.extract_stack(limit=2)
spec_root, _ = os.path.splitext(caller.filename)
spec_dir = os.path.dirname(spec_root)
wait on
[engines]
- smtbmc
+ smtbmc {solver}
[script]
read_ilang top.il
""").format(
mode=mode,
depth=depth,
+ solver=solver,
script=script,
rtlil=rtlil.convert(Fragment.get(spec, platform="formal"))
)