mirror of
https://github.com/The-OpenROAD-Project/OpenROAD.git
synced 2026-06-02 01:08:34 +08:00
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
from openroad import Tech, Design, Timing
|
|
|
|
tech = Tech()
|
|
tech.readLiberty("Nangate45/Nangate45_typ.lib")
|
|
tech.readLef("Nangate45/Nangate45_tech.lef")
|
|
tech.readLef("Nangate45/Nangate45_stdcell.lef")
|
|
|
|
design = Design(tech)
|
|
design.readDef("gcd_nangate45.def")
|
|
design.evalTclString("read_sdc timing_api_3.sdc")
|
|
timing = Timing(design)
|
|
|
|
for inst in design.getBlock().getInsts():
|
|
for iTerm in inst.getITerms():
|
|
print(iTerm.getName(), " ", design.isInClock(iTerm))
|
|
if not iTerm.getNet():
|
|
continue
|
|
if design.isInSupply(iTerm):
|
|
continue
|
|
print(
|
|
"{} {:.3g} {:.3g} {:.3g} {:.3g}".format(
|
|
design.getITermName(iTerm),
|
|
timing.getPinSlack(iTerm, Timing.Rise, Timing.Max),
|
|
timing.getPinSlack(iTerm, Timing.Fall, Timing.Max),
|
|
timing.getPinSlack(iTerm, Timing.Rise, Timing.Min),
|
|
timing.getPinSlack(iTerm, Timing.Fall, Timing.Min),
|
|
)
|
|
)
|
|
for i, corner in enumerate(timing.getCorners()):
|
|
print(
|
|
"Corner {} {:.3g} {:.3g}".format(
|
|
i,
|
|
timing.getPortCap(iTerm, corner, Timing.Max),
|
|
timing.getPortCap(iTerm, corner, Timing.Min),
|
|
)
|
|
)
|