From 64056d25eed1de15e024dcda2833615b3cbcd454 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Wed, 22 Dec 2021 15:52:22 +0100 Subject: [PATCH] Layer assignment step was ignoring the number of RoutingPad threshold. * Bug: In Anabatic::layerAssign(), during the step of desaturation of GCells that contains too much terminals (i.e. lot of *local* congestion), the desaturation threshold was har-coded to 8. Wich is fine for symbolic cmos but way too low for Flexlib. End result was that most straight wires where moved towards the upper layers, creating congestion (imbalance of layer densities). Now the parameter: * "anabatic.saturateRp" (default value:8) is correctly taken into account. --- anabatic/src/LayerAssign.cpp | 2 +- katana/src/Configuration.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/anabatic/src/LayerAssign.cpp b/anabatic/src/LayerAssign.cpp index 9cdc0a6f..ed375a49 100644 --- a/anabatic/src/LayerAssign.cpp +++ b/anabatic/src/LayerAssign.cpp @@ -987,7 +987,7 @@ namespace Anabatic { rps.insert( terminal->getRoutingPad() ); } } - if (rps.size() > 8) { + if (rps.size() > getConfiguration()->getSaturateRp()) { GCellRps* gcellRps = new GCellRps ( gcell, this ); gcellRpss.insert( gcellRps ); diff --git a/katana/src/Configuration.cpp b/katana/src/Configuration.cpp index 84074fe4..1d1a6430 100644 --- a/katana/src/Configuration.cpp +++ b/katana/src/Configuration.cpp @@ -183,6 +183,7 @@ namespace Katana { cout << Dots::asUInt (" - Dijkstra GR search halo" ,getSearchHalo()) << endl; cout << Dots::asBool (" - Use GR density estimate" ,useGlobalEstimate()) << endl; cout << Dots::asBool (" - Use static bloat profile" ,useStaticBloatProfile()) << endl; + cout << Dots::asInt (" - GCell terminal(RP) saturate number" ,getSaturateRp()) << endl; cout << Dots::asDouble(" - GCell saturate ratio (LA)" ,getSaturateRatio()) << endl; cout << Dots::asUInt (" - Long wire threshold1 for move up" ,_longWireUpThreshold1) << endl; cout << Dots::asDouble(" - Long wire reserved1 for move up" ,_longWireUpReserve1) << endl;