Oroshi - Analog Devices Layouts


Public Member Functions | List of all members
CapacitorUnit Class Reference

Draws a capacitor of type Poly-Poly or Metal-Metal in 350 nm AMS CMOS technology. More...

Inheritance diagram for CapacitorUnit:
Inheritance graph
[legend]

Public Member Functions

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 setRules (self)
 Selects technological rules according to the capacitor type. 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)
 

Detailed Description

Draws a capacitor of type Poly-Poly or Metal-Metal in 350 nm AMS CMOS technology.

PIP and MIM capacitors are the result of surface superposition between poly1 and poly2 or metal2 and metalcap layers, respectively. Given the capacitor value, layout dimensions are computed, then, capacitor layers are drawn. Capacitor value, $C$, is given in the expression below, where $ C_{a}, C_{p}, A $ and $ P $ are, area capacitance, perimeter capacitance, area and permiter of the capacitor, respectively :

\[ C = C_{a}A + C_{p}P \]

The drawn layout shape is square. Thus, metcap or poly2 length and width are equal and are computed using the capacitor expression. Furthermore, given $ C_{a} $, $ C_{p} $ and enclosure technological rules, dimensions and positions of the abutment box as well as the bottom plate are computed. Layouts with dimensions that exceed technological limits cannot be drawn.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
  device,
  capacitorType,
  abutmentBoxPosition,
  capacitance = 0,
  capDim = {} 
)

This is the class constructor.

Few of the class attributes final values are computed in this level. Most of attributes are only initialized to zero or empty values. Then, it is computed in dedicated class method. Input parameters are :

Parameters
deviceHurricane AMS device into which layout is drawn.
capacitanceCapacitor value, expressed in $ femto Farad (fF) $.
abutmentBoxPositionA list containing abscissa and ordinate of the bottom left corner of the abutment box.

Class attributes are described in the list below. Most of class attributes refer to layout dimensions. Dictionaries are used to group attributes related to the same layout varibale. Layout dimensions and variables are described in Figure 1.

Parameters
deviceHurricane AMS device into which layout is drawn.
capacitanceCapacitor value, expressed in $ femto Farad (fF) $.
capacitorTypeCan be 'MIMCap' or 'PIPCap' as capacitor type.
abutmentBoxDictA dictionary containing abscissa and ordinate of the bottom left corner of the abutment box, (XMin) and (YMin), respectively.
abutmentBoxAbutment box drawn square. It is an object of type Box.
bottomPlateBoxBottom plate drawn square. It is an object of type Box.
topPlateBoxTop plate drawn square. It is an object of type Box.
cut2MatrixDictA dictionary containing center position of the left bottom, which is cut the first to be drawn in the matrix of cuts. Initially, the dictionary is empty. It is only updated when self.capacitorType is equal to 'MIMCap'.
cutLeftLineDictA dictionary containing abcissa and ordinate of the bottom cut in the left line of cuts to be drawn on bottom plate's layer.
cutRightLineDictA dictionary containing abcissa and ordinate of the bottom cut in the right line of cuts to be drawn on bottom plate's layer.
topCutLineDictA dictionary containing abcissa and ordinate of the bottom cut in the right line of cuts to be drawn on top plate's layer. Initially, the dictionary is empty. It is only updated when self.capacitorType is equal to 'PIPCap'.
topPlateRLayerDictA dictionary containing position information of the top plate's routing layer. The dictionary includes ordinates of the layer's top and bottom extremities, 'XMin' and 'YMin', respectively, the abcissa of it's center, 'XCenter' and its width, 'width'.
bottomPlateRLayerDictA dictionary containing
enclosure_botPlate_topPlateTop plate's layer encolusre in bottom plate's layer.
minheight_topPlatecutMinimum height of cuts for top plate connection to other metal layer.
topCutLineNumberMaximum possible number cuts to be drawn for top plate's connection.
bottomCutLineNumberMaximum possible number cuts to be drawn for top plate's connection.
Remark:
Abutment box must be defined as an attribute because the position of dummy capacitor in NonUnitCapacitor class must be precisely defined.

References CapacitorUnit.__computeCapacitance__(), CapacitorUnit.__computeCapDim__(), CapacitorUnit.__initCapDim__(), CapacitorStack.abutmentBox, CapacitorUnit.abutmentBox, VerticalRoutingTracks.abutmentBox, CapacitorUnit.abutmentBoxDict, CapacitorUnit.bottomCutLineNumber, CapacitorUnit.bottomPlateBox, CapacitorUnit.bottomPlateBoxDict, CapacitorUnit.bottomPlateRLayerDict, CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorUnit.capDim, CapacitorUnit.cut2MatrixDict, CapacitorUnit.cutLeftLineDict, CapacitorUnit.cutRightLineDict, CapacitorStack.device, CapacitorUnit.device, VerticalRoutingTracks.device, Stack.device, CapacitorUnit.enclosure_botPlate_abtBox, CapacitorUnit.enclosure_botPlate_topPlate, CapacitorUnit.minheight_topPlatecut, CapacitorUnit.topCutLineDict, CapacitorUnit.topCutLineNumber, CapacitorUnit.topPlateBox, CapacitorUnit.topPlateBoxDict, and CapacitorUnit.topPlateRLayerDict.

Member Function Documentation

◆ __setCapacitorPerUnit__()

def __setCapacitorPerUnit__ (   self,
  capacitorType 
)

Sets the area and perimeter capacitances as specified in 350 nm AMS technology and according to capacitorType (MIM or PIP).

Returns
a list containing the area and perimeter capacitances.
Remarks
An exception is raised if the entered capacitor type is unknown.

Referenced by CapacitorUnit.__computeCapDim__().

◆ __computeCapDim__()

def __computeCapDim__ (   self,
  capacitance,
  capacitorType 
)

Computes width and length of the capacitor.

Given capacitance value as well as the permiter and area capacitances, a quadratic equation is solved where the unknown parameter is the width (also equivalent to the length).

Returns
a dictionary containing width and length.
Remark:
The capacitor is square. Thus, length and width are equal.

References CapacitorUnit.__setCapacitorPerUnit__().

Referenced by CapacitorStack.__init__(), CapacitorUnit.__init__(), and CapacitorStack.setRules().

◆ __isCapacitorUnitOK__()

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.

Returns
True if all rules are respected.
Remark:
Maximum poly2 layer dimensions for PIP capacitor are not specified in technology rules. Thus, only minimum limit condition is checked.

References CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorUnit.getMaximumCapWidth(), and CapacitorUnit.getMinimumCapWidth().

Referenced by CapacitorUnit.create(), and CapacitorStack.setRules().

◆ setRules()

def setRules (   self)

Selects technological rules according to the capacitor type.

Returns
a dictionary with rules labels as keys and rules as values. Example of technology rules are :
  • minimum spacing between cuts or metals,
  • minimum width of a plate, a cut or a routing metal.
  • etc. Every rule takes two possible value according to the capacitor type (MIM or PIP). Therefore, dictionary keys are generic and its values are specific to the capacitor type.
Remark:
An exception is raised if the entered capacitor type is unknown.

Reimplemented in VerticalRoutingTracks, RoutMatchedCapacitor, and CapacitorStack.

References CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorUnit.hpitch, CapacitorUnit.isVH, Stack.isVH, CapacitorUnit.METAL2Pitch, CapacitorUnit.metal2Width, CapacitorUnit.METAL3Pitch, CapacitorUnit.metal3Width, CapacitorUnit.minEnclo_botPlate_botPlateCut, CapacitorUnit.minEnclo_botPlateRMetal_botPlateCut, CapacitorUnit.minEnclo_routingTrackMetal_cut, CapacitorUnit.minEnclo_topPlate_topPlateCut, CapacitorUnit.minEnclo_topPlateRMetal_topPlateCut, CapacitorUnit.minheight_topPlatecut, CapacitorUnit.minSpacing_botPlate, CapacitorUnit.minSpacing_botPlateCut_topPlate, CapacitorUnit.minSpacingOnBotPlate_cut, CapacitorUnit.minSpacingOnTopPlate_cut, CapacitorUnit.minWidth_botPlatecut, CapacitorUnit.minWidth_botRMetal, CapacitorUnit.minWidth_routingTrackcut, CapacitorUnit.minWidth_topPlate, CapacitorUnit.minWidth_topPlatecut, CapacitorUnit.minWidth_topRMetal, and CapacitorUnit.vpitch.

Referenced by CapacitorStack.create(), CapacitorUnit.create(), RoutMatchedCapacitor.route(), and VerticalRoutingTracks.setRules().

◆ getCapacitorType()

def getCapacitorType (   self)
Returns
capacitor type 'MIMCap' or 'PIPCap'.
Remarks
getCapacitorType() is especially useful when an instance of CapacitorUnit class is called in another classes instances to identify the capacitor's type.

◆ getMaximumCapWidth()

def getMaximumCapWidth (   self)
Returns
maximum size of capacitor's top plate. getMaximumCapWidth() is called to check if capacitor dimensions are within acceptable technological limits. An exception is raised if the entered capacitor type is unknown.
Remarks
1. This function is especially usefull in drawing the layout of a unity capacitor, where it is important to garantee that the capacitor size does not exeed the maximum possible value. It is also useful when drawing a matrix of capacitors to make sure that also the unity capacitor respects the maximal values specified.
2. The maximum value of the poly2 size in PIP capacitor is not specified. Thus, it is not considered in getMaximumCapWidth()

References CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, and VerticalRoutingTracks.capacitorType.

Referenced by CapacitorUnit.__isCapacitorUnitOK__().

◆ getMinimumCapWidth()

def getMinimumCapWidth (   self)
Returns
The minimum size of the capacitor's top plate. An exception is raised if the entered capacitor type is unknown.
Remarks
This function is especially usefull in drawing the layout of a matrix of capacitors where it is important to ensure that the unity capacitor respects the minimal values specified.
An exception is raised if the entered capacitor type is unknown.

References CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, and VerticalRoutingTracks.capacitorType.

Referenced by CapacitorUnit.__isCapacitorUnitOK__().

◆ getLayers()

def getLayers (   self)

Loads the technology file then extracts the adequate layers according to the capacitor type (MIM or PIP).

Returns
a dictionary containing the layer labels as attributes and its values.
Remarks
An exception is raised if the entered capacitor type is unknown.

References CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, and VerticalRoutingTracks.capacitorType.

Referenced by CapacitorUnit.create().

◆ create()

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.

All functions are excecuted in a new Update Session. In the contrary, only an exact estimation of layout dimensions is given. An error is raised when dimensions reach technological limits for MIM and PIP capacitors or when bbMode parameters is other than True or False.

Parameters
(t , b ) nets of top and bottom plates, respectively
bbModeactivates bonding box dimensions computing when set to True

References CapacitorUnit.__isCapacitorUnitOK__(), CapacitorUnit.abutmentBoxDict, CapacitorUnit.capDim, Stack.computeDimensions(), RoutMatchedCapacitor.computeDimensions(), CapacitorUnit.computeDimensions(), CapacitorUnit.drawAbutmentBox(), CapacitorStack.drawAbutmentBox(), CapacitorUnit.drawCapacitor(), Technology.getLayers(), CapacitorUnit.getLayers(), CapacitorStack.setRules(), RoutMatchedCapacitor.setRules(), CapacitorUnit.setRules(), and VerticalRoutingTracks.setRules().

◆ drawCapacitor()

def drawCapacitor (   self,
  layerDict,
  t,
  b 
)

Draws all layout physicial layers of the capacitor.

Parameters
layerDicta dictionary containing a description of the required physical layers according to capacitor type
(t , b ) nets of top and bottom plates, respectively

References CapacitorUnit.bottomPlateBox, CapacitorUnit.bottomPlateBoxDict, CapacitorUnit.drawBottomPlateCut(), CapacitorUnit.drawOnePlate(), CapacitorUnit.drawRoutingLayers(), CapacitorUnit.drawTopPlateCut(), CapacitorUnit.topPlateBox, and CapacitorUnit.topPlateBoxDict.

Referenced by CapacitorUnit.create().

◆ computeBottomPlateCuts()

def computeBottomPlateCuts (   self)

Computes needed parameters to draw bottom plate cuts in its exact position, including :

  • maximum number of cuts to draw on both sides of bottom plate,
  • adjusted enclosure of
  • abcissas of the two bottom cuts on left and right sides of bottom plate,
  • ordinate of the same two cuts.

Given parameters described above, it is possible to draw the entire lines of cuts on both sides of bottom plate using cutLine function.

References CapacitorUnit.bottomCutLineNumber, CapacitorUnit.bottomPlateBoxDict, CapacitorUnit.cutLeftLineDict, CapacitorUnit.cutMaxNumber(), CapacitorUnit.cutRightLineDict, CapacitorUnit.minEnclo_botPlate_botPlateCut, CapacitorUnit.minheight_topPlatecut, CapacitorUnit.minSpacing_botPlateCut_topPlate, CapacitorUnit.minSpacingOnBotPlate_cut, CapacitorUnit.minWidth_topPlatecut, and CapacitorUnit.topPlateBoxDict.

Referenced by CapacitorUnit.drawAbutmentBox().

◆ computeTopPlateCuts()

def computeTopPlateCuts (   self)

Computes needed parameters to draw top plate cuts in its exact position, including :

  • maximum number of cuts to draw on both sides of top plate,
  • adjusted enclosure of
  • abcissas of the two top cuts on left and right sides of top plate,
  • ordinate of the same two cuts.

Given parameters described above, it is possible to draw the entire lines of cuts on both sides of bottom plate using cutLine function.

References CapacitorUnit.abutmentBoxDict, CapacitorUnit.bottomPlateBoxDict, CapacitorUnit.bottomPlateRLayerDict, CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorUnit.cut2MatrixDict, CapacitorUnit.cutLeftLineDict, CapacitorUnit.cutMaxNumber(), CapacitorUnit.cutRightLineDict, CapacitorUnit.enclosure_botPlate_topPlate, CapacitorUnit.hEnclosure_botPlate_abtBox, CapacitorUnit.minEnclo_botPlate_botPlateCut, CapacitorUnit.minEnclo_botPlateRMetal_botPlateCut, CapacitorUnit.minEnclo_routingTrackMetal_cut, CapacitorUnit.minEnclo_topPlate_topPlateCut, CapacitorUnit.minEnclo_topPlateRMetal_topPlateCut, CapacitorUnit.minheight_topPlatecut, CapacitorUnit.minSpacing_botPlate, CapacitorUnit.minSpacing_botPlateCut_topPlate, CapacitorUnit.minSpacingOnTopPlate_cut, CapacitorUnit.minWidth_botPlatecut, CapacitorUnit.minWidth_botRMetal, CapacitorUnit.minWidth_routingTrackcut, CapacitorUnit.minWidth_topPlatecut, CapacitorUnit.setBottomPlateAbtBoxEnclosure(), CapacitorUnit.topCutLineDict, CapacitorUnit.topCutLineNumber, CapacitorUnit.topPlateBoxDict, CapacitorUnit.topPlateRLayerDict, and CapacitorUnit.vEnclosure_botPlate_abtBox.

Referenced by CapacitorUnit.drawAbutmentBox().

◆ drawAbutmentBox()

def drawAbutmentBox (   self)

Draws the abutment box of the capacitor in position <(abutmentBoxXMin, abutmentBoxYMin)>.

First, the minimum enclosure of the top plate inside the bottom plate is computed. Second, using this parameters as well as the capacitor dimensions, the width and height of the abutment box are computed. The box is finally drawn.

References CapacitorStack.abutmentBox, CapacitorUnit.abutmentBox, VerticalRoutingTracks.abutmentBox, CapacitorUnit.abutmentBoxDict, CapacitorUnit.bottomPlateBoxDict, CapacitorStack.computeAbutmentBoxDimensions(), CapacitorUnit.computeAbutmentBoxDimensions(), CapacitorUnit.computeBottomPlateCuts(), CapacitorUnit.computeOnePlateBoxDimensions(), CapacitorUnit.computeRoutingLayersDimensions(), CapacitorUnit.computeTopPlateCuts(), CapacitorUnit.enclosure_botPlate_topPlate, CapacitorUnit.hEnclosure_botPlate_abtBox, CapacitorUnit.topPlateBoxDict, and CapacitorUnit.vEnclosure_botPlate_abtBox.

Referenced by CapacitorStack.create(), and CapacitorUnit.create().

◆ drawOnePlate()

def drawOnePlate (   self,
  layer,
  net,
  boxDimensions 
)

Draws the top or bottom plate through inflation of the Box under it.

These boxes are the abutment box in the case of the bottom plate and the bottom plate's box in the case of the top plate. This function also creates a a net for the drawn plate and sets it as external.

Returns
The drawn box.

Referenced by CapacitorUnit.drawCapacitor().

◆ drawBottomPlateCut()

def drawBottomPlateCut (   self,
  layer,
  b 
)

Draws the required cuts to connect the bottom plate.

First, the maximal possible number of cuts that can be drawn is computed. Second, using the computed number, the enclosure of this cuts in the bottom plate's layer is adjusted while the minimal enclosure is respected. Third, the relative positions of the cuts on both sides of the plate are computed. Finally, two vertical lines of cuts are drawns.

Remark:
The relative positions describe the cordinates of the first bottom cut in every line of cuts. Then, knowing the spacing and width specifications of these cuts the rest of the line is easilly constructed.

References CapacitorUnit.bottomCutLineNumber, CapacitorUnit.cutLeftLineDict, CapacitorUnit.cutLine(), CapacitorUnit.cutRightLineDict, CapacitorUnit.minheight_topPlatecut, CapacitorUnit.minSpacingOnBotPlate_cut, and CapacitorUnit.minWidth_botPlatecut.

Referenced by CapacitorUnit.drawCapacitor().

◆ drawTopPlateCut()

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.

References CapacitorStack.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorUnit.capacitorType, VerticalRoutingTracks.capacitorType, CapacitorUnit.cut2MatrixDict, CapacitorUnit.cutLine(), CapacitorUnit.cutMatrix(), CapacitorUnit.minheight_topPlatecut, CapacitorUnit.minSpacingOnTopPlate_cut, CapacitorUnit.minWidth_topPlatecut, CapacitorUnit.topCutLineDict, and CapacitorUnit.topCutLineNumber.

Referenced by CapacitorUnit.drawCapacitor().

◆ drawRoutingLayers()

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.

Also computes positions if rlayers that are crucial for routing.

References CapacitorUnit.bottomPlateRLayerDict, CapacitorUnit.cutLeftLineDict, CapacitorUnit.cutRightLineDict, and CapacitorUnit.topPlateRLayerDict.

Referenced by CapacitorUnit.drawCapacitor().

◆ cutMaxNumber()

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.

Referenced by CapacitorUnit.computeBottomPlateCuts(), and CapacitorUnit.computeTopPlateCuts().

◆ cutLine()

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.

Referenced by CapacitorUnit.cutMatrix(), CapacitorUnit.drawBottomPlateCut(), and CapacitorUnit.drawTopPlateCut().

◆ cutMatrix()

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.

Parameters
netnet to which the cuts belong
layercuts physical layer
firstCutXCentercenter's abcissa of the bottom left cut ( that is the first cut to be drawn in the matrix )
firstCutYCentercenter's abcissa of the bottom left cut
(width_cut,height_cut,spacing_cut)cuts dimenions
(cutColumnNumber,cutRowNumber)matrix dimensions
Remarks
The matrix can have any dimensions zero or negative one.

References CapacitorUnit.cutLine().

Referenced by CapacitorUnit.drawTopPlateCut().

◆ getBottomPlateYMax()

def getBottomPlateYMax (   self)
Returns
the ordinate of the bottom plate's highest end-point ( that is equivalent to dySource of the bottom plate's box ) .

References CapacitorUnit.bottomPlateBoxDict.

◆ getBottomPlateLeftCutXMin()

def getBottomPlateLeftCutXMin (   self)
Returns
the abcissa of the bottom plate's left line of cuts.

Referenced by CapacitorStack.drawBottomPlatesRLayers(), and RoutMatchedCapacitor.drawCuts_vRoutingTrack_hRoutingTrack().

◆ getBottomPlateLeftCutYMin()

def getBottomPlateLeftCutYMin (   self)
Returns
the ordinate of the first ( or bottom) cut in the left line of cuts on the bottom plate.

◆ getBottomPlateLeftCutYMax()

def getBottomPlateLeftCutYMax (   self)
Returns
the ordinate of the highest cut of the bottom plate's left line of cuts.

References CapacitorUnit.bottomCutLineNumber, CapacitorUnit.minSpacingOnBotPlate_cut, and CapacitorUnit.minWidth_botPlatecut.

◆ getBottomPlateRightCutXMin()

def getBottomPlateRightCutXMin (   self)
Returns
the absissa of the bottom plate's right line of cuts.

Referenced by CapacitorStack.drawBottomPlatesRLayers(), and RoutMatchedCapacitor.drawCuts_vRoutingTrack_hRoutingTrack().

◆ getBottomPlateRightCutYMin()

def getBottomPlateRightCutYMin (   self)
Returns
the ordinate of the first ( or bottom) cut in the right line of cuts on the bottom plate.

Referenced by RoutMatchedCapacitor.computeHRLayerYCenter(), and CapacitorUnit.getBottomPlateRightCutYCenter().

◆ getBottomPlateRightCutYMax()

def getBottomPlateRightCutYMax (   self)
Returns
the ordinate of the highest ( or top) cut in the right line of cuts on the bottom plate.

References CapacitorUnit.bottomCutLineNumber, CapacitorUnit.minSpacingOnBotPlate_cut, and CapacitorUnit.minWidth_botPlatecut.

Referenced by RoutMatchedCapacitor.computeHRLayerYCenter(), and CapacitorUnit.getBottomPlateRightCutYCenter().

◆ getBotPlateLeftRLayerXMax()

def getBotPlateLeftRLayerXMax (   self)
Returns
the center's ordinate of the bottom plate's left cut (the cut that is the first one in the line).

Referenced by CapacitorStack.drawBottomPlatesRLayers().

◆ getBottomPlateRightCutYCenter()

def getBottomPlateRightCutYCenter (   self)
Returns
the position of the bottom plate's right cuts on the horitontal axis (also applicable to left cuts).

References CapacitorUnit.getBottomPlateRightCutYMax(), and CapacitorUnit.getBottomPlateRightCutYMin().

◆ getBotPlateLeftRLayerXMin()

def getBotPlateLeftRLayerXMin (   self)
Returns
the position of the bottom plate's left cuts on the horitontal axis.

◆ getBotPlateRLayerYMin()

def getBotPlateRLayerYMin (   self)
Returns
the position of bottom plate's left cuts on the horitontal axis.

Referenced by RoutMatchedCapacitor.route().

◆ getBotPlateRLayerYMax()

def getBotPlateRLayerYMax (   self)
Returns
the position of bottom plate's left cuts on the horitontal axis.

Referenced by CapacitorStack.drawBottomPlatesRLayers().

◆ getBotPlateRLayerWidth()

def getBotPlateRLayerWidth (   self)
Returns
the position of bottom plate's left cuts on the horitontal axis.

Referenced by CapacitorStack.drawBottomPlatesRLayers(), RoutMatchedCapacitor.drawCuts_vRoutingTrack_hRoutingTrack(), and RoutMatchedCapacitor.route().

◆ getBotPlateRightRLayerXCenter()

def getBotPlateRightRLayerXCenter (   self)
Returns
the position of bottom plate's left cuts on the horitontal axis.

Referenced by RoutMatchedCapacitor.route().

◆ getBotPlateLeftRLayerXCenter()

def getBotPlateLeftRLayerXCenter (   self)
Returns
the position of bottom plate's left cuts on the horitontal axis.

Referenced by RoutMatchedCapacitor.route().

◆ getTopPlateRLayerYMin()

def getTopPlateRLayerYMin (   self)
Returns
the ordinate of the bottom end points of the top plate routing layer.

Referenced by CapacitorStack.drawTopPlatesRLayers(), and RoutMatchedCapacitor.route().

◆ getTopPlateRLayerYMax()

def getTopPlateRLayerYMax (   self)
Returns
the ordinate of the higher end points of the top plate routing layer.

Referenced by CapacitorStack.drawTopPlatesRLayers().

◆ getTopPlateRLayerWidth()

def getTopPlateRLayerWidth (   self)

◆ getTopPlateRLayerXCenter()

def getTopPlateRLayerXCenter (   self)
Returns
the center's abcissa of the bottom plate routing layer.

Referenced by CapacitorStack.drawTopPlatesRLayers().

◆ getTopPlateRLayerXMin()

def getTopPlateRLayerXMin (   self)
Returns
the origin (bottom-left end point) abcissa of the top plate routing layers.

References CapacitorUnit.topPlateRLayerDict.

Referenced by RoutMatchedCapacitor.__computeConnections__(), and RoutMatchedCapacitor.drawCuts_vRoutingTrack_hRoutingTrack().

◆ getTopPlateRLayerXMax()

def getTopPlateRLayerXMax (   self)
Returns
the abscissa of the bottom-right end-point of the top plate routing layer.

References CapacitorUnit.topPlateRLayerDict.


The documentation for this class was generated from the following file:


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