mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Added "techmap -map %{design-name}"
This commit is contained in:
		
							parent
							
								
									397b00252d
								
							
						
					
					
						commit
						03c96f9ce7
					
				
					 4 changed files with 29 additions and 10 deletions
				
			
		|  | @ -219,6 +219,11 @@ void RTLIL::Selection::optimize(RTLIL::Design *design) | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| RTLIL::Design::Design() | ||||
| { | ||||
| 	refcount_modules_ = 0; | ||||
| } | ||||
| 
 | ||||
| RTLIL::Design::~Design() | ||||
| { | ||||
| 	for (auto it = modules_.begin(); it != modules_.end(); it++) | ||||
|  |  | |||
|  | @ -352,11 +352,16 @@ struct RTLIL::Design | |||
| 	std::map<RTLIL::IdString, RTLIL::Selection> selection_vars; | ||||
| 	std::string selected_active_module; | ||||
| 
 | ||||
| 	Design(); | ||||
| 	~Design(); | ||||
| 
 | ||||
| 	RTLIL::ObjRange<RTLIL::Module*> modules(); | ||||
| 	RTLIL::Module *module(RTLIL::IdString name); | ||||
| 
 | ||||
| 	bool has(RTLIL::IdString id) const { | ||||
| 		return modules_.count(id) != 0; | ||||
| 	} | ||||
| 
 | ||||
| 	void add(RTLIL::Module *module); | ||||
| 	RTLIL::Module *addModule(RTLIL::IdString name); | ||||
| 	void remove(RTLIL::Module *module); | ||||
|  |  | |||
|  | @ -603,9 +603,9 @@ struct ExtractPass : public Pass { | |||
| 						delete map; | ||||
| 						log_cmd_error("Can't saved design `%s'.\n", filename.c_str()+1); | ||||
| 					} | ||||
| 					for (auto &it : saved_designs.at(filename.substr(1))->modules_) | ||||
| 						if (!map->modules_.count(it.first)) | ||||
| 							map->modules_[it.first] = it.second->clone(); | ||||
| 					for (auto mod : saved_designs.at(filename.substr(1))->modules()) | ||||
| 						if (!map->has(mod->name)) | ||||
| 							map->add(mod->clone()); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
|  |  | |||
|  | @ -656,7 +656,16 @@ struct TechmapPass : public Pass { | |||
| 			Frontend::frontend_call(map, f, "<stdcells.v>", verilog_frontend); | ||||
| 			fclose(f); | ||||
| 		} else | ||||
| 			for (auto &fn : map_files) { | ||||
| 			for (auto &fn : map_files) | ||||
| 				if (fn.substr(0, 1) == "%") { | ||||
| 					if (!saved_designs.count(fn.substr(1))) { | ||||
| 						delete map; | ||||
| 						log_cmd_error("Can't saved design `%s'.\n", fn.c_str()+1); | ||||
| 					} | ||||
| 					for (auto mod : saved_designs.at(fn.substr(1))->modules()) | ||||
| 						if (!map->has(mod->name)) | ||||
| 							map->add(mod->clone()); | ||||
| 				} else { | ||||
| 					FILE *f = fopen(fn.c_str(), "rt"); | ||||
| 					if (f == NULL) | ||||
| 						log_cmd_error("Can't open map file `%s'\n", fn.c_str()); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue