aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorArjen Roodselaar <arjen@oxide.computer>2022-12-19 14:00:19 -0800
committerArjen Roodselaar <arjen@oxide.computer>2022-12-19 14:00:19 -0800
commit2712cbf6e4289eb9c1830e367d68072e3d1f7564 (patch)
tree50b881c17aeca7cee61772a8d0b3b5a54bfee901 /common
parent6e0311efcaea8020d3e137e2708ec188eef8a74c (diff)
downloadnextpnr-2712cbf6e4289eb9c1830e367d68072e3d1f7564.tar.gz
nextpnr-2712cbf6e4289eb9c1830e367d68072e3d1f7564.tar.bz2
nextpnr-2712cbf6e4289eb9c1830e367d68072e3d1f7564.zip
Increase timeout
Diffstat (limited to 'common')
-rw-r--r--common/place/placer_heap.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/common/place/placer_heap.cc b/common/place/placer_heap.cc
index 22b97a6c..4ee9b909 100644
--- a/common/place/placer_heap.cc
+++ b/common/place/placer_heap.cc
@@ -879,9 +879,11 @@ class HeAPPlacer
}
while (!placed) {
+ // Set a conservative timeout. This is a rather large number and could probably be
+ // shaved down, but for now it will keep the process from running indefinite.
+ int timeout_limit = (int(ctx->cells.size()) * int(ctx->cells.size()) / 8) + 1;
- // Set a conservative timeout
- if (total_iters_for_cell > std::max(10000, 3 * int(ctx->cells.size())))
+ if (total_iters_for_cell > std::max(10000, timeout_limit))
log_error("Unable to find legal placement for cell '%s' after %d attempts, check constraints and utilisation.\n",
ctx->nameOf(ci), total_iters_for_cell);