/ test / unit / io / pdkmaster / export.py
export.py
 1  # SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-or-later OR CERN-OHL-S-2.0+ OR Apache-2.0
 2  # type: ignore
 3  import unittest
 4  
 5  from pdkmaster.technology import property_ as _prp, primitive as _prm
 6  from pdkmaster.design import library as _lib
 7  from pdkmaster.io.pdkmaster import generate
 8  from pdkmaster.io.pdkmaster.export import _PrimitiveGenerator
 9  
10  from ...dummy import DummyTech, dummy_tech, dummy_lib
11  
12  
13  class ExportTest(unittest.TestCase):
14      def test_primitivegenerator(self):
15          # Some more test to cover code not covered by test_pdkmastergenerator()
16          primgen = _PrimitiveGenerator()
17  
18          prim = _prm.Well(
19              type_=_prm.pImpl, name="pwell",
20              min_width=1.5, min_space=1.5, min_space_samenet=1.0,
21          )
22          primgen(prim)
23  
24          prim = _prm.MetalWire(
25              name="M1", min_width=0.1, min_space=0.1, grid=0.010,
26              min_density=0.20, max_density=0.80,
27              blockage=_prm.Marker(name="M1block"),
28          )
29          primgen(prim)
30  
31          prim = _prm.PadOpening(
32              name="pad", min_width=20.0, min_space=3.0, bottom=_prm.MetalWire(
33                  name="metal", min_width=1.0, min_space=1.0,
34              ), min_bottom_enclosure=_prp.Enclosure(1.5),
35          )
36          primgen(prim)
37  
38      def test_pdkmastergenerator(self):
39          generate(dummy_tech)
40          generate(dummy_lib.cells.cell1.circuit)
41          generate(dummy_lib)
42  
43          with self.assertRaises(TypeError):
44              generate("error")
45  
46          # cell instance but not exporting full lib
47          with self.assertRaises(ValueError):
48              generate(dummy_lib.cells.cell2.circuit)
49  
50          # inter-library cell instances not allowed
51          with self.assertRaises(ValueError):
52              generate._gen_ckt(dummy_lib.cells.cell2.circuit, lib=_lib.Library(
53                  name="error", tech=dummy_tech,
54              ))