Files
OpenROAD/test/timing_api_3.py
2024-10-04 09:15:28 -07:00

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),
)
)