Add conservative well spacing between library FF and our pgates.

This commit is contained in:
mrg 2020-02-10 19:28:30 +00:00
parent f7915ec55e
commit 6bf33a980f
2 changed files with 15 additions and 5 deletions

View File

@ -49,10 +49,11 @@ class dff_buf(design.design):
self.create_instances()
def create_layout(self):
self.width = self.dff.width + self.inv1.width + self.inv2.width
self.place_instances()
self.width = self.inv2_inst.rx()
self.height = self.dff.height
self.place_instances()
self.route_wires()
self.add_layout_pins()
self.add_boundary()
@ -100,7 +101,10 @@ class dff_buf(design.design):
self.dff_inst.place(vector(0,0))
# Add INV1 to the right
self.inv1_inst.place(vector(self.dff_inst.rx(),0))
well_spacing = max(self.nwell_space,
self.pwell_space,
self.pwell_to_nwell)
self.inv1_inst.place(vector(self.dff_inst.rx() + well_spacing + self.well_extend_active,0))
# Add INV2 to the right
self.inv2_inst.place(vector(self.inv1_inst.rx(),0))

View File

@ -70,6 +70,12 @@ class dff_buf_array(design.design):
inv2_size=self.inv2_size)
self.add_mod(self.dff)
well_spacing = max(self.nwell_space,
self.pwell_space,
self.pwell_to_nwell)
self.dff_pitch = self.dff.width + well_spacing + self.well_extend_active
def create_dff_array(self):
self.dff_insts={}
for row in range(self.rows):
@ -89,10 +95,10 @@ class dff_buf_array(design.design):
for col in range(self.columns):
name = "Xdff_r{0}_c{1}".format(row,col)
if (row % 2 == 0):
base = vector(col*self.dff.width,row*self.dff.height)
base = vector(col*self.dff_pitch,row*self.dff.height)
mirror = "R0"
else:
base = vector(col*self.dff.width,(row+1)*self.dff.height)
base = vector(col*self.dff_pitch,(row+1)*self.dff.height)
mirror = "MX"
self.dff_insts[row,col].place(offset=base,
mirror=mirror)