Merge pull request #1796 from lnis-uofu/xt_pbfixup
[core] fixed a bug where some clock spine was wrongly marked unused
This commit is contained in:
commit
68efe30e39
|
@ -333,7 +333,10 @@ static int rec_expand_and_route_clock_spine(
|
||||||
* As such, it is easy to turn off spines by any stop.
|
* As such, it is easy to turn off spines by any stop.
|
||||||
* The spine should go in a straight line, connect all the stops on the line
|
* The spine should go in a straight line, connect all the stops on the line
|
||||||
*/
|
*/
|
||||||
bool prev_stop_usage = curr_tap_usage;
|
bool prev_stop_usage = false;
|
||||||
|
if (clk_ntwk.is_last_level(curr_spine)) {
|
||||||
|
prev_stop_usage = curr_tap_usage;
|
||||||
|
}
|
||||||
std::reverse(spine_coords.begin(), spine_coords.end());
|
std::reverse(spine_coords.begin(), spine_coords.end());
|
||||||
for (size_t icoord = 0; icoord < spine_coords.size(); ++icoord) {
|
for (size_t icoord = 0; icoord < spine_coords.size(); ++icoord) {
|
||||||
vtr::Point<int> switch_point_coord = spine_coords[icoord];
|
vtr::Point<int> switch_point_coord = spine_coords[icoord];
|
||||||
|
@ -380,6 +383,12 @@ static int rec_expand_and_route_clock_spine(
|
||||||
switch_point_coord.y());
|
switch_point_coord.y());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
/* If there are any stop is used, mark this spine is used. This is to avoid
|
||||||
|
* that a spine is marked unused when only its 1st stop is actually used.
|
||||||
|
* The skip condition may cause this. */
|
||||||
|
if (curr_stop_usage) {
|
||||||
|
curr_spine_usage = true;
|
||||||
|
}
|
||||||
/* Skip the first stop */
|
/* Skip the first stop */
|
||||||
if (icoord == spine_coords.size() - 1) {
|
if (icoord == spine_coords.size() - 1) {
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in New Issue