mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	abc9: tolerate ABC nonzero exit code if output.aig; write before &mfs
Re-enable mfs for xilinx/ecp5 speculatively -- if it fails, use pre-mfs result
This commit is contained in:
		
							parent
							
								
									a998a4155d
								
							
						
					
					
						commit
						3d7b983351
					
				
					 3 changed files with 13 additions and 6 deletions
				
			
		|  | @ -222,6 +222,13 @@ void abc9_module(RTLIL::Design *design, std::string script_file, std::string exe | ||||||
| 	if (design->scratchpad_get_bool("abc9.nomfs")) | 	if (design->scratchpad_get_bool("abc9.nomfs")) | ||||||
| 		for (size_t pos = abc9_script.find("&mfs"); pos != std::string::npos; pos = abc9_script.find("&mfs", pos)) | 		for (size_t pos = abc9_script.find("&mfs"); pos != std::string::npos; pos = abc9_script.find("&mfs", pos)) | ||||||
| 			abc9_script = abc9_script.erase(pos, strlen("&mfs")); | 			abc9_script = abc9_script.erase(pos, strlen("&mfs")); | ||||||
|  | 	else { | ||||||
|  | 		auto s = stringf("&write -n %s/output.aig; ", tempdir_name.c_str()); | ||||||
|  | 		for (size_t pos = abc9_script.find("&mfs"); pos != std::string::npos; pos = abc9_script.find("&mfs", pos)) { | ||||||
|  | 			abc9_script = abc9_script.insert(pos, s); | ||||||
|  | 			pos += GetSize(s) + strlen("&mfs"); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	abc9_script += stringf("; &ps -l; &write -n %s/output.aig", tempdir_name.c_str()); | 	abc9_script += stringf("; &ps -l; &write -n %s/output.aig", tempdir_name.c_str()); | ||||||
| 	if (design->scratchpad_get_bool("abc9.verify")) { | 	if (design->scratchpad_get_bool("abc9.verify")) { | ||||||
|  | @ -276,8 +283,12 @@ void abc9_module(RTLIL::Design *design, std::string script_file, std::string exe | ||||||
| 	free(abc9_argv[2]); | 	free(abc9_argv[2]); | ||||||
| 	free(abc9_argv[3]); | 	free(abc9_argv[3]); | ||||||
| #endif | #endif | ||||||
| 	if (ret != 0) | 	if (ret != 0) { | ||||||
| 		log_error("ABC: execution of command \"%s\" failed: return code %d.\n", buffer.c_str(), ret); | 		if (check_file_exists(stringf("%s/output.aig", tempdir_name.c_str()))) | ||||||
|  | 			log_warning("ABC: execution of command \"%s\" failed: return code %d.\n", buffer.c_str(), ret); | ||||||
|  | 		else | ||||||
|  | 			log_error("ABC: execution of command \"%s\" failed: return code %d.\n", buffer.c_str(), ret); | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| struct Abc9ExePass : public Pass { | struct Abc9ExePass : public Pass { | ||||||
|  |  | ||||||
|  | @ -324,8 +324,6 @@ struct SynthEcp5Pass : public ScriptPass | ||||||
| 
 | 
 | ||||||
| 			if (abc9) { | 			if (abc9) { | ||||||
| 				run("read_verilog -icells -lib -specify +/abc9_model.v +/ecp5/abc9_model.v"); | 				run("read_verilog -icells -lib -specify +/abc9_model.v +/ecp5/abc9_model.v"); | ||||||
| 				if (!help_mode && !active_design->scratchpad.count("abc9.nomfs")) |  | ||||||
| 					active_design->scratchpad_set_bool("abc9.nomfs", true); |  | ||||||
| 				if (nowidelut) | 				if (nowidelut) | ||||||
| 					run("abc9 -maxlut 4 -W 200"); | 					run("abc9 -maxlut 4 -W 200"); | ||||||
| 				else | 				else | ||||||
|  |  | ||||||
|  | @ -613,8 +613,6 @@ struct SynthXilinxPass : public ScriptPass | ||||||
| 				if (family != "xc7") | 				if (family != "xc7") | ||||||
| 					log_warning("'synth_xilinx -abc9' not currently supported for the '%s' family, " | 					log_warning("'synth_xilinx -abc9' not currently supported for the '%s' family, " | ||||||
| 							"will use timing for 'xc7' instead.\n", family.c_str()); | 							"will use timing for 'xc7' instead.\n", family.c_str()); | ||||||
| 				if (!help_mode && !active_design->scratchpad.count("abc9.nomfs")) |  | ||||||
| 					active_design->scratchpad_set_bool("abc9.nomfs", true); |  | ||||||
| 				std::string techmap_args = "-map +/xilinx/abc9_map.v -max_iter 1"; | 				std::string techmap_args = "-map +/xilinx/abc9_map.v -max_iter 1"; | ||||||
| 				if (dff_mode) | 				if (dff_mode) | ||||||
| 					techmap_args += " -D DFF_MODE"; | 					techmap_args += " -D DFF_MODE"; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue