From ca53fba44a8f49fc96e8f2913eb55b622ec0638a Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 20 Aug 2017 12:31:50 +0200 Subject: [PATCH] Rename "singleton" pass to "uniquify" --- passes/hierarchy/Makefile.inc | 2 +- .../hierarchy/{singleton.cc => uniquify.cc} | 39 ++++++++++--------- passes/sat/sim.cc | 2 +- 3 files changed, 22 insertions(+), 21 deletions(-) rename passes/hierarchy/{singleton.cc => uniquify.cc} (71%) diff --git a/passes/hierarchy/Makefile.inc b/passes/hierarchy/Makefile.inc index 1fb669c11..b3f139b72 100644 --- a/passes/hierarchy/Makefile.inc +++ b/passes/hierarchy/Makefile.inc @@ -1,5 +1,5 @@ OBJS += passes/hierarchy/hierarchy.o -OBJS += passes/hierarchy/singleton.o +OBJS += passes/hierarchy/uniquify.o OBJS += passes/hierarchy/submod.o diff --git a/passes/hierarchy/singleton.cc b/passes/hierarchy/uniquify.cc similarity index 71% rename from passes/hierarchy/singleton.cc rename to passes/hierarchy/uniquify.cc index 03c365fb5..1da0870f6 100644 --- a/passes/hierarchy/singleton.cc +++ b/passes/hierarchy/uniquify.cc @@ -22,28 +22,28 @@ USING_YOSYS_NAMESPACE PRIVATE_NAMESPACE_BEGIN -struct SingletonPass : public Pass { - SingletonPass() : Pass("singleton", "create singleton modules") { } +struct UniquifyPass : public Pass { + UniquifyPass() : Pass("uniquify", "create unique copies of modules") { } virtual void help() { // |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| log("\n"); - log(" singleton [selection]\n"); + log(" uniquify [selection]\n"); log("\n"); log("By default, a module that is instantiated by several other modules is only\n"); log("kept once in the design. This preserves the original modularity of the design\n"); log("and reduces the overall size of the design in memory. But it prevents certain\n"); - log("optimizations and other operations on the design. This pass creates singleton\n"); + log("optimizations and other operations on the design. This pass creates unique\n"); log("modules for all selected cells. The created modules are marked with the\n"); - log("'singleton' attribute.\n"); + log("'unique' attribute.\n"); log("\n"); - log("This commands only operates on modules that by themself have the 'singleton'\n"); - log("attribute set (the 'top' module is a singleton implicitly).\n"); + log("This commands only operates on modules that by themself have the 'unique'\n"); + log("attribute set (the 'top' module is unique implicitly).\n"); log("\n"); } virtual void execute(std::vector args, RTLIL::Design *design) { - log_header(design, "Executing SINGLETON pass (creating singleton modules).\n"); + log_header(design, "Executing UNIQUIFY pass (creating unique copies of modules).\n"); size_t argidx; for (argidx = 1; argidx < args.size(); argidx++) @@ -56,7 +56,7 @@ struct SingletonPass : public Pass { extra_args(args, argidx, design); bool did_something = true; - int singleton_cnt = 0; + int count = 0; while (did_something) { @@ -64,12 +64,13 @@ struct SingletonPass : public Pass { for (auto module : design->selected_modules()) { - if (!module->get_bool_attribute("\\singleton") && !module->get_bool_attribute("\\top")) + if (!module->get_bool_attribute("\\unique") && !module->get_bool_attribute("\\top")) continue; for (auto cell : module->selected_cells()) { - auto tmod = design->module(cell->type); + Module *tmod = design->module(cell->type); + IdString newname = module->name.str() + "." + log_id(cell->name); if (tmod == nullptr) continue; @@ -77,25 +78,25 @@ struct SingletonPass : public Pass { if (tmod->get_bool_attribute("\\blackbox")) continue; - if (tmod->get_bool_attribute("\\singleton")) + if (tmod->get_bool_attribute("\\unique") && newname == tmod->name) continue; - cell->type = module->name.str() + "." + log_id(cell->name); - log("Creating singleton '%s'.\n", log_id(cell->type)); + log("Creating module %s from %s.\n", log_id(newname), log_id(tmod)); auto smod = tmod->clone(); - smod->name = cell->type; - smod->set_bool_attribute("\\singleton"); + smod->name = newname; + cell->type = newname; + smod->set_bool_attribute("\\unique"); design->add(smod); did_something = true; - singleton_cnt++; + count++; } } } - log("Created %d singleton modules.\n", singleton_cnt); + log("Created %d unique modules.\n", count); } -} SingletonPass; +} UniquifyPass; PRIVATE_NAMESPACE_END diff --git a/passes/sat/sim.cc b/passes/sat/sim.cc index 966510776..b49c12529 100644 --- a/passes/sat/sim.cc +++ b/passes/sat/sim.cc @@ -526,7 +526,7 @@ struct SimInstance void writeback(pool &wbmods) { if (wbmods.count(module)) - log_error("Instance %s of module %s is not unique: Writeback not possible. (Fix by running 'singleton'.)\n", hiername().c_str(), log_id(module)); + log_error("Instance %s of module %s is not unique: Writeback not possible. (Fix by running 'uniquify'.)\n", hiername().c_str(), log_id(module)); wbmods.insert(module); -- 2.30.2