Draws the layout of a compact capacitor or a matrix of adjacent identical capacitors. More...
Public Member Functions | |
def | __init__ (self, device, capacitance, capacitorType, abutmentBoxPosition, nets, unitCap=0, matrixDim=[1, 1], matchingMode=False, matchingScheme=[], dummyRing=False, dummyElement=False) |
This is the class constructor. More... | |
def | setRules (self) |
Selects technological rules according to the capacitor type. More... | |
def | __isUnitCap__ (self) |
def | __isMatchingSchemeOK__ (self) |
def | capacitorIdOccurence (self, capacitorIdentifier) |
def | create (self, bbMode=False) |
Draw the compact or matrix of capacitors. More... | |
def | capacitorLine (self, dy, abutmentBox_spacing, matchingSchemeRowIndex=0) |
Iteratively draws a horizontal or vertical line of capacitors according to the direction parameter. More... | |
def | capacitorMatrix (self, abutmentBox_spacing=0) |
Draws a matrix of identical capacitors. More... | |
def | drawAbutmentBox (self, abutmentBox_spacing=0) |
Draws the abutment box of the matrix or campact capacitor. More... | |
def | drawBottomPlatesRLayers (self, bottomPlateRLayer, drawnCapacitor) |
Draws the routing layers connecting the bottom plate in the matrix of capacitors. More... | |
def | drawTopPlatesRLayers (self, topPlateRLayer, drawnCapacitor) |
Draws the routing layers connecting the top plates in the matrix of capacitors. More... | |
def | getVerticalRoutingTrack_width (self) |
def | getMatrixDim (self) |
def | getMatchingScheme (self) |
![]() | |
def | __init__ (self, device, capacitorType, abutmentBoxPosition, capacitance=0, capDim={}) |
This is the class constructor. More... | |
def | __setCapacitorPerUnit__ (self, capacitorType) |
Sets the area and perimeter capacitances as specified in 350 nm AMS technology and according to capacitorType (MIM or PIP). More... | |
def | __computeCapDim__ (self, capacitance, capacitorType) |
Computes width and length of the capacitor. More... | |
def | __isCapacitorUnitOK__ (self, capDim) |
Checks if the computed capacitor dimensions exceed or are less than maximum and minimum limits, respectively, as specified in technology rules. More... | |
def | getCapacitorType (self) |
def | getMaximumCapWidth (self) |
def | getMinimumCapWidth (self) |
def | getLayers (self) |
Loads the technology file then extracts the adequate layers according to the capacitor type (MIM or PIP). More... | |
def | create (self, t, b, bbMode=False, vEnclosure_botPlate_abtBox=None, hEnclosure_botPlate_abtBox=None) |
When bonding box mode is activated, the function draws all layout physical layers of the capacitor after checking its dimensions. More... | |
def | drawCapacitor (self, layerDict, t, b) |
Draws all layout physicial layers of the capacitor. More... | |
def | computeBottomPlateCuts (self) |
Computes needed parameters to draw bottom plate cuts in its exact position, including : More... | |
def | computeTopPlateCuts (self) |
Computes needed parameters to draw top plate cuts in its exact position, including : More... | |
def | drawAbutmentBox (self) |
Draws the abutment box of the capacitor in position < (abutmentBoxXMin, abutmentBoxYMin)>. More... | |
def | drawOnePlate (self, layer, net, boxDimensions) |
Draws the top or bottom plate through inflation of the Box under it. More... | |
def | drawBottomPlateCut (self, layer, b) |
Draws the required cuts to connect the bottom plate. More... | |
def | drawTopPlateCut (self, layer, t) |
Draws the top plate's cuts after computing the maximal number of cuts that can be placed and its exact enclosure in the top plate. More... | |
def | drawRoutingLayers (self, bottomPlateLayer, topPlateLayer, t, b) |
Draws the routing layers of both bottom and top plates after computing widths and the exact position of these layers. More... | |
def | cutMaxNumber (self, width_layer, width_cut, spacing_cut, enclosure_cut) |
Computes the maximal number of cuts to be placed on a layer of width width_layer considering specifications such as the spacing between the cuts, its width and its enclosure in the layer. More... | |
def | cutLine (self, net, layer, firstCutXCenter, firstCutYCenter, width_cut, height_cut, spacing_cut, cutNumber, direction) |
Creates a horizontal or vertical line of contacts according to the specified direction. More... | |
def | cutMatrix (self, net, layer, firstCutXCenter, firstCutYCenter, width_cut, height_cut, spacing_cut, cutColumnNumber, cutRowNumber) |
Creates a matrix of cuts by vertically stacking horizontal lines of identical cuts. More... | |
def | getBottomPlateYMax (self) |
def | getBottomPlateLeftCutXMin (self) |
def | getBottomPlateLeftCutYMin (self) |
def | getBottomPlateLeftCutYMax (self) |
def | getBottomPlateRightCutXMin (self) |
def | getBottomPlateRightCutYMin (self) |
def | getBottomPlateRightCutYMax (self) |
def | getBotPlateLeftRLayerXMax (self) |
def | getBottomPlateRightCutYCenter (self) |
def | getBotPlateLeftRLayerXMin (self) |
def | getBotPlateRLayerYMin (self) |
def | getBotPlateRLayerYMax (self) |
def | getBotPlateRLayerWidth (self) |
def | getBotPlateRightRLayerXCenter (self) |
def | getBotPlateLeftRLayerXCenter (self) |
def | getTopPlateRLayerYMin (self) |
def | getTopPlateRLayerYMax (self) |
def | getTopPlateRLayerWidth (self) |
def | getTopPlateRLayerXCenter (self) |
def | getTopPlateRLayerXMin (self) |
def | getTopPlateRLayerXMax (self) |
Draws the layout of a compact capacitor or a matrix of adjacent identical capacitors.
The matrix can be composed of one type of capacitors, either Poly-Poly or Metal-Metal in 350 nm AMS CMOS technology. When matching mode is off, every adjacent plates of any consecutive elementary capacitors are connected to each other using vertical routing layers. Otherwise, when matching mode is on, any of elementary capacitors can belong to, or
according to the entered matching scheme. Thus, routing is not done in this class. In both modes, the complete routing process is done using the
RoutCapacitor
class.
def __init__ | ( | self, | |
device, | |||
capacitance, | |||
capacitorType, | |||
abutmentBoxPosition, | |||
nets, | |||
unitCap = 0 , |
|||
matrixDim = [1,1] , |
|||
matchingMode = False , |
|||
matchingScheme = [] , |
|||
dummyRing = False , |
|||
dummyElement = False |
|||
) |
This is the class constructor.
Basically, the class there are three categories of attributes. There are the ones related to the capacitor caracteristics, its type, dimensions. Also, there are attributes to parametrize the class into matching mode or not and there are other attributes realted to the layout varibales. The class has defaut input values, thus, in this constructor, there are two "sub-constructors" according to the entered input parameters. The class attributes are :
device | The Hurricane AMS device into which the layout is drawn. |
capacitance | The value of the capacitor, expressed in femto Farad (fF). |
capacitorType | Can be MIM or PIP type capacitor. |
abutmentPosition | Refers to the abscissa (XMin) of the bottom left corner of the abutment Box. |
abutmentBoxYMin | Refers to the ordinate (YMin) of the bottom left corner of the abutment Box. |
Except the two last arguments, all the parameters are common with the CapacitorUnit class because the CapacitorStack
constructor calls the mother class constructor to create either a compact capacitor of capacitance
value or rowNumber*
columnNumber
unity capacitors.
rowNumber | Number of rows in the matrix of capacitors. |
columnNumber | Number of columns in the matrix of capacitors. |
References CapacitorStack.__areInputDataOK__(), CapacitorUnit.__computeCapDim__(), CapacitorStack.__initGivenNonZeroUnitCap__(), CapacitorStack.__initGivenNonZeroUnitCapInMatchingMode__(), CapacitorStack.__initGivenZeroUnitCap__(), CapacitorStack.__initGivenZeroUnitCapInMatchingMode__(), CapacitorStack.abutmentBox, CapacitorUnit.abutmentBox, VerticalRoutingTracks.abutmentBox, CapacitorStack.abutmentBox_spacing, RoutMatchedCapacitor.abutmentBox_spacing, VerticalRoutingTracks.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorStack.capacitorsNumber, VerticalRoutingTracks.capacitorsNumber, CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorStack.compactCapDim, CapacitorStack.device, CapacitorUnit.device, VerticalRoutingTracks.device, Stack.device, CapacitorStack.doMatrix, CapacitorStack.dummyElement, RoutMatchedCapacitor.dummyElement, VerticalRoutingTracks.dummyElement, CapacitorStack.dummyRing, RoutMatchedCapacitor.dummyRing, VerticalRoutingTracks.dummyRing, CapacitorStack.dummyRingPosition, CapacitorStack.matchingMode, CapacitorStack.matchingScheme, VerticalRoutingTracks.matchingScheme, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, CapacitorStack.nets, VerticalRoutingTracks.nets, CapacitorStack.unitCapDim, CapacitorStack.vRoutingTrack_width, and VerticalRoutingTracks.vRoutingTrack_width.
def setRules | ( | self | ) |
Selects technological rules according to the capacitor type.
Reimplemented from CapacitorUnit.
Reimplemented in VerticalRoutingTracks, and RoutMatchedCapacitor.
References CapacitorUnit.__computeCapDim__(), CapacitorStack.__initMatrixMode__(), CapacitorUnit.__isCapacitorUnitOK__(), CapacitorStack.abutmentBox_spacing, RoutMatchedCapacitor.abutmentBox_spacing, VerticalRoutingTracks.abutmentBox_spacing, CapacitorStack.capacitance, CapacitorStack.capacitorIdOccurence(), CapacitorStack.capacitorsNumber, VerticalRoutingTracks.capacitorsNumber, CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorStack.compactCapDim, CapacitorStack.computeUnitCap(), CapacitorStack.doMatrix, CapacitorStack.evaluateUnitCap(), CapacitorStack.matchingScheme, VerticalRoutingTracks.matchingScheme, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, CapacitorStack.minEnclosure_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minEnclosure_hRoutingLayer_topPlate_cut, CapacitorStack.minEnclosure_vRoutingTrackCut, CapacitorStack.minSpacing_vRoutingTrack, CapacitorStack.minSpacing_vRoutingTrackCut, RoutMatchedCapacitor.minSpacing_vRoutingTrackCut, CapacitorStack.minWidth_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minWidth_hRoutingLayer_topPlate_cut, CapacitorStack.minWidth_vRoutingTrack, CapacitorStack.minWidth_vRoutingTrackCut, CapacitorStack.unitCapacitance, CapacitorStack.unitCapDim, CapacitorStack.vRoutingTrack_width, and VerticalRoutingTracks.vRoutingTrack_width.
Referenced by CapacitorStack.create(), CapacitorUnit.create(), RoutMatchedCapacitor.route(), and VerticalRoutingTracks.setRules().
def __isUnitCap__ | ( | self | ) |
Referenced by RoutMatchedCapacitor.route().
def __isMatchingSchemeOK__ | ( | self | ) |
True
if the matching scheme specifications are correct. Specifications are :False
. References CapacitorStack.matchingScheme, VerticalRoutingTracks.matchingScheme, CapacitorStack.matrixDim, and VerticalRoutingTracks.matrixDim.
Referenced by CapacitorStack.capacitorIdOccurence().
def capacitorIdOccurence | ( | self, | |
capacitorIdentifier | |||
) |
self.matchingScheme
is correct. References CapacitorStack.__areMatrixDimOK__(), CapacitorStack.__isMatchingSchemeOK__(), CapacitorStack.capacitorsNumber, VerticalRoutingTracks.capacitorsNumber, CapacitorStack.dummyElement, RoutMatchedCapacitor.dummyElement, VerticalRoutingTracks.dummyElement, CapacitorStack.dummyRing, RoutMatchedCapacitor.dummyRing, VerticalRoutingTracks.dummyRing, CapacitorStack.matchingMode, CapacitorStack.matchingScheme, VerticalRoutingTracks.matchingScheme, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, CapacitorStack.nets, and VerticalRoutingTracks.nets.
Referenced by CapacitorStack.setRules().
def create | ( | self, | |
bbMode = False |
|||
) |
Draw the compact or matrix of capacitors.
First, . Second, . Finally, .
References CapacitorStack.__initMatchingMode__(), CapacitorStack.abutmentBox_spacing, RoutMatchedCapacitor.abutmentBox_spacing, VerticalRoutingTracks.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorStack.capacitance, CapacitorStack.capacitorMatrix(), CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorStack.computeBondingBoxDimensions(), CapacitorStack.device, CapacitorUnit.device, VerticalRoutingTracks.device, Stack.device, CapacitorStack.doMatrix, CapacitorUnit.drawAbutmentBox(), CapacitorStack.drawAbutmentBox(), CapacitorStack.drawBottomPlatesRLayers(), CapacitorStack.drawCapacitorStack(), CapacitorStack.drawTopPlatesRLayers(), CapacitorStack.dummyRing, RoutMatchedCapacitor.dummyRing, VerticalRoutingTracks.dummyRing, CapacitorStack.matchingMode, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, CapacitorStack.nets, VerticalRoutingTracks.nets, CapacitorStack.setRules(), RoutMatchedCapacitor.setRules(), CapacitorUnit.setRules(), and VerticalRoutingTracks.setRules().
Referenced by CapacitorStack.capacitorLine(), and CapacitorStack.capacitorMatrix().
def capacitorLine | ( | self, | |
dy, | |||
abutmentBox_spacing, | |||
matchingSchemeRowIndex = 0 |
|||
) |
Iteratively draws a horizontal or vertical line of capacitors according to the direction
parameter.
An exception is raised if the specified direction is different from {'horizontal'
,'vertical'}. At every iteration, an instance of the CapacitorUnit class is created and its layout is drawn.
dy | the vertical position of the first cut in cut line. |
{'horizontal'
,'vertical'} References CapacitorStack.abutmentBoxPosition, CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorStack.create(), CapacitorStack.createElementInCapacitorLine(), CapacitorStack.device, CapacitorUnit.device, VerticalRoutingTracks.device, Stack.device, CapacitorStack.dummyRing, RoutMatchedCapacitor.dummyRing, VerticalRoutingTracks.dummyRing, CapacitorStack.matchingMode, CapacitorStack.matchingScheme, VerticalRoutingTracks.matchingScheme, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, CapacitorStack.nets, VerticalRoutingTracks.nets, and CapacitorStack.unitCapacitance.
Referenced by CapacitorStack.capacitorMatrix().
def capacitorMatrix | ( | self, | |
abutmentBox_spacing = 0 |
|||
) |
Draws a matrix of identical capacitors.
The matrix is iterativelly constructed. At every iteration, a new horizontal line of capacitors is drawn.
References CapacitorStack.abutmentBox_spacing, RoutMatchedCapacitor.abutmentBox_spacing, VerticalRoutingTracks.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorStack.capacitorLine(), CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorStack.create(), CapacitorStack.device, CapacitorUnit.device, VerticalRoutingTracks.device, Stack.device, CapacitorStack.dummyRing, RoutMatchedCapacitor.dummyRing, VerticalRoutingTracks.dummyRing, CapacitorStack.getCapDim(), CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, CapacitorStack.nets, VerticalRoutingTracks.nets, and CapacitorStack.unitCapacitance.
Referenced by CapacitorStack.create().
def drawAbutmentBox | ( | self, | |
abutmentBox_spacing = 0 |
|||
) |
Draws the abutment box of the matrix or campact capacitor.
References CapacitorStack.abutmentBox, CapacitorUnit.abutmentBox, VerticalRoutingTracks.abutmentBox, CapacitorStack.abutmentBox_spacing, RoutMatchedCapacitor.abutmentBox_spacing, VerticalRoutingTracks.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorStack.computeAbutmentBoxDimensions(), CapacitorUnit.computeAbutmentBoxDimensions(), CapacitorStack.device, CapacitorUnit.device, VerticalRoutingTracks.device, and Stack.device.
Referenced by CapacitorStack.create(), and CapacitorUnit.create().
def drawBottomPlatesRLayers | ( | self, | |
bottomPlateRLayer, | |||
drawnCapacitor | |||
) |
Draws the routing layers connecting the bottom plate in the matrix of capacitors.
First, the relative positions of the routing layer is of the is extracted from the elementary capacitor instance. Then, its width is computed in a way to connect adjacent plates. Then, the routing layers are iterativelly drawn. The two borders are .
References CapacitorUnit.getBotPlateLeftRLayerXMax(), CapacitorUnit.getBotPlateRLayerWidth(), CapacitorUnit.getBotPlateRLayerYMax(), CapacitorUnit.getBottomPlateLeftCutXMin(), CapacitorUnit.getBottomPlateRightCutXMin(), CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, CapacitorStack.nets, and VerticalRoutingTracks.nets.
Referenced by CapacitorStack.create().
def drawTopPlatesRLayers | ( | self, | |
topPlateRLayer, | |||
drawnCapacitor | |||
) |
Draws the routing layers connecting the top plates in the matrix of capacitors.
First, the relative positions of the routing layers is of the is extracted from the elementary capacitor instance. Then, its width is computed in a way to connect adjacent plates. Then, the routing layers are iterativelly drawn. The two borders are .
References CapacitorUnit.getTopPlateRLayerWidth(), CapacitorUnit.getTopPlateRLayerXCenter(), CapacitorUnit.getTopPlateRLayerYMax(), CapacitorUnit.getTopPlateRLayerYMin(), CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, CapacitorStack.nets, and VerticalRoutingTracks.nets.
Referenced by CapacitorStack.create().
def getVerticalRoutingTrack_width | ( | self | ) |
RoutCapacitor
class, when routing the two capacitors. def getMatrixDim | ( | self | ) |
References CapacitorStack.compactCapDim, and CapacitorStack.doMatrix.
def getMatchingScheme | ( | self | ) |
RoutMatchedCapacitor
class to load self.matchingScheme
attribute. Generated by doxygen 1.9.1 on Wed Nov 20 2024 | Return to top of page |
Oroshi - Analog Devices Layouts | Copyright © 2018-2020 Sorbonne Universite, All rights reserved |