Skip to content

Commit 8577aee

Browse files
committed
made the intracluster pins clickable
1 parent 1aa214c commit 8577aee

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

vpr/src/draw/draw_rr.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,8 +514,13 @@ void draw_rr_edges(RRNodeId inode, ezgl::renderer* g) {
514514
}
515515

516516
void draw_rr_intrapin(RRNodeId inode, const ezgl::color& color, ezgl::renderer* g) {
517+
t_draw_state* draw_state = get_draw_state_vars();
517518
t_draw_coords* draw_coords = get_draw_coords_vars();
518519

520+
if(!draw_state->is_flat){
521+
return;
522+
}
523+
519524
auto blk_id_pin_id = get_rr_node_cluster_blk_id_pb_graph_pin(inode);
520525

521526
ezgl::point2d p = draw_coords->get_absolute_pin_location(blk_id_pin_id.first, blk_id_pin_id.second);
@@ -698,6 +703,30 @@ RRNodeId draw_check_rr_node_hit(float click_x, float click_y) {
698703
if (!draw_state->draw_layer_display[layer_num].visible) {
699704
continue; /* Don't check RR nodes on currently invisible layers*/
700705
}
706+
707+
// Skip Source and Sink Nodes
708+
if (rr_graph.node_type(inode) == e_rr_type::SOURCE
709+
|| rr_graph.node_type(inode) == e_rr_type::SINK) {
710+
continue;
711+
}
712+
713+
// Check for intra cluster nodes
714+
if (!is_inter_cluster_node(rr_graph, inode)) {
715+
716+
if(!draw_state->is_flat){
717+
continue;
718+
}
719+
720+
auto blk_id_pin_id = get_rr_node_cluster_blk_id_pb_graph_pin(inode);
721+
ezgl::point2d p = draw_coords->get_absolute_pin_location(blk_id_pin_id.first, blk_id_pin_id.second);
722+
723+
if (click_x >= p.x - draw_coords->pin_size && click_x <= p.x + draw_coords->pin_size && click_y >= p.y - draw_coords->pin_size && click_y <= p.y + draw_coords->pin_size) {
724+
hit_node = inode;
725+
return hit_node;
726+
}
727+
728+
continue;
729+
}
701730
switch (rr_graph.node_type(inode)) {
702731
case e_rr_type::IPIN:
703732
case e_rr_type::OPIN: {

vpr/src/draw/draw_rr_edges.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,12 @@ void draw_chanx_to_chany_edge(RRNodeId chanx_node, RRNodeId chany_node, enum e_e
280280
}
281281

282282
void draw_intrapin_to_intrapin(RRNodeId inode, RRNodeId prev_node, ezgl::renderer* g) {
283+
t_draw_state* draw_state = get_draw_state_vars();
284+
t_draw_coords* draw_coords = get_draw_coords_vars();
283285

284-
auto draw_coords = get_draw_coords_vars();
286+
if(!draw_state->is_flat){
287+
return;
288+
}
285289

286290
auto blk_id_pin_id1 = get_rr_node_cluster_blk_id_pb_graph_pin(inode);
287291
auto blk_id_pin_id2 = get_rr_node_cluster_blk_id_pb_graph_pin(prev_node);
@@ -293,7 +297,12 @@ void draw_intrapin_to_intrapin(RRNodeId inode, RRNodeId prev_node, ezgl::rendere
293297
}
294298

295299
void draw_intrapin_to_pin(RRNodeId inode, RRNodeId prev_node, ezgl::renderer* g) {
296-
auto draw_coords = get_draw_coords_vars();
300+
t_draw_state* draw_state = get_draw_state_vars();
301+
t_draw_coords* draw_coords = get_draw_coords_vars();
302+
303+
if(!draw_state->is_flat){
304+
return;
305+
}
297306
const auto& rr_graph = g_vpr_ctx.device().rr_graph;
298307

299308
if (!is_inter_cluster_node(rr_graph, inode) && is_inter_cluster_node(rr_graph, prev_node)) {

0 commit comments

Comments
 (0)