mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Added sat -verify and -falsify support for non-prove cases
This commit is contained in:
		
							parent
							
								
									cd06055e77
								
							
						
					
					
						commit
						e915043144
					
				
					 1 changed files with 26 additions and 14 deletions
				
			
		| 
						 | 
				
			
			@ -972,15 +972,9 @@ struct SatPass : public Pass {
 | 
			
		|||
		if (module == NULL) 
 | 
			
		||||
			log_cmd_error("Can't perform SAT on an empty selection!\n");
 | 
			
		||||
 | 
			
		||||
		if (!prove.size() && !prove_x.size() && !prove_asserts && (verify || falsify))
 | 
			
		||||
			log_cmd_error("Got -verify or -falsify but nothing to prove!\n");
 | 
			
		||||
 | 
			
		||||
		if (!prove.size() && !prove_x.size() && !prove_asserts && tempinduct)
 | 
			
		||||
			log_cmd_error("Got -tempinduct but nothing to prove!\n");
 | 
			
		||||
 | 
			
		||||
		if (seq_len == 0 && tempinduct)
 | 
			
		||||
			log_cmd_error("Got -tempinduct but no -seq argument!\n");
 | 
			
		||||
 | 
			
		||||
		if (set_def_inputs) {
 | 
			
		||||
			for (auto &it : module->wires)
 | 
			
		||||
				if (it.second->port_input)
 | 
			
		||||
| 
						 | 
				
			
			@ -1192,9 +1186,16 @@ struct SatPass : public Pass {
 | 
			
		|||
					goto rerun_solver;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (verify) {
 | 
			
		||||
					log("\n");
 | 
			
		||||
					log_error("Called with -verify and proof did fail!\n");
 | 
			
		||||
				if (!prove.size() && !prove_x.size() && !prove_asserts) {
 | 
			
		||||
					if (falsify) {
 | 
			
		||||
						log("\n");
 | 
			
		||||
						log_error("Called with -falsify and found a model!\n");
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					if (verify) {
 | 
			
		||||
						log("\n");
 | 
			
		||||
						log_error("Called with -verify and proof did fail!\n");
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
| 
						 | 
				
			
			@ -1203,9 +1204,13 @@ struct SatPass : public Pass {
 | 
			
		|||
					goto timeout;
 | 
			
		||||
				if (rerun_counter)
 | 
			
		||||
					log("SAT solving finished - no more models found (after %d distinct solutions).\n", rerun_counter);
 | 
			
		||||
				else if (!prove.size() && !prove_x.size() && !prove_asserts)
 | 
			
		||||
				else if (!prove.size() && !prove_x.size() && !prove_asserts) {
 | 
			
		||||
					log("SAT solving finished - no model found.\n");
 | 
			
		||||
				else {
 | 
			
		||||
					if (verify) {
 | 
			
		||||
						log("\n");
 | 
			
		||||
						log_error("Called with -verify and found no model!\n");
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					log("SAT proof finished - no model found: SUCCESS!\n");
 | 
			
		||||
					print_qed();
 | 
			
		||||
					if (falsify) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1215,9 +1220,16 @@ struct SatPass : public Pass {
 | 
			
		|||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (verify && rerun_counter) {
 | 
			
		||||
				log("\n");
 | 
			
		||||
				log_error("Called with -verify and proof did fail!\n");
 | 
			
		||||
			if (!prove.size() && !prove_x.size() && !prove_asserts) {
 | 
			
		||||
				if (falsify && rerun_counter) {
 | 
			
		||||
					log("\n");
 | 
			
		||||
					log_error("Called with -falsify and found a model!\n");
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				if (verify && rerun_counter) {
 | 
			
		||||
					log("\n");
 | 
			
		||||
					log_error("Called with -verify and proof did fail!\n");
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue