@@ -21,11 +21,7 @@ using namespace std;
21
21
* about the partial routing during timing-driven routing, so the routines
22
22
* in this module are used to keep a tree representation of the partial
23
23
* routing during timing-driven routing. This allows rapid incremental
24
- * timing analysis. The net_delay module does timing analysis in one step
25
- * (not incrementally as pieces of the routing are added). I could probably
26
- * one day remove a lot of net_delay.c and call the corresponding routines
27
- * here, but it's useful to have a from-scratch delay calculator to check
28
- * the results of this one. */
24
+ * timing analysis. */
29
25
30
26
/* ********************* Variables local to this module ***********************/
31
27
@@ -612,6 +608,7 @@ void free_route_tree(t_rt_node* rt_node) {
612
608
if (!rr_node_to_rt_node.empty ()) {
613
609
rr_node_to_rt_node.at (rt_node->inode ) = nullptr ;
614
610
}
611
+
615
612
free_rt_node (rt_node);
616
613
}
617
614
@@ -690,7 +687,13 @@ t_rt_node* traceback_to_route_tree(t_trace* head) {
690
687
while (trace) { // Each branch
691
688
trace = traceback_to_route_tree_branch (trace, rr_node_to_rt);
692
689
}
690
+ // Due to the recursive nature of traceback_to_route_tree_branch,
691
+ // the source node is not properly configured.
692
+ // Here, for the source we set the parent node and switch to be
693
+ // nullptr and OPEN respectively.
693
694
695
+ rr_node_to_rt[head->index ]->parent_node = nullptr ;
696
+ rr_node_to_rt[head->index ]->parent_switch = OPEN;
694
697
return rr_node_to_rt[head->index ];
695
698
}
696
699
0 commit comments