@@ -479,8 +479,11 @@ void RouteTree::print(void) const {
479479/* * Add the most recently finished wire segment to the routing tree, and
480480 * update the Tdel, etc. numbers for the rest of the routing tree. hptr
481481 * 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
484487 * RouteTreeNode of the SINK it adds to the routing. */
485488std::tuple<vtr::optional<const RouteTreeNode&>, vtr::optional<const RouteTreeNode&>>
486489RouteTree::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
501504 update_route_tree_spatial_lookup_recur (*start_of_new_subtree_rt_node, *spatial_rt_lookup);
502505 }
503506
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 */
505508 _is_isink_reached[target_net_pin_index] = true ;
506509
507510 return {*start_of_new_subtree_rt_node, *sink_rt_node};
0 commit comments