CapacitorStack(3)

NAME
CapacitorStack - Draws the layout of a compact capacitor or a matrix of adjacent identical capacitors.

SYNOPSIS

Inherits CapacitorUnit.

Inherited by RoutMatchedCapacitor, and VerticalRoutingTracks.

  Public Member Functions
def __init__ (self, device, capacitance, capacitorType, abutmentBoxPosition, nets, unitCap=0, matrixDim=[1, matchingMode=False, matchingScheme=[], dummyRing=False, dummyElement=False)
This is the class constructor.
def __isUnitCap__ (self)
def __isMatchingSchemeOK__ (self)
def capacitorIdOccurence (self, capacitorIdentifier)
def create (self, bbMode=False)
Draw the compact or matrix of capacitors.
def capacitorLine (self, dy, abutmentBox_spacing, matchingSchemeRowIndex=0)
Iteratively draws a horizontal or vertical line of capacitors according to the direction parameter.
def capacitorMatrix (self, abutmentBox_spacing=0)
Draws a matrix of identical capacitors.
def drawAbutmentBox (self, abutmentBox_spacing=0)
Draws the abutment box of the matrix or campact capacitor.
def drawBottomPlatesRLayers (self, bottomPlateRLayer, drawnCapacitor)
Draws the routing layers connecting the bottom plate in the matrix of capacitors.
def drawTopPlatesRLayers (self, topPlateRLayer, drawnCapacitor)
Draws the routing layers connecting the top plates in the matrix of capacitors.
def getVerticalRoutingTrack_width (self)
def getMatrixDim (self)
def getMatchingScheme (self)

Detailed Description

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, $ C_1 $ or $ C_2 $ 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.

Constructor & Destructor Documentation

  def __init__ ( self, device, capacitance, capacitorType, abutmentBoxPosition, nets, unitCap = 0, matrixDim = [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 :

Parameters:
    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.

Parameters:
    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.__initMatrixMode__(), CapacitorUnit.__isCapacitorUnitOK__(), CapacitorUnit.abutmentBox, CapacitorStack.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorStack.capacitance, CapacitorStack.capacitorIdOccurence(), CapacitorStack.capacitorsNumber, CapacitorUnit.capacitorType, CapacitorStack.compactCapDim, CapacitorStack.computeUnitCap(), CapacitorUnit.device, Stack.device, CapacitorStack.doMatrix, CapacitorStack.dummyElement, CapacitorStack.dummyRing, CapacitorStack.dummyRingPosition, CapacitorStack.evaluateUnitCap(), CapacitorStack.matchingMode, CapacitorStack.matchingScheme, CapacitorStack.matrixDim, CapacitorStack.minEnclosure_hRoutingLayer_topPlate_cut, CapacitorStack.minEnclosure_vRoutingTrackCut, CapacitorStack.minSpacing_vRoutingTrack, CapacitorStack.minSpacing_vRoutingTrackCut, CapacitorStack.minWidth_hRoutingLayer_topPlate_cut, CapacitorStack.minWidth_vRoutingTrack, CapacitorStack.minWidth_vRoutingTrackCut, CapacitorStack.nets, CapacitorStack.unitCapacitance, CapacitorStack.unitCapDim, and CapacitorStack.vRoutingTrack_width.

Member Function Documentation

  def __isUnitCap__ ( self)

Returns:
    True if the drawn capacitor is a compact one. This function is useful when an instance is called in another class. Example : when the matrix or the compact capacitors are to be fully routed.

Referenced by RoutMatchedCapacitor.route().

  def __isMatchingSchemeOK__ ( self)

Returns:
    True if the matching scheme specifications are correct. Specifications are :

    •   Similar number of elements as total number of elementary capacitor in the matrix.

    •   Equal number of affected capacitors to C1 as to C2.

    •   Capacitor identifiers equal to '1' or '2' only.

    •   Otherwise, the function returns False.

References CapacitorStack.matchingScheme, and CapacitorStack.matrixDim.

Referenced by CapacitorStack.capacitorIdOccurence().

  def capacitorIdOccurence ( self, capacitorIdentifier)

Returns:
    occurence of capacitor identifier in the entered matching scheme. This is useful to verify that self.matchingScheme is correct.

References CapacitorStack.__areMatrixDimOK__(), CapacitorStack.__isMatchingSchemeOK__(), CapacitorStack.capacitorsNumber, CapacitorStack.dummyElement, CapacitorStack.dummyRing, CapacitorStack.matchingMode, CapacitorStack.matchingScheme, CapacitorStack.matrixDim, and CapacitorStack.nets.

Referenced by CapacitorStack.__init__().

  def create ( self, bbMode = False)

Draw the compact or matrix of capacitors. First, . Second, . Finally, .

References CapacitorStack.__initMatchingMode__(), CapacitorStack.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorStack.capacitance, CapacitorStack.capacitorMatrix(), CapacitorUnit.capacitorType, CapacitorStack.computeBondingBoxDimensions(), CapacitorUnit.device, Stack.device, CapacitorStack.doMatrix, CapacitorUnit.drawAbutmentBox(), CapacitorStack.drawBottomPlatesRLayers(), CapacitorStack.drawCapacitorStack(), CapacitorStack.drawTopPlatesRLayers(), CapacitorStack.dummyRing, CapacitorStack.matchingMode, CapacitorStack.matrixDim, CapacitorStack.nets, and CapacitorUnit.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.

Returns:
    a list containing the drawn capacitors.

Parameters:
    dy the vertical position of the first cut in cut line.

Remarks:
    An exception is raised if the specified direction is different from {'horizontal','vertical'}

References CapacitorStack.abutmentBoxPosition, CapacitorUnit.capacitorType, CapacitorStack.create(), CapacitorStack.createElementInCapacitorLine(), CapacitorUnit.device, Stack.device, CapacitorStack.dummyRing, CapacitorStack.matchingMode, CapacitorStack.matchingScheme, CapacitorStack.matrixDim, CapacitorStack.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.

Returns:
    a nested list of elementary capacitors.

References CapacitorStack.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorStack.capacitorLine(), CapacitorUnit.capacitorType, CapacitorStack.create(), CapacitorUnit.device, Stack.device, CapacitorStack.dummyRing, CapacitorStack.getCapDim(), CapacitorStack.matrixDim, CapacitorStack.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 CapacitorUnit.abutmentBox, CapacitorStack.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorUnit.computeAbutmentBoxDimensions(), CapacitorUnit.device, and Stack.device.

  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, and CapacitorStack.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 .

Remarks:
    An exception is raised if the number of rows in the matrix is lower than 2.

References CapacitorUnit.getTopPlateRLayerWidth(), CapacitorUnit.getTopPlateRLayerXCenter(), CapacitorUnit.getTopPlateRLayerYMax(), CapacitorUnit.getTopPlateRLayerYMin(), CapacitorStack.matrixDim, and CapacitorStack.nets.

Referenced by CapacitorStack.create().

  def getVerticalRoutingTrack_width ( self)

Returns:
    The width of the vertical routing tracks in matching mode.

Remark: This function is useful in matching mode, ie., in RoutCapacitor class, when routing the two capacitors.

  def getMatrixDim ( self)

Returns:
    A dictionary contaning capacitor matrix's dimensions

References CapacitorStack.compactCapDim, and CapacitorStack.doMatrix.

  def getMatchingScheme ( self)

Returns:
    the matching scheme. The function is useful in RoutMatchedCapacitor class to load self.matchingScheme attribute.

Author

Generated automatically by Doxygen for Oroshi - Analog Devices Layout from the source code.