Skip to content

Commit e47c6aa

Browse files
committed
Enhanced max slew fixing to resolve large unfixed violations
1) Added extra step to fix slew violations at load pins 2) Used actual slews from STA if possible, not just lumped RC estimates 3) Fixed a bug that led to overfixing due to wrong driver selection after buffering Signed-off-by: Cho Moon <cmoon@precisioninno.com>
1 parent 8c911c4 commit e47c6aa

21 files changed

Lines changed: 465 additions & 274 deletions

src/rsz/src/BufferedNet.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ BufferedNet::BufferedNet(const BufferedNetType type,
8080
type_ = BufferedNetType::load;
8181
location_ = location;
8282
load_pin_ = load_pin;
83+
corner_ = corner;
8384

8485
LibertyPort* load_port = resizer->network()->libertyPort(load_pin);
8586
if (load_port) {
@@ -105,6 +106,7 @@ BufferedNet::BufferedNet(const BufferedNetType type,
105106
layer_ = null_layer;
106107
ref_ = ref;
107108
ref2_ = ref2;
109+
corner_ = ref->corner();
108110

109111
cap_ = ref->cap() + ref2->cap();
110112
fanout_ = ref->fanout() + ref2->fanout();
@@ -130,6 +132,7 @@ BufferedNet::BufferedNet(const BufferedNetType type,
130132
location_ = location;
131133
layer_ = layer;
132134
ref_ = ref;
135+
corner_ = corner;
133136

134137
double wire_res, wire_cap;
135138
wireRC(corner, resizer, estimate_parasitics, wire_res, wire_cap);
@@ -158,6 +161,7 @@ BufferedNet::BufferedNet(const BufferedNetType type,
158161
buffer_cell_ = buffer_cell;
159162
layer_ = null_layer;
160163
ref_ = ref;
164+
corner_ = corner;
161165

162166
LibertyPort *input, *output;
163167
buffer_cell->bufferPorts(input, output);

src/rsz/src/BufferedNet.hh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ class BufferedNet
247247
}
248248

249249
bool fitsEnvelope(Metrics target);
250+
const Corner* corner() { return corner_; }
250251

251252
private:
252253
BufferedNetType type_;
@@ -283,6 +284,8 @@ class BufferedNet
283284

284285
// Delay from driver pin to here
285286
FixedDelay arrival_delay_ = FixedDelay::ZERO;
287+
288+
const Corner* corner_ = nullptr;
286289
};
287290

288291
} // namespace rsz

0 commit comments

Comments
 (0)