summaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2014-12-14 17:45:03 +0100
committerClifford Wolf <clifford@clifford.at>2014-12-14 17:45:03 +0100
commit59d11978fc096734163731bb523a6d240ae1a41f (patch)
treeac533ee074b078d65124bcd606a495b6d4df8db9 /backends
parent32dce4a870e8f556897096a0c252b2e43f5622e5 (diff)
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.cc18
1 files changed, 16 insertions, 2 deletions
diff --git a/backends/blif/blif.cc b/backends/blif/blif.cc
index 18f76f7e..fa5f7bca 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)