From ced4d7b321f01571e6746d2a3ff21efa270795a1 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Thu, 2 Jan 2014 18:44:24 +0100 Subject: [PATCH] Added support for module->connections to select %ci, %co and %x handling --- passes/cmds/select.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/passes/cmds/select.cc b/passes/cmds/select.cc index 137f8618a..5712a023e 100644 --- a/passes/cmds/select.cc +++ b/passes/cmds/select.cc @@ -272,6 +272,21 @@ static int select_op_expand(RTLIL::Design *design, RTLIL::Selection &lhs, std::v if (lhs.selected_member(mod_it.first, it.first) && limits.count(it.first) == 0) selected_wires.insert(it.second); + for (auto &conn : mod->connections) + { + std::vector conn_lhs = conn.first.to_sigbit_vector(); + std::vector conn_rhs = conn.second.to_sigbit_vector(); + + for (size_t i = 0; i < conn_lhs.size(); i++) { + if (conn_lhs[i].wire == NULL || conn_rhs[i].wire == NULL) + continue; + if (mode != 'i' && selected_wires.count(conn_rhs[i].wire) && lhs.selected_members[mod->name].count(conn_lhs[i].wire->name) == 0) + lhs.selected_members[mod->name].insert(conn_lhs[i].wire->name), sel_objects++, max_objects--; + if (mode != 'o' && selected_wires.count(conn_lhs[i].wire) && lhs.selected_members[mod->name].count(conn_rhs[i].wire->name) == 0) + lhs.selected_members[mod->name].insert(conn_rhs[i].wire->name), sel_objects++, max_objects--; + } + } + for (auto &cell : mod->cells) for (auto &conn : cell.second->connections) { -- 2.30.2