mirror of https://github.com/VLSIDA/OpenRAM.git
Add source/drain/gate to structure
This commit is contained in:
parent
266d68c395
commit
073bd47b31
|
|
@ -293,7 +293,8 @@ class ptx(design.design):
|
||||||
|
|
||||||
# poly_positions are the bottom center of the poly gates
|
# poly_positions are the bottom center of the poly gates
|
||||||
self.poly_positions = []
|
self.poly_positions = []
|
||||||
|
self.poly_gates = []
|
||||||
|
|
||||||
# It is important that these are from left to right,
|
# It is important that these are from left to right,
|
||||||
# so that the pins are in the right
|
# so that the pins are in the right
|
||||||
# order for the accessors
|
# order for the accessors
|
||||||
|
|
@ -304,13 +305,15 @@ class ptx(design.design):
|
||||||
offset=poly_offset,
|
offset=poly_offset,
|
||||||
height=self.poly_height,
|
height=self.poly_height,
|
||||||
width=self.poly_width)
|
width=self.poly_width)
|
||||||
self.add_layout_pin_rect_center(text="G",
|
gate = self.add_layout_pin_rect_center(text="G",
|
||||||
layer="poly",
|
layer="poly",
|
||||||
offset=poly_offset,
|
offset=poly_offset,
|
||||||
height=self.poly_height,
|
height=self.poly_height,
|
||||||
width=self.poly_width)
|
width=self.poly_width)
|
||||||
self.poly_positions.append(poly_offset)
|
self.poly_positions.append(poly_offset)
|
||||||
poly_offset = poly_offset + vector(self.poly_pitch,0)
|
self.poly_gates.append(gate)
|
||||||
|
|
||||||
|
poly_offset = poly_offset + vector(self.poly_pitch, 0)
|
||||||
|
|
||||||
if self.connect_poly:
|
if self.connect_poly:
|
||||||
self.connect_fingered_poly(self.poly_positions)
|
self.connect_fingered_poly(self.poly_positions)
|
||||||
|
|
@ -369,6 +372,10 @@ class ptx(design.design):
|
||||||
drain_positions = []
|
drain_positions = []
|
||||||
source_positions = []
|
source_positions = []
|
||||||
|
|
||||||
|
# Keep a list of the source/drain contacts
|
||||||
|
self.source_contacts = []
|
||||||
|
self.drain_contacts = []
|
||||||
|
|
||||||
# First one is always a SOURCE
|
# First one is always a SOURCE
|
||||||
label = "S"
|
label = "S"
|
||||||
pos = self.contact_offset
|
pos = self.contact_offset
|
||||||
|
|
@ -383,6 +390,7 @@ class ptx(design.design):
|
||||||
offset=pos,
|
offset=pos,
|
||||||
width=contact.mod.second_layer_width,
|
width=contact.mod.second_layer_width,
|
||||||
height=contact.mod.second_layer_height)
|
height=contact.mod.second_layer_height)
|
||||||
|
self.source_contacts.append(contact)
|
||||||
source_positions.append(pos)
|
source_positions.append(pos)
|
||||||
|
|
||||||
# Skip these if they are going to be in series
|
# Skip these if they are going to be in series
|
||||||
|
|
@ -409,6 +417,11 @@ class ptx(design.design):
|
||||||
offset=pos,
|
offset=pos,
|
||||||
width=contact.mod.second_layer_width,
|
width=contact.mod.second_layer_width,
|
||||||
height=contact.mod.second_layer_height)
|
height=contact.mod.second_layer_height)
|
||||||
|
|
||||||
|
if label == "S":
|
||||||
|
self.source_contacts.append(contact)
|
||||||
|
else:
|
||||||
|
self.drain_contacts.append(contact)
|
||||||
|
|
||||||
pos = vector(self.active_offset.x + self.active_width - 0.5 * self.active_contact.width,
|
pos = vector(self.active_offset.x + self.active_width - 0.5 * self.active_contact.width,
|
||||||
self.contact_offset.y)
|
self.contact_offset.y)
|
||||||
|
|
@ -430,6 +443,10 @@ class ptx(design.design):
|
||||||
offset=pos,
|
offset=pos,
|
||||||
width=contact.mod.second_layer_width,
|
width=contact.mod.second_layer_width,
|
||||||
height=contact.mod.second_layer_height)
|
height=contact.mod.second_layer_height)
|
||||||
|
if label == "S":
|
||||||
|
self.source_contacts.append(contact)
|
||||||
|
else:
|
||||||
|
self.drain_contacts.append(contact)
|
||||||
|
|
||||||
if self.connect_active:
|
if self.connect_active:
|
||||||
self.connect_fingered_active(drain_positions, source_positions)
|
self.connect_fingered_active(drain_positions, source_positions)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue