RTLIL::Wire *wire = new RTLIL::Wire;
wire->name = remap_name(w->name);
module->wires[wire->name] = wire;
+ design->select(module, wire);
}
std::map<std::string, int> cell_stats;
cell->connections["\\A"] = RTLIL::SigSpec(module->wires[remap_name(c->connections["\\A"].chunks[0].wire->name)]);
cell->connections["\\Y"] = RTLIL::SigSpec(module->wires[remap_name(c->connections["\\Y"].chunks[0].wire->name)]);
module->cells[cell->name] = cell;
+ design->select(module, cell);
continue;
}
if (c->type == "\\AND" || c->type == "\\OR" || c->type == "\\XOR") {
cell->connections["\\B"] = RTLIL::SigSpec(module->wires[remap_name(c->connections["\\B"].chunks[0].wire->name)]);
cell->connections["\\Y"] = RTLIL::SigSpec(module->wires[remap_name(c->connections["\\Y"].chunks[0].wire->name)]);
module->cells[cell->name] = cell;
+ design->select(module, cell);
continue;
}
if (c->type == "\\MUX") {
cell->connections["\\S"] = RTLIL::SigSpec(module->wires[remap_name(c->connections["\\S"].chunks[0].wire->name)]);
cell->connections["\\Y"] = RTLIL::SigSpec(module->wires[remap_name(c->connections["\\Y"].chunks[0].wire->name)]);
module->cells[cell->name] = cell;
+ design->select(module, cell);
continue;
}
assert(0);
for (auto &conn : c->connections)
cell->connections[conn.first] = RTLIL::SigSpec(module->wires[remap_name(conn.second.chunks[0].wire->name)]);
module->cells[cell->name] = cell;
+ design->select(module, cell);
}
}
return w2->name < w1->name;
}
+static bool check_public_name(RTLIL::IdString id)
+{
+ if (id[0] == '$')
+ return false;
+#if 0
+ if (id.find(".$") == std::string::npos)
+ return true;
+#endif
+ return false;
+}
+
static void rmunused_module_signals(RTLIL::Module *module)
{
SigMap assign_map(module);
std::vector<RTLIL::Wire*> del_wires;
for (auto &it : module->wires) {
RTLIL::Wire *wire = it.second;
- if (wire->name[0] == '\\') {
+ if (check_public_name(wire->name)) {
RTLIL::SigSpec s1 = RTLIL::SigSpec(wire), s2 = s1;
assign_map.apply(s2);
if (!used_signals.check_any(s2) && wire->port_id == 0) {
w->port_output = false;
w->port_id = 0;
module->wires[w->name] = w;
+ design->select(module, w);
}
for (auto &it : tpl->cells) {
for (auto &it2 : c->connections)
apply_prefix(cell_name, it2.second, module);
module->cells[c->name] = c;
+ design->select(module, c);
}
for (auto &it : tpl->connections) {