mirror of
				https://github.com/YosysHQ/sby.git
				synced 2025-10-31 04:52:30 +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) |                 print("# running in %s/src/" % self.workdir, file=f) | ||||||
|                 for cmd in self.script: |                 for cmd in self.script: | ||||||
|                     print(cmd, file=f) |                     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("opt_clean", file=f) | ||||||
|                 print("write_ilang ../model/design.il", file=f) |                 print("write_ilang ../model/design.il", file=f) | ||||||
| 
 | 
 | ||||||
|  | @ -422,7 +429,7 @@ class SbyJob: | ||||||
| 
 | 
 | ||||||
|     def run(self): |     def run(self): | ||||||
|         self.handle_str_option("mode", None) |         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"] |         self.expect = ["PASS"] | ||||||
|         if "expect" in self.options: |         if "expect" in self.options: | ||||||
|  | @ -451,6 +458,10 @@ class SbyJob: | ||||||
|             import sby_mode_prove |             import sby_mode_prove | ||||||
|             sby_mode_prove.run(self) |             sby_mode_prove.run(self) | ||||||
| 
 | 
 | ||||||
|  |         elif self.opt_mode == "live": | ||||||
|  |             import sby_mode_live | ||||||
|  |             sby_mode_live.run(self) | ||||||
|  | 
 | ||||||
|         elif self.opt_mode == "cover": |         elif self.opt_mode == "cover": | ||||||
|             import sby_mode_cover |             import sby_mode_cover | ||||||
|             sby_mode_cover.run(self) |             sby_mode_cover.run(self) | ||||||
|  |  | ||||||
|  | @ -27,6 +27,8 @@ def run(mode, job, engine_idx, engine): | ||||||
|         assert False |         assert False | ||||||
| 
 | 
 | ||||||
|     if solver_args[0] == "suprove": |     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:]) |         solver_cmd = " ".join([job.exe_paths["suprove"]] + solver_args[1:]) | ||||||
| 
 | 
 | ||||||
|     elif solver_args[0] == "avy": |     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