(self)
| 379 | |
| 380 | |
| 381 | def test_1a(self): |
| 382 | |
| 383 | if not "PCellDeclarationHelper" in pya.__dict__: |
| 384 | return |
| 385 | |
| 386 | # instantiate and register the library |
| 387 | tl = PCellTestLib2() |
| 388 | |
| 389 | ly = pya.Layout(True) |
| 390 | ly.dbu = 0.01 |
| 391 | |
| 392 | li1 = find_layer(ly, "1/0") |
| 393 | self.assertEqual(li1 == None, True) |
| 394 | |
| 395 | ci1 = ly.add_cell("c1") |
| 396 | c1 = ly.cell(ci1) |
| 397 | |
| 398 | lib = pya.Library.library_by_name("PCellTestLib2") |
| 399 | self.assertEqual(lib != None, True) |
| 400 | pcell_decl = lib.layout().pcell_declaration("Box2") |
| 401 | |
| 402 | param = [ pya.LayerInfo(1, 0) ] # rest is filled with defaults |
| 403 | pcell_var_id = ly.add_pcell_variant(lib, pcell_decl.id(), param) |
| 404 | pcell_var = ly.cell(pcell_var_id) |
| 405 | pcell_inst = c1.insert(pya.CellInstArray(pcell_var_id, pya.Trans())) |
| 406 | self.assertEqual(pcell_var.basic_name(), "Box2") |
| 407 | self.assertEqual(pcell_var.name, "Box2_L1d0_W1p000_H1p000") |
| 408 | self.assertEqual(pcell_var.qname(), "PCellTestLib2.Box2") |
| 409 | self.assertEqual(pcell_var.pcell_parameters().__repr__(), "[<1/0>, 1.0, 1.0]") |
| 410 | self.assertEqual(pcell_var.display_title(), "PCellTestLib2.Box2(L=1/0,W=1.000,H=1.000)") |
| 411 | self.assertEqual(nh(pcell_var.pcell_parameters_by_name()), "{'height': 1.0, 'layer': <1/0>, 'width': 1.0}") |
| 412 | self.assertEqual(pcell_var.pcell_parameter("height").__repr__(), "1.0") |
| 413 | self.assertEqual(c1.pcell_parameters(pcell_inst).__repr__(), "[<1/0>, 1.0, 1.0]") |
| 414 | self.assertEqual(nh(c1.pcell_parameters_by_name(pcell_inst)), "{'height': 1.0, 'layer': <1/0>, 'width': 1.0}") |
| 415 | self.assertEqual(c1.pcell_parameter(pcell_inst, "height").__repr__(), "1.0") |
| 416 | self.assertEqual(nh(pcell_inst.pcell_parameters_by_name()), "{'height': 1.0, 'layer': <1/0>, 'width': 1.0}") |
| 417 | self.assertEqual(pcell_inst["height"].__repr__(), "1.0") |
| 418 | self.assertEqual(pcell_inst.pcell_parameter("height").__repr__(), "1.0") |
| 419 | self.assertEqual(pcell_var.pcell_declaration().__repr__(), pcell_decl.__repr__()) |
| 420 | self.assertEqual(c1.pcell_declaration(pcell_inst).__repr__(), pcell_decl.__repr__()) |
| 421 | self.assertEqual(pcell_inst.pcell_declaration().__repr__(), pcell_decl.__repr__()) |
| 422 | self.assertEqual(pcell_decl.wants_lazy_evaluation(), True) |
| 423 | |
| 424 | li1 = find_layer(ly, "1/0") |
| 425 | self.assertEqual(li1 == None, False) |
| 426 | pcell_inst.change_pcell_parameter("height", 2.0) |
| 427 | self.assertEqual(nh(pcell_inst.pcell_parameters_by_name()), "{'height': 2.0, 'layer': <1/0>, 'width': 1.0}") |
| 428 | |
| 429 | self.assertEqual(ly.begin_shapes(c1.cell_index(), li1).shape().__str__(), "box (-50,-100;50,100)") |
| 430 | |
| 431 | param = { "layer": pya.LayerInfo(2, 0), "width": 2, "height": 1 } |
| 432 | li2 = ly.layer(2, 0) |
| 433 | c1.change_pcell_parameters(pcell_inst, param) |
| 434 | self.assertEqual(ly.begin_shapes(c1.cell_index(), li2).shape().__str__(), "box (-100,-50;100,50)") |
| 435 | |
| 436 | l10 = ly.layer(10, 0) |
| 437 | c1.shapes(l10).insert(pya.Box(0, 10, 100, 210)) |
| 438 | l11 = ly.layer(11, 0) |
nothing calls this directly
no test coverage detected