From 969dd7c4676dec75cc462640abefdc016ba272e4 Mon Sep 17 00:00:00 2001 From: tangxifan Date: Tue, 4 Feb 2020 15:33:15 -0700 Subject: [PATCH] rr_graph working --- vpr/src/route/route_timing.cpp | 12 ++++++------ vpr/src/route/route_util.cpp | 27 +++++++++++++-------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/vpr/src/route/route_timing.cpp b/vpr/src/route/route_timing.cpp index 156197be7..131044b68 100644 --- a/vpr/src/route/route_timing.cpp +++ b/vpr/src/route/route_timing.cpp @@ -2598,19 +2598,19 @@ static OveruseInfo calculate_overuse_info() { } } - return OveruseInfo(device_ctx.rr_nodes.size(), overused_nodes, total_overuse, worst_overuse); + return OveruseInfo(device_ctx.rr_graph.nodes().size(), overused_nodes, total_overuse, worst_overuse); } static size_t calculate_wirelength_available() { auto& device_ctx = g_vpr_ctx.device(); size_t available_wirelength = 0; - for (size_t i = 0; i < device_ctx.rr_nodes.size(); ++i) { - if (device_ctx.rr_nodes[i].type() == CHANX || device_ctx.rr_nodes[i].type() == CHANY) { - size_t length_x = device_ctx.rr_nodes[i].xhigh() - device_ctx.rr_nodes[i].xlow(); - size_t length_y = device_ctx.rr_nodes[i].yhigh() - device_ctx.rr_nodes[i].ylow(); + for (const RRNodeId& node : device_ctx.rr_graph.nodes()) { + if (device_ctx.rr_graph.node_type(node) == CHANX || device_ctx.rr_graph.node_type(node) == CHANY) { + size_t length_x = device_ctx.rr_graph.node_xhigh(node) - device_ctx.rr_graph.node_xlow(node); + size_t length_y = device_ctx.rr_graph.node_yhigh(node) - device_ctx.rr_graph.node_ylow(node); - available_wirelength += device_ctx.rr_nodes[i].capacity() * (length_x + length_y + 1); + available_wirelength += device_ctx.rr_graph.node_capacity(node) * (length_x + length_y + 1); } } return available_wirelength; diff --git a/vpr/src/route/route_util.cpp b/vpr/src/route/route_util.cpp index 6d8417963..d61e8d8f6 100644 --- a/vpr/src/route/route_util.cpp +++ b/vpr/src/route/route_util.cpp @@ -55,24 +55,23 @@ vtr::Matrix calculate_routing_avail(t_rr_type rr_type) { auto& device_ctx = g_vpr_ctx.device(); vtr::Matrix avail({{device_ctx.grid.width(), device_ctx.grid.height()}}, 0.); - for (size_t inode = 0; inode < device_ctx.rr_nodes.size(); ++inode) { - auto& rr_node = device_ctx.rr_nodes[inode]; + for (const RRNodeId& inode : device_ctx.rr_graph.nodes()) { - if (rr_node.type() == CHANX && rr_type == CHANX) { - VTR_ASSERT(rr_node.type() == CHANX); - VTR_ASSERT(rr_node.ylow() == rr_node.yhigh()); + if (device_ctx.rr_graph.node_type(inode) == CHANX && rr_type == CHANX) { + VTR_ASSERT(device_ctx.rr_graph.node_type(inode) == CHANX); + VTR_ASSERT(device_ctx.rr_graph.node_ylow(inode) == device_ctx.rr_graph.node_yhigh(inode)); - int y = rr_node.ylow(); - for (int x = rr_node.xlow(); x <= rr_node.xhigh(); ++x) { - avail[x][y] += rr_node.capacity(); + int y = device_ctx.rr_graph.node_ylow(inode); + for (int x = device_ctx.rr_graph.node_xlow(inode); x <= device_ctx.rr_graph.node_xhigh(inode); ++x) { + avail[x][y] += device_ctx.rr_graph.node_capacity(inode); } - } else if (rr_node.type() == CHANY && rr_type == CHANY) { - VTR_ASSERT(rr_node.type() == CHANY); - VTR_ASSERT(rr_node.xlow() == rr_node.xhigh()); + } else if (device_ctx.rr_graph.node_type(inode) == CHANY && rr_type == CHANY) { + VTR_ASSERT(device_ctx.rr_graph.node_type(inode) == CHANY); + VTR_ASSERT(device_ctx.rr_graph.node_xlow(inode) == device_ctx.rr_graph.node_xhigh(inode)); - int x = rr_node.xlow(); - for (int y = rr_node.ylow(); y <= rr_node.yhigh(); ++y) { - avail[x][y] += rr_node.capacity(); + int x = device_ctx.rr_graph.node_xlow(inode); + for (int y = device_ctx.rr_graph.node_ylow(inode); y <= device_ctx.rr_graph.node_yhigh(inode); ++y) { + avail[x][y] += device_ctx.rr_graph.node_capacity(inode); } } }