@@ -113,7 +113,8 @@ static void load_trace_to_pb_route(t_pb_routes& pb_route,
113
113
const AtomNetId net_id,
114
114
const int prev_pin_id,
115
115
const t_lb_trace* trace,
116
- t_logical_block_type_ptr logic_block_type);
116
+ t_logical_block_type_ptr logic_block_type,
117
+ const IntraLbPbPinLookup& intra_lb_pb_pin_lookup);
117
118
118
119
static std::string describe_lb_type_rr_node (int inode,
119
120
const t_lb_router_data* router_data);
@@ -551,13 +552,14 @@ bool try_intra_lb_route(t_lb_router_data* router_data,
551
552
/* Creates an array [0..num_pb_graph_pins-1] lookup for intra-logic block routing. Given pb_graph_pin id for clb, lookup atom net that uses that pin.
552
553
* If pin is not used, stores OPEN at that pin location */
553
554
t_pb_routes alloc_and_load_pb_route (const std::vector<t_intra_lb_net>* intra_lb_nets,
554
- t_logical_block_type_ptr logic_block_type) {
555
+ t_logical_block_type_ptr logic_block_type,
556
+ const IntraLbPbPinLookup& intra_lb_pb_pin_lookup) {
555
557
const std::vector<t_intra_lb_net>& lb_nets = *intra_lb_nets;
556
558
int total_pins = logic_block_type->pb_graph_head ->total_pb_pins ;
557
559
t_pb_routes pb_route;
558
560
559
561
for (int inet = 0 ; inet < (int )lb_nets.size (); inet++) {
560
- load_trace_to_pb_route (pb_route, total_pins, lb_nets[inet].atom_net_id , OPEN, lb_nets[inet].rt_tree , logic_block_type);
562
+ load_trace_to_pb_route (pb_route, total_pins, lb_nets[inet].atom_net_id , OPEN, lb_nets[inet].rt_tree , logic_block_type, intra_lb_pb_pin_lookup );
561
563
}
562
564
563
565
return pb_route;
@@ -593,7 +595,8 @@ static void load_trace_to_pb_route(t_pb_routes& pb_route,
593
595
const AtomNetId net_id,
594
596
const int prev_pin_id,
595
597
const t_lb_trace* trace,
596
- t_logical_block_type_ptr logic_block_type) {
598
+ t_logical_block_type_ptr logic_block_type,
599
+ const IntraLbPbPinLookup& intra_lb_pb_pin_lookup) {
597
600
int ipin = trace->current_node ;
598
601
int driver_pb_pin_id = prev_pin_id;
599
602
int cur_pin_id = OPEN;
@@ -604,14 +607,14 @@ static void load_trace_to_pb_route(t_pb_routes& pb_route,
604
607
pb_route.insert (std::make_pair (cur_pin_id, t_pb_route ()));
605
608
pb_route[cur_pin_id].atom_net_id = net_id;
606
609
pb_route[cur_pin_id].driver_pb_pin_id = driver_pb_pin_id;
607
- auto pb_graph_pin = logic_block_type->pin_logical_num_to_pb_pin_mapping . at ( cur_pin_id);
610
+ auto pb_graph_pin = intra_lb_pb_pin_lookup. pb_gpin ( logic_block_type->index , cur_pin_id);
608
611
pb_route[cur_pin_id].pb_graph_pin = pb_graph_pin;
609
612
} else {
610
613
VTR_ASSERT (pb_route[cur_pin_id].atom_net_id == net_id);
611
614
}
612
615
}
613
616
for (int itrace = 0 ; itrace < (int )trace->next_nodes .size (); itrace++) {
614
- load_trace_to_pb_route (pb_route, total_pins, net_id, cur_pin_id, &trace->next_nodes [itrace], logic_block_type);
617
+ load_trace_to_pb_route (pb_route, total_pins, net_id, cur_pin_id, &trace->next_nodes [itrace], logic_block_type, intra_lb_pb_pin_lookup );
615
618
}
616
619
}
617
620
0 commit comments