Files
OpenROAD/test/timing_api_2.py
Matt Liberty 094b3db683 test/timing_api_*: use limited precision
Try to avoid small diffs in digits beyond significance

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
2024-09-05 14:15:02 -07:00

44 lines
1.4 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_2.sdc")
timing = Timing(design)
for inst in design.getBlock().getInsts():
print(
inst.getName(),
inst.getMaster().getName(),
design.isSequential(inst.getMaster()),
design.isInClock(inst),
design.isBuffer(inst.getMaster()),
design.isInverter(inst.getMaster()),
)
for corner in timing.getCorners():
print(
"{:.3g} {:.3g}".format(
timing.staticPower(inst, corner), timing.dynamicPower(inst, corner)
)
)
for iTerm in inst.getITerms():
if not iTerm.getNet():
continue
if not (design.isInSupply(iTerm)):
print(
"{} {:.3g} {:.3g} {:.3g} {}".format(
design.getITermName(iTerm),
timing.getPinArrival(iTerm, Timing.Rise),
timing.getPinArrival(iTerm, Timing.Fall),
timing.getPinSlew(iTerm),
timing.isEndpoint(iTerm),
)
)
for net in design.getBlock().getNets():
print("{} {}".format(net.getName(), design.getNetRoutedLength(net)))