From 9cd5980d35ac7174ce577b89efac7f4d4a5f8ada Mon Sep 17 00:00:00 2001 From: David Shah Date: Sun, 30 Dec 2018 10:53:13 +0100 Subject: placer1: Add (currently-unused) option for fanout threshold for timing cost calc Signed-off-by: David Shah --- common/placer1.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'common/placer1.cc') diff --git a/common/placer1.cc b/common/placer1.cc index 4f9d6a87..b180ebfb 100644 --- a/common/placer1.cc +++ b/common/placer1.cc @@ -498,7 +498,7 @@ class SAPlacer if (other_cell != nullptr) new_dist += get_constraints_distance(ctx, other_cell); delta = lambda * (moveChange.timing_delta / std::max(last_timing_cost, epsilon)) + - (1 - lambda) * (double(moveChange.wirelen_delta) / std::max(last_wirelen_cost, epsilon)); + (1 - lambda) * (double(moveChange.wirelen_delta) / std::max(last_wirelen_cost, epsilon)); delta += (cfg.constraintWeight / temp) * (new_dist - old_dist) / last_wirelen_cost; n_move++; // SA acceptance criterea @@ -729,7 +729,7 @@ class SAPlacer if (ignore_net(ni)) continue; net_bounds[ni->udata] = get_net_bounds(ni); - if (ctx->timing_driven) + if (ctx->timing_driven && int(ni->users.size()) < cfg.timingFanoutThresh) for (size_t i = 0; i < ni->users.size(); i++) net_arc_tcost[ni->udata][i] = get_timing_cost(ni, i); } @@ -806,7 +806,7 @@ class SAPlacer mc.bounds_changed_nets.push_back(pn->udata); mc.already_bounds_changed[pn->udata] = true; } - if (ctx->timing_driven) { + if (ctx->timing_driven && int(pn->users.size()) < cfg.timingFanoutThresh) { // Output ports - all arcs change timing if (port.second.type == PORT_OUT) { int cc; @@ -913,6 +913,7 @@ Placer1Cfg::Placer1Cfg(Context *ctx) : Settings(ctx) minBelsForGridPick = get("placer1/minBelsForGridPick", 64); budgetBased = get("placer1/budgetBased", false); startTemp = get("placer1/startTemp", 1); + timingFanoutThresh = std::numeric_limits::max(); } bool placer1(Context *ctx, Placer1Cfg cfg) -- cgit v1.2.3