From 2a900c4abbce6518200b581f8b625ebc17bbe461 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Wed, 25 Nov 2020 21:52:05 +0100 Subject: [PATCH] New CRL/helpers.technology.createVia() helpers method. --- crlcore/python/helpers/technology.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/crlcore/python/helpers/technology.py b/crlcore/python/helpers/technology.py index e04983ad..8de388aa 100644 --- a/crlcore/python/helpers/technology.py +++ b/crlcore/python/helpers/technology.py @@ -18,7 +18,7 @@ Some helpers to create or load a technology and it's libraries. """ from __future__ import print_function -from Hurricane import DataBase, Library, BasicLayer, Layer +from Hurricane import DataBase, Library, BasicLayer, Layer, ViaLayer __all__ = [ 'safeGetLibrary', 'createBL', 'setEnclosures' ] @@ -67,6 +67,28 @@ def createBL ( tech, layerName, material, size=None, spacing=None, gds2Layer=Non return layer +def createVia ( tech, viaName, botName, cutName, topName, size=None ): + """ + Create a new ViaLayer. Parameters ``tech``, ``viaName``, ``botName``, + ``cutName`` and ``topName`` are mandatory. + + :param tech: The technology the basic layer will be part of. + :param viaName: The name of the newly defined VIA layer. + :param botName: The name of the *bottom* metal layer. + :param cutName: The name of the *cut* (aka, via hole) layer. + :param topName: The name of the *top* metal layer. + :param size: The minimal side size of the square *cut* layer. + """ + layer = ViaLayer.create( tech + , viaName + , tech.getLayer(botName) + , tech.getLayer(cutName) + , tech.getLayer(topName) ) + if size is not None: + layer.setMinimalSize( size ) + return layer + + def setEnclosures ( layer, subLayer, enclosures ): """ Set horizontal & vertical enclosure for a given ``subLayer`` in a