mirror of https://github.com/VLSIDA/OpenRAM.git
add vnb/vpb lvs correspondence points
This commit is contained in:
parent
c599d8f62c
commit
c36f471333
|
|
@ -53,7 +53,6 @@ class design(hierarchy_design):
|
||||||
(width, height) = utils.get_libcell_size(self.cell_name,
|
(width, height) = utils.get_libcell_size(self.cell_name,
|
||||||
GDS["unit"],
|
GDS["unit"],
|
||||||
layer[prop.boundary_layer])
|
layer[prop.boundary_layer])
|
||||||
|
|
||||||
self.pin_map = utils.get_libcell_pins(self.pins,
|
self.pin_map = utils.get_libcell_pins(self.pins,
|
||||||
self.cell_name,
|
self.cell_name,
|
||||||
GDS["unit"])
|
GDS["unit"])
|
||||||
|
|
|
||||||
|
|
@ -749,6 +749,7 @@ class VlsiLayout:
|
||||||
Find all text labels and create a map to a list of shapes that
|
Find all text labels and create a map to a list of shapes that
|
||||||
they enclose on the given layer.
|
they enclose on the given layer.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Get the labels on a layer in the root level
|
# Get the labels on a layer in the root level
|
||||||
labels = self.getTexts(lpp)
|
labels = self.getTexts(lpp)
|
||||||
|
|
||||||
|
|
@ -760,6 +761,12 @@ class VlsiLayout:
|
||||||
label_coordinate = label.coordinates[0]
|
label_coordinate = label.coordinates[0]
|
||||||
user_coordinate = [x*self.units[0] for x in label_coordinate]
|
user_coordinate = [x*self.units[0] for x in label_coordinate]
|
||||||
pin_shapes = []
|
pin_shapes = []
|
||||||
|
try:
|
||||||
|
from tech import layer_override
|
||||||
|
if layer_override[label.textString]:
|
||||||
|
shapes = self.getAllShapes((layer_override[label.textString], None))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
for boundary in shapes:
|
for boundary in shapes:
|
||||||
if self.labelInRectangle(user_coordinate, boundary):
|
if self.labelInRectangle(user_coordinate, boundary):
|
||||||
pin_shapes.append((lpp, boundary))
|
pin_shapes.append((lpp, boundary))
|
||||||
|
|
|
||||||
|
|
@ -161,8 +161,20 @@ class bitcell_base_array(design.design):
|
||||||
for row in range(self.row_size):
|
for row in range(self.row_size):
|
||||||
for col in range(self.column_size):
|
for col in range(self.column_size):
|
||||||
inst = self.cell_inst[row, col]
|
inst = self.cell_inst[row, col]
|
||||||
for pin_name in ["vdd", "gnd"]:
|
if row == 2: #add only 1 label per col
|
||||||
self.copy_layout_pin(inst, pin_name)
|
for pin_name in ["vdd", "gnd"]:
|
||||||
|
self.copy_layout_pin(inst, pin_name)
|
||||||
|
if 'VPB' in self.cell_inst[row, col].mod.pins:
|
||||||
|
self.add_label("gnd", inst.get_pin("vpb").layer, inst.get_pin("vpb").ll())
|
||||||
|
if 'VNB' in self.cell_inst[row, col].mod.pins:
|
||||||
|
try:
|
||||||
|
from tech import layer_override
|
||||||
|
if layer_override['VNB\x00']:
|
||||||
|
inst.get_pin("vnb").layer = layer_override['VNB\x00']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
self.add_label("vdd", inst.get_pin("vnb").layer, inst.get_pin("vnb").ll())
|
||||||
|
|
||||||
|
|
||||||
def _adjust_x_offset(self, xoffset, col, col_offset):
|
def _adjust_x_offset(self, xoffset, col, col_offset):
|
||||||
tempx = xoffset
|
tempx = xoffset
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue