mirror of https://github.com/VLSIDA/OpenRAM.git
Only add second port if it is specified.
This commit is contained in:
parent
2fd86958a8
commit
66982a9283
|
|
@ -93,32 +93,33 @@ class sram_1bank(sram_base):
|
||||||
self.data_dff_insts[port].place(data_pos[port])
|
self.data_dff_insts[port].place(data_pos[port])
|
||||||
|
|
||||||
|
|
||||||
# Port 1
|
if len(self.all_ports)>1:
|
||||||
port = 1
|
# Port 1
|
||||||
control_pos[port] = vector(self.bank_inst.rx() + self.control_logic_insts[port].width + 2*self.m2_pitch,
|
port = 1
|
||||||
self.bank.bank_array_ll.y - self.control_logic_insts[port].mod.control_logic_center.y)
|
control_pos[port] = vector(self.bank_inst.rx() + self.control_logic_insts[port].width + 2*self.m2_pitch,
|
||||||
self.control_logic_insts[port].place(control_pos[port], mirror="MY")
|
self.bank.bank_array_ll.y - self.control_logic_insts[port].mod.control_logic_center.y)
|
||||||
|
self.control_logic_insts[port].place(control_pos[port], mirror="MY")
|
||||||
|
|
||||||
# The row address bits are placed above the control logic aligned on the left.
|
# The row address bits are placed above the control logic aligned on the left.
|
||||||
row_addr_pos[port] = vector(self.bank_inst.rx() + self.row_addr_dff_insts[port].width,
|
row_addr_pos[port] = vector(self.bank_inst.rx() + self.row_addr_dff_insts[port].width,
|
||||||
self.control_logic_insts[port].uy())
|
self.control_logic_insts[port].uy())
|
||||||
self.row_addr_dff_insts[port].place(row_addr_pos[port], mirror="MY")
|
self.row_addr_dff_insts[port].place(row_addr_pos[port], mirror="MY")
|
||||||
|
|
||||||
# Add the col address flops above the bank to the right of the upper-right of bank array
|
# Add the col address flops above the bank to the right of the upper-right of bank array
|
||||||
if self.col_addr_dff:
|
if self.col_addr_dff:
|
||||||
col_addr_pos[port] = vector(self.bank.bank_array_ur.x + self.bank.central_bus_width,
|
col_addr_pos[port] = vector(self.bank.bank_array_ur.x + self.bank.central_bus_width,
|
||||||
self.bank_inst.uy() + data_gap + self.col_addr_dff_insts[port].height)
|
self.bank_inst.uy() + data_gap + self.col_addr_dff_insts[port].height)
|
||||||
self.col_addr_dff_insts[port].place(col_addr_pos[port], mirror="MX")
|
self.col_addr_dff_insts[port].place(col_addr_pos[port], mirror="MX")
|
||||||
|
|
||||||
# Add the data flops above the bank to the left of the upper-right of bank array
|
# Add the data flops above the bank to the left of the upper-right of bank array
|
||||||
# This relies on the upper-right of the array of the bank
|
# This relies on the upper-right of the array of the bank
|
||||||
# decoder in upper left, bank in upper right, sensing in lower right.
|
# decoder in upper left, bank in upper right, sensing in lower right.
|
||||||
# These flops go below the sensing and leave a gap to channel route to the
|
# These flops go below the sensing and leave a gap to channel route to the
|
||||||
# sense amps.
|
# sense amps.
|
||||||
if port in self.write_ports:
|
if port in self.write_ports:
|
||||||
data_pos[port] = vector(self.bank.bank_array_ur.x - self.data_dff_insts[port].width,
|
data_pos[port] = vector(self.bank.bank_array_ur.x - self.data_dff_insts[port].width,
|
||||||
self.bank.uy() + data_gap + self.data_dff_insts[port].height)
|
self.bank.uy() + data_gap + self.data_dff_insts[port].height)
|
||||||
self.data_dff_insts[port].place(data_pos[port], mirror="MX")
|
self.data_dff_insts[port].place(data_pos[port], mirror="MX")
|
||||||
|
|
||||||
|
|
||||||
def add_layout_pins(self):
|
def add_layout_pins(self):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue