3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-06-20 12:53:39 +00:00

Make splitnetlist more efficient, no preliminary opt_clean in submod, remove $buf cells in opt_clean

This commit is contained in:
Akash Levy 2025-01-10 17:12:15 -08:00
parent a83e5f46d0
commit 941d78a6ac
3 changed files with 3 additions and 11 deletions

View file

@ -161,10 +161,6 @@ struct SplitNetlist : public ScriptPass {
log("Running splitnetlist pass\n"); log("Running splitnetlist pass\n");
log_flush(); log_flush();
// Add buffers for pass-through and connections to constants
// so we can find cells that can be used by submod
Pass::call(design, "bufnorm -buf");
if (debug) if (debug)
run_pass("write_rtlil post_buf.rtlil"); run_pass("write_rtlil post_buf.rtlil");
@ -268,10 +264,6 @@ struct SplitNetlist : public ScriptPass {
// Execute the submod command // Execute the submod command
Pass::call(design, "submod"); Pass::call(design, "submod");
// Remove buffers introduced by bufnorm
Pass::call(design, "techmap -D SIMLIB_NOCHECKS -map +/simlib.v t:$buf");
Pass::call(design, "clean");
log("End splitnetlist pass\n"); log("End splitnetlist pass\n");
log_flush(); log_flush();
} }

View file

@ -381,8 +381,8 @@ struct SubmodPass : public Pass {
if (opt_name.empty()) if (opt_name.empty())
{ {
Pass::call(design, "opt_clean"); // Pass::call(design, "opt_clean");
log_header(design, "Continuing SUBMOD pass.\n"); // log_header(design, "Continuing SUBMOD pass.\n");
std::set<RTLIL::IdString> handled_modules; std::set<RTLIL::IdString> handled_modules;

View file

@ -601,7 +601,7 @@ void rmunused_module(RTLIL::Module *module, bool purge_mode, bool unusedbitsattr
std::vector<RTLIL::Cell*> delcells; std::vector<RTLIL::Cell*> delcells;
for (auto cell : module->cells()) for (auto cell : module->cells())
if (cell->type.in(ID($pos), ID($_BUF_)) && !cell->has_keep_attr()) { if (cell->type.in(ID($pos), ID($_BUF_), ID($buf)) && !cell->has_keep_attr()) {
bool is_signed = cell->type == ID($pos) && cell->getParam(ID::A_SIGNED).as_bool(); bool is_signed = cell->type == ID($pos) && cell->getParam(ID::A_SIGNED).as_bool();
RTLIL::SigSpec a = cell->getPort(ID::A); RTLIL::SigSpec a = cell->getPort(ID::A);
RTLIL::SigSpec y = cell->getPort(ID::Y); RTLIL::SigSpec y = cell->getPort(ID::Y);