diff options
author | gatecat <gatecat@ds0.me> | 2021-11-25 19:13:08 +0000 |
---|---|---|
committer | gatecat <gatecat@ds0.me> | 2021-11-25 19:13:08 +0000 |
commit | b506f398dda108659c6743f322434a63e677e0fc (patch) | |
tree | 5fadb71f9cccbf2a92e817e0281ea3d65c318ab9 | |
parent | a31c8a82be4ec98dbe58ce7efdde3a372b9767e0 (diff) | |
download | yosys-b506f398dda108659c6743f322434a63e677e0fc.tar.gz yosys-b506f398dda108659c6743f322434a63e677e0fc.tar.bz2 yosys-b506f398dda108659c6743f322434a63e677e0fc.zip |
Add read_liberty -wb
Signed-off-by: gatecat <gatecat@ds0.me>
-rw-r--r-- | frontends/liberty/liberty.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/frontends/liberty/liberty.cc b/frontends/liberty/liberty.cc index abf8de4d1..188ef2e04 100644 --- a/frontends/liberty/liberty.cc +++ b/frontends/liberty/liberty.cc @@ -464,6 +464,9 @@ struct LibertyFrontend : public Frontend { log(" -lib\n"); log(" only create empty blackbox modules\n"); log("\n"); + log(" -wb\n"); + log(" mark imported cells as whiteboxes\n"); + log("\n"); log(" -nooverwrite\n"); log(" ignore re-definitions of modules. (the default behavior is to\n"); log(" create an error message if the existing module is not a blackbox\n"); @@ -489,6 +492,7 @@ struct LibertyFrontend : public Frontend { void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *design) override { bool flag_lib = false; + bool flag_wb = false; bool flag_nooverwrite = false; bool flag_overwrite = false; bool flag_ignore_miss_func = false; @@ -505,6 +509,10 @@ struct LibertyFrontend : public Frontend { flag_lib = true; continue; } + if (arg == "-wb") { + flag_wb = true; + continue; + } if (arg == "-ignore_redef" || arg == "-nooverwrite") { flag_nooverwrite = true; flag_overwrite = false; @@ -535,6 +543,9 @@ struct LibertyFrontend : public Frontend { } extra_args(f, filename, args, argidx); + if (flag_wb && flag_lib) + log_error("-wb and -lib cannot be specified together!\n"); + LibertyParser parser(*f); int cell_count = 0; @@ -572,6 +583,9 @@ struct LibertyFrontend : public Frontend { if (flag_lib) module->set_bool_attribute(ID::blackbox); + if (flag_wb) + module->set_bool_attribute(ID::whitebox); + for (auto &attr : attributes) module->attributes[attr] = 1; |