Beispiel #1
0
    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))
Beispiel #2
0
    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)