diff options
author | Miodrag Milanović <mmicko@gmail.com> | 2022-08-01 17:08:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-01 17:08:04 +0200 |
commit | 15393442d6118e4d05a29652d0c80c3b3cd023b0 (patch) | |
tree | 3dc0dc7e6c520c27c5d2c0e8eee673f6491b4f30 | |
parent | a207fd4b3356e759f0031173449a9c1f967dd01c (diff) | |
parent | b506f398dda108659c6743f322434a63e677e0fc (diff) | |
download | yosys-15393442d6118e4d05a29652d0c80c3b3cd023b0.tar.gz yosys-15393442d6118e4d05a29652d0c80c3b3cd023b0.tar.bz2 yosys-15393442d6118e4d05a29652d0c80c3b3cd023b0.zip |
Merge pull request #3089 from YosysHQ/gatecat/liberty_wb
Add read_liberty -wb
-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; |