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 ))