Skip to content

Commit 8902090

Browse files
committed
[vpr][pack] use intra_lb_pb_pin_lookup to get pb_pin from pin number
1 parent de84b8a commit 8902090

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

vpr/src/pack/cluster_router.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ static void load_trace_to_pb_route(t_pb_routes& pb_route,
113113
const AtomNetId net_id,
114114
const int prev_pin_id,
115115
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);
117118

118119
static std::string describe_lb_type_rr_node(int inode,
119120
const t_lb_router_data* router_data);
@@ -551,13 +552,14 @@ bool try_intra_lb_route(t_lb_router_data* router_data,
551552
/* 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.
552553
* If pin is not used, stores OPEN at that pin location */
553554
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) {
555557
const std::vector<t_intra_lb_net>& lb_nets = *intra_lb_nets;
556558
int total_pins = logic_block_type->pb_graph_head->total_pb_pins;
557559
t_pb_routes pb_route;
558560

559561
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);
561563
}
562564

563565
return pb_route;
@@ -593,7 +595,8 @@ static void load_trace_to_pb_route(t_pb_routes& pb_route,
593595
const AtomNetId net_id,
594596
const int prev_pin_id,
595597
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) {
597600
int ipin = trace->current_node;
598601
int driver_pb_pin_id = prev_pin_id;
599602
int cur_pin_id = OPEN;
@@ -604,14 +607,14 @@ static void load_trace_to_pb_route(t_pb_routes& pb_route,
604607
pb_route.insert(std::make_pair(cur_pin_id, t_pb_route()));
605608
pb_route[cur_pin_id].atom_net_id = net_id;
606609
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);
608611
pb_route[cur_pin_id].pb_graph_pin = pb_graph_pin;
609612
} else {
610613
VTR_ASSERT(pb_route[cur_pin_id].atom_net_id == net_id);
611614
}
612615
}
613616
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);
615618
}
616619
}
617620

vpr/src/pack/cluster_router.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ bool try_intra_lb_route(t_lb_router_data* router_data, int verbosity, t_mode_sel
2323
void reset_intra_lb_route(t_lb_router_data* router_data);
2424

2525
/* Accessor Functions */
26-
t_pb_routes alloc_and_load_pb_route(const std::vector<t_intra_lb_net>* intra_lb_nets, t_logical_block_type_ptr logic_block_type);
26+
t_pb_routes alloc_and_load_pb_route(const std::vector<t_intra_lb_net>* intra_lb_nets,
27+
t_logical_block_type_ptr logic_block_type,
28+
const IntraLbPbPinLookup& intra_lb_pb_pin_lookup);
2729
void free_pb_route(t_pb_route* free_pb_route);
2830

2931
#endif

0 commit comments

Comments
 (0)