[core] fixed a bug where unused last-level of clock spines are not disabled

This commit is contained in:
tangxifan 2024-08-13 15:04:13 -07:00
parent 25bcdee764
commit ad13058a0b
2 changed files with 10 additions and 1 deletions

View File

@ -90,7 +90,7 @@ vtr::vector<RRNodeId, ClusterNetId> annotate_rr_node_global_net(
rr_graph.node_lookup().find_nodes_at_all_sides(
layer, blk_loc.loc.x, blk_loc.loc.y, rr_pin_type, node_pin_num);
for (RRNodeId curr_rr_node : curr_rr_nodes) {
VTR_LOGV(verbose, "on '%s' pin '%d'\n",
VTR_LOGV(verbose, "Annotate global net '%s' on '%s' pin '%d'\n",
cluster_nlist.net_name(net_id).c_str(), phy_tile->name,
node_pin_num);
rr_node_nets[curr_rr_node] = net_id;

View File

@ -317,6 +317,15 @@ static int rec_expand_and_route_clock_spine(
if (curr_tap_usage) {
curr_spine_usage = true;
}
/* If no taps are routed, this spine is not used. Early exit */
if (!curr_tap_usage && clk_ntwk.is_last_level(curr_spine)) {
spine_usage = false;
VTR_LOGV(verbose,
"Disable last-level spine '%s' as "
"none of the taps are not used\n",
clk_ntwk.spine_name(curr_spine).c_str());
return CMD_EXEC_SUCCESS;
}
std::vector<vtr::Point<int>> spine_coords =
clk_ntwk.spine_coordinates(curr_spine);