OpenRAM/compiler/gdsMill/sram_examples/fillerDemo.py

54 lines
2.5 KiB
Python
Raw Normal View History

2016-11-08 18:57:35 +01:00
#!/usr/bin/env python
import gdsMill
#we will add the filler at a higher level of hiearchy
#so first, load our top level layout from GDS
myTopLevelLayout = gdsMill.VlsiLayout()
reader = gdsMill.Gds2reader(myTopLevelLayout)
reader.loadFromFile("./gdsFiles/testLayoutA.gds")
#now create a new layout
#be sure to assign a name, since this will be the root object in our hierarchy to which
#all other objects are referenced
filledLayout = gdsMill.VlsiLayout(name="filledLayout")
#now place an instnace of our top level layout into the filled layout
#hierarchy looks like this:
# filled layout
# top level layout
# layout elements
# layout elements
# layout elements
# fill elements
# fill elements .....
filledLayout.addInstance(myTopLevelLayout,
offsetInMicrons = (0,0),
mirror = "",
rotate = 0.0)
#now actaully add the fill - gds mill will create an array of boxes
# maintaining spacing from existing layout elements
#we'll do it once for two different layers
filledLayout.fillAreaDensity(layerToFill = myTopLevelLayout.layerNumbersInUse[5],
offsetInMicrons = (-10.0,-10.0), #this is where to start from
coverageWidth = 40.0, #size of the fill area in microns
coverageHeight = 40.0,
minSpacing = 0.5, #distance between fill blocks
blockSize = 2.0 #width and height of each filler block in microns
)
filledLayout.fillAreaDensity(layerToFill = myTopLevelLayout.layerNumbersInUse[7],
offsetInMicrons = (-11.0,-11.0), #this is where to start from
coverageWidth = 40.0, #size of the fill area in microns
coverageHeight = 40.0,
minSpacing = 0.5, #distance between fill blocks
blockSize = 3.0 #width and height of each filler block in microns
)
#and now dump the filled layout to a new GDS file
writer = gdsMill.Gds2writer(filledLayout)
writer.writeToFile("./gdsFiles/filledLayout.gds")
#and strea
streamer = gdsMill.GdsStreamer()
streamer.streamToCadence(cadenceLibraryContainerPath = "~/design/600nmAmi",
libraryName = "gdsMillTest",
inputPath = "./gdsFiles/filledLayout.gds")