mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	Do not optimize away FFs in "prep" and Verific fron-end
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
This commit is contained in:
		
							parent
							
								
									9a2cf5e3db
								
							
						
					
					
						commit
						3c7122c378
					
				
					 3 changed files with 17 additions and 7 deletions
				
			
		| 
						 | 
					@ -2175,6 +2175,9 @@ struct VerificPass : public Pass {
 | 
				
			||||||
			RuntimeFlags::SetVar("vhdl_support_variable_slice", 1);
 | 
								RuntimeFlags::SetVar("vhdl_support_variable_slice", 1);
 | 
				
			||||||
			RuntimeFlags::SetVar("vhdl_ignore_assertion_statements", 0);
 | 
								RuntimeFlags::SetVar("vhdl_ignore_assertion_statements", 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								RuntimeFlags::SetVar("veri_preserve_assignments", 1);
 | 
				
			||||||
 | 
								RuntimeFlags::SetVar("vhdl_preserve_assignments", 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// Workaround for VIPER #13851
 | 
								// Workaround for VIPER #13851
 | 
				
			||||||
			RuntimeFlags::SetVar("veri_create_name_for_unnamed_gen_block", 1);
 | 
								RuntimeFlags::SetVar("veri_create_name_for_unnamed_gen_block", 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@ struct OptPass : public Pass {
 | 
				
			||||||
		log("        opt_reduce [-fine] [-full]\n");
 | 
							log("        opt_reduce [-fine] [-full]\n");
 | 
				
			||||||
		log("        opt_merge [-share_all]\n");
 | 
							log("        opt_merge [-share_all]\n");
 | 
				
			||||||
		log("        opt_share  (-full only)\n");
 | 
							log("        opt_share  (-full only)\n");
 | 
				
			||||||
		log("        opt_rmdff [-keepdc] [-sat]\n");
 | 
							log("        opt_rmdff [-keepdc] [-sat]  (except when called with -noff)\n");
 | 
				
			||||||
		log("        opt_clean [-purge]\n");
 | 
							log("        opt_clean [-purge]\n");
 | 
				
			||||||
		log("        opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n");
 | 
							log("        opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n");
 | 
				
			||||||
		log("    while <changed design>\n");
 | 
							log("    while <changed design>\n");
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ struct OptPass : public Pass {
 | 
				
			||||||
		log("    do\n");
 | 
							log("    do\n");
 | 
				
			||||||
		log("        opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n");
 | 
							log("        opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n");
 | 
				
			||||||
		log("        opt_merge [-share_all]\n");
 | 
							log("        opt_merge [-share_all]\n");
 | 
				
			||||||
		log("        opt_rmdff [-keepdc] [-sat]\n");
 | 
							log("        opt_rmdff [-keepdc] [-sat]  (except when called with -noff)\n");
 | 
				
			||||||
		log("        opt_clean [-purge]\n");
 | 
							log("        opt_clean [-purge]\n");
 | 
				
			||||||
		log("    while <changed design in opt_rmdff>\n");
 | 
							log("    while <changed design in opt_rmdff>\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
| 
						 | 
					@ -73,6 +73,7 @@ struct OptPass : public Pass {
 | 
				
			||||||
		std::string opt_rmdff_args;
 | 
							std::string opt_rmdff_args;
 | 
				
			||||||
		bool opt_share = false;
 | 
							bool opt_share = false;
 | 
				
			||||||
		bool fast_mode = false;
 | 
							bool fast_mode = false;
 | 
				
			||||||
 | 
							bool noff_mode = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		log_header(design, "Executing OPT pass (performing simple optimizations).\n");
 | 
							log_header(design, "Executing OPT pass (performing simple optimizations).\n");
 | 
				
			||||||
		log_push();
 | 
							log_push();
 | 
				
			||||||
| 
						 | 
					@ -127,6 +128,10 @@ struct OptPass : public Pass {
 | 
				
			||||||
				fast_mode = true;
 | 
									fast_mode = true;
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								if (args[argidx] == "-noff") {
 | 
				
			||||||
 | 
									noff_mode = true;
 | 
				
			||||||
 | 
									continue;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		extra_args(args, argidx, design);
 | 
							extra_args(args, argidx, design);
 | 
				
			||||||
| 
						 | 
					@ -137,6 +142,7 @@ struct OptPass : public Pass {
 | 
				
			||||||
				Pass::call(design, "opt_expr" + opt_expr_args);
 | 
									Pass::call(design, "opt_expr" + opt_expr_args);
 | 
				
			||||||
				Pass::call(design, "opt_merge" + opt_merge_args);
 | 
									Pass::call(design, "opt_merge" + opt_merge_args);
 | 
				
			||||||
				design->scratchpad_unset("opt.did_something");
 | 
									design->scratchpad_unset("opt.did_something");
 | 
				
			||||||
 | 
									if (!noff_mode)
 | 
				
			||||||
					Pass::call(design, "opt_rmdff" + opt_rmdff_args);
 | 
										Pass::call(design, "opt_rmdff" + opt_rmdff_args);
 | 
				
			||||||
				if (design->scratchpad_get_bool("opt.did_something") == false)
 | 
									if (design->scratchpad_get_bool("opt.did_something") == false)
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
| 
						 | 
					@ -156,6 +162,7 @@ struct OptPass : public Pass {
 | 
				
			||||||
				Pass::call(design, "opt_merge" + opt_merge_args);
 | 
									Pass::call(design, "opt_merge" + opt_merge_args);
 | 
				
			||||||
				if (opt_share)
 | 
									if (opt_share)
 | 
				
			||||||
					Pass::call(design, "opt_share");
 | 
										Pass::call(design, "opt_share");
 | 
				
			||||||
 | 
									if (!noff_mode)
 | 
				
			||||||
					Pass::call(design, "opt_rmdff" + opt_rmdff_args);
 | 
										Pass::call(design, "opt_rmdff" + opt_rmdff_args);
 | 
				
			||||||
				Pass::call(design, "opt_clean" + opt_clean_args);
 | 
									Pass::call(design, "opt_clean" + opt_clean_args);
 | 
				
			||||||
				Pass::call(design, "opt_expr" + opt_expr_args);
 | 
									Pass::call(design, "opt_expr" + opt_expr_args);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -192,7 +192,7 @@ struct PrepPass : public ScriptPass
 | 
				
			||||||
			run(nokeepdc ? "opt_expr" : "opt_expr -keepdc");
 | 
								run(nokeepdc ? "opt_expr" : "opt_expr -keepdc");
 | 
				
			||||||
			run("opt_clean");
 | 
								run("opt_clean");
 | 
				
			||||||
			run("check");
 | 
								run("check");
 | 
				
			||||||
			run(nokeepdc ? "opt" : "opt -keepdc");
 | 
								run(nokeepdc ? "opt -noff" : "opt -noff -keepdc");
 | 
				
			||||||
			if (!ifxmode) {
 | 
								if (!ifxmode) {
 | 
				
			||||||
				if (help_mode)
 | 
									if (help_mode)
 | 
				
			||||||
					run("wreduce -keepdc [-memx]");
 | 
										run("wreduce -keepdc [-memx]");
 | 
				
			||||||
| 
						 | 
					@ -208,7 +208,7 @@ struct PrepPass : public ScriptPass
 | 
				
			||||||
				run("opt_clean");
 | 
									run("opt_clean");
 | 
				
			||||||
				run("memory_collect");
 | 
									run("memory_collect");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			run(nokeepdc ? "opt -fast" : "opt -keepdc -fast");
 | 
								run(nokeepdc ? "opt -noff -fast" : "opt -noff -keepdc -fast");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (check_label("check"))
 | 
							if (check_label("check"))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue