def test_frame(self): # Add frame cell = Cell('test_frame') cell.add_to_layer(4, box(0, 0, 10, 10)) cell.add_frame(padding=10, line_width=1., frame_layer=5) self.assertEqual(cell.bounds, (-11, -11, 21, 21)) self.assertEqual(cell.get_bounds(layers=[4]), (0, 0, 10, 10)) self.assertEqual(cell.get_bounds(layers=[5]), (-11, -11, 21, 21)) cell.add_frame(padding=10, line_width=1., frame_layer=99, bounds=(0, 0, 2, 3)) self.assertEqual(cell.get_bounds(layers=[99]), (-11, -11, 13, 14))
def test_cell_bounds(self): cell = Cell('test_cell') wg1 = Waveguide([0, 0], 0, 1) wg1.add_straight_segment(10) cell.add_to_layer(1, wg1) wg2 = Waveguide([40, 0], 0, 1) wg2.add_straight_segment(10) cell.add_to_layer(2, wg2) cell.add_region_layer(100, [1]) cell.add_region_layer(101, [1, 2]) self.assertTrue(100 in cell.layer_dict) self.assertEqual(cell.bounds, (0.0, -0.5, 50.0, 0.5)) subcell = Cell('subcell') subcell.add_to_layer(3, box(0, 0, 60, 70)) self.assertEqual(subcell.bounds, (0.0, 0, 60.0, 70)) # add subcell cell.add_cell(subcell, origin=(0, 0)) self.assertEqual(cell.bounds, (0.0, -0.5, 60.0, 70.)) subcell2 = Cell('subcell2') subcell2.add_to_layer(3, box(0, 0, 60, 70)) # add subcell at different origin cell.add_cell(subcell2, origin=(20, 0)) self.assertEqual(cell.bounds, (0.0, -0.5, 80.0, 70.)) # add object to subcell after adding the subcell to cell subcell2.add_to_layer(4, box(60, 0, 70, 10)) self.assertEqual(subcell2.bounds, (0.0, 0, 70.0, 70)) self.assertEqual(cell.bounds, (0.0, -0.5, 90.0, 70.)) # check total region layer cell.add_region_layer(102) self.assertTrue(102 in cell.layer_dict) self.assertEqual(cell.get_bounds(layers=[102]), cell.bounds)