coriolis/vlsisapd/examples/liberty/python/driveLiberty.py

48 lines
1.6 KiB
Python

from LIBERTY import *
library = Library("test")
# Attributes
library.addAttribute("default_inout_pin_cap", Attribute.Type.Double, "0.011")
library.addAttribute("default_wire_load_mode", Attribute.Type.String, "enclosed")
library.addAttribute("time_unit", Attribute.Type.Unit, "1", "ns")
library.addAttribute("capacitive_load_unit", Attribute.Type.Unit, "1", "pf")
# WireLoads
library.addWireLoad("medium")
wireLoad = library.getWireLoad("medium")
wireLoad.addAttribute("slope", Attribute.Type.Double, "200")
wireLoad.addAttribute("fanout_length", Attribute.Type.Pair, "1", "200")
# WireLoadSelection
library.addWireLoadSelection("medium")
wireLoadSelection = library.getWireLoadSelection()
wireLoadSelection.addWireLoadArea(0, 500, "small")
# Cells
library.addCell("inv")
cell = library.getCell("inv")
cell.addAttribute("area", Attribute.Type.Double, "1")
cell.addAttribute("cell_footprint", Attribute.Type.String, "inv")
# Pins
cell.addPin("e")
pin = cell.getPin("e")
pin.addAttribute("direction", Attribute.Type.String, "input")
pin.addAttribute("capacitance", Attribute.Type.Double, "0.008")
cell.addPin("s")
pin = cell.getPin("s")
pin.addAttribute("direction", Attribute.Type.String, "output")
pin.addAttribute("function", Attribute.Type.String, "i'")
# Timing
pin.addTiming()
timing = pin.getTimings()[-1]
timing.addAttribute("timing_sense", Attribute.Type.String, "negative_unate")
timing.addAttribute("related_pin", Attribute.Type.String, "e")
timing.addAttribute("intrinsic_rise", Attribute.Type.Double, "0.101")
# Write
library.writeToFile("testDrive.lib")