mirror of
				https://github.com/YosysHQ/sby.git
				synced 2025-11-04 06:39:11 +00:00 
			
		
		
		
	Add "mode live" support
This commit is contained in:
		
							parent
							
								
									6e03f1d895
								
							
						
					
					
						commit
						774849a6ed
					
				
					 3 changed files with 54 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -330,6 +330,13 @@ class SbyJob:
 | 
			
		|||
                print("# running in %s/src/" % self.workdir, file=f)
 | 
			
		||||
                for cmd in self.script:
 | 
			
		||||
                    print(cmd, file=f)
 | 
			
		||||
                if self.opt_mode in ["bmc", "prove"]:
 | 
			
		||||
                    print("chformal -live -fair -cover -remove", file=f)
 | 
			
		||||
                if self.opt_mode == "cover":
 | 
			
		||||
                    print("chformal -live -fair -remove", file=f)
 | 
			
		||||
                if self.opt_mode == "live":
 | 
			
		||||
                    print("chformal -assert2assume", file=f)
 | 
			
		||||
                    print("chformal -cover -remove", file=f)
 | 
			
		||||
                print("opt_clean", file=f)
 | 
			
		||||
                print("write_ilang ../model/design.il", file=f)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -422,7 +429,7 @@ class SbyJob:
 | 
			
		|||
 | 
			
		||||
    def run(self):
 | 
			
		||||
        self.handle_str_option("mode", None)
 | 
			
		||||
        assert self.opt_mode in ["bmc", "prove", "cover"]
 | 
			
		||||
        assert self.opt_mode in ["bmc", "prove", "cover", "live"]
 | 
			
		||||
 | 
			
		||||
        self.expect = ["PASS"]
 | 
			
		||||
        if "expect" in self.options:
 | 
			
		||||
| 
						 | 
				
			
			@ -451,6 +458,10 @@ class SbyJob:
 | 
			
		|||
            import sby_mode_prove
 | 
			
		||||
            sby_mode_prove.run(self)
 | 
			
		||||
 | 
			
		||||
        elif self.opt_mode == "live":
 | 
			
		||||
            import sby_mode_live
 | 
			
		||||
            sby_mode_live.run(self)
 | 
			
		||||
 | 
			
		||||
        elif self.opt_mode == "cover":
 | 
			
		||||
            import sby_mode_cover
 | 
			
		||||
            sby_mode_cover.run(self)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,8 @@ def run(mode, job, engine_idx, engine):
 | 
			
		|||
        assert False
 | 
			
		||||
 | 
			
		||||
    if solver_args[0] == "suprove":
 | 
			
		||||
        if mode == "live" and (len(solver_args) == 1 or solver_args[1][0] != "+"):
 | 
			
		||||
            solver_args.insert(1, "+simple_liveness")
 | 
			
		||||
        solver_cmd = " ".join([job.exe_paths["suprove"]] + solver_args[1:])
 | 
			
		||||
 | 
			
		||||
    elif solver_args[0] == "avy":
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										40
									
								
								sbysrc/sby_mode_live.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								sbysrc/sby_mode_live.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
#
 | 
			
		||||
# SymbiYosys (sby) -- Front-end for Yosys-based formal verification flows
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2016  Clifford Wolf <clifford@clifford.at>
 | 
			
		||||
#
 | 
			
		||||
# Permission to use, copy, modify, and/or distribute this software for any
 | 
			
		||||
# purpose with or without fee is hereby granted, provided that the above
 | 
			
		||||
# copyright notice and this permission notice appear in all copies.
 | 
			
		||||
#
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 | 
			
		||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 | 
			
		||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 | 
			
		||||
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | 
			
		||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 | 
			
		||||
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 | 
			
		||||
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
import re, os, getopt
 | 
			
		||||
from sby_core import SbyTask
 | 
			
		||||
 | 
			
		||||
def run(job):
 | 
			
		||||
    job.handle_str_option("aigsmt", "z3")
 | 
			
		||||
 | 
			
		||||
    job.status = "UNKNOWN"
 | 
			
		||||
 | 
			
		||||
    for engine_idx in range(len(job.engines)):
 | 
			
		||||
        engine = job.engines[engine_idx]
 | 
			
		||||
        assert len(engine) > 0
 | 
			
		||||
 | 
			
		||||
        job.log("engine_%d: %s" % (engine_idx, " ".join(engine)))
 | 
			
		||||
        os.makedirs("%s/engine_%d" % (job.workdir, engine_idx))
 | 
			
		||||
 | 
			
		||||
        if engine[0] == "aiger":
 | 
			
		||||
            import sby_engine_aiger
 | 
			
		||||
            sby_engine_aiger.run("live", job, engine_idx, engine)
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
            assert False
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue