Skip to content

Commit 6f60c55

Browse files
authored
Merge pull request #9037 from The-OpenROAD-Project-staging/grt-estimate-resistance
grt: API to estimate path resistance between two pins
2 parents 886a8e6 + 08594a8 commit 6f60c55

File tree

9 files changed

+686
-22
lines changed

9 files changed

+686
-22
lines changed

src/grt/README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,24 @@ read_global_route_segments file_name
359359
| ----- | ----- |
360360
| `file_name` | Path to global routing segments file. |
361361

362+
### Estimate Path Resistance Between Two Pins
363+
364+
This command calculates the path resistance between two pins considering the
365+
vias and wires connecting them. The two pins need to be connected by the same
366+
wire.
367+
368+
```tcl
369+
estimate_path_resistance pin_name_1 pin_name_2 [-verbose]
370+
```
371+
372+
#### Options
373+
374+
| Switch Name | Description |
375+
| ----- | ----- |
376+
| `pin_name_1` | Pin name 1 (e.g., `_437_/Y`). |
377+
| `pin_name_2` | Pin name 1 (e.g., `_438_/A`). |
378+
| `-verbose` | Print path details. |
379+
362380
## Example scripts
363381

364382
Examples scripts demonstrating how to run FastRoute on a sample design of `gcd` as follows:

src/grt/include/grt/GlobalRouter.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "grt/RoutePt.h"
2020
#include "odb/db.h"
2121
#include "odb/dbBlockCallBackObj.h"
22+
#include "odb/dbObject.h"
2223
#include "odb/geom.h"
2324
#include "sta/Liberty.hh"
2425

@@ -286,6 +287,19 @@ class GlobalRouter
286287
void createWLReportFile(const char* file_name, bool verbose);
287288
std::vector<PinGridLocation> getPinGridPositions(odb::dbNet* db_net);
288289

290+
// Report wire resistance
291+
float getLayerResistance(int layer, int length, odb::dbNet* net);
292+
float getViaResistance(int from_layer, int to_layer);
293+
double dbuToMicrons(int dbu);
294+
float estimatePathResistance(odb::dbObject* pin1,
295+
odb::dbObject* pin2,
296+
bool verbose = false);
297+
float estimatePathResistance(odb::dbObject* pin1,
298+
odb::dbObject* pin2,
299+
odb::dbTechLayer* layer1,
300+
odb::dbTechLayer* layer2,
301+
bool verbose = false);
302+
289303
bool findPinAccessPointPositions(
290304
const Pin& pin,
291305
std::map<int, std::vector<PointPair>>& ap_positions);

0 commit comments

Comments
 (0)