From d9d8cb298336099d0fe659a56f7405628389bff2 Mon Sep 17 00:00:00 2001 From: Jesse Cirimelli-Low Date: Sun, 30 Jul 2023 22:39:23 -0700 Subject: [PATCH] capped norbl scmos passing --- compiler/modules/bitcell_array.py | 13 +++++++++---- compiler/modules/dummy_array.py | 15 +++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/compiler/modules/bitcell_array.py b/compiler/modules/bitcell_array.py index f0a951bf..c4aa8c5d 100644 --- a/compiler/modules/bitcell_array.py +++ b/compiler/modules/bitcell_array.py @@ -62,12 +62,17 @@ class bitcell_array(bitcell_base_array): self.cell_inst={} core_block = [[0 for x in range(2)] for y in range(2)] # block[col][row - core_block[0][0] = geometry.instance("core_0_0", mod=self.cell, is_bitcell=True) - core_block[0][1] = geometry.instance("core_1_0", mod=self.cell, is_bitcell=True, mirror='MX') - core_block[1][0] = geometry.instance("core_0_1", mod=self.cell, is_bitcell=True, mirror='MY') - core_block[1][1] = geometry.instance("core_1_1", mod=self.cell, is_bitcell=True, mirror='XY') + core_block[(0 + self.column_offset) %2][0] = geometry.instance("core_0_0", mod=self.cell, is_bitcell=True) + core_block[(0 + self.column_offset) %2][1] = geometry.instance("core_1_0", mod=self.cell, is_bitcell=True, mirror='MX') + core_block[(1 + self.column_offset) %2][0] = geometry.instance("core_0_1", mod=self.cell, is_bitcell=True, mirror='MY') + core_block[(1 + self.column_offset) %2][1] = geometry.instance("core_1_1", mod=self.cell, is_bitcell=True, mirror='XY') + self.pattern = pattern(self, "bitcell_array", core_block, num_rows=self.row_size, num_cols=self.column_size) self.pattern.connect_array() + + for key in self.cell_inst.keys(): + if key != (0,0): + self.trim_insts.add(self.cell_inst[key].name) def analytical_power(self, corner, load): """Power of Bitcell array and bitline in nW.""" diff --git a/compiler/modules/dummy_array.py b/compiler/modules/dummy_array.py index 387c00e5..f890d98e 100644 --- a/compiler/modules/dummy_array.py +++ b/compiler/modules/dummy_array.py @@ -53,16 +53,11 @@ class dummy_array(bitcell_base_array): """ Create the module instances used in this design """ self.cell_inst={} core_block = [[0 for x in range(2)] for y in range(2)] - if not self.mirror: - core_block[0][0] = geometry.instance("core_0_0", mod=self.dummy_cell, is_bitcell=True) - core_block[0][1] = geometry.instance("core_1_0", mod=self.dummy_cell, is_bitcell=True, mirror='MX') - core_block[1][0] = geometry.instance("core_0_1", mod=self.dummy_cell, is_bitcell=True, mirror='MY') - core_block[1][1] = geometry.instance("core_1_1", mod=self.dummy_cell, is_bitcell=True, mirror='XY') - else: - core_block[0][0] = geometry.instance("core_0_0", mod=self.dummy_cell, is_bitcell=True, mirror='MY') - core_block[0][1] = geometry.instance("core_1_0", mod=self.dummy_cell, is_bitcell=True, mirror='XY') - core_block[1][0] = geometry.instance("core_0_1", mod=self.dummy_cell, is_bitcell=True) - core_block[1][1] = geometry.instance("core_1_1", mod=self.dummy_cell, is_bitcell=True, mirror='MX') + core_block[(0 + self.column_offset) %2][(0+self.mirror) %2] = geometry.instance("core_0_0", mod=self.dummy_cell, is_bitcell=True) + core_block[(0 + self.column_offset) %2][(1+self.mirror) %2] = geometry.instance("core_1_0", mod=self.dummy_cell, is_bitcell=True, mirror='MX') + core_block[(1 + self.column_offset) %2][(0+self.mirror) %2] = geometry.instance("core_0_1", mod=self.dummy_cell, is_bitcell=True, mirror='MY') + core_block[(1 + self.column_offset) %2][(1+self.mirror) %2] = geometry.instance("core_1_1", mod=self.dummy_cell, is_bitcell=True, mirror='XY') + self.pattern = pattern(self, "dummy_array", core_block, num_rows=self.row_size, num_cols=self.column_size) self.pattern.connect_array()