@@ -479,8 +479,11 @@ void RouteTree::print(void) const {
479
479
/* * Add the most recently finished wire segment to the routing tree, and
480
480
* update the Tdel, etc. numbers for the rest of the routing tree. hptr
481
481
* is the heap pointer of the SINK that was reached, and target_net_pin_index
482
- * is the net pin index corresponding to the SINK that was reached. This routine
483
- * returns a tuple: RouteTreeNode of the branch it adds to the route tree and
482
+ * is the net pin index corresponding to the SINK that was reached. Usually target_net_pin_index
483
+ * is a non-negative integer indicating the netlist connection being routed, but it can be OPEN (-1)
484
+ * to indicate this is a routing path to a virtual sink which we use when routing to the source of
485
+ * dedicated clock networks.
486
+ * This routine returns a tuple: RouteTreeNode of the branch it adds to the route tree and
484
487
* RouteTreeNode of the SINK it adds to the routing. */
485
488
std::tuple<vtr::optional<const RouteTreeNode&>, vtr::optional<const RouteTreeNode&>>
486
489
RouteTree::update_from_heap (t_heap* hptr, int target_net_pin_index, SpatialRouteTreeLookup* spatial_rt_lookup, bool is_flat) {
@@ -501,7 +504,7 @@ RouteTree::update_from_heap(t_heap* hptr, int target_net_pin_index, SpatialRoute
501
504
update_route_tree_spatial_lookup_recur (*start_of_new_subtree_rt_node, *spatial_rt_lookup);
502
505
}
503
506
504
- if (_net_id.is_valid ()) /* We don't have this lookup if the tree isn't associated with a net */
507
+ if (_net_id.is_valid () && target_net_pin_index != OPEN ) /* We don't have this lookup if the tree isn't associated with a net */
505
508
_is_isink_reached[target_net_pin_index] = true ;
506
509
507
510
return {*start_of_new_subtree_rt_node, *sink_rt_node};
0 commit comments