[Tool] Patch repacker to support duplicated nets due to adder nets
@@ -259,13 +259,25 @@ std::vector<int> find_pb_route_remapped_source_pb_pin(const t_pb* pb,
/* Only care the pin has the same parent port as source_pb_pin
* Due to that the source_pb_pin may be swapped during routing
* the pb_route is out-of-date
+ *
+ * For those parent port is defined as non-equivalent,
+ * the source pin and the pin recorded in the routing trace must match!
+ *
* TODO: should update pb_route by post routing results
* On the other side, the swapping can only happen between equivalent pins
* in a port. So the port must match here!
*/
+ if (PortEquivalence::FULL == source_pb_pin->port->equivalent) {
if (source_pb_pin->port == pb->pb_route.at(pin).pb_graph_pin->port) {
pb_route_indices.push_back(pin);
}
+ } else {
+ /* NOTE: INSTANCE is NOT supported! We support only NONE equivalent */
+ VTR_ASSERT (PortEquivalence::NONE == source_pb_pin->port->equivalent);
+ if (source_pb_pin == pb->pb_route.at(pin).pb_graph_pin) {
+ pb_route_indices.push_back(pin);
+ }
+ }
}
return pb_route_indices;
