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:
parent
a83e5f46d0
commit
941d78a6ac
3 changed files with 3 additions and 11 deletions
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue