diff --git a/sbysrc/sby_core.py b/sbysrc/sby_core.py index 76812ae..0ce0970 100644 --- a/sbysrc/sby_core.py +++ b/sbysrc/sby_core.py @@ -443,7 +443,7 @@ class SbyConfig: if mode == "setup": _valid_options = ( - "cutpoint", "disable", "enable", "assume", "define" + "cutpoint", "disable", "enable", "assume", "define", "invoke" ) args = line.strip().split(maxsplit = 1) @@ -546,6 +546,41 @@ class SbyConfig: def error(self, logmessage): raise SbyAbort(logmessage) + def gen_setup_script(self): + script = '# Autogenerated by SBY stage setup\n' + + def cutpoint(v): + return f"cutpoint {v}" + + def disable(v): + return f"select -del {v}" + + def enable(v): + return f"select -add {v}" + + def assume(v): + return f"chformal -assert2assume {v}" + + def define(v): + return f"select -set {v}" + + def invoke(v): + return f"{v}" + + for k, v in self.setup.items(): + script += { + 'cutpoint': cutpoint(v), + 'disable': disable(v), + 'enable': enable(v), + 'assume': assume(v), + 'define': define(v), + 'invoke': invoke(v) + }.get(k, '') + '\n' + + # TODO: Invert selection, then `chformal -assert -remove` + + return script + class SbyTaskloop: def __init__(self, jobclient=None):