mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Simplified run_frontend by using a lambda function for file extension checks and combining blif and eblif into a single condition.
This commit is contained in:
		
							parent
							
								
									8c1431f373
								
							
						
					
					
						commit
						ce11ddbf21
					
				
					 1 changed files with 34 additions and 27 deletions
				
			
		|  | @ -1126,33 +1126,40 @@ bool run_frontend(std::string filename, std::string command, RTLIL::Design *desi | |||
| 		design = yosys_design; | ||||
| 
 | ||||
| 	if (command == "auto") { | ||||
| 		std::string filename_trim = filename; | ||||
| 		if (filename_trim.size() > 3 && filename_trim.compare(filename_trim.size()-3, std::string::npos, ".gz") == 0) | ||||
| 			filename_trim.erase(filename_trim.size()-3); | ||||
| 		if (filename_trim.size() > 2 && filename_trim.compare(filename_trim.size()-2, std::string::npos, ".v") == 0) | ||||
| 			command = " -vlog2k"; | ||||
| 		else if (filename_trim.size() > 2 && filename_trim.compare(filename_trim.size()-3, std::string::npos, ".sv") == 0) | ||||
| 			command = " -sv"; | ||||
| 		else if ((filename_trim.size() > 3 && filename_trim.compare(filename_trim.size()-4, std::string::npos, ".vhd") == 0) | ||||
| 			 || | ||||
| 			 (filename_trim.size() > 4 && filename_trim.compare(filename_trim.size()-5, std::string::npos, ".vhdl") == 0)) | ||||
| 			command = " -vhdl"; | ||||
| 		else if (filename_trim.size() > 4 && filename_trim.compare(filename_trim.size()-5, std::string::npos, ".blif") == 0) | ||||
| 			command = "blif"; | ||||
| 		else if (filename_trim.size() > 5 && filename_trim.compare(filename_trim.size()-6, std::string::npos, ".eblif") == 0) | ||||
| 			command = "blif"; | ||||
| 		else if (filename_trim.size() > 4 && filename_trim.compare(filename_trim.size()-5, std::string::npos, ".json") == 0) | ||||
| 			command = "json"; | ||||
| 		else if (filename_trim.size() > 3 && filename_trim.compare(filename_trim.size()-3, std::string::npos, ".il") == 0) | ||||
| 			command = "rtlil"; | ||||
| 		else if (filename_trim.size() > 3 && filename_trim.compare(filename_trim.size()-3, std::string::npos, ".ys") == 0) | ||||
| 			command = "script"; | ||||
| 		else if (filename_trim.size() > 3 && filename_trim.compare(filename_trim.size()-4, std::string::npos, ".tcl") == 0) | ||||
| 			command = "tcl"; | ||||
| 		else if (filename == "-") | ||||
| 			command = "script"; | ||||
| 		else | ||||
| 			log_error("Can't guess frontend for input file `%s' (missing -f option)!\n", filename.c_str()); | ||||
| 	  std::string filename_trim = filename; | ||||
| 	   | ||||
| 	  auto has_extension = [](const std::string& filename, const std::string& extension) { | ||||
| 	    if (filename.size() >= extension.size()) { | ||||
| 	      return filename.compare(filename.size() - extension.size(), extension.size(), extension) == 0; | ||||
| 	    } | ||||
| 	    return false; | ||||
| 	  }; | ||||
| 
 | ||||
| 	  if (has_extension(filename_trim, ".gz")) { | ||||
| 	    filename_trim.erase(filename_trim.size() - 3); | ||||
| 	  } | ||||
| 	   | ||||
| 	  if (has_extension(filename_trim, ".v")) { | ||||
| 	    command = " -vlog2k"; | ||||
| 	  } else if (has_extension(filename_trim, ".sv")) { | ||||
| 	    command = " -sv"; | ||||
| 	  } else if (has_extension(filename_trim, ".vhd") || has_extension(filename_trim, ".vhdl")) { | ||||
| 	    command = " -vhdl"; | ||||
| 	  } else if (has_extension(filename_trim, ".blif") || has_extension(filename_trim, ".eblif")) { | ||||
| 	    command = "blif"; | ||||
| 	  } else if (has_extension(filename_trim, ".json")) { | ||||
| 	    command = "json"; | ||||
| 	  } else if (has_extension(filename_trim, ".il")) { | ||||
| 	    command = "rtlil"; | ||||
| 	  } else if (has_extension(filename_trim, ".ys")) { | ||||
| 	    command = "script"; | ||||
| 	  } else if (has_extension(filename_trim, ".tcl")) { | ||||
| 	    command = "tcl"; | ||||
| 	  } else if (filename == "-") { | ||||
| 	    command = "script"; | ||||
| 	  } else { | ||||
| 	    log_error("Can't guess frontend for input file `%s' (missing -f option)!\n", filename.c_str()); | ||||
| 	  } | ||||
| 	} | ||||
| 
 | ||||
| 	if (command == "script") | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue