diff options
| author | Clifford Wolf <clifford@clifford.at> | 2014-12-14 17:45:03 +0100 | 
|---|---|---|
| committer | Clifford Wolf <clifford@clifford.at> | 2014-12-14 17:45:03 +0100 | 
| commit | 59d11978fc096734163731bb523a6d240ae1a41f (patch) | |
| tree | ac533ee074b078d65124bcd606a495b6d4df8db9 /backends | |
| parent | 32dce4a870e8f556897096a0c252b2e43f5622e5 (diff) | |
| download | yosys-59d11978fc096734163731bb523a6d240ae1a41f.tar.gz yosys-59d11978fc096734163731bb523a6d240ae1a41f.tar.bz2 yosys-59d11978fc096734163731bb523a6d240ae1a41f.zip  | |
Added "write_blif -blackbox"
based on code by Eddie Hung from
https://github.com/eddiehung/yosys/commit/1e481661cb4a4
Diffstat (limited to 'backends')
| -rw-r--r-- | backends/blif/blif.cc | 18 | 
1 files changed, 16 insertions, 2 deletions
diff --git a/backends/blif/blif.cc b/backends/blif/blif.cc index 18f76f7e4..fa5f7bca2 100644 --- a/backends/blif/blif.cc +++ b/backends/blif/blif.cc @@ -38,12 +38,13 @@ struct BlifDumperConfig  	bool impltf_mode;  	bool gates_mode;  	bool param_mode; +	bool blackbox_mode;  	std::string buf_type, buf_in, buf_out;  	std::map<RTLIL::IdString, std::pair<RTLIL::IdString, RTLIL::IdString>> unbuf_types;  	std::string true_type, true_out, false_type, false_out; -	BlifDumperConfig() : icells_mode(false), conn_mode(false), impltf_mode(false), gates_mode(false), param_mode(false) { } +	BlifDumperConfig() : icells_mode(false), conn_mode(false), impltf_mode(false), gates_mode(false), param_mode(false), blackbox_mode(false) { }  };  struct BlifDumper @@ -130,6 +131,12 @@ struct BlifDumper  		}  		f << stringf("\n"); +		if (module->get_bool_attribute("\\blackbox")) { +			f << stringf(".blackbox\n"); +			f << stringf(".end\n"); +			return; +		} +  		if (!config->impltf_mode) {  			if (!config->false_type.empty())  				f << stringf(".%s %s %s=$false\n", subckt_or_gate(config->false_type), @@ -314,6 +321,9 @@ struct BlifBackend : public Backend {  		log("    -param\n");  		log("        use the non-standard .param statement to write module parameters\n");  		log("\n"); +		log("    -blackbox\n"); +		log("        write blackbox cells with .blackbox statement.\n"); +		log("\n");  		log("    -impltf\n");  		log("        do not write definitions for the $true and $false wires.\n");  		log("\n"); @@ -374,6 +384,10 @@ struct BlifBackend : public Backend {  				config.param_mode = true;  				continue;  			} +			if (args[argidx] == "-blackbox") { +				config.blackbox_mode = true; +				continue; +			}  			if (args[argidx] == "-impltf") {  				config.impltf_mode = true;  				continue; @@ -394,7 +408,7 @@ struct BlifBackend : public Backend {  		for (auto module_it : design->modules_)  		{  			RTLIL::Module *module = module_it.second; -			if (module->get_bool_attribute("\\blackbox")) +			if (module->get_bool_attribute("\\blackbox") && !config.blackbox_mode)  				continue;  			if (module->processes.size() != 0)  | 
