def test_region_layers(self): cell = Cell("test_device") wg1 = Waveguide([0, 0], 0, 1) wg1.add_straight_segment(10) wg1_shapely = wg1.get_shapely_object() cell.add_to_layer(1, wg1) wg2 = Waveguide([40, 0], 0, 1) wg2.add_straight_segment(10) wg2_shapely = wg2.get_shapely_object() cell.add_to_layer(2, wg2) cell.add_region_layer(100) cell.add_region_layer(101, [1]) cell.add_region_layer(102, [1, 2]) self.assertTrue(100 in cell.layer_dict) self.assertTrue(cell.layer_dict[100][0].contains(wg1_shapely)) self.assertTrue(cell.layer_dict[100][0].contains(wg2_shapely)) self.assertTrue(101 in cell.layer_dict) self.assertTrue(cell.layer_dict[101][0].contains(wg1_shapely)) self.assertFalse(cell.layer_dict[101][0].contains(wg2_shapely)) self.assertTrue(102 in cell.layer_dict) self.assertTrue(cell.layer_dict[102][0].contains(wg1_shapely)) self.assertTrue(cell.layer_dict[102][0].contains(wg2_shapely))
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)