Add well around column muxes.

This commit is contained in:
Matt Guthaus 2018-01-31 14:31:50 -08:00
parent 4273a3717d
commit acf3fe8376
2 changed files with 22 additions and 0 deletions

View File

@ -496,6 +496,26 @@ class layout(lef.lef):
return blockages return blockages
def add_enclosure(self, insts, layer="nwell"):
""" Add a layer that surrounds the given instances. Useful
for creating wells, for example. Doesn't check for minimum widths or
spacings."""
xmin=insts[0].lx()
ymin=insts[0].by()
xmax=insts[0].rx()
ymax=insts[0].uy()
for inst in insts:
xmin = min(xmin, inst.lx())
ymin = min(ymin, inst.by())
xmax = max(xmax, inst.rx())
ymax = max(ymax, inst.uy())
self.add_rect(layer=layer,
offset=vector(xmin,ymin),
width=xmax-xmin,
height=ymax-ymin)
def pdf_write(self, pdf_name): def pdf_write(self, pdf_name):
# NOTE: Currently does not work (Needs further research) # NOTE: Currently does not work (Needs further research)
#self.pdf_name = self.name + ".pdf" #self.pdf_name = self.name + ".pdf"

View File

@ -40,6 +40,7 @@ class single_level_column_mux_array(design.design):
self.setup_layout_constants() self.setup_layout_constants()
self.create_array() self.create_array()
self.add_routing() self.add_routing()
self.add_enclosure(self.mux_inst, "pwell")
def add_modules(self): def add_modules(self):
self.mux = single_level_column_mux(name="single_level_column_mux", self.mux = single_level_column_mux(name="single_level_column_mux",
@ -60,6 +61,7 @@ class single_level_column_mux_array(design.design):
# mux height plus routing signal height plus well spacing at the top # mux height plus routing signal height plus well spacing at the top
self.height = self.mux.height + self.route_height + drc["pwell_to_nwell"] self.height = self.mux.height + self.route_height + drc["pwell_to_nwell"]
def create_array(self): def create_array(self):
self.mux_inst = [] self.mux_inst = []