mirror of https://github.com/VLSIDA/OpenRAM.git
Moved dff's up and moved wmask_AND/wdriver pins left/down, respectively.
This commit is contained in:
parent
43d45fba98
commit
4813c01d56
|
|
@ -108,8 +108,6 @@ class write_mask_and_array(design.design):
|
||||||
|
|
||||||
|
|
||||||
def add_layout_pins(self):
|
def add_layout_pins(self):
|
||||||
self.nand2 = factory.create(module_type="pnand2")
|
|
||||||
supply_pin=self.nand2.get_pin("vdd")
|
|
||||||
for i in range(self.num_wmasks):
|
for i in range(self.num_wmasks):
|
||||||
wmask_in_pin = self.and2_insts[i].get_pin("A")
|
wmask_in_pin = self.and2_insts[i].get_pin("A")
|
||||||
self.add_layout_pin(text="wmask_in_{0}".format(i),
|
self.add_layout_pin(text="wmask_in_{0}".format(i),
|
||||||
|
|
@ -117,6 +115,8 @@ class write_mask_and_array(design.design):
|
||||||
offset=wmask_in_pin.ll(),
|
offset=wmask_in_pin.ll(),
|
||||||
width=wmask_in_pin.width(),
|
width=wmask_in_pin.width(),
|
||||||
height=wmask_in_pin.height())
|
height=wmask_in_pin.height())
|
||||||
|
self.add_via_center(layers=("metal1", "via1", "metal2"),
|
||||||
|
offset=wmask_in_pin.center())
|
||||||
|
|
||||||
en_pin = self.and2_insts[i].get_pin("B")
|
en_pin = self.and2_insts[i].get_pin("B")
|
||||||
# Add the M1->M2 stack
|
# Add the M1->M2 stack
|
||||||
|
|
@ -143,7 +143,7 @@ class write_mask_and_array(design.design):
|
||||||
for n in ["vdd", "gnd"]:
|
for n in ["vdd", "gnd"]:
|
||||||
pin_list = self.and2_insts[i].get_pins(n)
|
pin_list = self.and2_insts[i].get_pins(n)
|
||||||
for pin in pin_list:
|
for pin in pin_list:
|
||||||
pin_pos = pin.lc()
|
pin_pos = vector(pin.lx()-0.75*drc('minwidth_metal1'), pin.cy())
|
||||||
# Add the M1->M2 stack
|
# Add the M1->M2 stack
|
||||||
self.add_via_center(layers=("metal1", "via1", "metal2"),
|
self.add_via_center(layers=("metal1", "via1", "metal2"),
|
||||||
offset=pin_pos)
|
offset=pin_pos)
|
||||||
|
|
|
||||||
|
|
@ -81,12 +81,12 @@ class sram_1bank(sram_base):
|
||||||
if port in self.write_ports:
|
if port in self.write_ports:
|
||||||
# Add the write mask flops below the write mask AND array.
|
# Add the write mask flops below the write mask AND array.
|
||||||
wmask_pos[port] = vector(self.bank.bank_array_ll.x,
|
wmask_pos[port] = vector(self.bank.bank_array_ll.x,
|
||||||
- max_gap_size - self.dff.height)
|
-0.5*max_gap_size - self.dff.height)
|
||||||
self.wmask_dff_insts[port].place(wmask_pos[port])
|
self.wmask_dff_insts[port].place(wmask_pos[port])
|
||||||
|
|
||||||
# Add the data flops below the write mask flops.
|
# Add the data flops below the write mask flops.
|
||||||
data_pos[port] = vector(self.bank.bank_array_ll.x,
|
data_pos[port] = vector(self.bank.bank_array_ll.x,
|
||||||
-2*max_gap_size - 2*self.dff.height)
|
-1.5*max_gap_size - 2*self.dff.height)
|
||||||
self.data_dff_insts[port].place(data_pos[port])
|
self.data_dff_insts[port].place(data_pos[port])
|
||||||
else:
|
else:
|
||||||
wmask_pos[port] = vector(self.bank.bank_array_ll.x, 0)
|
wmask_pos[port] = vector(self.bank.bank_array_ll.x, 0)
|
||||||
|
|
@ -369,10 +369,12 @@ class sram_1bank(sram_base):
|
||||||
bank_names = ["din{0}_{1}".format(port,x) for x in range(self.word_size)]
|
bank_names = ["din{0}_{1}".format(port,x) for x in range(self.word_size)]
|
||||||
bank_pins = [self.bank_inst.get_pin(x) for x in bank_names]
|
bank_pins = [self.bank_inst.get_pin(x) for x in bank_names]
|
||||||
for x in bank_names:
|
for x in bank_names:
|
||||||
|
pin_offset = vector(self.bank_inst.get_pin(x).cx(),
|
||||||
|
self.bank_inst.get_pin(x).by() - 0.75*drc('minwidth_metal1'))
|
||||||
self.add_via_center(layers=("metal1", "via1", "metal2"),
|
self.add_via_center(layers=("metal1", "via1", "metal2"),
|
||||||
offset=self.bank_inst.get_pin(x).bc())
|
offset=pin_offset)
|
||||||
self.add_via_center(layers=("metal2", "via2", "metal3"),
|
self.add_via_center(layers=("metal2", "via2", "metal3"),
|
||||||
offset=self.bank_inst.get_pin(x).bc())
|
offset=pin_offset)
|
||||||
|
|
||||||
route_map = list(zip(bank_pins, dff_pins))
|
route_map = list(zip(bank_pins, dff_pins))
|
||||||
self.create_horizontal_channel_route(netlist=route_map,
|
self.create_horizontal_channel_route(netlist=route_map,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue