mirror of https://github.com/VLSIDA/OpenRAM.git
Small format cleanup
This commit is contained in:
parent
da334e47aa
commit
3074cf3b86
|
|
@ -7,7 +7,7 @@
|
||||||
#
|
#
|
||||||
import contact
|
import contact
|
||||||
import debug
|
import debug
|
||||||
from tech import drc, parameter
|
from tech import drc, parameter, layer
|
||||||
from vector import vector
|
from vector import vector
|
||||||
from ptx import ptx
|
from ptx import ptx
|
||||||
from globals import OPTS
|
from globals import OPTS
|
||||||
|
|
@ -975,6 +975,7 @@ class pbitcell(bitcell_base.bitcell_base):
|
||||||
"""
|
"""
|
||||||
Connects wells between ptx modules and places well contacts
|
Connects wells between ptx modules and places well contacts
|
||||||
"""
|
"""
|
||||||
|
if "pwell" in layer:
|
||||||
# extend pwell to encompass entire nmos region of the cell up to the
|
# extend pwell to encompass entire nmos region of the cell up to the
|
||||||
# height of the tallest nmos transistor
|
# height of the tallest nmos transistor
|
||||||
max_nmos_well_height = max(self.inverter_nmos.well_height,
|
max_nmos_well_height = max(self.inverter_nmos.well_height,
|
||||||
|
|
@ -993,6 +994,7 @@ class pbitcell(bitcell_base.bitcell_base):
|
||||||
|
|
||||||
# extend nwell to encompass inverter_pmos
|
# extend nwell to encompass inverter_pmos
|
||||||
# calculate offset of the left pmos well
|
# calculate offset of the left pmos well
|
||||||
|
if "nwell" in layer:
|
||||||
inverter_well_xpos = -(self.inverter_nmos.active_width + 0.5 * self.inverter_to_inverter_spacing) \
|
inverter_well_xpos = -(self.inverter_nmos.active_width + 0.5 * self.inverter_to_inverter_spacing) \
|
||||||
- self.nwell_enclose_active
|
- self.nwell_enclose_active
|
||||||
inverter_well_ypos = self.inverter_nmos_ypos + self.inverter_nmos.active_height \
|
inverter_well_ypos = self.inverter_nmos_ypos + self.inverter_nmos.active_height \
|
||||||
|
|
|
||||||
|
|
@ -196,6 +196,8 @@ class ptx(design.design):
|
||||||
# The well is not included in the height and width
|
# The well is not included in the height and width
|
||||||
self.height = self.poly_height
|
self.height = self.poly_height
|
||||||
self.width = self.active_width
|
self.width = self.active_width
|
||||||
|
self.well_height = self.height
|
||||||
|
self.well_width = self.width
|
||||||
|
|
||||||
# This is the center of the first active contact offset (centered vertically)
|
# This is the center of the first active contact offset (centered vertically)
|
||||||
self.contact_offset = self.active_offset + vector(0.5 * self.active_contact.width,
|
self.contact_offset = self.active_offset + vector(0.5 * self.active_contact.width,
|
||||||
|
|
@ -353,10 +355,10 @@ class ptx(design.design):
|
||||||
if not (well_name in layer or "vtg" in layer):
|
if not (well_name in layer or "vtg" in layer):
|
||||||
return
|
return
|
||||||
|
|
||||||
center_pos = self.active_offset + vector(0.5*self.active_width,
|
center_pos = self.active_offset + vector(0.5 * self.active_width,
|
||||||
0.5*self.active_height)
|
0.5 * self.active_height)
|
||||||
well_ll = center_pos - vector(0.5*self.well_width,
|
well_ll = center_pos - vector(0.5 * self.well_width,
|
||||||
0.5*self.well_height)
|
0.5 * self.well_height)
|
||||||
if well_name in layer:
|
if well_name in layer:
|
||||||
self.add_rect(layer=well_name,
|
self.add_rect(layer=well_name,
|
||||||
offset=well_ll,
|
offset=well_ll,
|
||||||
|
|
@ -450,7 +452,7 @@ class ptx(design.design):
|
||||||
contact=self.add_via_center(layers=self.active_stack,
|
contact=self.add_via_center(layers=self.active_stack,
|
||||||
offset=pos,
|
offset=pos,
|
||||||
size=(1, self.num_contacts),
|
size=(1, self.num_contacts),
|
||||||
directions=("V","V"),
|
directions=("V", "V"),
|
||||||
implant_type=self.implant_type,
|
implant_type=self.implant_type,
|
||||||
well_type=self.well_type)
|
well_type=self.well_type)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue