From 30ee5a0a2e1a1e7caeb05e2c29a3f66f44de5cf3 Mon Sep 17 00:00:00 2001 From: Jesse Cirimelli-Low Date: Mon, 14 Aug 2023 14:19:58 -0700 Subject: [PATCH] add dummy cell mirroring for sky130 --- compiler/modules/dummy_array.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/compiler/modules/dummy_array.py b/compiler/modules/dummy_array.py index ced3de20..0bc6c065 100644 --- a/compiler/modules/dummy_array.py +++ b/compiler/modules/dummy_array.py @@ -52,9 +52,16 @@ class dummy_array(bitcell_base_array): def create_instances(self): """ Create the module instances used in this design """ self.cell_inst={} - core_block = [[0 for x in range(1)] for y in range(2)] - core_block[(0+self.mirror) %2][0] = geometry.instance("core_0_0", mod=self.dummy_cell, is_bitcell=True) - core_block[(1+self.mirror) %2][0] = geometry.instance("core_1_0", mod=self.dummy_cell, is_bitcell=True, mirror='MX') + if self.cell.mirror.y: + core_block = [[0 for x in range(2)] for y in range(2)] + core_block[0][0] = geometry.instance("core_0_0", mod=self.cell, is_bitcell=True) + core_block[1][0] = geometry.instance("core_1_0", mod=self.cell, is_bitcell=True, mirror='MX') + core_block[0][1] = 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') + else: + core_block = [[0 for x in range(1)] for y in range(2)] + core_block[(0+self.mirror) %2][0] = geometry.instance("core_0_0", mod=self.dummy_cell, is_bitcell=True) + core_block[(1+self.mirror) %2][0] = geometry.instance("core_1_0", mod=self.dummy_cell, is_bitcell=True, mirror='MX') self.pattern = pattern(self, "dummy_array", core_block, num_rows=self.row_size, num_cols=self.column_size, name_template="bit_r{0}_c{1}")