MCPcopy Create free account
hub / github.com/KLayout/klayout / test_1a

Method test_1a

testdata/python/dbPCells.py:381–443  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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)

Callers

nothing calls this directly

Calls 15

add_cellMethod · 0.95
strFunction · 0.85
LayoutMethod · 0.80
basic_nameMethod · 0.80
__repr__Method · 0.80
__str__Method · 0.80
TextMethod · 0.80
PCellTestLib2Class · 0.70
find_layerFunction · 0.70
nhFunction · 0.70
cellMethod · 0.45

Tested by

no test coverage detected