mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	smtbmc: recognize cvc5 and fix unrolling for cvc4/cvc5
This commit is contained in:
		
							parent
							
								
									d88a5d26b7
								
							
						
					
					
						commit
						0207d7b0cf
					
				
					 1 changed files with 13 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -123,6 +123,7 @@ class SmtIo:
 | 
			
		|||
        self.forall = False
 | 
			
		||||
        self.timeout = 0
 | 
			
		||||
        self.produce_models = True
 | 
			
		||||
        self.recheck = False
 | 
			
		||||
        self.smt2cache = [list()]
 | 
			
		||||
        self.smt2_options = dict()
 | 
			
		||||
        self.p = None
 | 
			
		||||
| 
						 | 
				
			
			@ -189,11 +190,12 @@ class SmtIo:
 | 
			
		|||
            if self.timeout != 0:
 | 
			
		||||
                self.popen_vargs.append('-T:%d' % self.timeout);
 | 
			
		||||
 | 
			
		||||
        if self.solver == "cvc4":
 | 
			
		||||
        if self.solver in ["cvc4", "cvc5"]:
 | 
			
		||||
            self.recheck = True
 | 
			
		||||
            if self.noincr:
 | 
			
		||||
                self.popen_vargs = ['cvc4', '--lang', 'smt2.6' if self.logic_dt else 'smt2'] + self.solver_opts
 | 
			
		||||
                self.popen_vargs = [self.solver, '--lang', 'smt2.6' if self.logic_dt else 'smt2'] + self.solver_opts
 | 
			
		||||
            else:
 | 
			
		||||
                self.popen_vargs = ['cvc4', '--incremental', '--lang', 'smt2.6' if self.logic_dt else 'smt2'] + self.solver_opts
 | 
			
		||||
                self.popen_vargs = [self.solver, '--incremental', '--lang', 'smt2.6' if self.logic_dt else 'smt2'] + self.solver_opts
 | 
			
		||||
            if self.timeout != 0:
 | 
			
		||||
                self.popen_vargs.append('--tlimit=%d000' % self.timeout);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -404,6 +406,8 @@ class SmtIo:
 | 
			
		|||
            stmt = re.sub(r" *;.*", "", stmt)
 | 
			
		||||
            if stmt == "": return
 | 
			
		||||
 | 
			
		||||
        recheck = None
 | 
			
		||||
 | 
			
		||||
        if unroll and self.unroll:
 | 
			
		||||
            stmt = self.unroll_buffer + stmt
 | 
			
		||||
            self.unroll_buffer = ""
 | 
			
		||||
| 
						 | 
				
			
			@ -415,6 +419,9 @@ class SmtIo:
 | 
			
		|||
 | 
			
		||||
            s = self.parse(stmt)
 | 
			
		||||
 | 
			
		||||
            if self.recheck and s and s[0].startswith("get-"):
 | 
			
		||||
                recheck = self.unroll_idcnt
 | 
			
		||||
 | 
			
		||||
            if self.debug_print:
 | 
			
		||||
                print("-> %s" % s)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -440,6 +447,9 @@ class SmtIo:
 | 
			
		|||
 | 
			
		||||
            stmt = self.unparse(self.unroll_stmt(s))
 | 
			
		||||
 | 
			
		||||
            if recheck is not None and recheck != self.unroll_idcnt:
 | 
			
		||||
                self.check_sat(["sat"])
 | 
			
		||||
 | 
			
		||||
            if stmt == "(push 1)":
 | 
			
		||||
                self.unroll_stack.append((
 | 
			
		||||
                    copy(self.unroll_sorts),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue