From 68a3695780fe2b1d164631776ccffffc4b2fb4c3 Mon Sep 17 00:00:00 2001 From: Robert Taylor Date: Tue, 15 Nov 2022 11:51:43 +0000 Subject: [PATCH] Remove old generated files that clash on case-insensitive file systems --- ...citorMatrix_1_1CapacitorStack-members.html | 84 - ..._1_1CapacitorMatrix_1_1CapacitorStack.html | 590 ------- ...trix_1_1CapacitorStack__inherit__graph.map | 5 - ...trix_1_1CapacitorStack__inherit__graph.md5 | 1 - ...outed_1_1RoutMatchedCapacitor-members.html | 87 - ...pacitorRouted_1_1RoutMatchedCapacitor.html | 781 --------- ..._1RoutMatchedCapacitor__inherit__graph.map | 5 - ..._1RoutMatchedCapacitor__inherit__graph.md5 | 1 - ...apacitorUnit_1_1CapacitorUnit-members.html | 113 -- ...hon_1_1CapacitorUnit_1_1CapacitorUnit.html | 1466 ----------------- ...rUnit_1_1CapacitorUnit__inherit__graph.map | 5 - ...rUnit_1_1CapacitorUnit__inherit__graph.md5 | 1 - ...acks_1_1VerticalRoutingTracks-members.html | 74 - ...itorVRTracks_1_1VerticalRoutingTracks.html | 182 -- ...1VerticalRoutingTracks__inherit__graph.map | 5 - ...1VerticalRoutingTracks__inherit__graph.md5 | 1 - ...classpython_1_1Stack_1_1Stack-members.html | 75 - .../html/classpython_1_1Stack_1_1Stack.html | 328 ---- ...n_1_1CapacitorMatrix_1_1CapacitorStack.tex | 338 ---- ...trix_1_1CapacitorStack__inherit__graph.md5 | 1 - ...trix_1_1CapacitorStack__inherit__graph.pdf | Bin 8084 -> 0 bytes ...apacitorRouted_1_1RoutMatchedCapacitor.tex | 493 ------ ..._1RoutMatchedCapacitor__inherit__graph.md5 | 1 - ..._1RoutMatchedCapacitor__inherit__graph.pdf | Bin 8229 -> 0 bytes ...thon_1_1CapacitorUnit_1_1CapacitorUnit.tex | 923 ----------- ...rUnit_1_1CapacitorUnit__inherit__graph.md5 | 1 - ...rUnit_1_1CapacitorUnit__inherit__graph.pdf | Bin 8219 -> 0 bytes ...citorVRTracks_1_1VerticalRoutingTracks.tex | 105 -- ...1VerticalRoutingTracks__inherit__graph.md5 | 1 - ...1VerticalRoutingTracks__inherit__graph.pdf | Bin 8072 -> 0 bytes .../latex/classpython_1_1Stack_1_1Stack.tex | 222 --- .../python_CapacitorMatrix_CapacitorStack.3 | 262 --- ...hon_CapacitorRouted_RoutMatchedCapacitor.3 | 362 ---- .../man3/python_CapacitorUnit_CapacitorUnit.3 | 759 --------- ..._CapacitorVRTracks_VerticalRoutingTracks.3 | 87 - oroshi/doc/man/man3/python_Stack_Stack.3 | 185 --- ...trix_1_1CapacitorStack__inherit__graph.md5 | 1 - ..._1RoutMatchedCapacitor__inherit__graph.md5 | 1 - ...rUnit_1_1CapacitorUnit__inherit__graph.md5 | 1 - ...1VerticalRoutingTracks__inherit__graph.md5 | 1 - 40 files changed, 7548 deletions(-) delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack-members.html delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack.html delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.map delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor-members.html delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor.html delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.map delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit-members.html delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit.html delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.map delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks-members.html delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks.html delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.map delete mode 100644 oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.md5 delete mode 100644 oroshi/doc/html/classpython_1_1Stack_1_1Stack-members.html delete mode 100644 oroshi/doc/html/classpython_1_1Stack_1_1Stack.html delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack.tex delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.pdf delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor.tex delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.pdf delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit.tex delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.pdf delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks.tex delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.md5 delete mode 100644 oroshi/doc/latex/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.pdf delete mode 100644 oroshi/doc/latex/classpython_1_1Stack_1_1Stack.tex delete mode 100644 oroshi/doc/man/man3/python_CapacitorMatrix_CapacitorStack.3 delete mode 100644 oroshi/doc/man/man3/python_CapacitorRouted_RoutMatchedCapacitor.3 delete mode 100644 oroshi/doc/man/man3/python_CapacitorUnit_CapacitorUnit.3 delete mode 100644 oroshi/doc/man/man3/python_CapacitorVRTracks_VerticalRoutingTracks.3 delete mode 100644 oroshi/doc/man/man3/python_Stack_Stack.3 delete mode 100644 oroshi/doc/rtf/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 delete mode 100644 oroshi/doc/rtf/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 delete mode 100644 oroshi/doc/rtf/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 delete mode 100644 oroshi/doc/rtf/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.md5 diff --git a/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack-members.html b/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack-members.html deleted file mode 100644 index c8db4191..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
-
-
CapacitorStack Member List
-
-
- -

This is the complete list of members for CapacitorStack, including all inherited members.

- - - - - - - - - - - - - - -
__init__CapacitorStack
__isMatchingSchemeOK__CapacitorStack
__isUnitCap__CapacitorStack
capacitorIdOccurenceCapacitorStack
capacitorLineCapacitorStack
capacitorMatrixCapacitorStack
createCapacitorStack
drawAbutmentBoxCapacitorStack
drawBottomPlatesRLayersCapacitorStack
drawTopPlatesRLayersCapacitorStack
getMatchingSchemeCapacitorStack
getMatrixDimCapacitorStack
getVerticalRoutingTrack_widthCapacitorStack
-
-
- - - - - -
Generated by doxygen 1.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack.html b/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack.html deleted file mode 100644 index 9c47f92e..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack.html +++ /dev/null @@ -1,590 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
- -
-
CapacitorStack Class Reference
-
-
- -

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

- -

Inherits CapacitorUnit.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

def __init__
 This is the class constructor. More...
 
def __isUnitCap__
 
def __isMatchingSchemeOK__
 
def capacitorIdOccurence
 
def create
 Draw the compact or matrix of capacitors. More...
 
def capacitorLine
 Iteratively draws a horizontal or vertical line of capacitors according to the direction parameter. More...
 
def capacitorMatrix
 Draws a matrix of identical capacitors. More...
 
def drawAbutmentBox
 Draws the abutment box of the matrix or campact capacitor. More...
 
def drawBottomPlatesRLayers
 Draws the routing layers connecting the bottom plate in the matrix of capacitors. More...
 
def drawTopPlatesRLayers
 Draws the routing layers connecting the top plates in the matrix of capacitors. More...
 
def getVerticalRoutingTrack_width
 
def getMatrixDim
 
def getMatchingScheme
 
-

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
- - - - - - -
deviceThe Hurricane AMS device into which the layout is drawn.
capacitanceThe value of the capacitor, expressed in femto Farad (fF).
capacitorTypeCan be MIM or PIP type capacitor.
abutmentPositionRefers to the abscissa (XMin) of the bottom left corner of the abutment Box.
abutmentBoxYMinRefers 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
- - - -
rowNumberNumber of rows in the matrix of capacitors.
columnNumberNumber of columns in the matrix of capacitors.
-
-
- -

References CapacitorStack.__areInputDataOK__(), CapacitorUnit.__computeCapDim__(), CapacitorStack.__initGivenNonZeroUnitCap__(), CapacitorStack.__initGivenNonZeroUnitCapInMatchingMode__(), CapacitorStack.__initGivenZeroUnitCap__(), CapacitorStack.__initGivenZeroUnitCapInMatchingMode__(), CapacitorStack.__initMatrixMode__(), CapacitorUnit.__isCapacitorUnitOK__(), CapacitorStack.abutmentBox, CapacitorUnit.abutmentBox, CapacitorStack.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorStack.capacitance, CapacitorStack.capacitorIdOccurence(), CapacitorStack.capacitorsNumber, CapacitorStack.capacitorType, CapacitorUnit.capacitorType, CapacitorStack.compactCapDim, CapacitorStack.computeUnitCap(), CapacitorStack.device, 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.
- -
-
- -
-
- - - - - - - - -
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, 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(), CapacitorStack.capacitorType, CapacitorUnit.capacitorType, CapacitorStack.computeBondingBoxDimensions(), CapacitorStack.device, CapacitorUnit.device, Stack.device, CapacitorStack.doMatrix, CapacitorStack.drawAbutmentBox(), CapacitorUnit.drawAbutmentBox(), CapacitorStack.drawBottomPlatesRLayers(), CapacitorStack.drawCapacitorStack(), CapacitorStack.drawTopPlatesRLayers(), CapacitorStack.dummyRing, CapacitorStack.matchingMode, CapacitorStack.matrixDim, CapacitorStack.nets, CapacitorStack.setRules(), 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
- - -
dythe 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, CapacitorStack.capacitorType, CapacitorUnit.capacitorType, CapacitorStack.create(), CapacitorStack.createElementInCapacitorLine(), CapacitorStack.device, 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(), CapacitorStack.capacitorType, CapacitorUnit.capacitorType, CapacitorStack.create(), CapacitorStack.device, 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 CapacitorStack.abutmentBox, CapacitorUnit.abutmentBox, CapacitorStack.abutmentBox_spacing, CapacitorStack.abutmentBoxPosition, CapacitorStack.computeAbutmentBoxDimensions(), and CapacitorUnit.computeAbutmentBoxDimensions().

- -

Referenced by CapacitorStack.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 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 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.
- -
-
-
The documentation for this class was generated from the following file: -
-
-
- - - - - -
Generated by doxygen 1.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.map b/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.map deleted file mode 100644 index 07065764..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 b/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 deleted file mode 100644 index 9c2da9ab..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6d59f047aa372948d1fcd41f41b1f537 \ No newline at end of file diff --git a/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor-members.html b/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor-members.html deleted file mode 100644 index a29dcbaa..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
-
-
RoutMatchedCapacitor Member List
-
-
- -

This is the complete list of members for RoutMatchedCapacitor, including all inherited members.

- - - - - - - - - - - - - - - - - -
__computeConnections__RoutMatchedCapacitor
__init__RoutMatchedCapacitor
__setStretchingDySourceDyTarget__RoutMatchedCapacitor
__stretchTopPlateCompactCap__RoutMatchedCapacitor
__stretchTopPlates__RoutMatchedCapacitor
computeDimensionsRoutMatchedCapacitor
computeHRLayerYCenterRoutMatchedCapacitor
computeHRoutingTrackYCenterRoutMatchedCapacitor
drawCutsRoutMatchedCapacitor
drawCuts_vRoutingTrack_hRoutingTrackRoutMatchedCapacitor
drawHRLayersRoutMatchedCapacitor
drawHRoutingTracksRoutMatchedCapacitor
drawOneCut_vRoutingTrack_HRLayerRoutMatchedCapacitor
routeRoutMatchedCapacitor
setLayersRoutMatchedCapacitor
setRulesRoutMatchedCapacitor
-
-
- - - - - -
Generated by doxygen 1.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor.html b/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor.html deleted file mode 100644 index 78e3d7c5..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor.html +++ /dev/null @@ -1,781 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
- -
-
RoutMatchedCapacitor Class Reference
-
-
- -

Routs two matched capacitors, C1 and C2, drawn in a capacitor matrix. - More...

- -

Inherits CapacitorUnit, CapacitorStack, and VerticalRoutingTracks.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

def __init__
 A special method used to customize the class instance to an initial state in which : More...
 
def route
 Draws the complete layout given the capacitor matrix. More...
 
def setRules
 Defines technology rules used to draw the layout. More...
 
def setLayers
 Defines all physical layers used to draw the layout. More...
 
def computeDimensions
 Computes, through simple instructions and functions calls, layout variables detailed in Figure 2. More...
 
def computeHRoutingTrackYCenter
 Computes centers' ordinates of the eight horizontal routing tracks. More...
 
def computeHRLayerYCenter
 Sets the stretching value of top plates. More...
 
def drawHRoutingTracks
 Iteratively draws horizontal routing tracks on top and bottom positions of the matrix using physical layer routingTracksLayer. More...
 
def drawHRLayers
 Iteratively draws the horizontal routing layers starting with bottom left elementary capacitor $ C_{00} $. More...
 
def drawCuts
 Draws all required cuts using physical layers : More...
 
def drawOneCut_vRoutingTrack_HRLayer
 Draws one cut, in layer cutLayer, in order to connect a vertical routing track, at position cutXMin in metal 2, and a horizontal routing track, at position cutYMin in metal 3. More...
 
def drawCuts_vRoutingTrack_hRoutingTrack
 Draws cuts to connect vertical routing tracks in metal 2 and horizontal routing tracks in metal 3. More...
 
def __stretchTopPlates__
 Iteratively performs top plates stretching for the capacitor matrix. More...
 
def __stretchTopPlateCompactCap__
 Draws vertical stretched layers for a given elementary capacitor. More...
 
def __setStretchingDySourceDyTarget__
 Sets the abcissas of the extremities of the vertical stretching to be applied to capacitor's top plates for a given elementary capacitor in the matrix. More...
 
def __computeConnections__
 Computes horizontal routing layers source and target abcissas for top and bottom plates connections to its associated routing track. More...
 
-

Detailed Description

-

Routs two matched capacitors, C1 and C2, drawn in a capacitor matrix.

-

Connections are put in place with reference to a given matching scheme. Elementary capacitor units are connected to horizontal and vertical routing tracks that represent top plates and bottom plates nets of C1 and C2 . Supported types of capacitors are Poly-Poly and Metal-Metal. Technologycal rules are provided by 350 nm AMS CMOS technology with three-four metal layers. Metal layers that are used for routing are placed similarly to horziontal-vertical (HV) symbolic Alliance CAD tool router, where horizontal metal channels are drawn in metal 2 and the vertical ones are in metal 3. Given a matrix of dimensions $ R*C $, the total number of vertical tracks is $ 2C+2 $ equivalent to $ C+1 $ couples, ensuring that every elementary capacitor is positioned between four vertical tracks, two from each side. In fact, every adjacent couple of these tracks represent top plates and bottom plates of C1 or C2 as shown in Figure 1.

-
-Layout.png -
-Layout
-

An elementary capacitor unit can be a part of C1 or C2 according to the matching scheme. However, to respect common-centroid layout specifications, for C1 and C2 to be equal, the matrix number of colums and number of rows must be both even. Addionnally, the number of elementary capacitors dedicated to C1 must be equal to those dedicated to C2. These two conditions are tested in one of the class methods. An exception is raised if at least one of the two is not respected.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
def __init__ ( self,
 vRTInstance 
)
-
- -

A special method used to customize the class instance to an initial state in which :

-
    -
  • the class attirbutes describing positions and dimensions of the layout are computed in dedicated class methods,
  • -
  • the attributes related to the capacitor matrix are copied from the CapacitorStack instance.
  • -
-

Position and dimensions attributes, also refered by layout variables, in Figure 2, are defined below :

-
Parameters
- - - - - - - - - - - - - -
deviceThe Hurricane AMS device onto which the layout is drawn.
capacitorInstanceInstance of CapacitorStack class.
capacitorA nested list containing the matrix elements, which are CapacitorUnit objects.
matchingSchemeA nested list, with equal dimensions as capacitor attribute, containing assignements of matrix elementary units to C1 and C2, identified by 1 and 2, respectively. Therefore, self.matchingScheme content is a succession of 1 and 2 values, defined as \ capacitor identifiers. For example, given a matrix of dimensions 2x2, the matching scheme can be $ [ [1,2], [1,2] ] or [ [2,1], [2,1] ] $. The first sub-list dictates that the first elementary capacitor, $ C_{00} $. The second element $ C_{01} $ is affected to C2 and so on. An immediate and obvious consequence to this, is that an error is raised if self.matchingSchem and self.capacitor dimensions are not identical or if self.matchingScheme content is different from supported capacitor identifiers, '1' and '2'.
capacitorTypeSupported types of capacitors are MIM and PIP only. An exception is raised otherwise.
abutmentBoxThe matrix's abutment box.
matrxiDimThe matrix dimensions, also equal to self.matchingScheme nested list dimensions.
abutmentBox_spacingThe spacing between elementary units in the matrix. It is computed in CapacitorStack and is reloaded in RoutMatchedCapacitor. self.abutmentBox_spacing includes, vertical routing tracks width and minimum allowed spacing between two adjacent ones.
hRoutingLayer_widthThe width of horizontal routing layers in metal 2, which connect capacitors plates to vertical routing tracks.
vRoutingTrack_widthThe width of vertical routing tracks in metal 3, which connects identical nets together ( ie : bottom plates of C1, top plates of C2, bottom plates of C2 and top plates of C2 ).
hRoutingTrack_widthThe width of horizontal routing tracks in metal 2, which connect identical vertical routing tracks together.
minSpacing_hRoutingTrackMinimum spacing between horizontal routing tracks. Wide metal 2 specifications are considered since metal 2 dimensions may exceed 10 $ m$.
-
-
-
Remark:
For more information about wide metal specifications, refer to ENG-183_rev8.pdf technology manual.
-
Parameters
- - - - - - - - -
minimumPositionThe ordinate of the top plate's routing layer's bottom extremity after stretching.
maximumPositionThe ordinate of the top plate's routing layer's top extremity, also equivalent to the top plate's top extremity.
vRoutingTrackXCenterA nested list of ordered dictionaries, with dimensions equal to self.matrixDim, containing abcissas of vertical routing tracks. All sub-lists' lengths are identical and are equal to 2. The first and second elements describe position of top plate track and bottom plate track, respectively. For example, given a matrix of dimensions 2x2, self.vRoutingTrackXCenter can be [[0, 2], [4,6], [8,10]] $ \mu m$. Elements of this nested list have particular indexing as described in Figure 2.
hRoutingtrackYCenterA nested dictonary containing two keys, topTracks and bottomTracks. Each key contains as value a dictionary describing centers' ordinates of four parallel horizontal tracks. The reason why four tracks are needed on top and bottom positions of the matrix is that four nets are used, two for every capacitor Ci, were i is in [1,2].
hRoutingLayerYCenterA nested dicitonary containing two keys, top and bottom. Each key contains as value a dictionary describing centers' ordinates of horizontal routing layers.
vRoutingTrackDictA dictionary of routing tracks top and bottom extremities ordinates.
topPlateStretchingSince not only the same metal 2 layer is used to draw top/bottom plates connections to vertical tracks but also the two plates are superimposed, the top plate's routing tracks is stretched. self.topPlateStretching is therefore the length added to top plate's routing layer in order to avoid short circuits between top and bottom plates routing to vertical tracks since the same metal is used for both.
-
-
- -

References RoutMatchedCapacitor.capacitor, CapacitorStack.dummyRing, RoutMatchedCapacitor.dummyRing, RoutMatchedCapacitor.dummyRingCapacitor, RoutMatchedCapacitor.hRoutingLayer_width, RoutMatchedCapacitor.hRoutingLayerYCenter, RoutMatchedCapacitor.hRoutingTrack_width, RoutMatchedCapacitor.hRoutingtrackYCenter, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, RoutMatchedCapacitor.maximumPosition, RoutMatchedCapacitor.minimumPosition, RoutMatchedCapacitor.minSpacing_hRoutingTrack, RoutMatchedCapacitor.topPlateStretching, and RoutMatchedCapacitor.vRTInstance.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
def route ( self,
 bbMode = False 
)
-
- -

Draws the complete layout given the capacitor matrix.

-

route method is succession of calls to user-defined methods inside a newly created Updatesession. The following tasks are excecuted :

-
    -
  1. A nex UpdateSession is created,
  2. -
  3. all required physical layers are loaded,
  4. -
  5. technology rules are defined according to capacitor type,
  6. -
  7. layout dimension parameters are computed,
  8. -
  9. routing tracks and layers are drawn,
  10. -
  11. top plates are stretched,
  12. -
  13. all required cuts are drawn,
  14. -
  15. The UpdateSession is closed.
  16. -
-

Meanwhile, an exception is raised when the entered capacitor is not a capacitor matrix or if the capacitor type is unsupported.

- -

References RoutMatchedCapacitor.__stretchTopPlates__(), RoutMatchedCapacitor.capacitor, RoutMatchedCapacitor.computeDimensions(), CapacitorUnit.computeDimensions(), Stack.computeDimensions(), RoutMatchedCapacitor.drawCuts(), RoutMatchedCapacitor.drawDummyRing_hRTracks_Cuts(), RoutMatchedCapacitor.drawHRLayers(), RoutMatchedCapacitor.drawHRoutingTracks(), CapacitorStack.dummyRing, RoutMatchedCapacitor.dummyRing, RoutMatchedCapacitor.dummyRingCapacitor, VerticalRoutingTracks.getVTrackYMax(), VerticalRoutingTracks.getVTrackYMin(), CapacitorUnit.hpitch, RoutMatchedCapacitor.hRoutingtrackYCenter, VerticalRoutingTracks.matchingScheme, CapacitorStack.matchingScheme, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, RoutMatchedCapacitor.maximumPosition, CapacitorUnit.metal3Width, RoutMatchedCapacitor.minimumPosition, VerticalRoutingTracks.nets, CapacitorStack.nets, RoutMatchedCapacitor.routeDummyRing(), RoutMatchedCapacitor.routeLeftAndRightSides(), RoutMatchedCapacitor.routeTopOrBottomSide(), RoutMatchedCapacitor.setLayers(), CapacitorStack.setRules(), CapacitorUnit.setRules(), RoutMatchedCapacitor.setRules(), CapacitorUnit.vpitch, VerticalRoutingTracks.vRoutingTrack_width, CapacitorStack.vRoutingTrack_width, and RoutMatchedCapacitor.vRoutingTrackXCenter.

- -
-
- -
-
- - - - - - - - -
def setRules ( self)
-
- -

Defines technology rules used to draw the layout.

-

Some of the rules, namely those describing routing layers and tracks are applicable for both MIM and PIP capacitors. However, cuts rules are different.

-
Remark:
All CapacitorStack class rules are also reloaded in this class. An exception is raised if the entered capacitor type is unsupported.
-
Returns
a dictionary with rules labels as keys and rules content as values.
- -

References CapacitorStack.capacitorType, CapacitorUnit.capacitorType, RoutMatchedCapacitor.capacitorType, CapacitorStack.minEnclosure_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minEnclosure_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minSpacing_hRoutingLayer, RoutMatchedCapacitor.minSpacing_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minSpacing_hRoutingLayer_vRoutingTrack_cut, RoutMatchedCapacitor.minSpacing_hRoutingTrackCut, CapacitorStack.minSpacing_vRoutingTrackCut, RoutMatchedCapacitor.minSpacing_vRoutingTrackCut, CapacitorStack.minWidth_hRoutingLayer_topPlate_cut, and RoutMatchedCapacitor.minWidth_hRoutingLayer_topPlate_cut.

- -

Referenced by RoutMatchedCapacitor.route(), and VerticalRoutingTracks.setRules().

- -
-
- -
-
- - - - - - - - -
def setLayers ( self)
-
- -

Defines all physical layers used to draw the layout.

-

Layers are loaded using DataBase API. The same routing layers are used for both capacitor types except cuts layers that connect top plates to vertical routing tracks. Basicaly, metal 2, meta 3, cut 1 and cut 2 are the ones defined.

-
Returns
a dictionary composed of layers labels as keys and layers as values.
- -

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

- -

Referenced by RoutMatchedCapacitor.route().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
def computeDimensions ( self,
 bbMode 
)
-
- -

Computes, through simple instructions and functions calls, layout variables detailed in Figure 2.

- -

References CapacitorStack.abutmentBox_spacing, RoutMatchedCapacitor.abutmentBox_spacing, VerticalRoutingTracks.capacitorsNumber, CapacitorStack.capacitorsNumber, RoutMatchedCapacitor.computeBondingBoxDimInbbMode(), RoutMatchedCapacitor.computeHRLayerYCenter(), RoutMatchedCapacitor.computeHRoutingTrackYCenter(), RoutMatchedCapacitor.hRoutingLayer_width, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, RoutMatchedCapacitor.maximumPosition, CapacitorStack.minEnclosure_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minEnclosure_hRoutingLayer_topPlate_cut, VerticalRoutingTracks.minEnclosure_hRoutingLayer_vRoutingTrack_cut, RoutMatchedCapacitor.minimumPosition, VerticalRoutingTracks.minWidth_hRoutingLayer, CapacitorStack.minWidth_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minWidth_hRoutingLayer_topPlate_cut, VerticalRoutingTracks.minWidth_hRoutingLayer_vRoutingTrack_cut, RoutMatchedCapacitor.vRoutingTrack_spacing, VerticalRoutingTracks.vRoutingTrack_width, CapacitorStack.vRoutingTrack_width, RoutMatchedCapacitor.vRoutingTrackDict, and RoutMatchedCapacitor.vRoutingTrackXCenter.

- -

Referenced by RoutMatchedCapacitor.route().

- -
-
- -
-
- - - - - - - - -
def computeHRoutingTrackYCenter ( self)
-
- -

Computes centers' ordinates of the eight horizontal routing tracks.

-

The tracks include four on top and four on bottom of the matrix. To do the computations, fist, center of the first bottom or top track, given in Figure 2, is computed. Then, all adjacent three centers are deduced by simples translation of the first one. Translation quantity is equal to the sum of distance between adjacent routing tracks, self.hRoutingTracks_spacing, and half width of the routing track itself, self.hRoutingTrack_width.

- -

References RoutMatchedCapacitor.__setPlatesIds__(), CapacitorUnit.hpitch, RoutMatchedCapacitor.hRoutingtrackYCenter, RoutMatchedCapacitor.maximumPosition, and RoutMatchedCapacitor.minimumPosition.

- -

Referenced by RoutMatchedCapacitor.computeDimensions().

- -
-
- -
-
- - - - - - - - -
def computeHRLayerYCenter ( self)
-
- -

Sets the stretching value of top plates.

-

Then iteratively computes the centers of horizontal routing layer regarding top and bottom plates.

- -

References RoutMatchedCapacitor.__findPossibleShortCircuits__(), VerticalRoutingTracks.__setStretching__(), RoutMatchedCapacitor.__setStretchingDySourceDyTarget__(), RoutMatchedCapacitor.bondingBox, RoutMatchedCapacitor.capacitor, RoutMatchedCapacitor.hRoutingLayer_width, RoutMatchedCapacitor.hRoutingLayerYCenter, RoutMatchedCapacitor.hRoutingTrack_width, RoutMatchedCapacitor.hRoutingtrackYCenter, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, RoutMatchedCapacitor.minSpacing_hRoutingLayer, RoutMatchedCapacitor.topPlateStretching, VerticalRoutingTracks.vRoutingTrack_width, CapacitorStack.vRoutingTrack_width, and RoutMatchedCapacitor.vRoutingTrackXCenter.

- -

Referenced by RoutMatchedCapacitor.computeDimensions().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
def drawHRoutingTracks ( self,
 routingTracksLayer 
)
-
- -

Iteratively draws horizontal routing tracks on top and bottom positions of the matrix using physical layer routingTracksLayer.

- -

References RoutMatchedCapacitor.hRoutingTrack_width, RoutMatchedCapacitor.hRoutingtrackYCenter, VerticalRoutingTracks.nets, CapacitorStack.nets, and RoutMatchedCapacitor.vRoutingTrackXCenter.

- -

Referenced by RoutMatchedCapacitor.route().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
def drawHRLayers ( self,
 xPlateRLayer 
)
-
- -

Iteratively draws the horizontal routing layers starting with bottom left elementary capacitor $ C_{00} $.

- -

References RoutMatchedCapacitor.__computeConnections__(), RoutMatchedCapacitor.hRoutingLayer_width, RoutMatchedCapacitor.hRoutingLayerYCenter, VerticalRoutingTracks.matchingScheme, CapacitorStack.matchingScheme, VerticalRoutingTracks.matrixDim, CapacitorStack.matrixDim, VerticalRoutingTracks.nets, and CapacitorStack.nets.

- -

Referenced by RoutMatchedCapacitor.route().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def drawCuts ( self,
 layer_hRTrack_hRLayer,
 layer_tracksCut,
 layer_topPlateCut 
)
-
- -

Draws all required cuts using physical layers :

-
    -
  • layer_hRTrack_hRLayer to connect bottom plates to vertical routing tracks,
  • -
  • layer_tracksCut to connect vertical routing tracks to horizontal ones,
  • -
  • layer_topPlateCut to connect top plates to vertical routing tracks. ALso in drawCuts, nUmber of maximum cuts number on every layer is computed and cuts enclosure is adjusted according to layer's width.
  • -
- -

References RoutMatchedCapacitor.__setPlatesLabels__(), VerticalRoutingTracks.capacitorIds, VerticalRoutingTracks.capacitorsNumber, CapacitorStack.capacitorsNumber, RoutMatchedCapacitor.drawCuts_stretchedTopPlate(), RoutMatchedCapacitor.drawCuts_vRoutingTrack_HRLayer(), RoutMatchedCapacitor.drawCuts_vRoutingTrack_hRoutingTrack(), RoutMatchedCapacitor.drawOneCut_vRoutingTrack_HRLayer(), RoutMatchedCapacitor.hRoutingLayerYCenter, VerticalRoutingTracks.matchingScheme, CapacitorStack.matchingScheme, VerticalRoutingTracks.matrixDim, CapacitorStack.matrixDim, CapacitorStack.minEnclosure_vRoutingTrackCut, RoutMatchedCapacitor.minSpacing_hRoutingTrackCut, CapacitorStack.minSpacing_vRoutingTrackCut, RoutMatchedCapacitor.minSpacing_vRoutingTrackCut, VerticalRoutingTracks.minWidth_hRoutingTrackCut, CapacitorStack.minWidth_vRoutingTrackCut, VerticalRoutingTracks.nets, CapacitorStack.nets, VerticalRoutingTracks.vRoutingTrack_width, CapacitorStack.vRoutingTrack_width, and RoutMatchedCapacitor.vRoutingTrackXCenter.

- -

Referenced by RoutMatchedCapacitor.route().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def drawOneCut_vRoutingTrack_HRLayer ( self,
 net,
 cutLayer,
 cutXMin,
 cutYMin,
 cutNumber 
)
-
- -

Draws one cut, in layer cutLayer, in order to connect a vertical routing track, at position cutXMin in metal 2, and a horizontal routing track, at position cutYMin in metal 3.

- -

References RoutMatchedCapacitor.minSpacing_hRoutingLayer_vRoutingTrack_cut, and VerticalRoutingTracks.minWidth_hRoutingLayer_vRoutingTrack_cut.

- -

Referenced by RoutMatchedCapacitor.drawCuts().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def drawCuts_vRoutingTrack_hRoutingTrack ( self,
 cutLayer,
 cutNumber,
 enclosure_cut 
)
-
- -

Draws cuts to connect vertical routing tracks in metal 2 and horizontal routing tracks in metal 3.

- -

References RoutMatchedCapacitor.__setPlatesIds__(), RoutMatchedCapacitor.capacitor, RoutMatchedCapacitor.dummyRingCapacitor, RoutMatchedCapacitor.hRoutingLayerYCenter, RoutMatchedCapacitor.hRoutingtrackYCenter, VerticalRoutingTracks.matchingScheme, CapacitorStack.matchingScheme, VerticalRoutingTracks.matrixDim, CapacitorStack.matrixDim, CapacitorStack.minEnclosure_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minEnclosure_hRoutingLayer_topPlate_cut, CapacitorStack.minEnclosure_vRoutingTrackCut, RoutMatchedCapacitor.minSpacing_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minSpacing_hRoutingTrackCut, CapacitorStack.minSpacing_vRoutingTrackCut, RoutMatchedCapacitor.minSpacing_vRoutingTrackCut, CapacitorStack.minWidth_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor.minWidth_hRoutingLayer_topPlate_cut, VerticalRoutingTracks.minWidth_hRoutingTrackCut, CapacitorStack.minWidth_vRoutingTrackCut, VerticalRoutingTracks.nets, CapacitorStack.nets, VerticalRoutingTracks.vRoutingTrack_width, CapacitorStack.vRoutingTrack_width, and RoutMatchedCapacitor.vRoutingTrackXCenter.

- -

Referenced by RoutMatchedCapacitor.drawCuts().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
def __stretchTopPlates__ ( self,
 capacitor,
 rlayer 
)
-
- -

Iteratively performs top plates stretching for the capacitor matrix.

-

Vertical segments are connected to top plate routing layer.

-
Parameters
- - - -
capacitorCapacitor matrix.
rlayerLayer of the drawn vertical rectangle.
-
-
- -

References RoutMatchedCapacitor.__stretchTopPlateCompactCap__(), VerticalRoutingTracks.matchingScheme, CapacitorStack.matchingScheme, VerticalRoutingTracks.matrixDim, CapacitorStack.matrixDim, VerticalRoutingTracks.nets, and CapacitorStack.nets.

- -

Referenced by RoutMatchedCapacitor.route().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def __stretchTopPlateCompactCap__ ( self,
 net,
 capacitor,
 routingLayer,
 j = 0 
)
-
- -

Draws vertical stretched layers for a given elementary capacitor.

- -

References RoutMatchedCapacitor.__setStretchingDySourceDyTarget__(), and RoutMatchedCapacitor.topPlateStretching.

- -

Referenced by RoutMatchedCapacitor.__stretchTopPlates__().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
def __setStretchingDySourceDyTarget__ ( self,
 capacitor,
 deltay 
)
-
- -

Sets the abcissas of the extremities of the vertical stretching to be applied to capacitor's top plates for a given elementary capacitor in the matrix.

-
Parameters
- - - -
capacitor.values() Elementary unit capacitor.
deltayStretching value.
-
-
-
Returns
A list that contains dySource and as top extremity and bottom extermity, respectively.
- -

Referenced by RoutMatchedCapacitor.__stretchTopPlateCompactCap__(), and RoutMatchedCapacitor.computeHRLayerYCenter().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def __computeConnections__ ( self,
 i,
 j,
 capacitorIdentifier 
)
-
- -

Computes horizontal routing layers source and target abcissas for top and bottom plates connections to its associated routing track.

-
Parameters
- - - -
(i,j)row and column indexes, respectively, in the matrix which describe the elementary capacitor position in the matrix.
capacitorIdentifierequal to '1' if C1 and '2' if C2.
-
-
-
Returns
A nested dicitionary. The overal dictionary is composed of keys equal to topPlate and bottomPlate and values equal to sub-dictionaries. The sub-dictionaries, are in their turn composed of two keys standing for the abcissa of the source and the abcissa of the target.
-
Remark:
Naturally, an exception is raised if an unsupported capacitor identifier is given.
- -

References RoutMatchedCapacitor.__findHRLDyTrarget__(), RoutMatchedCapacitor.__isCapacitorAdummy__(), RoutMatchedCapacitor.__setPlatesLabels__(), RoutMatchedCapacitor.capacitor, VerticalRoutingTracks.capacitorIds, VerticalRoutingTracks.capacitorsNumber, CapacitorStack.capacitorsNumber, CapacitorStack.dummyElement, RoutMatchedCapacitor.dummyElement, CapacitorStack.dummyRing, RoutMatchedCapacitor.dummyRing, VerticalRoutingTracks.matchingScheme, CapacitorStack.matchingScheme, VerticalRoutingTracks.matrixDim, CapacitorStack.matrixDim, VerticalRoutingTracks.nets, CapacitorStack.nets, VerticalRoutingTracks.vRoutingTrack_width, CapacitorStack.vRoutingTrack_width, RoutMatchedCapacitor.vRoutingTrackXCenter, and RoutMatchedCapacitor.vRTsDistribution.

- -

Referenced by RoutMatchedCapacitor.drawHRLayers().

- -
-
-
The documentation for this class was generated from the following file: -
-
-
- - - - - -
Generated by doxygen 1.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.map b/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.map deleted file mode 100644 index 1b5a74cf..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 b/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 deleted file mode 100644 index 2c43a5d2..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d6c9adda9bbd3f3b5faa5c7f1118343e \ No newline at end of file diff --git a/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit-members.html b/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit-members.html deleted file mode 100644 index 39af04a8..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit-members.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
-
-
CapacitorUnit Member List
-
-
- -

This is the complete list of members for CapacitorUnit, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
__computeCapDim__CapacitorUnit
__init__CapacitorUnit
__isCapacitorUnitOK__CapacitorUnit
__setCapacitorPerUnit__CapacitorUnit
computeBottomPlateCutsCapacitorUnit
computeTopPlateCutsCapacitorUnit
createCapacitorUnit
cutLineCapacitorUnit
cutMatrixCapacitorUnit
cutMaxNumberCapacitorUnit
drawAbutmentBoxCapacitorUnit
drawBottomPlateCutCapacitorUnit
drawCapacitorCapacitorUnit
drawOnePlateCapacitorUnit
drawRoutingLayersCapacitorUnit
drawTopPlateCutCapacitorUnit
getBotPlateLeftRLayerXCenterCapacitorUnit
getBotPlateLeftRLayerXMaxCapacitorUnit
getBotPlateLeftRLayerXMinCapacitorUnit
getBotPlateRightRLayerXCenterCapacitorUnit
getBotPlateRLayerWidthCapacitorUnit
getBotPlateRLayerYMaxCapacitorUnit
getBotPlateRLayerYMinCapacitorUnit
getBottomPlateLeftCutXMinCapacitorUnit
getBottomPlateLeftCutYMaxCapacitorUnit
getBottomPlateLeftCutYMinCapacitorUnit
getBottomPlateRightCutXMinCapacitorUnit
getBottomPlateRightCutYCenterCapacitorUnit
getBottomPlateRightCutYMaxCapacitorUnit
getBottomPlateRightCutYMinCapacitorUnit
getBottomPlateYMaxCapacitorUnit
getCapacitorTypeCapacitorUnit
getLayersCapacitorUnit
getMaximumCapWidthCapacitorUnit
getMinimumCapWidthCapacitorUnit
getTopPlateRLayerWidthCapacitorUnit
getTopPlateRLayerXCenterCapacitorUnit
getTopPlateRLayerXMaxCapacitorUnit
getTopPlateRLayerXMinCapacitorUnit
getTopPlateRLayerYMaxCapacitorUnit
getTopPlateRLayerYMinCapacitorUnit
setRulesCapacitorUnit
-
-
- - - - - -
Generated by doxygen 1.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit.html b/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit.html deleted file mode 100644 index 11ce1319..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit.html +++ /dev/null @@ -1,1466 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
- -
-
CapacitorUnit Class Reference
-
-
- -

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

def __init__
 This is the class constructor. More...
 
def __setCapacitorPerUnit__
 Sets the area and perimeter capacitances as specified in 350 nm AMS technology and according to capacitorType (MIM or PIP). More...
 
def __computeCapDim__
 Computes width and length of the capacitor. More...
 
def __isCapacitorUnitOK__
 Checks if the computed capacitor dimensions exceed or are less than maximum and minimum limits, respectively, as specified in technology rules. More...
 
def setRules
 Selects technological rules according to the capacitor type. More...
 
def getCapacitorType
 
def getMaximumCapWidth
 maximum size of capacitor's top plate. More...
 
def getMinimumCapWidth
 
def getLayers
 Loads the technology file then extracts the adequate layers according to the capacitor type (MIM or PIP). More...
 
def create
 When bonding box mode is activated, the function draws all layout physical layers of the capacitor after checking its dimensions. More...
 
def drawCapacitor
 Draws all layout physicial layers of the capacitor. More...
 
def computeBottomPlateCuts
 Computes needed parameters to draw bottom plate cuts in its exact position, including : More...
 
def computeTopPlateCuts
 Computes needed parameters to draw top plate cuts in its exact position, including : More...
 
def drawAbutmentBox
 Draws the abutment box of the capacitor in position <(abutmentBoxXMin, abutmentBoxYMin)>. More...
 
def drawOnePlate
 Draws the top or bottom plate through inflation of the Box under it. More...
 
def drawBottomPlateCut
 Draws the required cuts to connect the bottom plate. More...
 
def drawTopPlateCut
 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
 Draws the routing layers of both bottom and top plates after computing widths and the exact position of these layers. More...
 
def cutMaxNumber
 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
 Creates a horizontal or vertical line of contacts according to the specified direction. More...
 
def cutMatrix
 Creates a matrix of cuts by vertically stacking horizontal lines of identical cuts. More...
 
def getBottomPlateYMax
 
def getBottomPlateLeftCutXMin
 
def getBottomPlateLeftCutYMin
 
def getBottomPlateLeftCutYMax
 
def getBottomPlateRightCutXMin
 
def getBottomPlateRightCutYMin
 
def getBottomPlateRightCutYMax
 
def getBotPlateLeftRLayerXMax
 
def getBottomPlateRightCutYCenter
 
def getBotPlateLeftRLayerXMin
 
def getBotPlateRLayerYMin
 
def getBotPlateRLayerYMax
 
def getBotPlateRLayerWidth
 
def getBotPlateRightRLayerXCenter
 
def getBotPlateLeftRLayerXCenter
 
def getTopPlateRLayerYMin
 
def getTopPlateRLayerYMax
 
def getTopPlateRLayerWidth
 
def getTopPlateRLayerXCenter
 
def getTopPlateRLayerXMin
 
def getTopPlateRLayerXMax
 
-

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

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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__(), CapacitorUnit.abutmentBox, CapacitorUnit.abutmentBoxDict, CapacitorUnit.bottomCutLineNumber, CapacitorUnit.bottomPlateBox, CapacitorUnit.bottomPlateBoxDict, CapacitorUnit.bottomPlateRLayerDict, CapacitorUnit.capacitorType, CapacitorUnit.capDim, CapacitorUnit.cut2MatrixDict, CapacitorUnit.cutLeftLineDict, CapacitorUnit.cutRightLineDict, CapacitorUnit.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

- -
-
- - - - - - - - - - - - - - - - - - -
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__().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
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__(), and CapacitorUnit.__init__().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
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 CapacitorUnit.capacitorType, CapacitorUnit.getMaximumCapWidth(), and CapacitorUnit.getMinimumCapWidth().

- -

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

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

References CapacitorUnit.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().

- -
-
- -
-
- - - - - - - - -
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.
- -
-
- -
-
- - - - - - - - -
def getMaximumCapWidth ( self)
-
- -

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 CapacitorUnit.capacitorType.

- -

Referenced by CapacitorUnit.__isCapacitorUnitOK__().

- -
-
- -
-
- - - - - - - - -
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 CapacitorUnit.capacitorType.

- -

Referenced by CapacitorUnit.__isCapacitorUnitOK__().

- -
-
- -
-
- - - - - - - - -
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 CapacitorUnit.capacitorType.

- -

Referenced by CapacitorUnit.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, CapacitorUnit.computeDimensions(), Stack.computeDimensions(), CapacitorUnit.drawAbutmentBox(), CapacitorUnit.drawCapacitor(), Technology.getLayers(), CapacitorUnit.getLayers(), and CapacitorUnit.setRules().

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

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

- -
-
- -
-
- - - - - - - - -
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, CapacitorUnit.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().

- -
-
- -
-
- - - - - - - - -
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 CapacitorUnit.abutmentBox, CapacitorUnit.abutmentBoxDict, CapacitorUnit.bottomPlateBoxDict, 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().

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

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

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
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 CapacitorUnit.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().

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

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

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

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

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

- -
-
- -
-
- - - - - - - - -
def getBottomPlateLeftCutXMin ( self)
-
-
Returns
the abcissa of the bottom plate's left line of cuts.
- -
-
- -
-
- - - - - - - - -
def getBottomPlateLeftCutYMin ( self)
-
-
Returns
the ordinate of the first ( or bottom) cut in the left line of cuts on the bottom plate.
- -
-
- -
-
- - - - - - - - -
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.

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

Referenced by CapacitorUnit.getBottomPlateRightCutYCenter().

- -
-
- -
-
- - - - - - - - -
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 CapacitorUnit.getBottomPlateRightCutYCenter().

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

- -
-
- -
-
- - - - - - - - -
def getBotPlateLeftRLayerXMin ( self)
-
-
Returns
the position of the bottom plate's left cuts on the horitontal axis.
- -
-
- -
-
- - - - - - - - -
def getBotPlateRLayerYMin ( self)
-
-
Returns
the position of bottom plate's left cuts on the horitontal axis.
- -
-
- -
-
- - - - - - - - -
def getBotPlateRLayerYMax ( self)
-
-
Returns
the position of bottom plate's left cuts on the horitontal axis.
- -
-
- -
-
- - - - - - - - -
def getBotPlateRLayerWidth ( self)
-
-
Returns
the position of bottom plate's left cuts on the horitontal axis.
- -
-
- -
-
- - - - - - - - -
def getBotPlateRightRLayerXCenter ( self)
-
-
Returns
the position of bottom plate's left cuts on the horitontal axis.
- -
-
- -
-
- - - - - - - - -
def getBotPlateLeftRLayerXCenter ( self)
-
-
Returns
the position of bottom plate's left cuts on the horitontal axis.
- -
-
- -
-
- - - - - - - - -
def getTopPlateRLayerYMin ( self)
-
-
Returns
the ordinate of the bottom end points of the top plate routing layer.
- -
-
- -
-
- - - - - - - - -
def getTopPlateRLayerYMax ( self)
-
-
Returns
the ordinate of the higher end points of the top plate routing layer.
- -
-
- -
-
- - - - - - - - -
def getTopPlateRLayerWidth ( self)
-
-
Returns
the width of top plate's routing layer.
- -
-
- -
-
- - - - - - - - -
def getTopPlateRLayerXCenter ( self)
-
-
Returns
the center's abcissa of the bottom plate routing layer.
- -
-
- -
-
- - - - - - - - -
def getTopPlateRLayerXMin ( self)
-
-
Returns
the origin (bottom-left end point) abcissa of the top plate routing layers.
- -

References CapacitorUnit.topPlateRLayerDict.

- -
-
- -
-
- - - - - - - - -
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.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.map b/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.map deleted file mode 100644 index f088ded5..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 b/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 deleted file mode 100644 index a68c56c8..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -50514444a4014c92a4db51e06796eaa6 \ No newline at end of file diff --git a/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks-members.html b/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks-members.html deleted file mode 100644 index 5d7985a2..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks-members.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
-
-
VerticalRoutingTracks Member List
-
-
- -

This is the complete list of members for VerticalRoutingTracks, including all inherited members.

- - - - -
__setStretching__VerticalRoutingTracks
drawVRoutingTracksVerticalRoutingTracks
setRulesVerticalRoutingTracks
-
-
- - - - - -
Generated by doxygen 1.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks.html b/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks.html deleted file mode 100644 index b62b159f..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
- -
-
VerticalRoutingTracks Class Reference
-
-
- -

Route two matched capacitors, C1 and C2, drawn in a capacitor matrix. - More...

- -

Inherits CapacitorUnit, and CapacitorStack.

- - - - - - - - - - - -

-Public Member Functions

def __setStretching__
 Sets vertical stretching value considering spacing between elementary capacitors in the matrix. More...
 
def setRules
 Defines technology rules used to draw the layout. More...
 
def drawVRoutingTracks
 Iteratively draws vertical routing tracks given the physical layer vRoutingTracksLayer. More...
 
-

Detailed Description

-

Route two matched capacitors, C1 and C2, drawn in a capacitor matrix.

-

Connections are put in place with reference to a given matching scheme. Elementary capacitor units are connected to horizontal and vertical routing tracks that represent top plates and bottom plates nets of C1 and C2. Supported types of capacitors are Poly-Poly and Metal-Metal. Technologycal rules are provided by 350 nm AMS CMOS technology with three-four metal layers. Metal layers that are used for routeing are placed similarly to horziontal-vertical (HV) symbolic Alliance CAD tool router, where horizontal metal channels are drawn in metal 2 and the vertical ones are in metal 3. Given a matrix of dimensions $ R*C $, the total number of vertical tracks is $ 2C+2 $ equivalent to $ C+1 $ couples, ensuring that every elementary capacitor is positioned between four vertical tracks, two from each side. In fact, every adjacent couple of these tracks represent top plates and bottom plates of C1 or C2 as shown in Figure 1.

-
-Layout.png -
-Layout
-

An elementary capacitor unit can be a part of C1 or C2 according to the matching scheme. However, to respect common-centroid layout specifications, for C1 and C2 to be equal, the matrix number of colums and number of rows must be both even. Addionnally, the number of elementary capacitors dedicated to C1 must be equal to those dedicated to C2. These two conditions are tested in one of the class methods. An exception is raised if at least one of the two is not respected.

-

Member Function Documentation

- -
-
- - - - - - - - -
def __setStretching__ ( self)
-
- -

Sets vertical stretching value considering spacing between elementary capacitors in the matrix.

-
Returns
stratching value.
- -

References VerticalRoutingTracks.abutmentBox_spacing, CapacitorStack.abutmentBox_spacing, and RoutMatchedCapacitor.abutmentBox_spacing.

- -

Referenced by RoutMatchedCapacitor.computeHRLayerYCenter(), and VerticalRoutingTracks.drawVRoutingTracks().

- -
-
- -
-
- - - - - - - - -
def setRules ( self)
-
- -

Defines technology rules used to draw the layout.

-

Some of the rules, namely those describing routeing layers and tracks are applicable for both MIM and PIP capacitors. However, cuts rules are different.

-
Remark:
All CapacitorStack class rules are also reloaded in this class. An exception is raised if the entered capacitor type is unsupported.
-
Returns
a dictionary with rules labels as keys and rules content as values.
- -

References VerticalRoutingTracks.capacitorsNumber, CapacitorStack.capacitorsNumber, VerticalRoutingTracks.computeVRTDimensions(), VerticalRoutingTracks.drawVRoutingTracks(), VerticalRoutingTracks.minEnclosure_hRoutingLayer_vRoutingTrack_cut, VerticalRoutingTracks.minEnclosure_hRoutingTrackCut, VerticalRoutingTracks.minimizeVRTs(), VerticalRoutingTracks.minSpacing_hRoutingTrack, RoutMatchedCapacitor.minSpacing_hRoutingTrack, VerticalRoutingTracks.minWidth_hRoutingLayer, VerticalRoutingTracks.minWidth_hRoutingLayer_vRoutingTrack_cut, VerticalRoutingTracks.minWidth_hRoutingTrack, VerticalRoutingTracks.minWidth_hRoutingTrackCut, VerticalRoutingTracks.setRules(), CapacitorStack.setRules(), CapacitorUnit.setRules(), and RoutMatchedCapacitor.setRules().

- -

Referenced by VerticalRoutingTracks.setRules().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
def drawVRoutingTracks ( self,
 vRoutingTracksLayer 
)
-
- -

Iteratively draws vertical routing tracks given the physical layer vRoutingTracksLayer.

-

Every elementary capacitor is consequently positioned between four routing tracks, two from each side. Each couple of adjacent routeing tracks represent top plate and bottom plate nets of Ci, where i is in [1,2]. As given in Figure 2, capacitor $ C_{ij} $ with an even j value situated in even columns have and inversely for odd columns numbers.

- -

References VerticalRoutingTracks.__computeVRTsNumber__(), VerticalRoutingTracks.__findCapIdsToEliminate__(), VerticalRoutingTracks.__findCapIdsToEliminatePerColumn__(), VerticalRoutingTracks.__findUsedCapIdsPerColumn__(), VerticalRoutingTracks.__findVRTsToEliminate__(), VerticalRoutingTracks.__setNetsDistribution__(), VerticalRoutingTracks.__setPlatesDistribution__(), VerticalRoutingTracks.__setStretching__(), VerticalRoutingTracks.__setVRTsDistribution__(), VerticalRoutingTracks.abutmentBox_spacing, CapacitorStack.abutmentBox_spacing, RoutMatchedCapacitor.abutmentBox_spacing, VerticalRoutingTracks.capacitorIds, VerticalRoutingTracks.capacitorsNumber, CapacitorStack.capacitorsNumber, VerticalRoutingTracks.computeXCenters(), VerticalRoutingTracks.dummyElement, CapacitorStack.dummyElement, RoutMatchedCapacitor.dummyElement, VerticalRoutingTracks.dummyRing, CapacitorStack.dummyRing, RoutMatchedCapacitor.dummyRing, VerticalRoutingTracks.getVTrackYMax(), VerticalRoutingTracks.getVTrackYMin(), CapacitorUnit.hpitch, RoutMatchedCapacitor.hRoutingTrack_width, VerticalRoutingTracks.hRoutingTrack_width, VerticalRoutingTracks.matchingScheme, CapacitorStack.matchingScheme, CapacitorStack.matrixDim, VerticalRoutingTracks.matrixDim, RoutMatchedCapacitor.maximumPosition, VerticalRoutingTracks.maximumPosition, CapacitorUnit.metal2Width, VerticalRoutingTracks.minEnclosure_hRoutingTrackCut, VerticalRoutingTracks.minimizeVRT, RoutMatchedCapacitor.minimumPosition, VerticalRoutingTracks.minimumPosition, VerticalRoutingTracks.minWidth_hRoutingTrack, VerticalRoutingTracks.minWidth_hRoutingTrackCut, VerticalRoutingTracks.nets, CapacitorStack.nets, VerticalRoutingTracks.platesDistribution, VerticalRoutingTracks.vRoutingTrack_width, CapacitorStack.vRoutingTrack_width, VerticalRoutingTracks.vRoutingTrackDict, RoutMatchedCapacitor.vRoutingTrackDict, VerticalRoutingTracks.vRoutingTrackXCenter, RoutMatchedCapacitor.vRoutingTrackXCenter, VerticalRoutingTracks.vRTsDistribution, RoutMatchedCapacitor.vRTsDistribution, and VerticalRoutingTracks.vRTsToEliminate.

- -

Referenced by VerticalRoutingTracks.setRules().

- -
-
-
The documentation for this class was generated from the following file: -
-
-
- - - - - -
Generated by doxygen 1.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.map b/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.map deleted file mode 100644 index 4f402eed..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.md5 b/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.md5 deleted file mode 100644 index f448ab6a..00000000 --- a/oroshi/doc/html/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3d3cf14caaab2647a548eff0ca30853f \ No newline at end of file diff --git a/oroshi/doc/html/classpython_1_1Stack_1_1Stack-members.html b/oroshi/doc/html/classpython_1_1Stack_1_1Stack-members.html deleted file mode 100644 index 73c8e8ca..00000000 --- a/oroshi/doc/html/classpython_1_1Stack_1_1Stack-members.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
-
-
Stack Member List
-
-
- -

This is the complete list of members for Stack, including all inherited members.

- - - - - -
__init__Stack
computeDimensionsStack
doLayoutStack
setWiringsStack
-
-
- - - - - -
Generated by doxygen 1.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/html/classpython_1_1Stack_1_1Stack.html b/oroshi/doc/html/classpython_1_1Stack_1_1Stack.html deleted file mode 100644 index 52263edb..00000000 --- a/oroshi/doc/html/classpython_1_1Stack_1_1Stack.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - - Oroshi Documentation - - - - - -

Oroshi - Analog Devices Layouts

- -
- - - - - - -
- -
-
Stack Class Reference
-
-
- -

Draw a Stack of Transistors. - More...

- -

Inherits object.

- - - - - - - - - - - - - - -

-Public Member Functions

def __init__
 [API] Constructor More...
 
def setWirings
 [API] Set the Stack wiring specification. More...
 
def computeDimensions
 [internal] Compute Stack dimensions from the technological rules. More...
 
def doLayout
 [API] Draw the complete layout. More...
 
-

Detailed Description

-

Draw a Stack of Transistors.

-

A Stack of Transistors is a set of transistor put into a regular band and connected through their sources/drains. All share the exact same W & L. The way they are connecteds defines what functionnality the Stack implement.

-

The abutment box of the stack is adjusted so that both height and width are even multiples of the track pitches, so the device can be easily placed and handled by the mixed router. The extra space needed for padding is added around the active area. Due to the presence of tracks at the top and bottom of the stack, the active area will be horizontally centered but not vertically.

-

The drawing of the stack is controlled through a set of variables (attributes) that allows to create it regardless of the technology. The technology is taken into account in the way those variables are computed and, obviously, their values. The following schematics details the main stack drawing variables along with their computations.

-

-Stack Layout

-

-Gate pitch

-
    -
  • self.gatePitch : the pitch of transistors gates, inside the stack. It also applies to dummy transistors.
  • -
-
-gate-pitch-1.png -
-Gate Pitch
-

-Active Side Width

-
    -
  • self.activeSideWidth : the distance between the axis of the last transistor gate (on the left or right) and the edge of the active area (not the diffusion area).
  • -
-
-active-side-width-1.png -
-Active Side Width
-

-H-Track Distance

-
    -
  • self.hTrackDistance : the minimal distance between either the top or bottom edge of the active area and the axis of the first track.
  • -
-
-htrack-distance-1.png -
-H-Track distance
-

-BoundingBox & Overall Variables

-
    -
  • self.xpitches : the number of vertical track pitches needed to fully enclose the active area.
  • -
  • self.ypitches : the number of horizontal track pitches needed to fully enclose the active area.
  • -
  • self.activeOffsetX & self.activeOffsetY : the offsets of the active area from the bottom left corner of the abutment box.
  • -
  • self.diffusionWidth & self.diffusionHeight are the minimun dimensions required to fit the active area.
  • -
  • self.topTracksNb() : the number of tracks at the top of the stack.
  • -
  • self.botTracksNb() : the number of tracks at the bottom of the stack.
  • -
-
-stack-layout-3.png -
-General Stack Layout
-

-Wiring Specifications

-

Stack routing is done through vertical metal1 wires coming from the gates and diffusions areas and metal2 horizontal wires that can be either above or below the active area. metal2 wires (or track) goes through the whole stack and are assigned to one net only. A net will have at least one track above or below and may have both.

-

The connections to the diffusions areas and gates of the various fingers are specified through a list. The stack is made of a regular alternation of diffusions and gates. The list tells, for each one starting from the left, to which net and track they are connected. For a stack of $NFs$ transistor fingers, the must wiring specification must contains $ 3 + (NFs-1) \times 2$ elements. The list is given through one string with each elements separated by one or more whitespace. The syntax for one element is detailed Atomic Wiring Specification.

-

Track numbering scheme

-

Tracks above (top) the active area and below (bottom) each have their own numbering. In both case, the count start from the active area. This, the top tracks will be numbered by increasing Y and the bottom tracks by decreasing Y.

-

Track/Net assignement

-

The track/net assignement is deduced from the atomic wiring specifications. It also allows to compute the total number of tracks needed above and below the active area.

-
-wiring-spec-2.png -
-Wiring Specification
-

-Atomic Wiring Specification

-

An atomic wiring specification has the same syntax for either diffusions or gates. It must not comprise any whitespaces. it is made of the following parts:

-
    -
  • The net name to connect to.
  • -
  • Whether the track is above the active area ("t") or below ("b"). The special case ("z") means that this element must be left unconnected (is such case possible?).
  • -
  • The number of the track.
  • -
-
-wiring-spec-1.png -
-Atomic Wiring Specification
-

-Stack Implementation Details

-

The __setattr__() and __getattr__ functions have been redefined so that the technological values (rules) can be accessed has normal attributes of the Stack class, in addition to the regular ones.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def __init__ ( self,
 device,
 NERC,
 NIRC 
)
-
- -

[API] Constructor

-

param rules The physical rule set.

-
Parameters
- - - - -
deviceThe Hurricane AMS device into which the layout will be drawn.
NERCNumber of contact rows in external (first & last) diffusion connectors.
NIRCNumber of contact rows in middle diffusion connectors. param w The width of every transistor of the stack (aka fingers). param L The length of every transistor. param NFs The total number of fingers (dummies includeds). param NDs The number of dummies to put on each side of the stack.
-
-
- -

References Stack.bImplantLayer, Stack.botTracks, Stack.botWTracks, Stack.bulkNet, Stack.bulks, Stack.device, Stack.dimensioned, Bulk.flags, Stack.flags, Stack.isNmos(), Stack.L, Stack.metaTnb(), Stack.metaTransistors, Stack.NDs, Stack.NERC, Stack.NFs, Stack.NIRC, Stack.tImplantLayer, Stack.topTracks, Stack.topWTracks, Stack.w, Stack.wellLayer, and Stack.wirings.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
def setWirings ( self,
 wiringSpec 
)
-
- -

[API] Set the Stack wiring specification.

-
Parameters
- - -
wiringSpecA string defining the connections for the gates and diffusion areas.
-
-
-

For a comprehensive explanation of the wiring specification, refers to Wiring Specifications .

- -

References Stack.botTracks, Stack.botTracksNb(), Stack.botWTracks, Stack.bulkNet, Stack.computeDimensions(), Stack.device, Stack.dimensioned, Stack.eDiffMetal1Width, Bulk.flags, Stack.flags, Stack.gatePitch, Stack.getBotTrackY(), Stack.getHorizontalWidth(), Stack.horPitch, Stack.L, Stack.metal1ToGate, Stack.metaTransistors, Stack.sideActiveWidth, Stack.topTracks, Stack.topTracksNb(), Stack.topWTracks, Stack.wirings, and Stack.ypitches.

- -
-
- -
-
- - - - - - - - -
def computeDimensions ( self)
-
- -

[internal] Compute Stack dimensions from the technological rules.

-

Internal function. Perform the computation of:

-
    -
  • self.metal1Pitch
  • -
  • self.minWidth_metal1
  • -
  • self.metal2Pitch
  • -
  • self.minWidth_metal2
  • -
  • self.gatePitch
  • -
  • self.sideActiveWidth
  • -
  • self.hTrackDistance
  • -
  • self.xpitches
  • -
  • self.ypitches
  • -
  • self.activeOffsetX
  • -
  • self.activeOffsetY
  • -
  • self.boundingBox
  • -
- -

References Stack.activeBox, Stack.activeOffsetX, Stack.activeOffsetY, Stack.bbHeight, Stack.bbWidth, Stack.botWTracks, Stack.boundingBox, Stack.bulks, Stack.bulkWidth, Stack.computeLayoutParasitics(), Stack.computeStressEffect(), Stack.contactDiffPitch, Stack.contactDiffSide, Stack.DGG, Stack.DGI, Stack.dimensioned, Stack.DMCG, Stack.DMCGT, Stack.DMCI, Stack.eDiffMetal1Width, Bulk.flags, Stack.flags, Stack.gatePitch, Stack.gateVia1Pitch, Stack.getBotTrackY(), Stack.getHorizontalWidth(), Stack.getLastTopTrackY(), Stack.horPitch, Stack.hTrackDistance, Stack.iDiffMetal1Width, Stack.isVH, Stack.L, Stack.metal1ToGate, Stack.metal2Pitch, Stack.metal2TechnoPitch, Stack.metal3Pitch, Stack.NERC, Stack.NFs, Stack.NIRC, Stack.sideActiveWidth, Stack.tracksNbPitch(), Stack.vBulkDistance, Stack.verPitch, Stack.w, Stack.wire1Width, Stack.wire2Width, Stack.wire3Width, Stack.wirings, Stack.xpitches, and Stack.ypitches.

- -

Referenced by CapacitorUnit.create(), Stack.doLayout(), RoutMatchedCapacitor.route(), and Stack.setWirings().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
def doLayout ( self,
 bbMode 
)
-
- -

[API] Draw the complete layout.

-

Draw the commplete layout of the Stack.

- -

References Stack.activeOffsetX, Stack.activeOffsetY, Stack.bbWidth, Stack.botTracks, Stack.botWTracks, Stack.boundingBox, Stack.bulkNet, Stack.bulks, Stack.bulkWidth, Stack.computeDimensions(), Stack.contactDiffPitch, Stack.device, Stack.DGG, Stack.DGI, Stack.DMCG, Stack.DMCGT, Stack.DMCI, Stack.drawActive(), Stack.drawGate(), Stack.drawSourceDrain(), Stack.drawWell(), Stack.eDiffMetal1Width, Bulk.flags, Stack.flags, Stack.gatePitch, Stack.gateVia1Pitch, Stack.getBotTrackY(), Stack.getHorizontalAxis(), Stack.getHorizontalWidth(), Stack.getTopTrackY(), Stack.getWiringWidth(), Stack.horPitch, Stack.iDiffMetal1Width, Stack.isBotTrack(), Stack.isVH, Stack.L, Stack.metal1ToGate, Stack.NERC, Stack.NFs, Stack.NIRC, Stack.sideActiveWidth, Stack.tImplantLayer, Stack.topTracks, Stack.topWTracks, Stack.w, Stack.wellLayer, Stack.wire1Width, Stack.wire2Width, Stack.wire3Width, and Stack.wirings.

- -
-
-
The documentation for this class was generated from the following file: -
-
-
- - - - - -
Generated by doxygen 1.8.5 on Thu Mar 19 2020Return to top of page
- - - - - -
Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
- - diff --git a/oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack.tex b/oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack.tex deleted file mode 100644 index 183e505c..00000000 --- a/oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack.tex +++ /dev/null @@ -1,338 +0,0 @@ -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack}{\section{Capacitor\-Stack Class Reference} -\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack}\index{Capacitor\-Stack@{Capacitor\-Stack}} -} - - -Draws the layout of a compact capacitor or a matrix of adjacent identical capacitors. - - - - -Inherits Capacitor\-Unit. - -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac775ee34451fdfa742b318538164070e}{\-\_\-\-\_\-init\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em This is the class constructor. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a4b59d20a15f0e548ed19c24814efbeb6}{\-\_\-\-\_\-is\-Unit\-Cap\-\_\-\-\_\-} -\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a8dbb6274d6cdbb570bdea61d09e54e73}{\-\_\-\-\_\-is\-Matching\-Scheme\-O\-K\-\_\-\-\_\-} -\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a8540eb76875171b18a3ae9e5e5f56fd3}{capacitor\-Id\-Occurence} -\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a5b7ef0221e471e99fa7f0a87a28ba1ea}{create} -\begin{DoxyCompactList}\small\item\em Draw the compact or matrix of capacitors. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a0357fcbd57878fb26a1b994b13bb0cf7}{capacitor\-Line} -\begin{DoxyCompactList}\small\item\em Iteratively draws a horizontal or vertical line of capacitors according to the {\ttfamily direction} parameter. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_acd1475de157c5375cd58ccf98f825055}{capacitor\-Matrix} -\begin{DoxyCompactList}\small\item\em Draws a matrix of identical capacitors. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac5cd73be473bc321a29a75311f808835}{draw\-Abutment\-Box} -\begin{DoxyCompactList}\small\item\em Draws the abutment box of the matrix or campact capacitor. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac815a7351301379178cd6352e6ee46cd}{draw\-Bottom\-Plates\-R\-Layers} -\begin{DoxyCompactList}\small\item\em Draws the routing layers connecting the bottom plate in the matrix of capacitors. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac4efd1ea3fef3eaa9a07798c9157ea11}{draw\-Top\-Plates\-R\-Layers} -\begin{DoxyCompactList}\small\item\em Draws the routing layers connecting the top plates in the matrix of capacitors. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a54ac11219d9fce4c7336f4a50e69959a}{get\-Vertical\-Routing\-Track\-\_\-width} -\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_af5105be38ca05d15559b998f1da475df}{get\-Matrix\-Dim} -\item -def \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a73209c91d8a68eb52e957dee22e05a55}{get\-Matching\-Scheme} -\end{DoxyCompactItemize} - - -\subsection{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 A\-M\-S C\-M\-O\-S 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 {\ttfamily Rout\-Capacitor} class. - -\subsection{Constructor \& Destructor Documentation} -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac775ee34451fdfa742b318538164070e}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!\-\_\-\-\_\-init\-\_\-\-\_\-@{\-\_\-\-\_\-init\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-init\-\_\-\-\_\-@{\-\_\-\-\_\-init\-\_\-\-\_\-}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{\-\_\-\-\_\-init\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-init\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{device, } -\item[{}]{capacitance, } -\item[{}]{capacitor\-Type, } -\item[{}]{abutment\-Box\-Position, } -\item[{}]{nets, } -\item[{}]{unit\-Cap = {\ttfamily 0}, } -\item[{}]{matrix\-Dim = {\ttfamily \mbox{[}1}, } -\item[{}]{matching\-Mode = {\ttfamily False}, } -\item[{}]{matching\-Scheme = {\ttfamily \mbox{[}\mbox{]}}, } -\item[{}]{dummy\-Ring = {\ttfamily False}, } -\item[{}]{dummy\-Element = {\ttfamily False}} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac775ee34451fdfa742b318538164070e} - - -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 \char`\"{}sub-\/constructors\char`\"{} according to the entered input parameters. The class attributes are \-: - - -\begin{DoxyParams}{Parameters} -{\em device} & The {\bf Hurricane} A\-M\-S device into which the layout is drawn. \\ -\hline -{\em capacitance} & The value of the capacitor, expressed in femto Farad (f\-F). \\ -\hline -{\em capacitor\-Type} & Can be M\-I\-M or P\-I\-P type capacitor. \\ -\hline -{\em abutment\-Position} & Refers to the abscissa (X\-Min) of the bottom left corner of the abutment Box. \\ -\hline -{\em abutment\-Box\-Y\-Min} & Refers to the ordinate (Y\-Min) of the bottom left corner of the abutment Box.\\ -\hline -\end{DoxyParams} -Except the two last arguments, all the parameters are common with the Capacitor\-Unit class because the {\ttfamily \hyperlink{classpython_1_1CapacitorMatrix_1_1CapacitorStack}{Capacitor\-Stack}} constructor calls the mother class constructor to create either a compact capacitor of {\ttfamily capacitance} value or {\ttfamily row\-Number$\ast$} {\ttfamily column\-Number} unity capacitors. - - -\begin{DoxyParams}{Parameters} -{\em row\-Number} & Number of rows in the matrix of capacitors. \\ -\hline -{\em column\-Number} & Number of columns in the matrix of capacitors. \\ -\hline -\end{DoxyParams} - - -References Capacitor\-Stack.\-\_\-\-\_\-are\-Input\-Data\-O\-K\-\_\-\-\_\-(), Capacitor\-Unit.\-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\-(), Capacitor\-Stack.\-\_\-\-\_\-init\-Given\-Non\-Zero\-Unit\-Cap\-\_\-\-\_\-(), Capacitor\-Stack.\-\_\-\-\_\-init\-Given\-Non\-Zero\-Unit\-Cap\-In\-Matching\-Mode\-\_\-\-\_\-(), Capacitor\-Stack.\-\_\-\-\_\-init\-Given\-Zero\-Unit\-Cap\-\_\-\-\_\-(), Capacitor\-Stack.\-\_\-\-\_\-init\-Given\-Zero\-Unit\-Cap\-In\-Matching\-Mode\-\_\-\-\_\-(), Capacitor\-Stack.\-\_\-\-\_\-init\-Matrix\-Mode\-\_\-\-\_\-(), Capacitor\-Unit.\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-(), Capacitor\-Stack.\-abutment\-Box, Capacitor\-Unit.\-abutment\-Box, Capacitor\-Stack.\-abutment\-Box\-\_\-spacing, Capacitor\-Stack.\-abutment\-Box\-Position, Capacitor\-Stack.\-capacitance, Capacitor\-Stack.\-capacitor\-Id\-Occurence(), Capacitor\-Stack.\-capacitors\-Number, Capacitor\-Stack.\-capacitor\-Type, Capacitor\-Unit.\-capacitor\-Type, Capacitor\-Stack.\-compact\-Cap\-Dim, Capacitor\-Stack.\-compute\-Unit\-Cap(), Capacitor\-Stack.\-device, Capacitor\-Unit.\-device, Stack.\-device, Capacitor\-Stack.\-do\-Matrix, Capacitor\-Stack.\-dummy\-Element, Capacitor\-Stack.\-dummy\-Ring, Capacitor\-Stack.\-dummy\-Ring\-Position, Capacitor\-Stack.\-evaluate\-Unit\-Cap(), Capacitor\-Stack.\-matching\-Mode, Capacitor\-Stack.\-matching\-Scheme, Capacitor\-Stack.\-matrix\-Dim, Capacitor\-Stack.\-min\-Enclosure\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Capacitor\-Stack.\-min\-Enclosure\-\_\-v\-Routing\-Track\-Cut, Capacitor\-Stack.\-min\-Spacing\-\_\-v\-Routing\-Track, Capacitor\-Stack.\-min\-Spacing\-\_\-v\-Routing\-Track\-Cut, Capacitor\-Stack.\-min\-Width\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Capacitor\-Stack.\-min\-Width\-\_\-v\-Routing\-Track, Capacitor\-Stack.\-min\-Width\-\_\-v\-Routing\-Track\-Cut, Capacitor\-Stack.\-nets, Capacitor\-Stack.\-unit\-Capacitance, Capacitor\-Stack.\-unit\-Cap\-Dim, and Capacitor\-Stack.\-v\-Routing\-Track\-\_\-width. - - - -\subsection{Member Function Documentation} -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a4b59d20a15f0e548ed19c24814efbeb6}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!\-\_\-\-\_\-is\-Unit\-Cap\-\_\-\-\_\-@{\-\_\-\-\_\-is\-Unit\-Cap\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-is\-Unit\-Cap\-\_\-\-\_\-@{\-\_\-\-\_\-is\-Unit\-Cap\-\_\-\-\_\-}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{\-\_\-\-\_\-is\-Unit\-Cap\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-is\-Unit\-Cap\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a4b59d20a15f0e548ed19c24814efbeb6} -\begin{DoxyReturn}{Returns} -True if the drawn capacitor is a compact one. This function is useful when an instance is called in another class. {\bfseries Example} \-: when the matrix or the compact capacitors are to be fully routed. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a8dbb6274d6cdbb570bdea61d09e54e73}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!\-\_\-\-\_\-is\-Matching\-Scheme\-O\-K\-\_\-\-\_\-@{\-\_\-\-\_\-is\-Matching\-Scheme\-O\-K\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-is\-Matching\-Scheme\-O\-K\-\_\-\-\_\-@{\-\_\-\-\_\-is\-Matching\-Scheme\-O\-K\-\_\-\-\_\-}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{\-\_\-\-\_\-is\-Matching\-Scheme\-O\-K\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-is\-Matching\-Scheme\-O\-K\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a8dbb6274d6cdbb570bdea61d09e54e73} -\begin{DoxyReturn}{Returns} -{\ttfamily True} if the matching scheme specifications are correct. Specifications are \-: -\begin{DoxyItemize} -\item Similar number of elements as total number of elementary capacitor in the matrix. -\item Equal number of affected capacitors to C1 as to C2. -\item Capacitor identifiers equal to '1' or '2' only. -\item Otherwise, the function returns {\ttfamily False}. -\end{DoxyItemize} -\end{DoxyReturn} - - -References Capacitor\-Stack.\-matching\-Scheme, and Capacitor\-Stack.\-matrix\-Dim. - - - -Referenced by Capacitor\-Stack.\-capacitor\-Id\-Occurence(). - -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a8540eb76875171b18a3ae9e5e5f56fd3}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!capacitor\-Id\-Occurence@{capacitor\-Id\-Occurence}} -\index{capacitor\-Id\-Occurence@{capacitor\-Id\-Occurence}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{capacitor\-Id\-Occurence}]{\setlength{\rightskip}{0pt plus 5cm}def capacitor\-Id\-Occurence ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{capacitor\-Identifier} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a8540eb76875171b18a3ae9e5e5f56fd3} -\begin{DoxyReturn}{Returns} -occurence of capacitor identifier in the entered matching scheme. This is useful to verify that {\ttfamily self.\-matching\-Scheme} is correct. -\end{DoxyReturn} - - -References Capacitor\-Stack.\-\_\-\-\_\-are\-Matrix\-Dim\-O\-K\-\_\-\-\_\-(), Capacitor\-Stack.\-\_\-\-\_\-is\-Matching\-Scheme\-O\-K\-\_\-\-\_\-(), Capacitor\-Stack.\-capacitors\-Number, Capacitor\-Stack.\-dummy\-Element, Capacitor\-Stack.\-dummy\-Ring, Capacitor\-Stack.\-matching\-Mode, Capacitor\-Stack.\-matching\-Scheme, and Capacitor\-Stack.\-nets. - - - -Referenced by Capacitor\-Stack.\-\_\-\-\_\-init\-\_\-\-\_\-(). - -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a5b7ef0221e471e99fa7f0a87a28ba1ea}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!create@{create}} -\index{create@{create}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{create}]{\setlength{\rightskip}{0pt plus 5cm}def create ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{bb\-Mode = {\ttfamily False}} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a5b7ef0221e471e99fa7f0a87a28ba1ea} - - -Draw the compact or matrix of capacitors. - -First, . Second, . Finally, . - -References Capacitor\-Stack.\-\_\-\-\_\-init\-Matching\-Mode\-\_\-\-\_\-(), Capacitor\-Stack.\-abutment\-Box\-\_\-spacing, Capacitor\-Stack.\-abutment\-Box\-Position, Capacitor\-Stack.\-capacitance, Capacitor\-Stack.\-capacitor\-Matrix(), Capacitor\-Stack.\-capacitor\-Type, Capacitor\-Unit.\-capacitor\-Type, Capacitor\-Stack.\-compute\-Bonding\-Box\-Dimensions(), Capacitor\-Stack.\-device, Capacitor\-Unit.\-device, Stack.\-device, Capacitor\-Stack.\-do\-Matrix, Capacitor\-Stack.\-draw\-Abutment\-Box(), Capacitor\-Unit.\-draw\-Abutment\-Box(), Capacitor\-Stack.\-draw\-Bottom\-Plates\-R\-Layers(), Capacitor\-Stack.\-draw\-Capacitor\-Stack(), Capacitor\-Stack.\-draw\-Top\-Plates\-R\-Layers(), Capacitor\-Stack.\-dummy\-Ring, Capacitor\-Stack.\-matching\-Mode, Capacitor\-Stack.\-matrix\-Dim, Capacitor\-Stack.\-nets, Capacitor\-Stack.\-set\-Rules(), and Capacitor\-Unit.\-set\-Rules(). - - - -Referenced by Capacitor\-Stack.\-capacitor\-Line(), and Capacitor\-Stack.\-capacitor\-Matrix(). - -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a0357fcbd57878fb26a1b994b13bb0cf7}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!capacitor\-Line@{capacitor\-Line}} -\index{capacitor\-Line@{capacitor\-Line}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{capacitor\-Line}]{\setlength{\rightskip}{0pt plus 5cm}def capacitor\-Line ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{dy, } -\item[{}]{abutment\-Box\-\_\-spacing, } -\item[{}]{matching\-Scheme\-Row\-Index = {\ttfamily 0}} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a0357fcbd57878fb26a1b994b13bb0cf7} - - -Iteratively draws a horizontal or vertical line of capacitors according to the {\ttfamily direction} parameter. - -An exception is raised if the specified direction is different from {\ttfamily \{'horizontal'},'vertical'\}. At every iteration, an instance of the Capacitor\-Unit class is created and its layout is drawn. \begin{DoxyReturn}{Returns} -a list containing the drawn capacitors. -\end{DoxyReturn} - -\begin{DoxyParams}{Parameters} -{\em dy} & the vertical position of the first cut in cut line. \\ -\hline -\end{DoxyParams} -\begin{DoxyRemark}{Remarks} -An exception is raised if the specified direction is different from {\ttfamily \{'horizontal'},'vertical'\} -\end{DoxyRemark} - - -References Capacitor\-Stack.\-abutment\-Box\-Position, Capacitor\-Stack.\-capacitor\-Type, Capacitor\-Unit.\-capacitor\-Type, Capacitor\-Stack.\-create(), Capacitor\-Stack.\-create\-Element\-In\-Capacitor\-Line(), Capacitor\-Stack.\-device, Capacitor\-Unit.\-device, Stack.\-device, Capacitor\-Stack.\-dummy\-Ring, Capacitor\-Stack.\-matching\-Mode, Capacitor\-Stack.\-matching\-Scheme, Capacitor\-Stack.\-matrix\-Dim, Capacitor\-Stack.\-nets, and Capacitor\-Stack.\-unit\-Capacitance. - - - -Referenced by Capacitor\-Stack.\-capacitor\-Matrix(). - -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_acd1475de157c5375cd58ccf98f825055}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!capacitor\-Matrix@{capacitor\-Matrix}} -\index{capacitor\-Matrix@{capacitor\-Matrix}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{capacitor\-Matrix}]{\setlength{\rightskip}{0pt plus 5cm}def capacitor\-Matrix ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{abutment\-Box\-\_\-spacing = {\ttfamily 0}} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_acd1475de157c5375cd58ccf98f825055} - - -Draws a matrix of identical capacitors. - -The matrix is iterativelly constructed. At every iteration, a new horizontal line of capacitors is drawn. \begin{DoxyReturn}{Returns} -a nested list of elementary capacitors. -\end{DoxyReturn} - - -References Capacitor\-Stack.\-abutment\-Box\-\_\-spacing, Capacitor\-Stack.\-abutment\-Box\-Position, Capacitor\-Stack.\-capacitor\-Line(), Capacitor\-Stack.\-capacitor\-Type, Capacitor\-Unit.\-capacitor\-Type, Capacitor\-Stack.\-create(), Capacitor\-Stack.\-device, Capacitor\-Unit.\-device, Stack.\-device, Capacitor\-Stack.\-dummy\-Ring, Capacitor\-Stack.\-get\-Cap\-Dim(), Capacitor\-Stack.\-matrix\-Dim, Capacitor\-Stack.\-nets, and Capacitor\-Stack.\-unit\-Capacitance. - - - -Referenced by Capacitor\-Stack.\-create(). - -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac5cd73be473bc321a29a75311f808835}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!draw\-Abutment\-Box@{draw\-Abutment\-Box}} -\index{draw\-Abutment\-Box@{draw\-Abutment\-Box}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{draw\-Abutment\-Box}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Abutment\-Box ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{abutment\-Box\-\_\-spacing = {\ttfamily 0}} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac5cd73be473bc321a29a75311f808835} - - -Draws the abutment box of the matrix or campact capacitor. - - - -References Capacitor\-Stack.\-abutment\-Box, Capacitor\-Unit.\-abutment\-Box, Capacitor\-Stack.\-abutment\-Box\-\_\-spacing, Capacitor\-Stack.\-abutment\-Box\-Position, Capacitor\-Stack.\-compute\-Abutment\-Box\-Dimensions(), and Capacitor\-Unit.\-compute\-Abutment\-Box\-Dimensions(). - - - -Referenced by Capacitor\-Stack.\-create(). - -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac815a7351301379178cd6352e6ee46cd}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!draw\-Bottom\-Plates\-R\-Layers@{draw\-Bottom\-Plates\-R\-Layers}} -\index{draw\-Bottom\-Plates\-R\-Layers@{draw\-Bottom\-Plates\-R\-Layers}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{draw\-Bottom\-Plates\-R\-Layers}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Bottom\-Plates\-R\-Layers ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{bottom\-Plate\-R\-Layer, } -\item[{}]{drawn\-Capacitor} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac815a7351301379178cd6352e6ee46cd} - - -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 Capacitor\-Stack.\-matrix\-Dim, and Capacitor\-Stack.\-nets. - - - -Referenced by Capacitor\-Stack.\-create(). - -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac4efd1ea3fef3eaa9a07798c9157ea11}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!draw\-Top\-Plates\-R\-Layers@{draw\-Top\-Plates\-R\-Layers}} -\index{draw\-Top\-Plates\-R\-Layers@{draw\-Top\-Plates\-R\-Layers}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{draw\-Top\-Plates\-R\-Layers}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Top\-Plates\-R\-Layers ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{top\-Plate\-R\-Layer, } -\item[{}]{drawn\-Capacitor} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_ac4efd1ea3fef3eaa9a07798c9157ea11} - - -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 . \begin{DoxyRemark}{Remarks} -An exception is raised if the number of rows in the matrix is lower than 2. -\end{DoxyRemark} - - -References Capacitor\-Stack.\-matrix\-Dim, and Capacitor\-Stack.\-nets. - - - -Referenced by Capacitor\-Stack.\-create(). - -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a54ac11219d9fce4c7336f4a50e69959a}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!get\-Vertical\-Routing\-Track\-\_\-width@{get\-Vertical\-Routing\-Track\-\_\-width}} -\index{get\-Vertical\-Routing\-Track\-\_\-width@{get\-Vertical\-Routing\-Track\-\_\-width}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{get\-Vertical\-Routing\-Track\-\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Vertical\-Routing\-Track\-\_\-width ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a54ac11219d9fce4c7336f4a50e69959a} -\begin{DoxyReturn}{Returns} -The width of the vertical routing tracks in matching mode. -\end{DoxyReturn} -\begin{DoxyParagraph}{Remark\-:} -This function is useful in matching mode, ie., in Rout\-Capacitor class, when routing the two capacitors. -\end{DoxyParagraph} -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_af5105be38ca05d15559b998f1da475df}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!get\-Matrix\-Dim@{get\-Matrix\-Dim}} -\index{get\-Matrix\-Dim@{get\-Matrix\-Dim}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{get\-Matrix\-Dim}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Matrix\-Dim ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_af5105be38ca05d15559b998f1da475df} -\begin{DoxyReturn}{Returns} -A dictionary contaning capacitor matrix's dimensions -\end{DoxyReturn} - - -References Capacitor\-Stack.\-compact\-Cap\-Dim, and Capacitor\-Stack.\-do\-Matrix. - -\hypertarget{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a73209c91d8a68eb52e957dee22e05a55}{\index{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}!get\-Matching\-Scheme@{get\-Matching\-Scheme}} -\index{get\-Matching\-Scheme@{get\-Matching\-Scheme}!python::CapacitorMatrix::CapacitorStack@{python\-::\-Capacitor\-Matrix\-::\-Capacitor\-Stack}} -\subsubsection[{get\-Matching\-Scheme}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Matching\-Scheme ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorMatrix_1_1CapacitorStack_a73209c91d8a68eb52e957dee22e05a55} -\begin{DoxyReturn}{Returns} -the matching scheme. The function is useful in {\ttfamily Rout\-Matched\-Capacitor} class to load {\ttfamily self.\-matching\-Scheme} attribute. -\end{DoxyReturn} - - -The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize} -\item -Capacitor\-Matrix.\-py\end{DoxyCompactItemize} diff --git a/oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 b/oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 deleted file mode 100644 index 8776a631..00000000 --- a/oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5f47e4b5a5a272df405b32f21279cc64 \ No newline at end of file diff --git a/oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.pdf b/oroshi/doc/latex/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.pdf deleted file mode 100644 index cfa958802bee0482f7676d2879ab5c01bd3896e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8084 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 Og@{q`@F?jhQ~VEXi0Kso diff --git a/oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor.tex b/oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor.tex deleted file mode 100644 index d9235060..00000000 --- a/oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor.tex +++ /dev/null @@ -1,493 +0,0 @@ -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor}{\section{Rout\-Matched\-Capacitor Class Reference} -\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor}\index{Rout\-Matched\-Capacitor@{Rout\-Matched\-Capacitor}} -} - - -Routs two matched capacitors, C1 and C2, drawn in a capacitor matrix. - - - - -Inherits Capacitor\-Unit, Capacitor\-Stack, and Vertical\-Routing\-Tracks. - -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ac775ee34451fdfa742b318538164070e}{\-\_\-\-\_\-init\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em A special method used to customize the class instance to an initial state in which \-: \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a15ec3e3156133327b307cd0e4b75f22c}{route} -\begin{DoxyCompactList}\small\item\em Draws the complete layout given the capacitor matrix. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a3b578035b1559391931dade7c2508105}{set\-Rules} -\begin{DoxyCompactList}\small\item\em Defines technology rules used to draw the layout. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ae361a87f8ad999bb5f1b9851773f481b}{set\-Layers} -\begin{DoxyCompactList}\small\item\em Defines all physical layers used to draw the layout. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a20b46b43488cc58c302b123a89299d85}{compute\-Dimensions} -\begin{DoxyCompactList}\small\item\em Computes, through simple instructions and functions calls, layout variables detailed in Figure 2. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ab00cae047369eb93c10e44e316fa991b}{compute\-H\-Routing\-Track\-Y\-Center} -\begin{DoxyCompactList}\small\item\em Computes centers' ordinates of the eight horizontal routing tracks. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a0d90b75abe0f4ce0f0b9b1b405462300}{compute\-H\-R\-Layer\-Y\-Center} -\begin{DoxyCompactList}\small\item\em Sets the stretching value of top plates. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_afbe39494b52b035fe3efdb0ddb896f69}{draw\-H\-Routing\-Tracks} -\begin{DoxyCompactList}\small\item\em Iteratively draws horizontal routing tracks on top and bottom positions of the matrix using physical layer {\ttfamily routing\-Tracks\-Layer}. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a6bba48a4b1d4834c6617a5af5553be1c}{draw\-H\-R\-Layers} -\begin{DoxyCompactList}\small\item\em Iteratively draws the horizontal routing layers starting with bottom left elementary capacitor $ C_{00} $. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a2019f4bb1e22a8d622ce4d155c934eb0}{draw\-Cuts} -\begin{DoxyCompactList}\small\item\em Draws all required cuts using physical layers \-: \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ab3fd42d04811b9c88654c0ca0e6e2de7}{draw\-One\-Cut\-\_\-v\-Routing\-Track\-\_\-\-H\-R\-Layer} -\begin{DoxyCompactList}\small\item\em Draws one cut, in layer {\ttfamily cut\-Layer}, in order to connect a vertical routing track, at position {\ttfamily cut\-X\-Min} in metal 2, and a horizontal routing track, at position {\ttfamily cut\-Y\-Min} in metal 3. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a05e49f5537d31e0ab19b8a86eb6e7b1c}{draw\-Cuts\-\_\-v\-Routing\-Track\-\_\-h\-Routing\-Track} -\begin{DoxyCompactList}\small\item\em Draws cuts to connect vertical routing tracks in metal 2 and horizontal routing tracks in metal 3. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a7d642764cf9e385710751eec3f43f7af}{\-\_\-\-\_\-stretch\-Top\-Plates\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em Iteratively performs top plates stretching for the capacitor matrix. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a57eade928345587b01420a05be475a8f}{\-\_\-\-\_\-stretch\-Top\-Plate\-Compact\-Cap\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em Draws vertical stretched layers for a given elementary capacitor. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a1077752f46c512f70377cc60bd772034}{\-\_\-\-\_\-set\-Stretching\-Dy\-Source\-Dy\-Target\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em Sets the abcissas of the extremities of the vertical stretching to be applied to capacitor's top plates for a given elementary capacitor in the matrix. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_aaaf2e610688441a439b8a3624e1393b9}{\-\_\-\-\_\-compute\-Connections\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em Computes horizontal routing layers source and target abcissas for top and bottom plates connections to its associated routing track. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Routs two matched capacitors, C1 and C2, drawn in a capacitor matrix. - -Connections are put in place with reference to a given matching scheme. Elementary capacitor units are connected to horizontal and vertical routing tracks that represent top plates and bottom plates nets of C1 and C2 . Supported types of capacitors are Poly-\/\-Poly and Metal-\/\-Metal. Technologycal rules are provided by 350 nm A\-M\-S C\-M\-O\-S technology with three-\/four metal layers. Metal layers that are used for routing are placed similarly to horziontal-\/vertical (H\-V) symbolic Alliance C\-A\-D tool router, where horizontal metal channels are drawn in metal 2 and the vertical ones are in metal 3. Given a matrix of dimensions $ R*C $, the total number of vertical tracks is $ 2C+2 $ equivalent to $ C+1 $ couples, ensuring that every elementary capacitor is positioned between four vertical tracks, two from each side. In fact, every adjacent couple of these tracks represent top plates and bottom plates of C1 or C2 as shown in Figure 1. An elementary capacitor unit can be a part of C1 or C2 according to the matching scheme. However, to respect common-\/centroid layout specifications, for C1 and C2 to be equal, the matrix number of colums and number of rows must be both even. Addionnally, the number of elementary capacitors dedicated to C1 must be equal to those dedicated to C2. These two conditions are tested in one of the class methods. An exception is raised if at least one of the two is not respected. - -\subsection{Constructor \& Destructor Documentation} -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ac775ee34451fdfa742b318538164070e}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!\-\_\-\-\_\-init\-\_\-\-\_\-@{\-\_\-\-\_\-init\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-init\-\_\-\-\_\-@{\-\_\-\-\_\-init\-\_\-\-\_\-}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{\-\_\-\-\_\-init\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-init\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{v\-R\-T\-Instance} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ac775ee34451fdfa742b318538164070e} - - -A special method used to customize the class instance to an initial state in which \-: - - -\begin{DoxyItemize} -\item the class attirbutes describing positions and dimensions of the layout are computed in dedicated class methods, -\item the attributes related to the capacitor matrix are copied from the {\ttfamily Capacitor\-Stack} instance. -\end{DoxyItemize} - -Position and dimensions attributes, also refered by layout variables, in Figure 2, are defined below \-: -\begin{DoxyParams}{Parameters} -{\em device} & The {\bf Hurricane} A\-M\-S device onto which the layout is drawn. \\ -\hline -{\em capacitor\-Instance} & Instance of {\ttfamily Capacitor\-Stack} class. \\ -\hline -{\em capacitor} & A nested list containing the matrix elements, which are {\ttfamily Capacitor\-Unit} objects. \\ -\hline -{\em matching\-Scheme} & A nested list, with equal dimensions as {\ttfamily capacitor} attribute, containing assignements of matrix elementary units to C1 and C2, identified by 1 and 2, respectively. Therefore, {\ttfamily self.\-matching\-Scheme} content is a succession of 1 and 2 values, defined as \textbackslash{} capacitor identifiers. For example, given a matrix of dimensions 2x2, the matching scheme can be $ [ [1,2], [1,2] ] or [ [2,1], [2,1] ] $. The first sub-\/list dictates that the first elementary capacitor, $ C_{00} $. The second element $ C_{01} $ is affected to C2 and so on. An immediate and obvious consequence to this, is that an error is raised if {\ttfamily self.\-matching\-Schem} and {\ttfamily self.\-capacitor} dimensions are not identical or if {\ttfamily self.\-matching\-Scheme} content is different from supported capacitor identifiers, '1' and '2'.\\ -\hline -{\em capacitor\-Type} & Supported types of capacitors are M\-I\-M and P\-I\-P only. An exception is raised otherwise. \\ -\hline -{\em abutment\-Box} & The matrix's abutment box. \\ -\hline -{\em matrxi\-Dim} & The matrix dimensions, also equal to {\ttfamily self.\-matching\-Scheme} nested list dimensions. \\ -\hline -{\em abutment\-Box\-\_\-spacing} & The spacing between elementary units in the matrix. It is computed in {\ttfamily Capacitor\-Stack} and is reloaded in {\ttfamily \hyperlink{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor}{Rout\-Matched\-Capacitor}}. {\ttfamily self.\-abutment\-Box\-\_\-spacing} includes, vertical routing tracks width and minimum allowed spacing between two adjacent ones. \\ -\hline -{\em h\-Routing\-Layer\-\_\-width} & The width of horizontal routing layers in metal 2, which connect capacitors plates to vertical routing tracks. \\ -\hline -{\em v\-Routing\-Track\-\_\-width} & The width of vertical routing tracks in metal 3, which connects identical nets together ( ie \-: bottom plates of C1, top plates of C2, bottom plates of C2 and top plates of C2 ). \\ -\hline -{\em h\-Routing\-Track\-\_\-width} & The width of horizontal routing tracks in metal 2, which connect identical vertical routing tracks together. \\ -\hline -{\em min\-Spacing\-\_\-h\-Routing\-Track} & Minimum spacing between horizontal routing tracks. Wide metal 2 specifications are considered since metal 2 dimensions may exceed 10 $ m$.\\ -\hline -\end{DoxyParams} -\begin{DoxyParagraph}{Remark\-:} -For more information about wide metal specifications, refer to E\-N\-G-\/183\-\_\-rev8.\-pdf technology manual. -\end{DoxyParagraph} - -\begin{DoxyParams}{Parameters} -{\em minimum\-Position} & The ordinate of the top plate's routing layer's bottom extremity after stretching. \\ -\hline -{\em maximum\-Position} & The ordinate of the top plate's routing layer's top extremity, also equivalent to the top plate's top extremity. \\ -\hline -{\em v\-Routing\-Track\-X\-Center} & A nested list of ordered dictionaries, with dimensions equal to {\ttfamily self.\-matrix\-Dim}, containing abcissas of vertical routing tracks. All sub-\/lists' lengths are identical and are equal to 2. The first and second elements describe position of top plate track and bottom plate track, respectively. For example, given a matrix of dimensions 2x2, {\ttfamily self.\-v\-Routing\-Track\-X\-Center} can be \mbox{[}\mbox{[}0, 2\mbox{]}, \mbox{[}4,6\mbox{]}, \mbox{[}8,10\mbox{]}\mbox{]} $ \mu m$. Elements of this nested list have particular indexing as described in Figure 2.\\ -\hline -{\em h\-Routingtrack\-Y\-Center} & A nested dictonary containing two keys, {\ttfamily top\-Tracks} and {\ttfamily bottom\-Tracks}. Each key contains as value a dictionary describing centers' ordinates of four parallel horizontal tracks. The reason why four tracks are needed on top and bottom positions of the matrix is that four nets are used, two for every capacitor {\ttfamily Ci}, were {\ttfamily i} is in \mbox{[}1,2\mbox{]}. \\ -\hline -{\em h\-Routing\-Layer\-Y\-Center} & A nested dicitonary containing two keys, {\ttfamily top} and {\ttfamily bottom}. Each key contains as value a dictionary describing centers' ordinates of horizontal routing layers. \\ -\hline -{\em v\-Routing\-Track\-Dict} & A dictionary of routing tracks top and bottom extremities ordinates. \\ -\hline -{\em top\-Plate\-Stretching} & Since not only the same metal 2 layer is used to draw top/bottom plates connections to vertical tracks but also the two plates are superimposed, the top plate's routing tracks is stretched. {\ttfamily self.\-top\-Plate\-Stretching} is therefore the length added to top plate's routing layer in order to avoid short circuits between top and bottom plates routing to vertical tracks since the same metal is used for both. \\ -\hline -\end{DoxyParams} - - -References Rout\-Matched\-Capacitor.\-capacitor, Capacitor\-Stack.\-dummy\-Ring, Rout\-Matched\-Capacitor.\-dummy\-Ring, Rout\-Matched\-Capacitor.\-dummy\-Ring\-Capacitor, Rout\-Matched\-Capacitor.\-h\-Routing\-Layer\-\_\-width, Rout\-Matched\-Capacitor.\-h\-Routing\-Layer\-Y\-Center, Rout\-Matched\-Capacitor.\-h\-Routing\-Track\-\_\-width, Rout\-Matched\-Capacitor.\-h\-Routingtrack\-Y\-Center, Capacitor\-Stack.\-matrix\-Dim, Vertical\-Routing\-Tracks.\-matrix\-Dim, Rout\-Matched\-Capacitor.\-maximum\-Position, Rout\-Matched\-Capacitor.\-minimum\-Position, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Track, Rout\-Matched\-Capacitor.\-top\-Plate\-Stretching, and Rout\-Matched\-Capacitor.\-v\-R\-T\-Instance. - - - -\subsection{Member Function Documentation} -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a15ec3e3156133327b307cd0e4b75f22c}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!route@{route}} -\index{route@{route}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{route}]{\setlength{\rightskip}{0pt plus 5cm}def route ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{bb\-Mode = {\ttfamily False}} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a15ec3e3156133327b307cd0e4b75f22c} - - -Draws the complete layout given the capacitor matrix. - -{\ttfamily route} method is succession of calls to user-\/defined methods inside a newly created {\ttfamily Updatesession}. The following tasks are excecuted \-: -\begin{DoxyEnumerate} -\item A nex {\ttfamily Update\-Session} is created, -\item all required physical layers are loaded, -\item technology rules are defined according to capacitor type, -\item layout dimension parameters are computed, -\item routing tracks and layers are drawn, -\item top plates are stretched, -\item all required cuts are drawn, -\item The {\ttfamily Update\-Session} is closed. -\end{DoxyEnumerate} - -Meanwhile, an exception is raised when the entered {\ttfamily capacitor} is not a capacitor matrix or if the capacitor type is unsupported. - -References Rout\-Matched\-Capacitor.\-\_\-\-\_\-stretch\-Top\-Plates\-\_\-\-\_\-(), Rout\-Matched\-Capacitor.\-capacitor, Rout\-Matched\-Capacitor.\-compute\-Dimensions(), Capacitor\-Unit.\-compute\-Dimensions(), Stack.\-compute\-Dimensions(), Rout\-Matched\-Capacitor.\-draw\-Cuts(), Rout\-Matched\-Capacitor.\-draw\-Dummy\-Ring\-\_\-h\-R\-Tracks\-\_\-\-Cuts(), Rout\-Matched\-Capacitor.\-draw\-H\-R\-Layers(), Rout\-Matched\-Capacitor.\-draw\-H\-Routing\-Tracks(), Capacitor\-Stack.\-dummy\-Ring, Rout\-Matched\-Capacitor.\-dummy\-Ring, Rout\-Matched\-Capacitor.\-dummy\-Ring\-Capacitor, Vertical\-Routing\-Tracks.\-get\-V\-Track\-Y\-Max(), Vertical\-Routing\-Tracks.\-get\-V\-Track\-Y\-Min(), Capacitor\-Unit.\-hpitch, Rout\-Matched\-Capacitor.\-h\-Routingtrack\-Y\-Center, Vertical\-Routing\-Tracks.\-matching\-Scheme, Capacitor\-Stack.\-matching\-Scheme, Capacitor\-Stack.\-matrix\-Dim, Vertical\-Routing\-Tracks.\-matrix\-Dim, Rout\-Matched\-Capacitor.\-maximum\-Position, Capacitor\-Unit.\-metal3\-Width, Rout\-Matched\-Capacitor.\-minimum\-Position, Vertical\-Routing\-Tracks.\-nets, Capacitor\-Stack.\-nets, Rout\-Matched\-Capacitor.\-route\-Dummy\-Ring(), Rout\-Matched\-Capacitor.\-route\-Left\-And\-Right\-Sides(), Rout\-Matched\-Capacitor.\-route\-Top\-Or\-Bottom\-Side(), Rout\-Matched\-Capacitor.\-set\-Layers(), Capacitor\-Stack.\-set\-Rules(), Capacitor\-Unit.\-set\-Rules(), Rout\-Matched\-Capacitor.\-set\-Rules(), Capacitor\-Unit.\-vpitch, Vertical\-Routing\-Tracks.\-v\-Routing\-Track\-\_\-width, Capacitor\-Stack.\-v\-Routing\-Track\-\_\-width, and Rout\-Matched\-Capacitor.\-v\-Routing\-Track\-X\-Center. - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a3b578035b1559391931dade7c2508105}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!set\-Rules@{set\-Rules}} -\index{set\-Rules@{set\-Rules}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{set\-Rules}]{\setlength{\rightskip}{0pt plus 5cm}def set\-Rules ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a3b578035b1559391931dade7c2508105} - - -Defines technology rules used to draw the layout. - -Some of the rules, namely those describing routing layers and tracks are applicable for both M\-I\-M and P\-I\-P capacitors. However, cuts rules are different. - -\begin{DoxyParagraph}{Remark\-:} -All {\ttfamily Capacitor\-Stack} class rules are also reloaded in this class. An exception is raised if the entered capacitor type is unsupported. -\end{DoxyParagraph} -\begin{DoxyReturn}{Returns} -a dictionary with rules labels as keys and rules content as values. -\end{DoxyReturn} - - -References Capacitor\-Stack.\-capacitor\-Type, Capacitor\-Unit.\-capacitor\-Type, Rout\-Matched\-Capacitor.\-capacitor\-Type, Capacitor\-Stack.\-min\-Enclosure\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Rout\-Matched\-Capacitor.\-min\-Enclosure\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Layer, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Layer\-\_\-v\-Routing\-Track\-\_\-cut, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Track\-Cut, Capacitor\-Stack.\-min\-Spacing\-\_\-v\-Routing\-Track\-Cut, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-v\-Routing\-Track\-Cut, Capacitor\-Stack.\-min\-Width\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, and Rout\-Matched\-Capacitor.\-min\-Width\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut. - - - -Referenced by Rout\-Matched\-Capacitor.\-route(), and Vertical\-Routing\-Tracks.\-set\-Rules(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ae361a87f8ad999bb5f1b9851773f481b}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!set\-Layers@{set\-Layers}} -\index{set\-Layers@{set\-Layers}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{set\-Layers}]{\setlength{\rightskip}{0pt plus 5cm}def set\-Layers ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ae361a87f8ad999bb5f1b9851773f481b} - - -Defines all physical layers used to draw the layout. - -Layers are loaded using {\ttfamily Data\-Base} A\-P\-I. The same routing layers are used for both capacitor types except cuts layers that connect top plates to vertical routing tracks. Basicaly, metal 2, meta 3, cut 1 and cut 2 are the ones defined. \begin{DoxyReturn}{Returns} -a dictionary composed of layers labels as keys and layers as values. -\end{DoxyReturn} - - -References Capacitor\-Stack.\-capacitor\-Type, Capacitor\-Unit.\-capacitor\-Type, Rout\-Matched\-Capacitor.\-capacitor\-Type, Capacitor\-Stack.\-dummy\-Ring, and Rout\-Matched\-Capacitor.\-dummy\-Ring. - - - -Referenced by Rout\-Matched\-Capacitor.\-route(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a20b46b43488cc58c302b123a89299d85}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!compute\-Dimensions@{compute\-Dimensions}} -\index{compute\-Dimensions@{compute\-Dimensions}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{compute\-Dimensions}]{\setlength{\rightskip}{0pt plus 5cm}def compute\-Dimensions ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{bb\-Mode} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a20b46b43488cc58c302b123a89299d85} - - -Computes, through simple instructions and functions calls, layout variables detailed in Figure 2. - - - -References Capacitor\-Stack.\-abutment\-Box\-\_\-spacing, Rout\-Matched\-Capacitor.\-abutment\-Box\-\_\-spacing, Vertical\-Routing\-Tracks.\-capacitors\-Number, Capacitor\-Stack.\-capacitors\-Number, Rout\-Matched\-Capacitor.\-compute\-Bonding\-Box\-Dim\-Inbb\-Mode(), Rout\-Matched\-Capacitor.\-compute\-H\-R\-Layer\-Y\-Center(), Rout\-Matched\-Capacitor.\-compute\-H\-Routing\-Track\-Y\-Center(), Rout\-Matched\-Capacitor.\-h\-Routing\-Layer\-\_\-width, Capacitor\-Stack.\-matrix\-Dim, Vertical\-Routing\-Tracks.\-matrix\-Dim, Rout\-Matched\-Capacitor.\-maximum\-Position, Capacitor\-Stack.\-min\-Enclosure\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Rout\-Matched\-Capacitor.\-min\-Enclosure\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Vertical\-Routing\-Tracks.\-min\-Enclosure\-\_\-h\-Routing\-Layer\-\_\-v\-Routing\-Track\-\_\-cut, Rout\-Matched\-Capacitor.\-minimum\-Position, Vertical\-Routing\-Tracks.\-min\-Width\-\_\-h\-Routing\-Layer, Capacitor\-Stack.\-min\-Width\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Rout\-Matched\-Capacitor.\-min\-Width\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Vertical\-Routing\-Tracks.\-min\-Width\-\_\-h\-Routing\-Layer\-\_\-v\-Routing\-Track\-\_\-cut, Rout\-Matched\-Capacitor.\-v\-Routing\-Track\-\_\-spacing, Vertical\-Routing\-Tracks.\-v\-Routing\-Track\-\_\-width, Capacitor\-Stack.\-v\-Routing\-Track\-\_\-width, Rout\-Matched\-Capacitor.\-v\-Routing\-Track\-Dict, and Rout\-Matched\-Capacitor.\-v\-Routing\-Track\-X\-Center. - - - -Referenced by Rout\-Matched\-Capacitor.\-route(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ab00cae047369eb93c10e44e316fa991b}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!compute\-H\-Routing\-Track\-Y\-Center@{compute\-H\-Routing\-Track\-Y\-Center}} -\index{compute\-H\-Routing\-Track\-Y\-Center@{compute\-H\-Routing\-Track\-Y\-Center}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{compute\-H\-Routing\-Track\-Y\-Center}]{\setlength{\rightskip}{0pt plus 5cm}def compute\-H\-Routing\-Track\-Y\-Center ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ab00cae047369eb93c10e44e316fa991b} - - -Computes centers' ordinates of the eight horizontal routing tracks. - -The tracks include four on top and four on bottom of the matrix. To do the computations, fist, center of the first bottom or top track, given in Figure 2, is computed. Then, all adjacent three centers are deduced by simples translation of the first one. Translation quantity is equal to the sum of distance between adjacent routing tracks, self.\-h\-Routing\-Tracks\-\_\-spacing, and half width of the routing track itself, {\ttfamily self.\-h\-Routing\-Track\-\_\-width}. - -References Rout\-Matched\-Capacitor.\-\_\-\-\_\-set\-Plates\-Ids\-\_\-\-\_\-(), Capacitor\-Unit.\-hpitch, Rout\-Matched\-Capacitor.\-h\-Routingtrack\-Y\-Center, Rout\-Matched\-Capacitor.\-maximum\-Position, and Rout\-Matched\-Capacitor.\-minimum\-Position. - - - -Referenced by Rout\-Matched\-Capacitor.\-compute\-Dimensions(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a0d90b75abe0f4ce0f0b9b1b405462300}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!compute\-H\-R\-Layer\-Y\-Center@{compute\-H\-R\-Layer\-Y\-Center}} -\index{compute\-H\-R\-Layer\-Y\-Center@{compute\-H\-R\-Layer\-Y\-Center}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{compute\-H\-R\-Layer\-Y\-Center}]{\setlength{\rightskip}{0pt plus 5cm}def compute\-H\-R\-Layer\-Y\-Center ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a0d90b75abe0f4ce0f0b9b1b405462300} - - -Sets the stretching value of top plates. - -Then iteratively computes the centers of horizontal routing layer regarding top and bottom plates. - -References Rout\-Matched\-Capacitor.\-\_\-\-\_\-find\-Possible\-Short\-Circuits\-\_\-\-\_\-(), Vertical\-Routing\-Tracks.\-\_\-\-\_\-set\-Stretching\-\_\-\-\_\-(), Rout\-Matched\-Capacitor.\-\_\-\-\_\-set\-Stretching\-Dy\-Source\-Dy\-Target\-\_\-\-\_\-(), Rout\-Matched\-Capacitor.\-bonding\-Box, Rout\-Matched\-Capacitor.\-capacitor, Rout\-Matched\-Capacitor.\-h\-Routing\-Layer\-\_\-width, Rout\-Matched\-Capacitor.\-h\-Routing\-Layer\-Y\-Center, Rout\-Matched\-Capacitor.\-h\-Routing\-Track\-\_\-width, Rout\-Matched\-Capacitor.\-h\-Routingtrack\-Y\-Center, Capacitor\-Stack.\-matrix\-Dim, Vertical\-Routing\-Tracks.\-matrix\-Dim, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Layer, Rout\-Matched\-Capacitor.\-top\-Plate\-Stretching, Vertical\-Routing\-Tracks.\-v\-Routing\-Track\-\_\-width, Capacitor\-Stack.\-v\-Routing\-Track\-\_\-width, and Rout\-Matched\-Capacitor.\-v\-Routing\-Track\-X\-Center. - - - -Referenced by Rout\-Matched\-Capacitor.\-compute\-Dimensions(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_afbe39494b52b035fe3efdb0ddb896f69}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!draw\-H\-Routing\-Tracks@{draw\-H\-Routing\-Tracks}} -\index{draw\-H\-Routing\-Tracks@{draw\-H\-Routing\-Tracks}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{draw\-H\-Routing\-Tracks}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-H\-Routing\-Tracks ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{routing\-Tracks\-Layer} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_afbe39494b52b035fe3efdb0ddb896f69} - - -Iteratively draws horizontal routing tracks on top and bottom positions of the matrix using physical layer {\ttfamily routing\-Tracks\-Layer}. - - - -References Rout\-Matched\-Capacitor.\-h\-Routing\-Track\-\_\-width, Rout\-Matched\-Capacitor.\-h\-Routingtrack\-Y\-Center, Vertical\-Routing\-Tracks.\-nets, Capacitor\-Stack.\-nets, and Rout\-Matched\-Capacitor.\-v\-Routing\-Track\-X\-Center. - - - -Referenced by Rout\-Matched\-Capacitor.\-route(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a6bba48a4b1d4834c6617a5af5553be1c}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!draw\-H\-R\-Layers@{draw\-H\-R\-Layers}} -\index{draw\-H\-R\-Layers@{draw\-H\-R\-Layers}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{draw\-H\-R\-Layers}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-H\-R\-Layers ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{x\-Plate\-R\-Layer} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a6bba48a4b1d4834c6617a5af5553be1c} - - -Iteratively draws the horizontal routing layers starting with bottom left elementary capacitor $ C_{00} $. - - - -References Rout\-Matched\-Capacitor.\-\_\-\-\_\-compute\-Connections\-\_\-\-\_\-(), Rout\-Matched\-Capacitor.\-h\-Routing\-Layer\-\_\-width, Rout\-Matched\-Capacitor.\-h\-Routing\-Layer\-Y\-Center, Vertical\-Routing\-Tracks.\-matching\-Scheme, Capacitor\-Stack.\-matching\-Scheme, Vertical\-Routing\-Tracks.\-matrix\-Dim, Capacitor\-Stack.\-matrix\-Dim, Vertical\-Routing\-Tracks.\-nets, and Capacitor\-Stack.\-nets. - - - -Referenced by Rout\-Matched\-Capacitor.\-route(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a2019f4bb1e22a8d622ce4d155c934eb0}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!draw\-Cuts@{draw\-Cuts}} -\index{draw\-Cuts@{draw\-Cuts}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{draw\-Cuts}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Cuts ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{layer\-\_\-h\-R\-Track\-\_\-h\-R\-Layer, } -\item[{}]{layer\-\_\-tracks\-Cut, } -\item[{}]{layer\-\_\-top\-Plate\-Cut} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a2019f4bb1e22a8d622ce4d155c934eb0} - - -Draws all required cuts using physical layers \-: - - -\begin{DoxyItemize} -\item {\ttfamily layer\-\_\-h\-R\-Track\-\_\-h\-R\-Layer} to connect bottom plates to vertical routing tracks, -\item {\ttfamily layer\-\_\-tracks\-Cut} to connect vertical routing tracks to horizontal ones, -\item {\ttfamily layer\-\_\-top\-Plate\-Cut} to connect top plates to vertical routing tracks. A\-Lso in {\ttfamily draw\-Cuts}, n\-Umber of maximum cuts number on every layer is computed and cuts enclosure is adjusted according to layer's width. -\end{DoxyItemize} - -References Rout\-Matched\-Capacitor.\-\_\-\-\_\-set\-Plates\-Labels\-\_\-\-\_\-(), Vertical\-Routing\-Tracks.\-capacitor\-Ids, Vertical\-Routing\-Tracks.\-capacitors\-Number, Capacitor\-Stack.\-capacitors\-Number, Rout\-Matched\-Capacitor.\-draw\-Cuts\-\_\-stretched\-Top\-Plate(), Rout\-Matched\-Capacitor.\-draw\-Cuts\-\_\-v\-Routing\-Track\-\_\-\-H\-R\-Layer(), Rout\-Matched\-Capacitor.\-draw\-Cuts\-\_\-v\-Routing\-Track\-\_\-h\-Routing\-Track(), Rout\-Matched\-Capacitor.\-draw\-One\-Cut\-\_\-v\-Routing\-Track\-\_\-\-H\-R\-Layer(), Rout\-Matched\-Capacitor.\-h\-Routing\-Layer\-Y\-Center, Vertical\-Routing\-Tracks.\-matching\-Scheme, Capacitor\-Stack.\-matching\-Scheme, Vertical\-Routing\-Tracks.\-matrix\-Dim, Capacitor\-Stack.\-matrix\-Dim, Capacitor\-Stack.\-min\-Enclosure\-\_\-v\-Routing\-Track\-Cut, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Track\-Cut, Capacitor\-Stack.\-min\-Spacing\-\_\-v\-Routing\-Track\-Cut, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-v\-Routing\-Track\-Cut, Vertical\-Routing\-Tracks.\-min\-Width\-\_\-h\-Routing\-Track\-Cut, Capacitor\-Stack.\-min\-Width\-\_\-v\-Routing\-Track\-Cut, Vertical\-Routing\-Tracks.\-nets, Capacitor\-Stack.\-nets, Vertical\-Routing\-Tracks.\-v\-Routing\-Track\-\_\-width, Capacitor\-Stack.\-v\-Routing\-Track\-\_\-width, and Rout\-Matched\-Capacitor.\-v\-Routing\-Track\-X\-Center. - - - -Referenced by Rout\-Matched\-Capacitor.\-route(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ab3fd42d04811b9c88654c0ca0e6e2de7}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!draw\-One\-Cut\-\_\-v\-Routing\-Track\-\_\-\-H\-R\-Layer@{draw\-One\-Cut\-\_\-v\-Routing\-Track\-\_\-\-H\-R\-Layer}} -\index{draw\-One\-Cut\-\_\-v\-Routing\-Track\-\_\-\-H\-R\-Layer@{draw\-One\-Cut\-\_\-v\-Routing\-Track\-\_\-\-H\-R\-Layer}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{draw\-One\-Cut\-\_\-v\-Routing\-Track\-\_\-\-H\-R\-Layer}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-One\-Cut\-\_\-v\-Routing\-Track\-\_\-\-H\-R\-Layer ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{net, } -\item[{}]{cut\-Layer, } -\item[{}]{cut\-X\-Min, } -\item[{}]{cut\-Y\-Min, } -\item[{}]{cut\-Number} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_ab3fd42d04811b9c88654c0ca0e6e2de7} - - -Draws one cut, in layer {\ttfamily cut\-Layer}, in order to connect a vertical routing track, at position {\ttfamily cut\-X\-Min} in metal 2, and a horizontal routing track, at position {\ttfamily cut\-Y\-Min} in metal 3. - - - -References Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Layer\-\_\-v\-Routing\-Track\-\_\-cut, and Vertical\-Routing\-Tracks.\-min\-Width\-\_\-h\-Routing\-Layer\-\_\-v\-Routing\-Track\-\_\-cut. - - - -Referenced by Rout\-Matched\-Capacitor.\-draw\-Cuts(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a05e49f5537d31e0ab19b8a86eb6e7b1c}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!draw\-Cuts\-\_\-v\-Routing\-Track\-\_\-h\-Routing\-Track@{draw\-Cuts\-\_\-v\-Routing\-Track\-\_\-h\-Routing\-Track}} -\index{draw\-Cuts\-\_\-v\-Routing\-Track\-\_\-h\-Routing\-Track@{draw\-Cuts\-\_\-v\-Routing\-Track\-\_\-h\-Routing\-Track}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{draw\-Cuts\-\_\-v\-Routing\-Track\-\_\-h\-Routing\-Track}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Cuts\-\_\-v\-Routing\-Track\-\_\-h\-Routing\-Track ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{cut\-Layer, } -\item[{}]{cut\-Number, } -\item[{}]{enclosure\-\_\-cut} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a05e49f5537d31e0ab19b8a86eb6e7b1c} - - -Draws cuts to connect vertical routing tracks in metal 2 and horizontal routing tracks in metal 3. - - - -References Rout\-Matched\-Capacitor.\-\_\-\-\_\-set\-Plates\-Ids\-\_\-\-\_\-(), Rout\-Matched\-Capacitor.\-capacitor, Rout\-Matched\-Capacitor.\-dummy\-Ring\-Capacitor, Rout\-Matched\-Capacitor.\-h\-Routing\-Layer\-Y\-Center, Rout\-Matched\-Capacitor.\-h\-Routingtrack\-Y\-Center, Vertical\-Routing\-Tracks.\-matching\-Scheme, Capacitor\-Stack.\-matching\-Scheme, Vertical\-Routing\-Tracks.\-matrix\-Dim, Capacitor\-Stack.\-matrix\-Dim, Capacitor\-Stack.\-min\-Enclosure\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Rout\-Matched\-Capacitor.\-min\-Enclosure\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Capacitor\-Stack.\-min\-Enclosure\-\_\-v\-Routing\-Track\-Cut, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-h\-Routing\-Track\-Cut, Capacitor\-Stack.\-min\-Spacing\-\_\-v\-Routing\-Track\-Cut, Rout\-Matched\-Capacitor.\-min\-Spacing\-\_\-v\-Routing\-Track\-Cut, Capacitor\-Stack.\-min\-Width\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Rout\-Matched\-Capacitor.\-min\-Width\-\_\-h\-Routing\-Layer\-\_\-top\-Plate\-\_\-cut, Vertical\-Routing\-Tracks.\-min\-Width\-\_\-h\-Routing\-Track\-Cut, Capacitor\-Stack.\-min\-Width\-\_\-v\-Routing\-Track\-Cut, Vertical\-Routing\-Tracks.\-nets, Capacitor\-Stack.\-nets, Vertical\-Routing\-Tracks.\-v\-Routing\-Track\-\_\-width, Capacitor\-Stack.\-v\-Routing\-Track\-\_\-width, and Rout\-Matched\-Capacitor.\-v\-Routing\-Track\-X\-Center. - - - -Referenced by Rout\-Matched\-Capacitor.\-draw\-Cuts(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a7d642764cf9e385710751eec3f43f7af}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!\-\_\-\-\_\-stretch\-Top\-Plates\-\_\-\-\_\-@{\-\_\-\-\_\-stretch\-Top\-Plates\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-stretch\-Top\-Plates\-\_\-\-\_\-@{\-\_\-\-\_\-stretch\-Top\-Plates\-\_\-\-\_\-}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{\-\_\-\-\_\-stretch\-Top\-Plates\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-stretch\-Top\-Plates\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{capacitor, } -\item[{}]{rlayer} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a7d642764cf9e385710751eec3f43f7af} - - -Iteratively performs top plates stretching for the capacitor matrix. - -Vertical segments are connected to top plate routing layer. -\begin{DoxyParams}{Parameters} -{\em capacitor} & Capacitor matrix. \\ -\hline -{\em rlayer} & Layer of the drawn vertical rectangle. \\ -\hline -\end{DoxyParams} - - -References Rout\-Matched\-Capacitor.\-\_\-\-\_\-stretch\-Top\-Plate\-Compact\-Cap\-\_\-\-\_\-(), Vertical\-Routing\-Tracks.\-matching\-Scheme, Capacitor\-Stack.\-matching\-Scheme, Vertical\-Routing\-Tracks.\-matrix\-Dim, Capacitor\-Stack.\-matrix\-Dim, Vertical\-Routing\-Tracks.\-nets, and Capacitor\-Stack.\-nets. - - - -Referenced by Rout\-Matched\-Capacitor.\-route(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a57eade928345587b01420a05be475a8f}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!\-\_\-\-\_\-stretch\-Top\-Plate\-Compact\-Cap\-\_\-\-\_\-@{\-\_\-\-\_\-stretch\-Top\-Plate\-Compact\-Cap\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-stretch\-Top\-Plate\-Compact\-Cap\-\_\-\-\_\-@{\-\_\-\-\_\-stretch\-Top\-Plate\-Compact\-Cap\-\_\-\-\_\-}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{\-\_\-\-\_\-stretch\-Top\-Plate\-Compact\-Cap\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-stretch\-Top\-Plate\-Compact\-Cap\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{net, } -\item[{}]{capacitor, } -\item[{}]{routing\-Layer, } -\item[{}]{j = {\ttfamily 0}} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a57eade928345587b01420a05be475a8f} - - -Draws vertical stretched layers for a given elementary capacitor. - - - -References Rout\-Matched\-Capacitor.\-\_\-\-\_\-set\-Stretching\-Dy\-Source\-Dy\-Target\-\_\-\-\_\-(), and Rout\-Matched\-Capacitor.\-top\-Plate\-Stretching. - - - -Referenced by Rout\-Matched\-Capacitor.\-\_\-\-\_\-stretch\-Top\-Plates\-\_\-\-\_\-(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a1077752f46c512f70377cc60bd772034}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!\-\_\-\-\_\-set\-Stretching\-Dy\-Source\-Dy\-Target\-\_\-\-\_\-@{\-\_\-\-\_\-set\-Stretching\-Dy\-Source\-Dy\-Target\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-set\-Stretching\-Dy\-Source\-Dy\-Target\-\_\-\-\_\-@{\-\_\-\-\_\-set\-Stretching\-Dy\-Source\-Dy\-Target\-\_\-\-\_\-}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{\-\_\-\-\_\-set\-Stretching\-Dy\-Source\-Dy\-Target\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-set\-Stretching\-Dy\-Source\-Dy\-Target\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{capacitor, } -\item[{}]{deltay} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_a1077752f46c512f70377cc60bd772034} - - -Sets the abcissas of the extremities of the vertical stretching to be applied to capacitor's top plates for a given elementary capacitor in the matrix. - - -\begin{DoxyParams}{Parameters} -{\em capacitor} & .values() Elementary unit capacitor. \\ -\hline -{\em deltay} & Stretching value. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -A list that contains {\ttfamily dy\-Source} and as top extremity and bottom extermity, respectively. -\end{DoxyReturn} - - -Referenced by Rout\-Matched\-Capacitor.\-\_\-\-\_\-stretch\-Top\-Plate\-Compact\-Cap\-\_\-\-\_\-(), and Rout\-Matched\-Capacitor.\-compute\-H\-R\-Layer\-Y\-Center(). - -\hypertarget{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_aaaf2e610688441a439b8a3624e1393b9}{\index{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}!\-\_\-\-\_\-compute\-Connections\-\_\-\-\_\-@{\-\_\-\-\_\-compute\-Connections\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-compute\-Connections\-\_\-\-\_\-@{\-\_\-\-\_\-compute\-Connections\-\_\-\-\_\-}!python::CapacitorRouted::RoutMatchedCapacitor@{python\-::\-Capacitor\-Routed\-::\-Rout\-Matched\-Capacitor}} -\subsubsection[{\-\_\-\-\_\-compute\-Connections\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-compute\-Connections\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{i, } -\item[{}]{j, } -\item[{}]{capacitor\-Identifier} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor_aaaf2e610688441a439b8a3624e1393b9} - - -Computes horizontal routing layers source and target abcissas for top and bottom plates connections to its associated routing track. - - -\begin{DoxyParams}{Parameters} -{\em (i,j)} & row and column indexes, respectively, in the matrix which describe the elementary capacitor position in the matrix. \\ -\hline -{\em capacitor\-Identifier} & equal to '1' if C1 and '2' if C2. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -A nested dicitionary. The overal dictionary is composed of keys equal to {\ttfamily top\-Plate} and bottom\-Plate and values equal to sub-\/dictionaries. The sub-\/dictionaries, are in their turn composed of two keys standing for the abcissa of the source and the abcissa of the target. -\end{DoxyReturn} -\begin{DoxyParagraph}{Remark\-:} -Naturally, an exception is raised if an unsupported capacitor identifier is given. -\end{DoxyParagraph} - - -References Rout\-Matched\-Capacitor.\-\_\-\-\_\-find\-H\-R\-L\-Dy\-Trarget\-\_\-\-\_\-(), Rout\-Matched\-Capacitor.\-\_\-\-\_\-is\-Capacitor\-Adummy\-\_\-\-\_\-(), Rout\-Matched\-Capacitor.\-\_\-\-\_\-set\-Plates\-Labels\-\_\-\-\_\-(), Rout\-Matched\-Capacitor.\-capacitor, Vertical\-Routing\-Tracks.\-capacitor\-Ids, Vertical\-Routing\-Tracks.\-capacitors\-Number, Capacitor\-Stack.\-capacitors\-Number, Capacitor\-Stack.\-dummy\-Element, Rout\-Matched\-Capacitor.\-dummy\-Element, Capacitor\-Stack.\-dummy\-Ring, Rout\-Matched\-Capacitor.\-dummy\-Ring, Vertical\-Routing\-Tracks.\-matching\-Scheme, Capacitor\-Stack.\-matching\-Scheme, Vertical\-Routing\-Tracks.\-matrix\-Dim, Capacitor\-Stack.\-matrix\-Dim, Vertical\-Routing\-Tracks.\-nets, Capacitor\-Stack.\-nets, Vertical\-Routing\-Tracks.\-v\-Routing\-Track\-\_\-width, Capacitor\-Stack.\-v\-Routing\-Track\-\_\-width, Rout\-Matched\-Capacitor.\-v\-Routing\-Track\-X\-Center, and Rout\-Matched\-Capacitor.\-v\-R\-Ts\-Distribution. - - - -Referenced by Rout\-Matched\-Capacitor.\-draw\-H\-R\-Layers(). - - - -The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize} -\item -Capacitor\-Routed.\-py\end{DoxyCompactItemize} diff --git a/oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 b/oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 deleted file mode 100644 index 597d36ac..00000000 --- a/oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0e5f4d4a0b1b72800d34abf8064118a1 \ No newline at end of file diff --git a/oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.pdf b/oroshi/doc/latex/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.pdf deleted file mode 100644 index aed0f5d8bb78f031e8f806c9c491d348348792bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8229 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 Hl>q+(etQ6I diff --git a/oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit.tex b/oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit.tex deleted file mode 100644 index 9fd944b2..00000000 --- a/oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit.tex +++ /dev/null @@ -1,923 +0,0 @@ -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit}{\section{Capacitor\-Unit Class Reference} -\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit}\index{Capacitor\-Unit@{Capacitor\-Unit}} -} - - -Draws a capacitor of type Poly-\/\-Poly or Metal-\/\-Metal in 350 nm A\-M\-S C\-M\-O\-S technology. - - -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ac775ee34451fdfa742b318538164070e}{\-\_\-\-\_\-init\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em This is the class constructor. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a217d8871ff92e0ad45001492875261e1}{\-\_\-\-\_\-set\-Capacitor\-Per\-Unit\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em Sets the area and perimeter capacitances as specified in 350 nm A\-M\-S technology and according to {\ttfamily capacitor\-Type} (M\-I\-M or P\-I\-P). \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a914a2dadb095ebca95a60ee5c8ddd7a0}{\-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em Computes width and length of the capacitor. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ac114a243874b413707b6fa7d30529d76}{\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em Checks if the computed capacitor dimensions exceed or are less than maximum and minimum limits, respectively, as specified in technology rules. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a3b578035b1559391931dade7c2508105}{set\-Rules} -\begin{DoxyCompactList}\small\item\em Selects technological rules according to the capacitor type. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a127dcda66d458f9320e541649101607e}{get\-Capacitor\-Type} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7afefaf3a15d637ffe979bc54d57c6c2}{get\-Maximum\-Cap\-Width} -\begin{DoxyCompactList}\small\item\em maximum size of capacitor's top plate. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aacb6369181aa03823cb1ce42adb0ee25}{get\-Minimum\-Cap\-Width} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7be694eb909dc1e49326e3b5dd1e6887}{get\-Layers} -\begin{DoxyCompactList}\small\item\em Loads the technology file then extracts the adequate layers according to the capacitor type (M\-I\-M or P\-I\-P). \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a5b7ef0221e471e99fa7f0a87a28ba1ea}{create} -\begin{DoxyCompactList}\small\item\em When bonding box mode is activated, the function draws all layout physical layers of the capacitor after checking its dimensions. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae2ec4683c7f6c30fbb1687934673410c}{draw\-Capacitor} -\begin{DoxyCompactList}\small\item\em Draws all layout physicial layers of the capacitor. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a8f71111f71d084f05742fadf134cb87e}{compute\-Bottom\-Plate\-Cuts} -\begin{DoxyCompactList}\small\item\em Computes needed parameters to draw bottom plate cuts in its exact position, including \-: \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aceb634d48d79f2079c690297c820da0b}{compute\-Top\-Plate\-Cuts} -\begin{DoxyCompactList}\small\item\em Computes needed parameters to draw top plate cuts in its exact position, including \-: \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ac5cd73be473bc321a29a75311f808835}{draw\-Abutment\-Box} -\begin{DoxyCompactList}\small\item\em Draws the abutment box of the capacitor in position {\ttfamily $<$}(abutment\-Box\-X\-Min, abutment\-Box\-Y\-Min)$>$. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7b4116e4696b869f462d86b1ddf00246}{draw\-One\-Plate} -\begin{DoxyCompactList}\small\item\em Draws the top or bottom plate through inflation of the Box under it. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a1a998a3072560eaee998c9e5531a5f5b}{draw\-Bottom\-Plate\-Cut} -\begin{DoxyCompactList}\small\item\em Draws the required cuts to connect the bottom plate. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a8d4cd239412ffde81f0cda52123b9c1d}{draw\-Top\-Plate\-Cut} -\begin{DoxyCompactList}\small\item\em 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. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a444cc6c0ee175ba22b5092d0706bc0d6}{draw\-Routing\-Layers} -\begin{DoxyCompactList}\small\item\em Draws the routing layers of both bottom and top plates after computing widths and the exact position of these layers. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a5c03a894501e69f2e6a6d40e93df8ef2}{cut\-Max\-Number} -\begin{DoxyCompactList}\small\item\em Computes the maximal number of cuts to be placed on a layer of width {\ttfamily width\-\_\-layer} considering specifications such as the spacing between the cuts, its width and its enclosure in the layer. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a95ebae95cc0be711de5adbb1faa85f98}{cut\-Line} -\begin{DoxyCompactList}\small\item\em Creates a horizontal or vertical line of contacts according to the specified direction. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a4b8fe45cf122a2682cd8120bcbc5e5fd}{cut\-Matrix} -\begin{DoxyCompactList}\small\item\em Creates a matrix of cuts by vertically stacking horizontal lines of identical cuts. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a876d31edaaabe0716d6fbe6f6c0c7b75}{get\-Bottom\-Plate\-Y\-Max} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae461baa28fdfa09bad07b3f1073a46b7}{get\-Bottom\-Plate\-Left\-Cut\-X\-Min} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aae1849792395fccc12e921450a29980b}{get\-Bottom\-Plate\-Left\-Cut\-Y\-Min} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a2f7b75e47a238defa63e04c75e0be016}{get\-Bottom\-Plate\-Left\-Cut\-Y\-Max} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a9e59fed4e9829bac60edbd38195cdd90}{get\-Bottom\-Plate\-Right\-Cut\-X\-Min} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a0e362c0f80ab5a70fa3e4139d0009ef1}{get\-Bottom\-Plate\-Right\-Cut\-Y\-Min} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae31425a5f9b3d7a0829c1abc454e2834}{get\-Bottom\-Plate\-Right\-Cut\-Y\-Max} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae3887820ee80da10f77b451e5f068635}{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Max} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a2d9186515736c9fd74725eca251f6e2b}{get\-Bottom\-Plate\-Right\-Cut\-Y\-Center} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a52e8ea7265119216e234eab32bc542ef}{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Min} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a2f87580a615f6b0450d43a032adf81d5}{get\-Bot\-Plate\-R\-Layer\-Y\-Min} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aa6cb9e5f6ba2d4e4ce5f63ca1d785e7e}{get\-Bot\-Plate\-R\-Layer\-Y\-Max} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a3463504463c87fb7aab28ca04597c169}{get\-Bot\-Plate\-R\-Layer\-Width} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aff2f6d078abdcf0d679aa9b697928f34}{get\-Bot\-Plate\-Right\-R\-Layer\-X\-Center} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7440876afb0ff33ba0ee5cea4e9e0aed}{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Center} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a836a7c11713aa3a08504a498b90fb5ee}{get\-Top\-Plate\-R\-Layer\-Y\-Min} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aea137748a99552369414fc5ffec3a41d}{get\-Top\-Plate\-R\-Layer\-Y\-Max} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a9c1452c170eeb58d060bb5fe72fae5a9}{get\-Top\-Plate\-R\-Layer\-Width} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a295a807958d27c156f87102762d353d6}{get\-Top\-Plate\-R\-Layer\-X\-Center} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a28208011c71e1712625c1148a67d943c}{get\-Top\-Plate\-R\-Layer\-X\-Min} -\item -def \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a9788696eb8f1cffde53de39c7f2ffcaa}{get\-Top\-Plate\-R\-Layer\-X\-Max} -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Draws a capacitor of type Poly-\/\-Poly or Metal-\/\-Metal in 350 nm A\-M\-S C\-M\-O\-S technology. - -P\-I\-P and M\-I\-M 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. - -\subsection{Constructor \& Destructor Documentation} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ac775ee34451fdfa742b318538164070e}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!\-\_\-\-\_\-init\-\_\-\-\_\-@{\-\_\-\-\_\-init\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-init\-\_\-\-\_\-@{\-\_\-\-\_\-init\-\_\-\-\_\-}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{\-\_\-\-\_\-init\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-init\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{device, } -\item[{}]{capacitor\-Type, } -\item[{}]{abutment\-Box\-Position, } -\item[{}]{capacitance = {\ttfamily 0}, } -\item[{}]{cap\-Dim = {\ttfamily \{\}}} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ac775ee34451fdfa742b318538164070e} - - -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 \-: -\begin{DoxyParams}{Parameters} -{\em device} & {\bf Hurricane} A\-M\-S device into which layout is drawn. \\ -\hline -{\em capacitance} & Capacitor value, expressed in $ femto Farad (fF) $. \\ -\hline -{\em abutment\-Box\-Position} & A list containing abscissa and ordinate of the bottom left corner of the abutment box.\\ -\hline -\end{DoxyParams} -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. - - -\begin{DoxyParams}{Parameters} -{\em device} & {\bf Hurricane} A\-M\-S device into which layout is drawn. \\ -\hline -{\em capacitance} & Capacitor value, expressed in $ femto Farad (fF) $. \\ -\hline -{\em capacitor\-Type} & Can be 'M\-I\-M\-Cap' or 'P\-I\-P\-Cap' as capacitor type. \\ -\hline -{\em abutment\-Box\-Dict} & A dictionary containing abscissa and ordinate of the bottom left corner of the abutment box, (X\-Min) and (Y\-Min), respectively. \\ -\hline -{\em abutment\-Box} & Abutment box drawn square. It is an object of type {\ttfamily Box}. \\ -\hline -{\em bottom\-Plate\-Box} & Bottom plate drawn square. It is an object of type {\ttfamily Box}. \\ -\hline -{\em top\-Plate\-Box} & Top plate drawn square. It is an object of type {\ttfamily Box}. \\ -\hline -{\em cut2\-Matrix\-Dict} & A 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 {\ttfamily self.\-capacitor\-Type} is equal to {\ttfamily 'M\-I\-M\-Cap'}.\\ -\hline -{\em cut\-Left\-Line\-Dict} & A dictionary containing abcissa and ordinate of the bottom cut in the left line of cuts to be drawn on bottom plate's layer. \\ -\hline -{\em cut\-Right\-Line\-Dict} & A dictionary containing abcissa and ordinate of the bottom cut in the right line of cuts to be drawn on bottom plate's layer. \\ -\hline -{\em top\-Cut\-Line\-Dict} & A 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 {\ttfamily self.\-capacitor\-Type} is equal to {\ttfamily 'P\-I\-P\-Cap'}.\\ -\hline -{\em top\-Plate\-R\-Layer\-Dict} & A dictionary containing position information of the top plate's routing layer. The dictionary includes ordinates of the layer's top and bottom extremities, {\ttfamily 'X\-Min'} and {\ttfamily 'Y\-Min'}, respectively, the abcissa of it's center, {\ttfamily 'X\-Center'} and its width, {\ttfamily 'width'}.\\ -\hline -{\em bottom\-Plate\-R\-Layer\-Dict} & A dictionary containing \\ -\hline -{\em enclosure\-\_\-bot\-Plate\-\_\-top\-Plate} & Top plate's layer encolusre in bottom plate's layer. \\ -\hline -{\em minheight\-\_\-top\-Platecut} & Minimum height of cuts for top plate connection to other metal layer. \\ -\hline -{\em top\-Cut\-Line\-Number} & Maximum possible number cuts to be drawn for top plate's connection. \\ -\hline -{\em bottom\-Cut\-Line\-Number} & Maximum possible number cuts to be drawn for top plate's connection.\\ -\hline -\end{DoxyParams} -\begin{DoxyParagraph}{Remark\-:} -Abutment box must be defined as an attribute because the position of dummy capacitor in {\ttfamily Non\-Unit\-Capacitor} class must be precisely defined. -\end{DoxyParagraph} - - -References Capacitor\-Unit.\-\_\-\-\_\-compute\-Capacitance\-\_\-\-\_\-(), Capacitor\-Unit.\-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\-(), Capacitor\-Unit.\-\_\-\-\_\-init\-Cap\-Dim\-\_\-\-\_\-(), Capacitor\-Unit.\-abutment\-Box, Capacitor\-Unit.\-abutment\-Box\-Dict, Capacitor\-Unit.\-bottom\-Cut\-Line\-Number, Capacitor\-Unit.\-bottom\-Plate\-Box, Capacitor\-Unit.\-bottom\-Plate\-Box\-Dict, Capacitor\-Unit.\-bottom\-Plate\-R\-Layer\-Dict, Capacitor\-Unit.\-capacitor\-Type, Capacitor\-Unit.\-cap\-Dim, Capacitor\-Unit.\-cut2\-Matrix\-Dict, Capacitor\-Unit.\-cut\-Left\-Line\-Dict, Capacitor\-Unit.\-cut\-Right\-Line\-Dict, Capacitor\-Unit.\-device, Stack.\-device, Capacitor\-Unit.\-enclosure\-\_\-bot\-Plate\-\_\-abt\-Box, Capacitor\-Unit.\-enclosure\-\_\-bot\-Plate\-\_\-top\-Plate, Capacitor\-Unit.\-minheight\-\_\-top\-Platecut, Capacitor\-Unit.\-top\-Cut\-Line\-Dict, Capacitor\-Unit.\-top\-Cut\-Line\-Number, Capacitor\-Unit.\-top\-Plate\-Box, Capacitor\-Unit.\-top\-Plate\-Box\-Dict, and Capacitor\-Unit.\-top\-Plate\-R\-Layer\-Dict. - - - -\subsection{Member Function Documentation} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a217d8871ff92e0ad45001492875261e1}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!\-\_\-\-\_\-set\-Capacitor\-Per\-Unit\-\_\-\-\_\-@{\-\_\-\-\_\-set\-Capacitor\-Per\-Unit\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-set\-Capacitor\-Per\-Unit\-\_\-\-\_\-@{\-\_\-\-\_\-set\-Capacitor\-Per\-Unit\-\_\-\-\_\-}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{\-\_\-\-\_\-set\-Capacitor\-Per\-Unit\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-set\-Capacitor\-Per\-Unit\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{capacitor\-Type} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a217d8871ff92e0ad45001492875261e1} - - -Sets the area and perimeter capacitances as specified in 350 nm A\-M\-S technology and according to {\ttfamily capacitor\-Type} (M\-I\-M or P\-I\-P). - -\begin{DoxyReturn}{Returns} -a list containing the area and perimeter capacitances. -\end{DoxyReturn} -\begin{DoxyRemark}{Remarks} -An exception is raised if the entered capacitor type is unknown. -\end{DoxyRemark} - - -Referenced by Capacitor\-Unit.\-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\-(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a914a2dadb095ebca95a60ee5c8ddd7a0}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!\-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\-@{\-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\-@{\-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\-}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{\-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-compute\-Cap\-Dim\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{capacitance, } -\item[{}]{capacitor\-Type} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a914a2dadb095ebca95a60ee5c8ddd7a0} - - -Computes width and length of the capacitor. - -Given {\ttfamily 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). \begin{DoxyReturn}{Returns} -a dictionary containing width and length. -\end{DoxyReturn} -\begin{DoxyParagraph}{Remark\-:} -The capacitor is square. Thus, length and width are equal. -\end{DoxyParagraph} - - -References Capacitor\-Unit.\-\_\-\-\_\-set\-Capacitor\-Per\-Unit\-\_\-\-\_\-(). - - - -Referenced by Capacitor\-Stack.\-\_\-\-\_\-init\-\_\-\-\_\-(), and Capacitor\-Unit.\-\_\-\-\_\-init\-\_\-\-\_\-(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ac114a243874b413707b6fa7d30529d76}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-@{\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-@{\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{cap\-Dim} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ac114a243874b413707b6fa7d30529d76} - - -Checks if the computed capacitor dimensions exceed or are less than maximum and minimum limits, respectively, as specified in technology rules. - -\begin{DoxyReturn}{Returns} -{\ttfamily True} if all rules are respected. -\end{DoxyReturn} -\begin{DoxyParagraph}{Remark\-:} -Maximum poly2 layer dimensions for P\-I\-P capacitor are not specified in technology rules. Thus, only minimum limit condition is checked. -\end{DoxyParagraph} - - -References Capacitor\-Unit.\-capacitor\-Type, Capacitor\-Unit.\-get\-Maximum\-Cap\-Width(), and Capacitor\-Unit.\-get\-Minimum\-Cap\-Width(). - - - -Referenced by Capacitor\-Stack.\-\_\-\-\_\-init\-\_\-\-\_\-(), and Capacitor\-Unit.\-create(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a3b578035b1559391931dade7c2508105}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!set\-Rules@{set\-Rules}} -\index{set\-Rules@{set\-Rules}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{set\-Rules}]{\setlength{\rightskip}{0pt plus 5cm}def set\-Rules ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a3b578035b1559391931dade7c2508105} - - -Selects technological rules according to the capacitor type. - -\begin{DoxyReturn}{Returns} -a dictionary with rules labels as keys and rules as values. Example of technology rules are \-: -\begin{DoxyItemize} -\item minimum spacing between cuts or metals, -\item minimum width of a plate, a cut or a routing metal. -\item etc. Every rule takes two possible value according to the capacitor type (M\-I\-M or P\-I\-P). Therefore, dictionary keys are generic and its values are specific to the capacitor type. -\end{DoxyItemize} -\end{DoxyReturn} -\begin{DoxyParagraph}{Remark\-:} -An exception is raised if the entered capacitor type is unknown. -\end{DoxyParagraph} - - -References Capacitor\-Unit.\-capacitor\-Type, Capacitor\-Unit.\-hpitch, Capacitor\-Unit.\-is\-V\-H, Stack.\-is\-V\-H, Capacitor\-Unit.\-M\-E\-T\-A\-L2\-Pitch, Capacitor\-Unit.\-metal2\-Width, Capacitor\-Unit.\-M\-E\-T\-A\-L3\-Pitch, Capacitor\-Unit.\-metal3\-Width, Capacitor\-Unit.\-min\-Enclo\-\_\-bot\-Plate\-\_\-bot\-Plate\-Cut, Capacitor\-Unit.\-min\-Enclo\-\_\-bot\-Plate\-R\-Metal\-\_\-bot\-Plate\-Cut, Capacitor\-Unit.\-min\-Enclo\-\_\-routing\-Track\-Metal\-\_\-cut, Capacitor\-Unit.\-min\-Enclo\-\_\-top\-Plate\-\_\-top\-Plate\-Cut, Capacitor\-Unit.\-min\-Enclo\-\_\-top\-Plate\-R\-Metal\-\_\-top\-Plate\-Cut, Capacitor\-Unit.\-minheight\-\_\-top\-Platecut, Capacitor\-Unit.\-min\-Spacing\-\_\-bot\-Plate, Capacitor\-Unit.\-min\-Spacing\-\_\-bot\-Plate\-Cut\-\_\-top\-Plate, Capacitor\-Unit.\-min\-Spacing\-On\-Bot\-Plate\-\_\-cut, Capacitor\-Unit.\-min\-Spacing\-On\-Top\-Plate\-\_\-cut, Capacitor\-Unit.\-min\-Width\-\_\-bot\-Platecut, Capacitor\-Unit.\-min\-Width\-\_\-bot\-R\-Metal, Capacitor\-Unit.\-min\-Width\-\_\-routing\-Trackcut, Capacitor\-Unit.\-min\-Width\-\_\-top\-Plate, Capacitor\-Unit.\-min\-Width\-\_\-top\-Platecut, Capacitor\-Unit.\-min\-Width\-\_\-top\-R\-Metal, and Capacitor\-Unit.\-vpitch. - - - -Referenced by Capacitor\-Stack.\-create(), Capacitor\-Unit.\-create(), Rout\-Matched\-Capacitor.\-route(), and Vertical\-Routing\-Tracks.\-set\-Rules(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a127dcda66d458f9320e541649101607e}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Capacitor\-Type@{get\-Capacitor\-Type}} -\index{get\-Capacitor\-Type@{get\-Capacitor\-Type}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Capacitor\-Type}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Capacitor\-Type ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a127dcda66d458f9320e541649101607e} -\begin{DoxyReturn}{Returns} -capacitor type {\ttfamily 'M\-I\-M\-Cap'} or {\ttfamily 'P\-I\-P\-Cap'}. -\end{DoxyReturn} -\begin{DoxyRemark}{Remarks} -{\ttfamily \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a127dcda66d458f9320e541649101607e}{get\-Capacitor\-Type()}} is especially useful when an instance of {\ttfamily \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit}{Capacitor\-Unit}} class is called in another classes instances to identify the capacitor's type. -\end{DoxyRemark} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7afefaf3a15d637ffe979bc54d57c6c2}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Maximum\-Cap\-Width@{get\-Maximum\-Cap\-Width}} -\index{get\-Maximum\-Cap\-Width@{get\-Maximum\-Cap\-Width}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Maximum\-Cap\-Width}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Maximum\-Cap\-Width ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7afefaf3a15d637ffe979bc54d57c6c2} - - -maximum size of capacitor's top plate. - -{\ttfamily \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7afefaf3a15d637ffe979bc54d57c6c2}{get\-Maximum\-Cap\-Width()}} is called to check if capacitor dimensions are within acceptable technological limits. An exception is raised if the entered capacitor type is unknown. \begin{DoxyRemark}{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 P\-I\-P capacitor is not specified. Thus, it is not considered in {\ttfamily \hyperlink{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7afefaf3a15d637ffe979bc54d57c6c2}{get\-Maximum\-Cap\-Width()}} -\end{DoxyRemark} - - -References Capacitor\-Unit.\-capacitor\-Type. - - - -Referenced by Capacitor\-Unit.\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aacb6369181aa03823cb1ce42adb0ee25}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Minimum\-Cap\-Width@{get\-Minimum\-Cap\-Width}} -\index{get\-Minimum\-Cap\-Width@{get\-Minimum\-Cap\-Width}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Minimum\-Cap\-Width}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Minimum\-Cap\-Width ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aacb6369181aa03823cb1ce42adb0ee25} -\begin{DoxyReturn}{Returns} -The minimum size of the capacitor's top plate. An exception is raised if the entered capacitor type is unknown. -\end{DoxyReturn} -\begin{DoxyRemark}{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. -\end{DoxyRemark} - - -References Capacitor\-Unit.\-capacitor\-Type. - - - -Referenced by Capacitor\-Unit.\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7be694eb909dc1e49326e3b5dd1e6887}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Layers@{get\-Layers}} -\index{get\-Layers@{get\-Layers}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Layers}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Layers ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7be694eb909dc1e49326e3b5dd1e6887} - - -Loads the technology file then extracts the adequate layers according to the capacitor type (M\-I\-M or P\-I\-P). - -\begin{DoxyReturn}{Returns} -a dictionary containing the layer labels as attributes and its values. -\end{DoxyReturn} -\begin{DoxyRemark}{Remarks} -An exception is raised if the entered capacitor type is unknown. -\end{DoxyRemark} - - -References Capacitor\-Unit.\-capacitor\-Type. - - - -Referenced by Capacitor\-Unit.\-create(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a5b7ef0221e471e99fa7f0a87a28ba1ea}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!create@{create}} -\index{create@{create}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{create}]{\setlength{\rightskip}{0pt plus 5cm}def create ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{t, } -\item[{}]{b, } -\item[{}]{bb\-Mode = {\ttfamily False}, } -\item[{}]{v\-Enclosure\-\_\-bot\-Plate\-\_\-abt\-Box = {\ttfamily None}, } -\item[{}]{h\-Enclosure\-\_\-bot\-Plate\-\_\-abt\-Box = {\ttfamily None}} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a5b7ef0221e471e99fa7f0a87a28ba1ea} - - -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 M\-I\-M and P\-I\-P capacitors or when {\ttfamily bb\-Mode} parameters is other than {\ttfamily True} or {\ttfamily False}. - - -\begin{DoxyParams}{Parameters} -{\em (} & t , b ) nets of top and bottom plates, respectively \\ -\hline -{\em bb\-Mode} & activates bonding box dimensions computing when set to {\ttfamily True} \\ -\hline -\end{DoxyParams} - - -References Capacitor\-Unit.\-\_\-\-\_\-is\-Capacitor\-Unit\-O\-K\-\_\-\-\_\-(), Capacitor\-Unit.\-abutment\-Box\-Dict, Capacitor\-Unit.\-cap\-Dim, Capacitor\-Unit.\-compute\-Dimensions(), Stack.\-compute\-Dimensions(), Capacitor\-Unit.\-draw\-Abutment\-Box(), Capacitor\-Unit.\-draw\-Capacitor(), Technology.\-get\-Layers(), Capacitor\-Unit.\-get\-Layers(), and Capacitor\-Unit.\-set\-Rules(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae2ec4683c7f6c30fbb1687934673410c}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!draw\-Capacitor@{draw\-Capacitor}} -\index{draw\-Capacitor@{draw\-Capacitor}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{draw\-Capacitor}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Capacitor ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{layer\-Dict, } -\item[{}]{t, } -\item[{}]{b} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae2ec4683c7f6c30fbb1687934673410c} - - -Draws all layout physicial layers of the capacitor. - - -\begin{DoxyParams}{Parameters} -{\em layer\-Dict} & a dictionary containing a description of the required physical layers according to capacitor type \\ -\hline -{\em (} & t , b ) nets of top and bottom plates, respectively \\ -\hline -\end{DoxyParams} - - -References Capacitor\-Unit.\-bottom\-Plate\-Box, Capacitor\-Unit.\-bottom\-Plate\-Box\-Dict, Capacitor\-Unit.\-draw\-Bottom\-Plate\-Cut(), Capacitor\-Unit.\-draw\-One\-Plate(), Capacitor\-Unit.\-draw\-Routing\-Layers(), Capacitor\-Unit.\-draw\-Top\-Plate\-Cut(), Capacitor\-Unit.\-top\-Plate\-Box, and Capacitor\-Unit.\-top\-Plate\-Box\-Dict. - - - -Referenced by Capacitor\-Unit.\-create(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a8f71111f71d084f05742fadf134cb87e}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!compute\-Bottom\-Plate\-Cuts@{compute\-Bottom\-Plate\-Cuts}} -\index{compute\-Bottom\-Plate\-Cuts@{compute\-Bottom\-Plate\-Cuts}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{compute\-Bottom\-Plate\-Cuts}]{\setlength{\rightskip}{0pt plus 5cm}def compute\-Bottom\-Plate\-Cuts ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a8f71111f71d084f05742fadf134cb87e} - - -Computes needed parameters to draw bottom plate cuts in its exact position, including \-: - - -\begin{DoxyItemize} -\item maximum number of cuts to draw on both sides of bottom plate, -\item adjusted enclosure of -\item abcissas of the two bottom cuts on left and right sides of bottom plate, -\item ordinate of the same two cuts. -\end{DoxyItemize} - -Given parameters described above, it is possible to draw the entire lines of cuts on both sides of bottom plate using {\ttfamily cut\-Line} function. - -References Capacitor\-Unit.\-bottom\-Cut\-Line\-Number, Capacitor\-Unit.\-bottom\-Plate\-Box\-Dict, Capacitor\-Unit.\-cut\-Left\-Line\-Dict, Capacitor\-Unit.\-cut\-Max\-Number(), Capacitor\-Unit.\-cut\-Right\-Line\-Dict, Capacitor\-Unit.\-min\-Enclo\-\_\-bot\-Plate\-\_\-bot\-Plate\-Cut, Capacitor\-Unit.\-minheight\-\_\-top\-Platecut, Capacitor\-Unit.\-min\-Spacing\-\_\-bot\-Plate\-Cut\-\_\-top\-Plate, Capacitor\-Unit.\-min\-Spacing\-On\-Bot\-Plate\-\_\-cut, Capacitor\-Unit.\-min\-Width\-\_\-top\-Platecut, and Capacitor\-Unit.\-top\-Plate\-Box\-Dict. - - - -Referenced by Capacitor\-Unit.\-draw\-Abutment\-Box(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aceb634d48d79f2079c690297c820da0b}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!compute\-Top\-Plate\-Cuts@{compute\-Top\-Plate\-Cuts}} -\index{compute\-Top\-Plate\-Cuts@{compute\-Top\-Plate\-Cuts}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{compute\-Top\-Plate\-Cuts}]{\setlength{\rightskip}{0pt plus 5cm}def compute\-Top\-Plate\-Cuts ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aceb634d48d79f2079c690297c820da0b} - - -Computes needed parameters to draw top plate cuts in its exact position, including \-: - - -\begin{DoxyItemize} -\item maximum number of cuts to draw on both sides of top plate, -\item adjusted enclosure of -\item abcissas of the two top cuts on left and right sides of top plate, -\item ordinate of the same two cuts. -\end{DoxyItemize} - -Given parameters described above, it is possible to draw the entire lines of cuts on both sides of bottom plate using {\ttfamily cut\-Line} function. - -References Capacitor\-Unit.\-abutment\-Box\-Dict, Capacitor\-Unit.\-bottom\-Plate\-Box\-Dict, Capacitor\-Unit.\-bottom\-Plate\-R\-Layer\-Dict, Capacitor\-Unit.\-capacitor\-Type, Capacitor\-Unit.\-cut2\-Matrix\-Dict, Capacitor\-Unit.\-cut\-Left\-Line\-Dict, Capacitor\-Unit.\-cut\-Max\-Number(), Capacitor\-Unit.\-cut\-Right\-Line\-Dict, Capacitor\-Unit.\-enclosure\-\_\-bot\-Plate\-\_\-top\-Plate, Capacitor\-Unit.\-h\-Enclosure\-\_\-bot\-Plate\-\_\-abt\-Box, Capacitor\-Unit.\-min\-Enclo\-\_\-bot\-Plate\-\_\-bot\-Plate\-Cut, Capacitor\-Unit.\-min\-Enclo\-\_\-bot\-Plate\-R\-Metal\-\_\-bot\-Plate\-Cut, Capacitor\-Unit.\-min\-Enclo\-\_\-routing\-Track\-Metal\-\_\-cut, Capacitor\-Unit.\-min\-Enclo\-\_\-top\-Plate\-\_\-top\-Plate\-Cut, Capacitor\-Unit.\-min\-Enclo\-\_\-top\-Plate\-R\-Metal\-\_\-top\-Plate\-Cut, Capacitor\-Unit.\-minheight\-\_\-top\-Platecut, Capacitor\-Unit.\-min\-Spacing\-\_\-bot\-Plate, Capacitor\-Unit.\-min\-Spacing\-\_\-bot\-Plate\-Cut\-\_\-top\-Plate, Capacitor\-Unit.\-min\-Spacing\-On\-Top\-Plate\-\_\-cut, Capacitor\-Unit.\-min\-Width\-\_\-bot\-Platecut, Capacitor\-Unit.\-min\-Width\-\_\-bot\-R\-Metal, Capacitor\-Unit.\-min\-Width\-\_\-routing\-Trackcut, Capacitor\-Unit.\-min\-Width\-\_\-top\-Platecut, Capacitor\-Unit.\-set\-Bottom\-Plate\-Abt\-Box\-Enclosure(), Capacitor\-Unit.\-top\-Cut\-Line\-Dict, Capacitor\-Unit.\-top\-Cut\-Line\-Number, Capacitor\-Unit.\-top\-Plate\-Box\-Dict, Capacitor\-Unit.\-top\-Plate\-R\-Layer\-Dict, and Capacitor\-Unit.\-v\-Enclosure\-\_\-bot\-Plate\-\_\-abt\-Box. - - - -Referenced by Capacitor\-Unit.\-draw\-Abutment\-Box(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ac5cd73be473bc321a29a75311f808835}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!draw\-Abutment\-Box@{draw\-Abutment\-Box}} -\index{draw\-Abutment\-Box@{draw\-Abutment\-Box}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{draw\-Abutment\-Box}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Abutment\-Box ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ac5cd73be473bc321a29a75311f808835} - - -Draws the abutment box of the capacitor in position {\ttfamily $<$}(abutment\-Box\-X\-Min, abutment\-Box\-Y\-Min)$>$. - -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 Capacitor\-Unit.\-abutment\-Box, Capacitor\-Unit.\-abutment\-Box\-Dict, Capacitor\-Unit.\-bottom\-Plate\-Box\-Dict, Capacitor\-Unit.\-compute\-Abutment\-Box\-Dimensions(), Capacitor\-Unit.\-compute\-Bottom\-Plate\-Cuts(), Capacitor\-Unit.\-compute\-One\-Plate\-Box\-Dimensions(), Capacitor\-Unit.\-compute\-Routing\-Layers\-Dimensions(), Capacitor\-Unit.\-compute\-Top\-Plate\-Cuts(), Capacitor\-Unit.\-enclosure\-\_\-bot\-Plate\-\_\-top\-Plate, Capacitor\-Unit.\-h\-Enclosure\-\_\-bot\-Plate\-\_\-abt\-Box, Capacitor\-Unit.\-top\-Plate\-Box\-Dict, and Capacitor\-Unit.\-v\-Enclosure\-\_\-bot\-Plate\-\_\-abt\-Box. - - - -Referenced by Capacitor\-Stack.\-create(), and Capacitor\-Unit.\-create(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7b4116e4696b869f462d86b1ddf00246}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!draw\-One\-Plate@{draw\-One\-Plate}} -\index{draw\-One\-Plate@{draw\-One\-Plate}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{draw\-One\-Plate}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-One\-Plate ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{layer, } -\item[{}]{net, } -\item[{}]{box\-Dimensions} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7b4116e4696b869f462d86b1ddf00246} - - -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. \begin{DoxyReturn}{Returns} -The drawn box. -\end{DoxyReturn} - - -Referenced by Capacitor\-Unit.\-draw\-Capacitor(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a1a998a3072560eaee998c9e5531a5f5b}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!draw\-Bottom\-Plate\-Cut@{draw\-Bottom\-Plate\-Cut}} -\index{draw\-Bottom\-Plate\-Cut@{draw\-Bottom\-Plate\-Cut}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{draw\-Bottom\-Plate\-Cut}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Bottom\-Plate\-Cut ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{layer, } -\item[{}]{b} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a1a998a3072560eaee998c9e5531a5f5b} - - -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. \begin{DoxyParagraph}{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. -\end{DoxyParagraph} - - -References Capacitor\-Unit.\-bottom\-Cut\-Line\-Number, Capacitor\-Unit.\-cut\-Left\-Line\-Dict, Capacitor\-Unit.\-cut\-Line(), Capacitor\-Unit.\-cut\-Right\-Line\-Dict, Capacitor\-Unit.\-minheight\-\_\-top\-Platecut, Capacitor\-Unit.\-min\-Spacing\-On\-Bot\-Plate\-\_\-cut, and Capacitor\-Unit.\-min\-Width\-\_\-bot\-Platecut. - - - -Referenced by Capacitor\-Unit.\-draw\-Capacitor(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a8d4cd239412ffde81f0cda52123b9c1d}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!draw\-Top\-Plate\-Cut@{draw\-Top\-Plate\-Cut}} -\index{draw\-Top\-Plate\-Cut@{draw\-Top\-Plate\-Cut}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{draw\-Top\-Plate\-Cut}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Top\-Plate\-Cut ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{layer, } -\item[{}]{t} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a8d4cd239412ffde81f0cda52123b9c1d} - - -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 Capacitor\-Unit.\-capacitor\-Type, Capacitor\-Unit.\-cut2\-Matrix\-Dict, Capacitor\-Unit.\-cut\-Line(), Capacitor\-Unit.\-cut\-Matrix(), Capacitor\-Unit.\-minheight\-\_\-top\-Platecut, Capacitor\-Unit.\-min\-Spacing\-On\-Top\-Plate\-\_\-cut, Capacitor\-Unit.\-min\-Width\-\_\-top\-Platecut, Capacitor\-Unit.\-top\-Cut\-Line\-Dict, and Capacitor\-Unit.\-top\-Cut\-Line\-Number. - - - -Referenced by Capacitor\-Unit.\-draw\-Capacitor(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a444cc6c0ee175ba22b5092d0706bc0d6}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!draw\-Routing\-Layers@{draw\-Routing\-Layers}} -\index{draw\-Routing\-Layers@{draw\-Routing\-Layers}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{draw\-Routing\-Layers}]{\setlength{\rightskip}{0pt plus 5cm}def draw\-Routing\-Layers ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{bottom\-Plate\-Layer, } -\item[{}]{top\-Plate\-Layer, } -\item[{}]{t, } -\item[{}]{b} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a444cc6c0ee175ba22b5092d0706bc0d6} - - -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 Capacitor\-Unit.\-bottom\-Plate\-R\-Layer\-Dict, Capacitor\-Unit.\-cut\-Left\-Line\-Dict, Capacitor\-Unit.\-cut\-Right\-Line\-Dict, and Capacitor\-Unit.\-top\-Plate\-R\-Layer\-Dict. - - - -Referenced by Capacitor\-Unit.\-draw\-Capacitor(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a5c03a894501e69f2e6a6d40e93df8ef2}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!cut\-Max\-Number@{cut\-Max\-Number}} -\index{cut\-Max\-Number@{cut\-Max\-Number}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{cut\-Max\-Number}]{\setlength{\rightskip}{0pt plus 5cm}def cut\-Max\-Number ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{width\-\_\-layer, } -\item[{}]{width\-\_\-cut, } -\item[{}]{spacing\-\_\-cut, } -\item[{}]{enclosure\-\_\-cut} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a5c03a894501e69f2e6a6d40e93df8ef2} - - -Computes the maximal number of cuts to be placed on a layer of width {\ttfamily width\-\_\-layer} considering specifications such as the spacing between the cuts, its width and its enclosure in the layer. - - - -Referenced by Capacitor\-Unit.\-compute\-Bottom\-Plate\-Cuts(), and Capacitor\-Unit.\-compute\-Top\-Plate\-Cuts(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a95ebae95cc0be711de5adbb1faa85f98}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!cut\-Line@{cut\-Line}} -\index{cut\-Line@{cut\-Line}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{cut\-Line}]{\setlength{\rightskip}{0pt plus 5cm}def cut\-Line ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{net, } -\item[{}]{layer, } -\item[{}]{first\-Cut\-X\-Center, } -\item[{}]{first\-Cut\-Y\-Center, } -\item[{}]{width\-\_\-cut, } -\item[{}]{height\-\_\-cut, } -\item[{}]{spacing\-\_\-cut, } -\item[{}]{cut\-Number, } -\item[{}]{direction} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a95ebae95cc0be711de5adbb1faa85f98} - - -Creates a horizontal or vertical line of contacts according to the specified direction. - - - -Referenced by Capacitor\-Unit.\-cut\-Matrix(), Capacitor\-Unit.\-draw\-Bottom\-Plate\-Cut(), and Capacitor\-Unit.\-draw\-Top\-Plate\-Cut(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a4b8fe45cf122a2682cd8120bcbc5e5fd}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!cut\-Matrix@{cut\-Matrix}} -\index{cut\-Matrix@{cut\-Matrix}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{cut\-Matrix}]{\setlength{\rightskip}{0pt plus 5cm}def cut\-Matrix ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{net, } -\item[{}]{layer, } -\item[{}]{first\-Cut\-X\-Center, } -\item[{}]{first\-Cut\-Y\-Center, } -\item[{}]{width\-\_\-cut, } -\item[{}]{height\-\_\-cut, } -\item[{}]{spacing\-\_\-cut, } -\item[{}]{cut\-Column\-Number, } -\item[{}]{cut\-Row\-Number} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a4b8fe45cf122a2682cd8120bcbc5e5fd} - - -Creates a matrix of cuts by vertically stacking horizontal lines of identical cuts. - - -\begin{DoxyParams}{Parameters} -{\em net} & net to which the cuts belong \\ -\hline -{\em layer} & cuts physical layer \\ -\hline -{\em first\-Cut\-X\-Center} & center's abcissa of the bottom left cut ( that is the first cut to be drawn in the matrix ) \\ -\hline -{\em first\-Cut\-Y\-Center} & center's abcissa of the bottom left cut \\ -\hline -{\em (width\-\_\-cut,height\-\_\-cut,spacing\-\_\-cut)} & cuts dimenions \\ -\hline -{\em (cut\-Column\-Number,cut\-Row\-Number)} & matrix dimensions\\ -\hline -\end{DoxyParams} -\begin{DoxyRemark}{Remarks} -The matrix can have any dimensions zero or negative one. -\end{DoxyRemark} - - -References Capacitor\-Unit.\-cut\-Line(). - - - -Referenced by Capacitor\-Unit.\-draw\-Top\-Plate\-Cut(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a876d31edaaabe0716d6fbe6f6c0c7b75}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bottom\-Plate\-Y\-Max@{get\-Bottom\-Plate\-Y\-Max}} -\index{get\-Bottom\-Plate\-Y\-Max@{get\-Bottom\-Plate\-Y\-Max}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bottom\-Plate\-Y\-Max}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bottom\-Plate\-Y\-Max ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a876d31edaaabe0716d6fbe6f6c0c7b75} -\begin{DoxyReturn}{Returns} -the ordinate of the bottom plate's highest end-\/point ( that is equivalent to {\ttfamily dy\-Source} of the bottom plate's box ) . -\end{DoxyReturn} - - -References Capacitor\-Unit.\-bottom\-Plate\-Box\-Dict. - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae461baa28fdfa09bad07b3f1073a46b7}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bottom\-Plate\-Left\-Cut\-X\-Min@{get\-Bottom\-Plate\-Left\-Cut\-X\-Min}} -\index{get\-Bottom\-Plate\-Left\-Cut\-X\-Min@{get\-Bottom\-Plate\-Left\-Cut\-X\-Min}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bottom\-Plate\-Left\-Cut\-X\-Min}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bottom\-Plate\-Left\-Cut\-X\-Min ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae461baa28fdfa09bad07b3f1073a46b7} -\begin{DoxyReturn}{Returns} -the abcissa of the bottom plate's left line of cuts. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aae1849792395fccc12e921450a29980b}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bottom\-Plate\-Left\-Cut\-Y\-Min@{get\-Bottom\-Plate\-Left\-Cut\-Y\-Min}} -\index{get\-Bottom\-Plate\-Left\-Cut\-Y\-Min@{get\-Bottom\-Plate\-Left\-Cut\-Y\-Min}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bottom\-Plate\-Left\-Cut\-Y\-Min}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bottom\-Plate\-Left\-Cut\-Y\-Min ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aae1849792395fccc12e921450a29980b} -\begin{DoxyReturn}{Returns} -the ordinate of the first ( or bottom) cut in the left line of cuts on the bottom plate. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a2f7b75e47a238defa63e04c75e0be016}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bottom\-Plate\-Left\-Cut\-Y\-Max@{get\-Bottom\-Plate\-Left\-Cut\-Y\-Max}} -\index{get\-Bottom\-Plate\-Left\-Cut\-Y\-Max@{get\-Bottom\-Plate\-Left\-Cut\-Y\-Max}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bottom\-Plate\-Left\-Cut\-Y\-Max}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bottom\-Plate\-Left\-Cut\-Y\-Max ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a2f7b75e47a238defa63e04c75e0be016} -\begin{DoxyReturn}{Returns} -the ordinate of the highest cut of the bottom plate's left line of cuts. -\end{DoxyReturn} - - -References Capacitor\-Unit.\-bottom\-Cut\-Line\-Number, Capacitor\-Unit.\-min\-Spacing\-On\-Bot\-Plate\-\_\-cut, and Capacitor\-Unit.\-min\-Width\-\_\-bot\-Platecut. - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a9e59fed4e9829bac60edbd38195cdd90}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bottom\-Plate\-Right\-Cut\-X\-Min@{get\-Bottom\-Plate\-Right\-Cut\-X\-Min}} -\index{get\-Bottom\-Plate\-Right\-Cut\-X\-Min@{get\-Bottom\-Plate\-Right\-Cut\-X\-Min}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bottom\-Plate\-Right\-Cut\-X\-Min}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bottom\-Plate\-Right\-Cut\-X\-Min ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a9e59fed4e9829bac60edbd38195cdd90} -\begin{DoxyReturn}{Returns} -the absissa of the bottom plate's right line of cuts. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a0e362c0f80ab5a70fa3e4139d0009ef1}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bottom\-Plate\-Right\-Cut\-Y\-Min@{get\-Bottom\-Plate\-Right\-Cut\-Y\-Min}} -\index{get\-Bottom\-Plate\-Right\-Cut\-Y\-Min@{get\-Bottom\-Plate\-Right\-Cut\-Y\-Min}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bottom\-Plate\-Right\-Cut\-Y\-Min}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bottom\-Plate\-Right\-Cut\-Y\-Min ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a0e362c0f80ab5a70fa3e4139d0009ef1} -\begin{DoxyReturn}{Returns} -the ordinate of the first ( or bottom) cut in the right line of cuts on the bottom plate. -\end{DoxyReturn} - - -Referenced by Capacitor\-Unit.\-get\-Bottom\-Plate\-Right\-Cut\-Y\-Center(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae31425a5f9b3d7a0829c1abc454e2834}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bottom\-Plate\-Right\-Cut\-Y\-Max@{get\-Bottom\-Plate\-Right\-Cut\-Y\-Max}} -\index{get\-Bottom\-Plate\-Right\-Cut\-Y\-Max@{get\-Bottom\-Plate\-Right\-Cut\-Y\-Max}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bottom\-Plate\-Right\-Cut\-Y\-Max}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bottom\-Plate\-Right\-Cut\-Y\-Max ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae31425a5f9b3d7a0829c1abc454e2834} -\begin{DoxyReturn}{Returns} -the ordinate of the highest ( or top) cut in the right line of cuts on the bottom plate. -\end{DoxyReturn} - - -References Capacitor\-Unit.\-bottom\-Cut\-Line\-Number, Capacitor\-Unit.\-min\-Spacing\-On\-Bot\-Plate\-\_\-cut, and Capacitor\-Unit.\-min\-Width\-\_\-bot\-Platecut. - - - -Referenced by Capacitor\-Unit.\-get\-Bottom\-Plate\-Right\-Cut\-Y\-Center(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae3887820ee80da10f77b451e5f068635}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bot\-Plate\-Left\-R\-Layer\-X\-Max@{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Max}} -\index{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Max@{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Max}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Max}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bot\-Plate\-Left\-R\-Layer\-X\-Max ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_ae3887820ee80da10f77b451e5f068635} -\begin{DoxyReturn}{Returns} -the center's ordinate of the bottom plate's left cut (the cut that is the first one in the line). -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a2d9186515736c9fd74725eca251f6e2b}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bottom\-Plate\-Right\-Cut\-Y\-Center@{get\-Bottom\-Plate\-Right\-Cut\-Y\-Center}} -\index{get\-Bottom\-Plate\-Right\-Cut\-Y\-Center@{get\-Bottom\-Plate\-Right\-Cut\-Y\-Center}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bottom\-Plate\-Right\-Cut\-Y\-Center}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bottom\-Plate\-Right\-Cut\-Y\-Center ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a2d9186515736c9fd74725eca251f6e2b} -\begin{DoxyReturn}{Returns} -the position of the bottom plate's right cuts on the horitontal axis (also applicable to left cuts). -\end{DoxyReturn} - - -References Capacitor\-Unit.\-get\-Bottom\-Plate\-Right\-Cut\-Y\-Max(), and Capacitor\-Unit.\-get\-Bottom\-Plate\-Right\-Cut\-Y\-Min(). - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a52e8ea7265119216e234eab32bc542ef}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bot\-Plate\-Left\-R\-Layer\-X\-Min@{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Min}} -\index{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Min@{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Min}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Min}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bot\-Plate\-Left\-R\-Layer\-X\-Min ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a52e8ea7265119216e234eab32bc542ef} -\begin{DoxyReturn}{Returns} -the position of the bottom plate's left cuts on the horitontal axis. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a2f87580a615f6b0450d43a032adf81d5}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bot\-Plate\-R\-Layer\-Y\-Min@{get\-Bot\-Plate\-R\-Layer\-Y\-Min}} -\index{get\-Bot\-Plate\-R\-Layer\-Y\-Min@{get\-Bot\-Plate\-R\-Layer\-Y\-Min}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bot\-Plate\-R\-Layer\-Y\-Min}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bot\-Plate\-R\-Layer\-Y\-Min ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a2f87580a615f6b0450d43a032adf81d5} -\begin{DoxyReturn}{Returns} -the position of bottom plate's left cuts on the horitontal axis. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aa6cb9e5f6ba2d4e4ce5f63ca1d785e7e}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bot\-Plate\-R\-Layer\-Y\-Max@{get\-Bot\-Plate\-R\-Layer\-Y\-Max}} -\index{get\-Bot\-Plate\-R\-Layer\-Y\-Max@{get\-Bot\-Plate\-R\-Layer\-Y\-Max}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bot\-Plate\-R\-Layer\-Y\-Max}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bot\-Plate\-R\-Layer\-Y\-Max ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aa6cb9e5f6ba2d4e4ce5f63ca1d785e7e} -\begin{DoxyReturn}{Returns} -the position of bottom plate's left cuts on the horitontal axis. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a3463504463c87fb7aab28ca04597c169}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bot\-Plate\-R\-Layer\-Width@{get\-Bot\-Plate\-R\-Layer\-Width}} -\index{get\-Bot\-Plate\-R\-Layer\-Width@{get\-Bot\-Plate\-R\-Layer\-Width}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bot\-Plate\-R\-Layer\-Width}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bot\-Plate\-R\-Layer\-Width ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a3463504463c87fb7aab28ca04597c169} -\begin{DoxyReturn}{Returns} -the position of bottom plate's left cuts on the horitontal axis. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aff2f6d078abdcf0d679aa9b697928f34}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bot\-Plate\-Right\-R\-Layer\-X\-Center@{get\-Bot\-Plate\-Right\-R\-Layer\-X\-Center}} -\index{get\-Bot\-Plate\-Right\-R\-Layer\-X\-Center@{get\-Bot\-Plate\-Right\-R\-Layer\-X\-Center}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bot\-Plate\-Right\-R\-Layer\-X\-Center}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bot\-Plate\-Right\-R\-Layer\-X\-Center ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aff2f6d078abdcf0d679aa9b697928f34} -\begin{DoxyReturn}{Returns} -the position of bottom plate's left cuts on the horitontal axis. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7440876afb0ff33ba0ee5cea4e9e0aed}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Bot\-Plate\-Left\-R\-Layer\-X\-Center@{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Center}} -\index{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Center@{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Center}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Bot\-Plate\-Left\-R\-Layer\-X\-Center}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Bot\-Plate\-Left\-R\-Layer\-X\-Center ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a7440876afb0ff33ba0ee5cea4e9e0aed} -\begin{DoxyReturn}{Returns} -the position of bottom plate's left cuts on the horitontal axis. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a836a7c11713aa3a08504a498b90fb5ee}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Top\-Plate\-R\-Layer\-Y\-Min@{get\-Top\-Plate\-R\-Layer\-Y\-Min}} -\index{get\-Top\-Plate\-R\-Layer\-Y\-Min@{get\-Top\-Plate\-R\-Layer\-Y\-Min}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Top\-Plate\-R\-Layer\-Y\-Min}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Top\-Plate\-R\-Layer\-Y\-Min ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a836a7c11713aa3a08504a498b90fb5ee} -\begin{DoxyReturn}{Returns} -the ordinate of the bottom end points of the top plate routing layer. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aea137748a99552369414fc5ffec3a41d}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Top\-Plate\-R\-Layer\-Y\-Max@{get\-Top\-Plate\-R\-Layer\-Y\-Max}} -\index{get\-Top\-Plate\-R\-Layer\-Y\-Max@{get\-Top\-Plate\-R\-Layer\-Y\-Max}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Top\-Plate\-R\-Layer\-Y\-Max}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Top\-Plate\-R\-Layer\-Y\-Max ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_aea137748a99552369414fc5ffec3a41d} -\begin{DoxyReturn}{Returns} -the ordinate of the higher end points of the top plate routing layer. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a9c1452c170eeb58d060bb5fe72fae5a9}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Top\-Plate\-R\-Layer\-Width@{get\-Top\-Plate\-R\-Layer\-Width}} -\index{get\-Top\-Plate\-R\-Layer\-Width@{get\-Top\-Plate\-R\-Layer\-Width}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Top\-Plate\-R\-Layer\-Width}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Top\-Plate\-R\-Layer\-Width ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a9c1452c170eeb58d060bb5fe72fae5a9} -\begin{DoxyReturn}{Returns} -the width of top plate's routing layer. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a295a807958d27c156f87102762d353d6}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Top\-Plate\-R\-Layer\-X\-Center@{get\-Top\-Plate\-R\-Layer\-X\-Center}} -\index{get\-Top\-Plate\-R\-Layer\-X\-Center@{get\-Top\-Plate\-R\-Layer\-X\-Center}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Top\-Plate\-R\-Layer\-X\-Center}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Top\-Plate\-R\-Layer\-X\-Center ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a295a807958d27c156f87102762d353d6} -\begin{DoxyReturn}{Returns} -the center's abcissa of the bottom plate routing layer. -\end{DoxyReturn} -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a28208011c71e1712625c1148a67d943c}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Top\-Plate\-R\-Layer\-X\-Min@{get\-Top\-Plate\-R\-Layer\-X\-Min}} -\index{get\-Top\-Plate\-R\-Layer\-X\-Min@{get\-Top\-Plate\-R\-Layer\-X\-Min}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Top\-Plate\-R\-Layer\-X\-Min}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Top\-Plate\-R\-Layer\-X\-Min ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a28208011c71e1712625c1148a67d943c} -\begin{DoxyReturn}{Returns} -the origin (bottom-\/left end point) abcissa of the top plate routing layers. -\end{DoxyReturn} - - -References Capacitor\-Unit.\-top\-Plate\-R\-Layer\-Dict. - -\hypertarget{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a9788696eb8f1cffde53de39c7f2ffcaa}{\index{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}!get\-Top\-Plate\-R\-Layer\-X\-Max@{get\-Top\-Plate\-R\-Layer\-X\-Max}} -\index{get\-Top\-Plate\-R\-Layer\-X\-Max@{get\-Top\-Plate\-R\-Layer\-X\-Max}!python::CapacitorUnit::CapacitorUnit@{python\-::\-Capacitor\-Unit\-::\-Capacitor\-Unit}} -\subsubsection[{get\-Top\-Plate\-R\-Layer\-X\-Max}]{\setlength{\rightskip}{0pt plus 5cm}def get\-Top\-Plate\-R\-Layer\-X\-Max ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1CapacitorUnit_1_1CapacitorUnit_a9788696eb8f1cffde53de39c7f2ffcaa} -\begin{DoxyReturn}{Returns} -the abscissa of the bottom-\/right end-\/point of the top plate routing layer. -\end{DoxyReturn} - - -References Capacitor\-Unit.\-top\-Plate\-R\-Layer\-Dict. - - - -The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize} -\item -Capacitor\-Unit.\-py\end{DoxyCompactItemize} diff --git a/oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 b/oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 deleted file mode 100644 index 026381df..00000000 --- a/oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -46c38f7f2276c4ba6a8cdf4389f24030 \ No newline at end of file diff --git a/oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.pdf b/oroshi/doc/latex/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.pdf deleted file mode 100644 index 962608b626366b35596d4f8ff5b48bde9ea960bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8219 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 F{{ggplWzb3 diff --git a/oroshi/doc/latex/classpython_1_1Stack_1_1Stack.tex b/oroshi/doc/latex/classpython_1_1Stack_1_1Stack.tex deleted file mode 100644 index 4c8b04cb..00000000 --- a/oroshi/doc/latex/classpython_1_1Stack_1_1Stack.tex +++ /dev/null @@ -1,222 +0,0 @@ -\hypertarget{classpython_1_1Stack_1_1Stack}{\section{Stack Class Reference} -\label{classpython_1_1Stack_1_1Stack}\index{Stack@{Stack}} -} - - -Draw a \hyperlink{classpython_1_1Stack_1_1Stack}{Stack} of Transistors. - - - - -Inherits object. - -\subsection*{Public Member Functions} -\begin{DoxyCompactItemize} -\item -def \hyperlink{classpython_1_1Stack_1_1Stack_ac775ee34451fdfa742b318538164070e}{\-\_\-\-\_\-init\-\_\-\-\_\-} -\begin{DoxyCompactList}\small\item\em {\bfseries \mbox{[}A\-P\-I\mbox{]}} Constructor \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1Stack_1_1Stack_ad7f0300aaad3ad8b2de70ae6c106c102}{set\-Wirings} -\begin{DoxyCompactList}\small\item\em {\bfseries \mbox{[}A\-P\-I\mbox{]}} Set the \hyperlink{classpython_1_1Stack_1_1Stack}{Stack} wiring specification. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1Stack_1_1Stack_a20b46b43488cc58c302b123a89299d85}{compute\-Dimensions} -\begin{DoxyCompactList}\small\item\em {\bfseries \mbox{[}internal\mbox{]}} Compute \hyperlink{classpython_1_1Stack_1_1Stack}{Stack} dimensions from the technological rules. \end{DoxyCompactList}\item -def \hyperlink{classpython_1_1Stack_1_1Stack_affc52c42a8c72dc1125ddce55647a6f9}{do\-Layout} -\begin{DoxyCompactList}\small\item\em {\bfseries \mbox{[}A\-P\-I\mbox{]}} Draw the complete layout. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Draw a \hyperlink{classpython_1_1Stack_1_1Stack}{Stack} of Transistors. - -A \hyperlink{classpython_1_1Stack_1_1Stack}{Stack} of Transistors is a set of transistor put into a regular band and connected through their sources/drains. All share the exact same W \& L. The way they are connecteds defines what functionnality the \hyperlink{classpython_1_1Stack_1_1Stack}{Stack} implement. - -The abutment box of the stack is adjusted so that both height and width are even multiples of the track pitches, so the device can be easily placed and handled by the mixed router. The extra space needed for padding is added around the active area. Due to the presence of tracks at the top and bottom of the stack, the active area will be horizontally centered but {\bfseries not} vertically. - -The drawing of the stack is controlled through a set of variables (attributes) that allows to create it regardless of the technology. The technology is taken into account in the way those variables are computed and, obviously, their values. The following schematics details the main stack drawing variables along with their computations.\hypertarget{classpython_1_1Stack_1_1Stack_secStackLayout}{}\subsection{Stack Layout}\label{classpython_1_1Stack_1_1Stack_secStackLayout} -\hypertarget{classpython_1_1Stack_1_1Stack_secGatePitch}{}\subsubsection{Gate pitch}\label{classpython_1_1Stack_1_1Stack_secGatePitch} - -\begin{DoxyItemize} -\item {\ttfamily self.\-gate\-Pitch} \-: the pitch of transistors gates, inside the stack. It also applies to dummy transistors. -\end{DoxyItemize} - - -\begin{DoxyImage} -\includegraphics[width=.9\linewidth]{gate-pitch-1} -\caption{Gate Pitch} -\end{DoxyImage} -\hypertarget{classpython_1_1Stack_1_1Stack_secActiveSideWidth}{}\subsubsection{Active Side Width}\label{classpython_1_1Stack_1_1Stack_secActiveSideWidth} - -\begin{DoxyItemize} -\item {\ttfamily self.\-active\-Side\-Width} \-: the distance between the axis of the last transistor gate (on the left or right) and the edge of the active area ({\itshape not} the diffusion area). -\end{DoxyItemize} - - -\begin{DoxyImage} -\includegraphics[width=.9\linewidth]{active-side-width-1} -\caption{Active Side Width} -\end{DoxyImage} -\hypertarget{classpython_1_1Stack_1_1Stack_secHTrackDistance}{}\subsubsection{H-\/\-Track Distance}\label{classpython_1_1Stack_1_1Stack_secHTrackDistance} - -\begin{DoxyItemize} -\item {\ttfamily self.\-h\-Track\-Distance} \-: the minimal distance between either the top or bottom edge of the active area and the {\itshape axis} of the first track. -\end{DoxyItemize} - - -\begin{DoxyImage} -\includegraphics[width=.9\linewidth]{htrack-distance-1} -\caption{H-\/\-Track distance} -\end{DoxyImage} -\hypertarget{classpython_1_1Stack_1_1Stack_secOverallVariables}{}\subsubsection{Bounding\-Box \& Overall Variables}\label{classpython_1_1Stack_1_1Stack_secOverallVariables} - -\begin{DoxyItemize} -\item {\ttfamily self.\-xpitches} \-: the number of vertical track pitches needed to fully enclose the active area. -\item {\ttfamily self.\-ypitches} \-: the number of horizontal track pitches needed to fully enclose the active area. -\item {\ttfamily self.\-active\-Offset\-X} \& {\ttfamily self.\-active\-Offset\-Y} \-: the offsets of the active area from the bottom left corner of the abutment box. -\item {\ttfamily self.\-diffusion\-Width} \& {\ttfamily self.\-diffusion\-Height} are the minimun dimensions required to fit the active area. -\item {\ttfamily self.\-top\-Tracks\-Nb()} \-: the number of tracks at the top of the stack. -\item {\ttfamily self.\-bot\-Tracks\-Nb()} \-: the number of tracks at the bottom of the stack. -\end{DoxyItemize} - - -\begin{DoxyImage} -\includegraphics[width=.9\linewidth]{stack-layout-3} -\caption{General Stack Layout} -\end{DoxyImage} -\hypertarget{classpython_1_1Stack_1_1Stack_secWiringSpecs}{}\subsection{Wiring Specifications}\label{classpython_1_1Stack_1_1Stack_secWiringSpecs} -\hyperlink{classpython_1_1Stack_1_1Stack}{Stack} routing is done through vertical {\ttfamily metal1} wires coming from the gates and diffusions areas and {\ttfamily metal2} horizontal wires that can be either above or below the active area. {\ttfamily metal2} wires (or track) goes through the whole stack and are assigned to one net only. A net will have at least one track above or below and may have both. - -The connections to the diffusions areas and gates of the various fingers are specified through a list. The stack is made of a regular alternation of diffusions and gates. The list tells, for each one starting from the left, to which net and track they are connected. For a stack of $NFs$ transistor fingers, the must wiring specification must contains $ 3 + (NFs-1) \times 2$ elements. The list is given through one {\itshape string} with each elements separated by one or more whitespace. The syntax for {\itshape one} element is detailed \hyperlink{classpython_1_1Stack_1_1Stack_secAtomicWiring}{Atomic Wiring Specification}. - -{\bfseries Track numbering scheme} - -Tracks above (top) the active area and below (bottom) each have their own numbering. In both case, the count start {\itshape from} the active area. This, the top tracks will be numbered by increasing Y and the bottom tracks by {\itshape decreasing} Y. - -{\bfseries Track/\-Net assignement} - -The track/net assignement is deduced from the atomic wiring specifications. It also allows to compute the total number of tracks needed above and below the active area. - - -\begin{DoxyImage} -\includegraphics[width=.9\linewidth]{wiring-spec-2} -\caption{Wiring Specification} -\end{DoxyImage} -\hypertarget{classpython_1_1Stack_1_1Stack_secAtomicWiring}{}\subsubsection{Atomic Wiring Specification}\label{classpython_1_1Stack_1_1Stack_secAtomicWiring} -An atomic wiring specification has the same syntax for either diffusions or gates. It {\itshape must} not comprise any whitespaces. it is made of the following parts\-: -\begin{DoxyItemize} -\item The net name to connect to. -\item Whether the track is above the active area ({\ttfamily \char`\"{}t\char`\"{}}) or below ({\ttfamily \char`\"{}b\char`\"{}}). The special case ({\ttfamily \char`\"{}z\char`\"{}}) means that this element must be left unconnected (is such case possible?). -\item The number of the track. -\end{DoxyItemize} - - -\begin{DoxyImage} -\includegraphics[width=.4\linewidth]{wiring-spec-1} -\caption{Atomic Wiring Specification} -\end{DoxyImage} -\hypertarget{classpython_1_1Stack_1_1Stack_secStackImplDetails}{}\subsection{Stack Implementation Details}\label{classpython_1_1Stack_1_1Stack_secStackImplDetails} -The {\ttfamily \-\_\-\-\_\-setattr\-\_\-\-\_\-()} and {\ttfamily \-\_\-\-\_\-getattr\-\_\-\-\_\-} functions have been redefined so that the technological values (rules) can be accessed has normal attributes of the \hyperlink{classpython_1_1Stack_1_1Stack}{Stack} class, in addition to the regular ones. - -\subsection{Constructor \& Destructor Documentation} -\hypertarget{classpython_1_1Stack_1_1Stack_ac775ee34451fdfa742b318538164070e}{\index{python\-::\-Stack\-::\-Stack@{python\-::\-Stack\-::\-Stack}!\-\_\-\-\_\-init\-\_\-\-\_\-@{\-\_\-\-\_\-init\-\_\-\-\_\-}} -\index{\-\_\-\-\_\-init\-\_\-\-\_\-@{\-\_\-\-\_\-init\-\_\-\-\_\-}!python::Stack::Stack@{python\-::\-Stack\-::\-Stack}} -\subsubsection[{\-\_\-\-\_\-init\-\_\-\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}def \-\_\-\-\_\-init\-\_\-\-\_\- ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{device, } -\item[{}]{N\-E\-R\-C, } -\item[{}]{N\-I\-R\-C} -\end{DoxyParamCaption} -)}}\label{classpython_1_1Stack_1_1Stack_ac775ee34451fdfa742b318538164070e} - - -{\bfseries \mbox{[}A\-P\-I\mbox{]}} Constructor - -param rules The physical rule set. -\begin{DoxyParams}{Parameters} -{\em device} & The {\bf Hurricane} A\-M\-S device into which the layout will be drawn. \\ -\hline -{\em N\-E\-R\-C} & Number of contact rows in external (first \& last) diffusion connectors. \\ -\hline -{\em N\-I\-R\-C} & Number of contact rows in middle diffusion connectors. param w The {\bfseries width} of every transistor of the stack (aka {\itshape fingers}). param L The {\bfseries length} of every transistor. param N\-Fs The total number of fingers (dummies includeds). param N\-Ds The number of dummies to put on each side of the stack. \\ -\hline -\end{DoxyParams} - - -References Stack.\-b\-Implant\-Layer, Stack.\-bot\-Tracks, Stack.\-bot\-W\-Tracks, Stack.\-bulk\-Net, Stack.\-bulks, Stack.\-device, Stack.\-dimensioned, Bulk.\-flags, Stack.\-flags, Stack.\-is\-Nmos(), Stack.\-L, Stack.\-meta\-Tnb(), Stack.\-meta\-Transistors, Stack.\-N\-Ds, Stack.\-N\-E\-R\-C, Stack.\-N\-Fs, Stack.\-N\-I\-R\-C, Stack.\-t\-Implant\-Layer, Stack.\-top\-Tracks, Stack.\-top\-W\-Tracks, Stack.\-w, Stack.\-well\-Layer, and Stack.\-wirings. - - - -\subsection{Member Function Documentation} -\hypertarget{classpython_1_1Stack_1_1Stack_ad7f0300aaad3ad8b2de70ae6c106c102}{\index{python\-::\-Stack\-::\-Stack@{python\-::\-Stack\-::\-Stack}!set\-Wirings@{set\-Wirings}} -\index{set\-Wirings@{set\-Wirings}!python::Stack::Stack@{python\-::\-Stack\-::\-Stack}} -\subsubsection[{set\-Wirings}]{\setlength{\rightskip}{0pt plus 5cm}def set\-Wirings ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{wiring\-Spec} -\end{DoxyParamCaption} -)}}\label{classpython_1_1Stack_1_1Stack_ad7f0300aaad3ad8b2de70ae6c106c102} - - -{\bfseries \mbox{[}A\-P\-I\mbox{]}} Set the \hyperlink{classpython_1_1Stack_1_1Stack}{Stack} wiring specification. - - -\begin{DoxyParams}{Parameters} -{\em wiring\-Spec} & A string defining the connections for the gates and diffusion areas.\\ -\hline -\end{DoxyParams} -For a comprehensive explanation of the wiring specification, refers to \hyperlink{classpython_1_1Stack_1_1Stack_secWiringSpecs}{Wiring Specifications} . - -References Stack.\-bot\-Tracks, Stack.\-bot\-Tracks\-Nb(), Stack.\-bot\-W\-Tracks, Stack.\-bulk\-Net, Stack.\-compute\-Dimensions(), Stack.\-device, Stack.\-dimensioned, Stack.\-e\-Diff\-Metal1\-Width, Bulk.\-flags, Stack.\-flags, Stack.\-gate\-Pitch, Stack.\-get\-Bot\-Track\-Y(), Stack.\-get\-Horizontal\-Width(), Stack.\-hor\-Pitch, Stack.\-L, Stack.\-metal1\-To\-Gate, Stack.\-meta\-Transistors, Stack.\-side\-Active\-Width, Stack.\-top\-Tracks, Stack.\-top\-Tracks\-Nb(), Stack.\-top\-W\-Tracks, Stack.\-wirings, and Stack.\-ypitches. - -\hypertarget{classpython_1_1Stack_1_1Stack_a20b46b43488cc58c302b123a89299d85}{\index{python\-::\-Stack\-::\-Stack@{python\-::\-Stack\-::\-Stack}!compute\-Dimensions@{compute\-Dimensions}} -\index{compute\-Dimensions@{compute\-Dimensions}!python::Stack::Stack@{python\-::\-Stack\-::\-Stack}} -\subsubsection[{compute\-Dimensions}]{\setlength{\rightskip}{0pt plus 5cm}def compute\-Dimensions ( -\begin{DoxyParamCaption} -\item[{}]{self} -\end{DoxyParamCaption} -)}}\label{classpython_1_1Stack_1_1Stack_a20b46b43488cc58c302b123a89299d85} - - -{\bfseries \mbox{[}internal\mbox{]}} Compute \hyperlink{classpython_1_1Stack_1_1Stack}{Stack} dimensions from the technological rules. - -{\bfseries Internal function.} Perform the computation of\-: -\begin{DoxyItemize} -\item {\ttfamily self.\-metal1\-Pitch} -\item {\ttfamily self.\-min\-Width\-\_\-metal1} -\item {\ttfamily self.\-metal2\-Pitch} -\item {\ttfamily self.\-min\-Width\-\_\-metal2} -\item {\ttfamily self.\-gate\-Pitch} -\item {\ttfamily self.\-side\-Active\-Width} -\item {\ttfamily self.\-h\-Track\-Distance} -\item {\ttfamily self.\-xpitches} -\item {\ttfamily self.\-ypitches} -\item {\ttfamily self.\-active\-Offset\-X} -\item {\ttfamily self.\-active\-Offset\-Y} -\item {\ttfamily self.\-bounding\-Box} -\end{DoxyItemize} - -References Stack.\-active\-Box, Stack.\-active\-Offset\-X, Stack.\-active\-Offset\-Y, Stack.\-bb\-Height, Stack.\-bb\-Width, Stack.\-bot\-W\-Tracks, Stack.\-bounding\-Box, Stack.\-bulks, Stack.\-bulk\-Width, Stack.\-compute\-Layout\-Parasitics(), Stack.\-compute\-Stress\-Effect(), Stack.\-contact\-Diff\-Pitch, Stack.\-contact\-Diff\-Side, Stack.\-D\-G\-G, Stack.\-D\-G\-I, Stack.\-dimensioned, Stack.\-D\-M\-C\-G, Stack.\-D\-M\-C\-G\-T, Stack.\-D\-M\-C\-I, Stack.\-e\-Diff\-Metal1\-Width, Bulk.\-flags, Stack.\-flags, Stack.\-gate\-Pitch, Stack.\-gate\-Via1\-Pitch, Stack.\-get\-Bot\-Track\-Y(), Stack.\-get\-Horizontal\-Width(), Stack.\-get\-Last\-Top\-Track\-Y(), Stack.\-hor\-Pitch, Stack.\-h\-Track\-Distance, Stack.\-i\-Diff\-Metal1\-Width, Stack.\-is\-V\-H, Stack.\-L, Stack.\-metal1\-To\-Gate, Stack.\-metal2\-Pitch, Stack.\-metal2\-Techno\-Pitch, Stack.\-metal3\-Pitch, Stack.\-N\-E\-R\-C, Stack.\-N\-Fs, Stack.\-N\-I\-R\-C, Stack.\-side\-Active\-Width, Stack.\-tracks\-Nb\-Pitch(), Stack.\-v\-Bulk\-Distance, Stack.\-ver\-Pitch, Stack.\-w, Stack.\-wire1\-Width, Stack.\-wire2\-Width, Stack.\-wire3\-Width, Stack.\-wirings, Stack.\-xpitches, and Stack.\-ypitches. - - - -Referenced by Capacitor\-Unit.\-create(), Stack.\-do\-Layout(), Rout\-Matched\-Capacitor.\-route(), and Stack.\-set\-Wirings(). - -\hypertarget{classpython_1_1Stack_1_1Stack_affc52c42a8c72dc1125ddce55647a6f9}{\index{python\-::\-Stack\-::\-Stack@{python\-::\-Stack\-::\-Stack}!do\-Layout@{do\-Layout}} -\index{do\-Layout@{do\-Layout}!python::Stack::Stack@{python\-::\-Stack\-::\-Stack}} -\subsubsection[{do\-Layout}]{\setlength{\rightskip}{0pt plus 5cm}def do\-Layout ( -\begin{DoxyParamCaption} -\item[{}]{self, } -\item[{}]{bb\-Mode} -\end{DoxyParamCaption} -)}}\label{classpython_1_1Stack_1_1Stack_affc52c42a8c72dc1125ddce55647a6f9} - - -{\bfseries \mbox{[}A\-P\-I\mbox{]}} Draw the complete layout. - -Draw the commplete layout of the \hyperlink{classpython_1_1Stack_1_1Stack}{Stack}. - -References Stack.\-active\-Offset\-X, Stack.\-active\-Offset\-Y, Stack.\-bb\-Width, Stack.\-bot\-Tracks, Stack.\-bot\-W\-Tracks, Stack.\-bounding\-Box, Stack.\-bulk\-Net, Stack.\-bulks, Stack.\-bulk\-Width, Stack.\-compute\-Dimensions(), Stack.\-contact\-Diff\-Pitch, Stack.\-device, Stack.\-D\-G\-G, Stack.\-D\-G\-I, Stack.\-D\-M\-C\-G, Stack.\-D\-M\-C\-G\-T, Stack.\-D\-M\-C\-I, Stack.\-draw\-Active(), Stack.\-draw\-Gate(), Stack.\-draw\-Source\-Drain(), Stack.\-draw\-Well(), Stack.\-e\-Diff\-Metal1\-Width, Bulk.\-flags, Stack.\-flags, Stack.\-gate\-Pitch, Stack.\-gate\-Via1\-Pitch, Stack.\-get\-Bot\-Track\-Y(), Stack.\-get\-Horizontal\-Axis(), Stack.\-get\-Horizontal\-Width(), Stack.\-get\-Top\-Track\-Y(), Stack.\-get\-Wiring\-Width(), Stack.\-hor\-Pitch, Stack.\-i\-Diff\-Metal1\-Width, Stack.\-is\-Bot\-Track(), Stack.\-is\-V\-H, Stack.\-L, Stack.\-metal1\-To\-Gate, Stack.\-N\-E\-R\-C, Stack.\-N\-Fs, Stack.\-N\-I\-R\-C, Stack.\-side\-Active\-Width, Stack.\-t\-Implant\-Layer, Stack.\-top\-Tracks, Stack.\-top\-W\-Tracks, Stack.\-w, Stack.\-well\-Layer, Stack.\-wire1\-Width, Stack.\-wire2\-Width, Stack.\-wire3\-Width, and Stack.\-wirings. - - - -The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize} -\item -Stack.\-py\end{DoxyCompactItemize} diff --git a/oroshi/doc/man/man3/python_CapacitorMatrix_CapacitorStack.3 b/oroshi/doc/man/man3/python_CapacitorMatrix_CapacitorStack.3 deleted file mode 100644 index ae08977d..00000000 --- a/oroshi/doc/man/man3/python_CapacitorMatrix_CapacitorStack.3 +++ /dev/null @@ -1,262 +0,0 @@ -.TH "CapacitorStack" 3 "Thu Mar 19 2020" "Version 1.0" "Oroshi - Analog Devices Layout" \" -*- nroff -*- -.ad l -.nh -.SH NAME -CapacitorStack \- -Draws the layout of a compact capacitor or a matrix of adjacent identical capacitors\&. - -.SH SYNOPSIS -.br -.PP -.PP -Inherits CapacitorUnit\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__init__\fP" -.br -.RI "\fIThis is the class constructor\&. \fP" -.ti -1c -.RI "def \fB__isUnitCap__\fP" -.br -.ti -1c -.RI "def \fB__isMatchingSchemeOK__\fP" -.br -.ti -1c -.RI "def \fBcapacitorIdOccurence\fP" -.br -.ti -1c -.RI "def \fBcreate\fP" -.br -.RI "\fIDraw the compact or matrix of capacitors\&. \fP" -.ti -1c -.RI "def \fBcapacitorLine\fP" -.br -.RI "\fIIteratively draws a horizontal or vertical line of capacitors according to the \fCdirection\fP parameter\&. \fP" -.ti -1c -.RI "def \fBcapacitorMatrix\fP" -.br -.RI "\fIDraws a matrix of identical capacitors\&. \fP" -.ti -1c -.RI "def \fBdrawAbutmentBox\fP" -.br -.RI "\fIDraws the abutment box of the matrix or campact capacitor\&. \fP" -.ti -1c -.RI "def \fBdrawBottomPlatesRLayers\fP" -.br -.RI "\fIDraws the routing layers connecting the bottom plate in the matrix of capacitors\&. \fP" -.ti -1c -.RI "def \fBdrawTopPlatesRLayers\fP" -.br -.RI "\fIDraws the routing layers connecting the top plates in the matrix of capacitors\&. \fP" -.ti -1c -.RI "def \fBgetVerticalRoutingTrack_width\fP" -.br -.ti -1c -.RI "def \fBgetMatrixDim\fP" -.br -.ti -1c -.RI "def \fBgetMatchingScheme\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -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 \fCRoutCapacitor\fP class\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "def __init__ (self, device, capacitance, capacitorType, abutmentBoxPosition, nets, unitCap = \fC0\fP, matrixDim = \fC[1\fP, matchingMode = \fCFalse\fP, matchingScheme = \fC[]\fP, dummyRing = \fCFalse\fP, dummyElement = \fCFalse\fP)" - -.PP -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 : -.PP -\fBParameters:\fP -.RS 4 -\fIdevice\fP The \fBHurricane\fP AMS device into which the layout is drawn\&. -.br -\fIcapacitance\fP The value of the capacitor, expressed in femto Farad (fF)\&. -.br -\fIcapacitorType\fP Can be MIM or PIP type capacitor\&. -.br -\fIabutmentPosition\fP Refers to the abscissa (XMin) of the bottom left corner of the abutment Box\&. -.br -\fIabutmentBoxYMin\fP Refers to the ordinate (YMin) of the bottom left corner of the abutment Box\&. -.RE -.PP -Except the two last arguments, all the parameters are common with the CapacitorUnit class because the \fC\fBCapacitorStack\fP\fP constructor calls the mother class constructor to create either a compact capacitor of \fCcapacitance\fP value or \fCrowNumber*\fP \fCcolumnNumber\fP unity capacitors\&. -.PP -\fBParameters:\fP -.RS 4 -\fIrowNumber\fP Number of rows in the matrix of capacitors\&. -.br -\fIcolumnNumber\fP Number of columns in the matrix of capacitors\&. -.RE -.PP - -.PP -References CapacitorStack\&.__areInputDataOK__(), CapacitorUnit\&.__computeCapDim__(), CapacitorStack\&.__initGivenNonZeroUnitCap__(), CapacitorStack\&.__initGivenNonZeroUnitCapInMatchingMode__(), CapacitorStack\&.__initGivenZeroUnitCap__(), CapacitorStack\&.__initGivenZeroUnitCapInMatchingMode__(), CapacitorStack\&.__initMatrixMode__(), CapacitorUnit\&.__isCapacitorUnitOK__(), CapacitorStack\&.abutmentBox, CapacitorUnit\&.abutmentBox, CapacitorStack\&.abutmentBox_spacing, CapacitorStack\&.abutmentBoxPosition, CapacitorStack\&.capacitance, CapacitorStack\&.capacitorIdOccurence(), CapacitorStack\&.capacitorsNumber, CapacitorStack\&.capacitorType, CapacitorUnit\&.capacitorType, CapacitorStack\&.compactCapDim, CapacitorStack\&.computeUnitCap(), CapacitorStack\&.device, 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\&. -.SH "Member Function Documentation" -.PP -.SS "def __isUnitCap__ (self)" - -.PP -\fBReturns:\fP -.RS 4 -True if the drawn capacitor is a compact one\&. This function is useful when an instance is called in another class\&. \fBExample\fP : when the matrix or the compact capacitors are to be fully routed\&. -.RE -.PP - -.SS "def __isMatchingSchemeOK__ (self)" - -.PP -\fBReturns:\fP -.RS 4 -\fCTrue\fP if the matching scheme specifications are correct\&. Specifications are : -.IP "\(bu" 2 -Similar number of elements as total number of elementary capacitor in the matrix\&. -.IP "\(bu" 2 -Equal number of affected capacitors to C1 as to C2\&. -.IP "\(bu" 2 -Capacitor identifiers equal to '1' or '2' only\&. -.IP "\(bu" 2 -Otherwise, the function returns \fCFalse\fP\&. -.PP -.RE -.PP - -.PP -References CapacitorStack\&.matchingScheme, and CapacitorStack\&.matrixDim\&. -.PP -Referenced by CapacitorStack\&.capacitorIdOccurence()\&. -.SS "def capacitorIdOccurence (self, capacitorIdentifier)" - -.PP -\fBReturns:\fP -.RS 4 -occurence of capacitor identifier in the entered matching scheme\&. This is useful to verify that \fCself\&.matchingScheme\fP is correct\&. -.RE -.PP - -.PP -References CapacitorStack\&.__areMatrixDimOK__(), CapacitorStack\&.__isMatchingSchemeOK__(), CapacitorStack\&.capacitorsNumber, CapacitorStack\&.dummyElement, CapacitorStack\&.dummyRing, CapacitorStack\&.matchingMode, CapacitorStack\&.matchingScheme, and CapacitorStack\&.nets\&. -.PP -Referenced by CapacitorStack\&.__init__()\&. -.SS "def create (self, bbMode = \fCFalse\fP)" - -.PP -Draw the compact or matrix of capacitors\&. First, \&. Second, \&. Finally, \&. -.PP -References CapacitorStack\&.__initMatchingMode__(), CapacitorStack\&.abutmentBox_spacing, CapacitorStack\&.abutmentBoxPosition, CapacitorStack\&.capacitance, CapacitorStack\&.capacitorMatrix(), CapacitorStack\&.capacitorType, CapacitorUnit\&.capacitorType, CapacitorStack\&.computeBondingBoxDimensions(), CapacitorStack\&.device, CapacitorUnit\&.device, Stack\&.device, CapacitorStack\&.doMatrix, CapacitorStack\&.drawAbutmentBox(), CapacitorUnit\&.drawAbutmentBox(), CapacitorStack\&.drawBottomPlatesRLayers(), CapacitorStack\&.drawCapacitorStack(), CapacitorStack\&.drawTopPlatesRLayers(), CapacitorStack\&.dummyRing, CapacitorStack\&.matchingMode, CapacitorStack\&.matrixDim, CapacitorStack\&.nets, CapacitorStack\&.setRules(), and CapacitorUnit\&.setRules()\&. -.PP -Referenced by CapacitorStack\&.capacitorLine(), and CapacitorStack\&.capacitorMatrix()\&. -.SS "def capacitorLine (self, dy, abutmentBox_spacing, matchingSchemeRowIndex = \fC0\fP)" - -.PP -Iteratively draws a horizontal or vertical line of capacitors according to the \fCdirection\fP parameter\&. An exception is raised if the specified direction is different from \fC{'horizontal'\fP,'vertical'}\&. At every iteration, an instance of the CapacitorUnit class is created and its layout is drawn\&. -.PP -\fBReturns:\fP -.RS 4 -a list containing the drawn capacitors\&. -.RE -.PP -\fBParameters:\fP -.RS 4 -\fIdy\fP the vertical position of the first cut in cut line\&. -.RE -.PP -\fBRemarks:\fP -.RS 4 -An exception is raised if the specified direction is different from \fC{'horizontal'\fP,'vertical'} -.RE -.PP - -.PP -References CapacitorStack\&.abutmentBoxPosition, CapacitorStack\&.capacitorType, CapacitorUnit\&.capacitorType, CapacitorStack\&.create(), CapacitorStack\&.createElementInCapacitorLine(), CapacitorStack\&.device, CapacitorUnit\&.device, Stack\&.device, CapacitorStack\&.dummyRing, CapacitorStack\&.matchingMode, CapacitorStack\&.matchingScheme, CapacitorStack\&.matrixDim, CapacitorStack\&.nets, and CapacitorStack\&.unitCapacitance\&. -.PP -Referenced by CapacitorStack\&.capacitorMatrix()\&. -.SS "def capacitorMatrix (self, abutmentBox_spacing = \fC0\fP)" - -.PP -Draws a matrix of identical capacitors\&. The matrix is iterativelly constructed\&. At every iteration, a new horizontal line of capacitors is drawn\&. -.PP -\fBReturns:\fP -.RS 4 -a nested list of elementary capacitors\&. -.RE -.PP - -.PP -References CapacitorStack\&.abutmentBox_spacing, CapacitorStack\&.abutmentBoxPosition, CapacitorStack\&.capacitorLine(), CapacitorStack\&.capacitorType, CapacitorUnit\&.capacitorType, CapacitorStack\&.create(), CapacitorStack\&.device, CapacitorUnit\&.device, Stack\&.device, CapacitorStack\&.dummyRing, CapacitorStack\&.getCapDim(), CapacitorStack\&.matrixDim, CapacitorStack\&.nets, and CapacitorStack\&.unitCapacitance\&. -.PP -Referenced by CapacitorStack\&.create()\&. -.SS "def drawAbutmentBox (self, abutmentBox_spacing = \fC0\fP)" - -.PP -Draws the abutment box of the matrix or campact capacitor\&. -.PP -References CapacitorStack\&.abutmentBox, CapacitorUnit\&.abutmentBox, CapacitorStack\&.abutmentBox_spacing, CapacitorStack\&.abutmentBoxPosition, CapacitorStack\&.computeAbutmentBoxDimensions(), and CapacitorUnit\&.computeAbutmentBoxDimensions()\&. -.PP -Referenced by CapacitorStack\&.create()\&. -.SS "def drawBottomPlatesRLayers (self, bottomPlateRLayer, drawnCapacitor)" - -.PP -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 \&. -.PP -References CapacitorStack\&.matrixDim, and CapacitorStack\&.nets\&. -.PP -Referenced by CapacitorStack\&.create()\&. -.SS "def drawTopPlatesRLayers (self, topPlateRLayer, drawnCapacitor)" - -.PP -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 \&. -.PP -\fBRemarks:\fP -.RS 4 -An exception is raised if the number of rows in the matrix is lower than 2\&. -.RE -.PP - -.PP -References CapacitorStack\&.matrixDim, and CapacitorStack\&.nets\&. -.PP -Referenced by CapacitorStack\&.create()\&. -.SS "def getVerticalRoutingTrack_width (self)" - -.PP -\fBReturns:\fP -.RS 4 -The width of the vertical routing tracks in matching mode\&. -.RE -.PP -\fBRemark:\fP -.RS 4 -This function is useful in matching mode, ie\&., in RoutCapacitor class, when routing the two capacitors\&. -.RE -.PP - -.SS "def getMatrixDim (self)" - -.PP -\fBReturns:\fP -.RS 4 -A dictionary contaning capacitor matrix's dimensions -.RE -.PP - -.PP -References CapacitorStack\&.compactCapDim, and CapacitorStack\&.doMatrix\&. -.SS "def getMatchingScheme (self)" - -.PP -\fBReturns:\fP -.RS 4 -the matching scheme\&. The function is useful in \fCRoutMatchedCapacitor\fP class to load \fCself\&.matchingScheme\fP attribute\&. -.RE -.PP - - -.SH "Author" -.PP -Generated automatically by Doxygen for Oroshi - Analog Devices Layout from the source code\&. diff --git a/oroshi/doc/man/man3/python_CapacitorRouted_RoutMatchedCapacitor.3 b/oroshi/doc/man/man3/python_CapacitorRouted_RoutMatchedCapacitor.3 deleted file mode 100644 index e21b2f46..00000000 --- a/oroshi/doc/man/man3/python_CapacitorRouted_RoutMatchedCapacitor.3 +++ /dev/null @@ -1,362 +0,0 @@ -.TH "RoutMatchedCapacitor" 3 "Thu Mar 19 2020" "Version 1.0" "Oroshi - Analog Devices Layout" \" -*- nroff -*- -.ad l -.nh -.SH NAME -RoutMatchedCapacitor \- -.PP -Routs two matched capacitors, C1 and C2, drawn in a capacitor matrix\&. - -.SH SYNOPSIS -.br -.PP -.PP -Inherits CapacitorUnit, CapacitorStack, and VerticalRoutingTracks\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__init__\fP" -.br -.RI "\fIA special method used to customize the class instance to an initial state in which : \fP" -.ti -1c -.RI "def \fBroute\fP" -.br -.RI "\fIDraws the complete layout given the capacitor matrix\&. \fP" -.ti -1c -.RI "def \fBsetRules\fP" -.br -.RI "\fIDefines technology rules used to draw the layout\&. \fP" -.ti -1c -.RI "def \fBsetLayers\fP" -.br -.RI "\fIDefines all physical layers used to draw the layout\&. \fP" -.ti -1c -.RI "def \fBcomputeDimensions\fP" -.br -.RI "\fIComputes, through simple instructions and functions calls, layout variables detailed in Figure 2\&. \fP" -.ti -1c -.RI "def \fBcomputeHRoutingTrackYCenter\fP" -.br -.RI "\fIComputes centers' ordinates of the eight horizontal routing tracks\&. \fP" -.ti -1c -.RI "def \fBcomputeHRLayerYCenter\fP" -.br -.RI "\fISets the stretching value of top plates\&. \fP" -.ti -1c -.RI "def \fBdrawHRoutingTracks\fP" -.br -.RI "\fIIteratively draws horizontal routing tracks on top and bottom positions of the matrix using physical layer \fCroutingTracksLayer\fP\&. \fP" -.ti -1c -.RI "def \fBdrawHRLayers\fP" -.br -.RI "\fIIteratively draws the horizontal routing layers starting with bottom left elementary capacitor $ C_{00} $\&. \fP" -.ti -1c -.RI "def \fBdrawCuts\fP" -.br -.RI "\fIDraws all required cuts using physical layers : \fP" -.ti -1c -.RI "def \fBdrawOneCut_vRoutingTrack_HRLayer\fP" -.br -.RI "\fIDraws one cut, in layer \fCcutLayer\fP, in order to connect a vertical routing track, at position \fCcutXMin\fP in metal 2, and a horizontal routing track, at position \fCcutYMin\fP in metal 3\&. \fP" -.ti -1c -.RI "def \fBdrawCuts_vRoutingTrack_hRoutingTrack\fP" -.br -.RI "\fIDraws cuts to connect vertical routing tracks in metal 2 and horizontal routing tracks in metal 3\&. \fP" -.ti -1c -.RI "def \fB__stretchTopPlates__\fP" -.br -.RI "\fIIteratively performs top plates stretching for the capacitor matrix\&. \fP" -.ti -1c -.RI "def \fB__stretchTopPlateCompactCap__\fP" -.br -.RI "\fIDraws vertical stretched layers for a given elementary capacitor\&. \fP" -.ti -1c -.RI "def \fB__setStretchingDySourceDyTarget__\fP" -.br -.RI "\fISets the abcissas of the extremities of the vertical stretching to be applied to capacitor's top plates for a given elementary capacitor in the matrix\&. \fP" -.ti -1c -.RI "def \fB__computeConnections__\fP" -.br -.RI "\fIComputes horizontal routing layers source and target abcissas for top and bottom plates connections to its associated routing track\&. \fP" -.in -1c -.SH "Detailed Description" -.PP -Routs two matched capacitors, C1 and C2, drawn in a capacitor matrix\&. - -Connections are put in place with reference to a given matching scheme\&. Elementary capacitor units are connected to horizontal and vertical routing tracks that represent top plates and bottom plates nets of C1 and C2 \&. Supported types of capacitors are Poly-Poly and Metal-Metal\&. Technologycal rules are provided by 350 nm AMS CMOS technology with three-four metal layers\&. Metal layers that are used for routing are placed similarly to horziontal-vertical (HV) symbolic Alliance CAD tool router, where horizontal metal channels are drawn in metal 2 and the vertical ones are in metal 3\&. Given a matrix of dimensions $ R*C $, the total number of vertical tracks is $ 2C+2 $ equivalent to $ C+1 $ couples, ensuring that every elementary capacitor is positioned between four vertical tracks, two from each side\&. In fact, every adjacent couple of these tracks represent top plates and bottom plates of C1 or C2 as shown in Figure 1\&. Layout An elementary capacitor unit can be a part of C1 or C2 according to the matching scheme\&. However, to respect common-centroid layout specifications, for C1 and C2 to be equal, the matrix number of colums and number of rows must be both even\&. Addionnally, the number of elementary capacitors dedicated to C1 must be equal to those dedicated to C2\&. These two conditions are tested in one of the class methods\&. An exception is raised if at least one of the two is not respected\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "def __init__ (self, vRTInstance)" - -.PP -A special method used to customize the class instance to an initial state in which : -.IP "\(bu" 2 -the class attirbutes describing positions and dimensions of the layout are computed in dedicated class methods, -.IP "\(bu" 2 -the attributes related to the capacitor matrix are copied from the \fCCapacitorStack\fP instance\&. -.PP -.PP -Position and dimensions attributes, also refered by layout variables, in Figure 2, are defined below : -.PP -\fBParameters:\fP -.RS 4 -\fIdevice\fP The \fBHurricane\fP AMS device onto which the layout is drawn\&. -.br -\fIcapacitorInstance\fP Instance of \fCCapacitorStack\fP class\&. -.br -\fIcapacitor\fP A nested list containing the matrix elements, which are \fCCapacitorUnit\fP objects\&. -.br -\fImatchingScheme\fP A nested list, with equal dimensions as \fCcapacitor\fP attribute, containing assignements of matrix elementary units to C1 and C2, identified by 1 and 2, respectively\&. Therefore, \fCself\&.matchingScheme\fP content is a succession of 1 and 2 values, defined as \\ capacitor identifiers\&. For example, given a matrix of dimensions 2x2, the matching scheme can be $ [ [1,2], [1,2] ] or [ [2,1], [2,1] ] $\&. The first sub-list dictates that the first elementary capacitor, $ C_{00} $\&. The second element $ C_{01} $ is affected to C2 and so on\&. An immediate and obvious consequence to this, is that an error is raised if \fCself\&.matchingSchem\fP and \fCself\&.capacitor\fP dimensions are not identical or if \fCself\&.matchingScheme\fP content is different from supported capacitor identifiers, '1' and '2'\&. -.br -\fIcapacitorType\fP Supported types of capacitors are MIM and PIP only\&. An exception is raised otherwise\&. -.br -\fIabutmentBox\fP The matrix's abutment box\&. -.br -\fImatrxiDim\fP The matrix dimensions, also equal to \fCself\&.matchingScheme\fP nested list dimensions\&. -.br -\fIabutmentBox_spacing\fP The spacing between elementary units in the matrix\&. It is computed in \fCCapacitorStack\fP and is reloaded in \fC\fBRoutMatchedCapacitor\fP\fP\&. \fCself\&.abutmentBox_spacing\fP includes, vertical routing tracks width and minimum allowed spacing between two adjacent ones\&. -.br -\fIhRoutingLayer_width\fP The width of horizontal routing layers in metal 2, which connect capacitors plates to vertical routing tracks\&. -.br -\fIvRoutingTrack_width\fP The width of vertical routing tracks in metal 3, which connects identical nets together ( ie : bottom plates of C1, top plates of C2, bottom plates of C2 and top plates of C2 )\&. -.br -\fIhRoutingTrack_width\fP The width of horizontal routing tracks in metal 2, which connect identical vertical routing tracks together\&. -.br -\fIminSpacing_hRoutingTrack\fP Minimum spacing between horizontal routing tracks\&. Wide metal 2 specifications are considered since metal 2 dimensions may exceed 10 $ m$\&. -.RE -.PP -\fBRemark:\fP -.RS 4 -For more information about wide metal specifications, refer to ENG-183_rev8\&.pdf technology manual\&. -.RE -.PP -\fBParameters:\fP -.RS 4 -\fIminimumPosition\fP The ordinate of the top plate's routing layer's bottom extremity after stretching\&. -.br -\fImaximumPosition\fP The ordinate of the top plate's routing layer's top extremity, also equivalent to the top plate's top extremity\&. -.br -\fIvRoutingTrackXCenter\fP A nested list of ordered dictionaries, with dimensions equal to \fCself\&.matrixDim\fP, containing abcissas of vertical routing tracks\&. All sub-lists' lengths are identical and are equal to 2\&. The first and second elements describe position of top plate track and bottom plate track, respectively\&. For example, given a matrix of dimensions 2x2, \fCself\&.vRoutingTrackXCenter\fP can be [[0, 2], [4,6], [8,10]] $ \mu m$\&. Elements of this nested list have particular indexing as described in Figure 2\&. -.br -\fIhRoutingtrackYCenter\fP A nested dictonary containing two keys, \fCtopTracks\fP and \fCbottomTracks\fP\&. Each key contains as value a dictionary describing centers' ordinates of four parallel horizontal tracks\&. The reason why four tracks are needed on top and bottom positions of the matrix is that four nets are used, two for every capacitor \fCCi\fP, were \fCi\fP is in [1,2]\&. -.br -\fIhRoutingLayerYCenter\fP A nested dicitonary containing two keys, \fCtop\fP and \fCbottom\fP\&. Each key contains as value a dictionary describing centers' ordinates of horizontal routing layers\&. -.br -\fIvRoutingTrackDict\fP A dictionary of routing tracks top and bottom extremities ordinates\&. -.br -\fItopPlateStretching\fP Since not only the same metal 2 layer is used to draw top/bottom plates connections to vertical tracks but also the two plates are superimposed, the top plate's routing tracks is stretched\&. \fCself\&.topPlateStretching\fP is therefore the length added to top plate's routing layer in order to avoid short circuits between top and bottom plates routing to vertical tracks since the same metal is used for both\&. -.RE -.PP - -.PP -References RoutMatchedCapacitor\&.capacitor, CapacitorStack\&.dummyRing, RoutMatchedCapacitor\&.dummyRing, RoutMatchedCapacitor\&.dummyRingCapacitor, RoutMatchedCapacitor\&.hRoutingLayer_width, RoutMatchedCapacitor\&.hRoutingLayerYCenter, RoutMatchedCapacitor\&.hRoutingTrack_width, RoutMatchedCapacitor\&.hRoutingtrackYCenter, CapacitorStack\&.matrixDim, VerticalRoutingTracks\&.matrixDim, RoutMatchedCapacitor\&.maximumPosition, RoutMatchedCapacitor\&.minimumPosition, RoutMatchedCapacitor\&.minSpacing_hRoutingTrack, RoutMatchedCapacitor\&.topPlateStretching, and RoutMatchedCapacitor\&.vRTInstance\&. -.SH "Member Function Documentation" -.PP -.SS "def route (self, bbMode = \fCFalse\fP)" - -.PP -Draws the complete layout given the capacitor matrix\&. \fCroute\fP method is succession of calls to user-defined methods inside a newly created \fCUpdatesession\fP\&. The following tasks are excecuted : -.IP "1." 4 -A nex \fCUpdateSession\fP is created, -.IP "2." 4 -all required physical layers are loaded, -.IP "3." 4 -technology rules are defined according to capacitor type, -.IP "4." 4 -layout dimension parameters are computed, -.IP "5." 4 -routing tracks and layers are drawn, -.IP "6." 4 -top plates are stretched, -.IP "7." 4 -all required cuts are drawn, -.IP "8." 4 -The \fCUpdateSession\fP is closed\&. -.PP -.PP -Meanwhile, an exception is raised when the entered \fCcapacitor\fP is not a capacitor matrix or if the capacitor type is unsupported\&. -.PP -References RoutMatchedCapacitor\&.__stretchTopPlates__(), RoutMatchedCapacitor\&.capacitor, RoutMatchedCapacitor\&.computeDimensions(), CapacitorUnit\&.computeDimensions(), Stack\&.computeDimensions(), RoutMatchedCapacitor\&.drawCuts(), RoutMatchedCapacitor\&.drawDummyRing_hRTracks_Cuts(), RoutMatchedCapacitor\&.drawHRLayers(), RoutMatchedCapacitor\&.drawHRoutingTracks(), CapacitorStack\&.dummyRing, RoutMatchedCapacitor\&.dummyRing, RoutMatchedCapacitor\&.dummyRingCapacitor, VerticalRoutingTracks\&.getVTrackYMax(), VerticalRoutingTracks\&.getVTrackYMin(), CapacitorUnit\&.hpitch, RoutMatchedCapacitor\&.hRoutingtrackYCenter, VerticalRoutingTracks\&.matchingScheme, CapacitorStack\&.matchingScheme, CapacitorStack\&.matrixDim, VerticalRoutingTracks\&.matrixDim, RoutMatchedCapacitor\&.maximumPosition, CapacitorUnit\&.metal3Width, RoutMatchedCapacitor\&.minimumPosition, VerticalRoutingTracks\&.nets, CapacitorStack\&.nets, RoutMatchedCapacitor\&.routeDummyRing(), RoutMatchedCapacitor\&.routeLeftAndRightSides(), RoutMatchedCapacitor\&.routeTopOrBottomSide(), RoutMatchedCapacitor\&.setLayers(), CapacitorStack\&.setRules(), CapacitorUnit\&.setRules(), RoutMatchedCapacitor\&.setRules(), CapacitorUnit\&.vpitch, VerticalRoutingTracks\&.vRoutingTrack_width, CapacitorStack\&.vRoutingTrack_width, and RoutMatchedCapacitor\&.vRoutingTrackXCenter\&. -.SS "def setRules (self)" - -.PP -Defines technology rules used to draw the layout\&. Some of the rules, namely those describing routing layers and tracks are applicable for both MIM and PIP capacitors\&. However, cuts rules are different\&. -.PP -\fBRemark:\fP -.RS 4 -All \fCCapacitorStack\fP class rules are also reloaded in this class\&. An exception is raised if the entered capacitor type is unsupported\&. -.RE -.PP -\fBReturns:\fP -.RS 4 -a dictionary with rules labels as keys and rules content as values\&. -.RE -.PP - -.PP -References CapacitorStack\&.capacitorType, CapacitorUnit\&.capacitorType, RoutMatchedCapacitor\&.capacitorType, CapacitorStack\&.minEnclosure_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor\&.minEnclosure_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor\&.minSpacing_hRoutingLayer, RoutMatchedCapacitor\&.minSpacing_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor\&.minSpacing_hRoutingLayer_vRoutingTrack_cut, RoutMatchedCapacitor\&.minSpacing_hRoutingTrackCut, CapacitorStack\&.minSpacing_vRoutingTrackCut, RoutMatchedCapacitor\&.minSpacing_vRoutingTrackCut, CapacitorStack\&.minWidth_hRoutingLayer_topPlate_cut, and RoutMatchedCapacitor\&.minWidth_hRoutingLayer_topPlate_cut\&. -.PP -Referenced by RoutMatchedCapacitor\&.route(), and VerticalRoutingTracks\&.setRules()\&. -.SS "def setLayers (self)" - -.PP -Defines all physical layers used to draw the layout\&. Layers are loaded using \fCDataBase\fP API\&. The same routing layers are used for both capacitor types except cuts layers that connect top plates to vertical routing tracks\&. Basicaly, metal 2, meta 3, cut 1 and cut 2 are the ones defined\&. -.PP -\fBReturns:\fP -.RS 4 -a dictionary composed of layers labels as keys and layers as values\&. -.RE -.PP - -.PP -References CapacitorStack\&.capacitorType, CapacitorUnit\&.capacitorType, RoutMatchedCapacitor\&.capacitorType, CapacitorStack\&.dummyRing, and RoutMatchedCapacitor\&.dummyRing\&. -.PP -Referenced by RoutMatchedCapacitor\&.route()\&. -.SS "def computeDimensions (self, bbMode)" - -.PP -Computes, through simple instructions and functions calls, layout variables detailed in Figure 2\&. -.PP -References CapacitorStack\&.abutmentBox_spacing, RoutMatchedCapacitor\&.abutmentBox_spacing, VerticalRoutingTracks\&.capacitorsNumber, CapacitorStack\&.capacitorsNumber, RoutMatchedCapacitor\&.computeBondingBoxDimInbbMode(), RoutMatchedCapacitor\&.computeHRLayerYCenter(), RoutMatchedCapacitor\&.computeHRoutingTrackYCenter(), RoutMatchedCapacitor\&.hRoutingLayer_width, CapacitorStack\&.matrixDim, VerticalRoutingTracks\&.matrixDim, RoutMatchedCapacitor\&.maximumPosition, CapacitorStack\&.minEnclosure_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor\&.minEnclosure_hRoutingLayer_topPlate_cut, VerticalRoutingTracks\&.minEnclosure_hRoutingLayer_vRoutingTrack_cut, RoutMatchedCapacitor\&.minimumPosition, VerticalRoutingTracks\&.minWidth_hRoutingLayer, CapacitorStack\&.minWidth_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor\&.minWidth_hRoutingLayer_topPlate_cut, VerticalRoutingTracks\&.minWidth_hRoutingLayer_vRoutingTrack_cut, RoutMatchedCapacitor\&.vRoutingTrack_spacing, VerticalRoutingTracks\&.vRoutingTrack_width, CapacitorStack\&.vRoutingTrack_width, RoutMatchedCapacitor\&.vRoutingTrackDict, and RoutMatchedCapacitor\&.vRoutingTrackXCenter\&. -.PP -Referenced by RoutMatchedCapacitor\&.route()\&. -.SS "def computeHRoutingTrackYCenter (self)" - -.PP -Computes centers' ordinates of the eight horizontal routing tracks\&. The tracks include four on top and four on bottom of the matrix\&. To do the computations, fist, center of the first bottom or top track, given in Figure 2, is computed\&. Then, all adjacent three centers are deduced by simples translation of the first one\&. Translation quantity is equal to the sum of distance between adjacent routing tracks, self\&.hRoutingTracks_spacing, and half width of the routing track itself, \fCself\&.hRoutingTrack_width\fP\&. -.PP -References RoutMatchedCapacitor\&.__setPlatesIds__(), CapacitorUnit\&.hpitch, RoutMatchedCapacitor\&.hRoutingtrackYCenter, RoutMatchedCapacitor\&.maximumPosition, and RoutMatchedCapacitor\&.minimumPosition\&. -.PP -Referenced by RoutMatchedCapacitor\&.computeDimensions()\&. -.SS "def computeHRLayerYCenter (self)" - -.PP -Sets the stretching value of top plates\&. Then iteratively computes the centers of horizontal routing layer regarding top and bottom plates\&. -.PP -References RoutMatchedCapacitor\&.__findPossibleShortCircuits__(), VerticalRoutingTracks\&.__setStretching__(), RoutMatchedCapacitor\&.__setStretchingDySourceDyTarget__(), RoutMatchedCapacitor\&.bondingBox, RoutMatchedCapacitor\&.capacitor, RoutMatchedCapacitor\&.hRoutingLayer_width, RoutMatchedCapacitor\&.hRoutingLayerYCenter, RoutMatchedCapacitor\&.hRoutingTrack_width, RoutMatchedCapacitor\&.hRoutingtrackYCenter, CapacitorStack\&.matrixDim, VerticalRoutingTracks\&.matrixDim, RoutMatchedCapacitor\&.minSpacing_hRoutingLayer, RoutMatchedCapacitor\&.topPlateStretching, VerticalRoutingTracks\&.vRoutingTrack_width, CapacitorStack\&.vRoutingTrack_width, and RoutMatchedCapacitor\&.vRoutingTrackXCenter\&. -.PP -Referenced by RoutMatchedCapacitor\&.computeDimensions()\&. -.SS "def drawHRoutingTracks (self, routingTracksLayer)" - -.PP -Iteratively draws horizontal routing tracks on top and bottom positions of the matrix using physical layer \fCroutingTracksLayer\fP\&. -.PP -References RoutMatchedCapacitor\&.hRoutingTrack_width, RoutMatchedCapacitor\&.hRoutingtrackYCenter, VerticalRoutingTracks\&.nets, CapacitorStack\&.nets, and RoutMatchedCapacitor\&.vRoutingTrackXCenter\&. -.PP -Referenced by RoutMatchedCapacitor\&.route()\&. -.SS "def drawHRLayers (self, xPlateRLayer)" - -.PP -Iteratively draws the horizontal routing layers starting with bottom left elementary capacitor $ C_{00} $\&. -.PP -References RoutMatchedCapacitor\&.__computeConnections__(), RoutMatchedCapacitor\&.hRoutingLayer_width, RoutMatchedCapacitor\&.hRoutingLayerYCenter, VerticalRoutingTracks\&.matchingScheme, CapacitorStack\&.matchingScheme, VerticalRoutingTracks\&.matrixDim, CapacitorStack\&.matrixDim, VerticalRoutingTracks\&.nets, and CapacitorStack\&.nets\&. -.PP -Referenced by RoutMatchedCapacitor\&.route()\&. -.SS "def drawCuts (self, layer_hRTrack_hRLayer, layer_tracksCut, layer_topPlateCut)" - -.PP -Draws all required cuts using physical layers : -.IP "\(bu" 2 -\fClayer_hRTrack_hRLayer\fP to connect bottom plates to vertical routing tracks, -.IP "\(bu" 2 -\fClayer_tracksCut\fP to connect vertical routing tracks to horizontal ones, -.IP "\(bu" 2 -\fClayer_topPlateCut\fP to connect top plates to vertical routing tracks\&. ALso in \fCdrawCuts\fP, nUmber of maximum cuts number on every layer is computed and cuts enclosure is adjusted according to layer's width\&. -.PP - -.PP -References RoutMatchedCapacitor\&.__setPlatesLabels__(), VerticalRoutingTracks\&.capacitorIds, VerticalRoutingTracks\&.capacitorsNumber, CapacitorStack\&.capacitorsNumber, RoutMatchedCapacitor\&.drawCuts_stretchedTopPlate(), RoutMatchedCapacitor\&.drawCuts_vRoutingTrack_HRLayer(), RoutMatchedCapacitor\&.drawCuts_vRoutingTrack_hRoutingTrack(), RoutMatchedCapacitor\&.drawOneCut_vRoutingTrack_HRLayer(), RoutMatchedCapacitor\&.hRoutingLayerYCenter, VerticalRoutingTracks\&.matchingScheme, CapacitorStack\&.matchingScheme, VerticalRoutingTracks\&.matrixDim, CapacitorStack\&.matrixDim, CapacitorStack\&.minEnclosure_vRoutingTrackCut, RoutMatchedCapacitor\&.minSpacing_hRoutingTrackCut, CapacitorStack\&.minSpacing_vRoutingTrackCut, RoutMatchedCapacitor\&.minSpacing_vRoutingTrackCut, VerticalRoutingTracks\&.minWidth_hRoutingTrackCut, CapacitorStack\&.minWidth_vRoutingTrackCut, VerticalRoutingTracks\&.nets, CapacitorStack\&.nets, VerticalRoutingTracks\&.vRoutingTrack_width, CapacitorStack\&.vRoutingTrack_width, and RoutMatchedCapacitor\&.vRoutingTrackXCenter\&. -.PP -Referenced by RoutMatchedCapacitor\&.route()\&. -.SS "def drawOneCut_vRoutingTrack_HRLayer (self, net, cutLayer, cutXMin, cutYMin, cutNumber)" - -.PP -Draws one cut, in layer \fCcutLayer\fP, in order to connect a vertical routing track, at position \fCcutXMin\fP in metal 2, and a horizontal routing track, at position \fCcutYMin\fP in metal 3\&. -.PP -References RoutMatchedCapacitor\&.minSpacing_hRoutingLayer_vRoutingTrack_cut, and VerticalRoutingTracks\&.minWidth_hRoutingLayer_vRoutingTrack_cut\&. -.PP -Referenced by RoutMatchedCapacitor\&.drawCuts()\&. -.SS "def drawCuts_vRoutingTrack_hRoutingTrack (self, cutLayer, cutNumber, enclosure_cut)" - -.PP -Draws cuts to connect vertical routing tracks in metal 2 and horizontal routing tracks in metal 3\&. -.PP -References RoutMatchedCapacitor\&.__setPlatesIds__(), RoutMatchedCapacitor\&.capacitor, RoutMatchedCapacitor\&.dummyRingCapacitor, RoutMatchedCapacitor\&.hRoutingLayerYCenter, RoutMatchedCapacitor\&.hRoutingtrackYCenter, VerticalRoutingTracks\&.matchingScheme, CapacitorStack\&.matchingScheme, VerticalRoutingTracks\&.matrixDim, CapacitorStack\&.matrixDim, CapacitorStack\&.minEnclosure_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor\&.minEnclosure_hRoutingLayer_topPlate_cut, CapacitorStack\&.minEnclosure_vRoutingTrackCut, RoutMatchedCapacitor\&.minSpacing_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor\&.minSpacing_hRoutingTrackCut, CapacitorStack\&.minSpacing_vRoutingTrackCut, RoutMatchedCapacitor\&.minSpacing_vRoutingTrackCut, CapacitorStack\&.minWidth_hRoutingLayer_topPlate_cut, RoutMatchedCapacitor\&.minWidth_hRoutingLayer_topPlate_cut, VerticalRoutingTracks\&.minWidth_hRoutingTrackCut, CapacitorStack\&.minWidth_vRoutingTrackCut, VerticalRoutingTracks\&.nets, CapacitorStack\&.nets, VerticalRoutingTracks\&.vRoutingTrack_width, CapacitorStack\&.vRoutingTrack_width, and RoutMatchedCapacitor\&.vRoutingTrackXCenter\&. -.PP -Referenced by RoutMatchedCapacitor\&.drawCuts()\&. -.SS "def __stretchTopPlates__ (self, capacitor, rlayer)" - -.PP -Iteratively performs top plates stretching for the capacitor matrix\&. Vertical segments are connected to top plate routing layer\&. -.PP -\fBParameters:\fP -.RS 4 -\fIcapacitor\fP Capacitor matrix\&. -.br -\fIrlayer\fP Layer of the drawn vertical rectangle\&. -.RE -.PP - -.PP -References RoutMatchedCapacitor\&.__stretchTopPlateCompactCap__(), VerticalRoutingTracks\&.matchingScheme, CapacitorStack\&.matchingScheme, VerticalRoutingTracks\&.matrixDim, CapacitorStack\&.matrixDim, VerticalRoutingTracks\&.nets, and CapacitorStack\&.nets\&. -.PP -Referenced by RoutMatchedCapacitor\&.route()\&. -.SS "def __stretchTopPlateCompactCap__ (self, net, capacitor, routingLayer, j = \fC0\fP)" - -.PP -Draws vertical stretched layers for a given elementary capacitor\&. -.PP -References RoutMatchedCapacitor\&.__setStretchingDySourceDyTarget__(), and RoutMatchedCapacitor\&.topPlateStretching\&. -.PP -Referenced by RoutMatchedCapacitor\&.__stretchTopPlates__()\&. -.SS "def __setStretchingDySourceDyTarget__ (self, capacitor, deltay)" - -.PP -Sets the abcissas of the extremities of the vertical stretching to be applied to capacitor's top plates for a given elementary capacitor in the matrix\&. -.PP -\fBParameters:\fP -.RS 4 -\fIcapacitor\fP \&.values() Elementary unit capacitor\&. -.br -\fIdeltay\fP Stretching value\&. -.RE -.PP -\fBReturns:\fP -.RS 4 -A list that contains \fCdySource\fP and as top extremity and bottom extermity, respectively\&. -.RE -.PP - -.PP -Referenced by RoutMatchedCapacitor\&.__stretchTopPlateCompactCap__(), and RoutMatchedCapacitor\&.computeHRLayerYCenter()\&. -.SS "def __computeConnections__ (self, i, j, capacitorIdentifier)" - -.PP -Computes horizontal routing layers source and target abcissas for top and bottom plates connections to its associated routing track\&. -.PP -\fBParameters:\fP -.RS 4 -\fI(i,j)\fP row and column indexes, respectively, in the matrix which describe the elementary capacitor position in the matrix\&. -.br -\fIcapacitorIdentifier\fP equal to '1' if C1 and '2' if C2\&. -.RE -.PP -\fBReturns:\fP -.RS 4 -A nested dicitionary\&. The overal dictionary is composed of keys equal to \fCtopPlate\fP and bottomPlate and values equal to sub-dictionaries\&. The sub-dictionaries, are in their turn composed of two keys standing for the abcissa of the source and the abcissa of the target\&. -.RE -.PP -\fBRemark:\fP -.RS 4 -Naturally, an exception is raised if an unsupported capacitor identifier is given\&. -.RE -.PP - -.PP -References RoutMatchedCapacitor\&.__findHRLDyTrarget__(), RoutMatchedCapacitor\&.__isCapacitorAdummy__(), RoutMatchedCapacitor\&.__setPlatesLabels__(), RoutMatchedCapacitor\&.capacitor, VerticalRoutingTracks\&.capacitorIds, VerticalRoutingTracks\&.capacitorsNumber, CapacitorStack\&.capacitorsNumber, CapacitorStack\&.dummyElement, RoutMatchedCapacitor\&.dummyElement, CapacitorStack\&.dummyRing, RoutMatchedCapacitor\&.dummyRing, VerticalRoutingTracks\&.matchingScheme, CapacitorStack\&.matchingScheme, VerticalRoutingTracks\&.matrixDim, CapacitorStack\&.matrixDim, VerticalRoutingTracks\&.nets, CapacitorStack\&.nets, VerticalRoutingTracks\&.vRoutingTrack_width, CapacitorStack\&.vRoutingTrack_width, RoutMatchedCapacitor\&.vRoutingTrackXCenter, and RoutMatchedCapacitor\&.vRTsDistribution\&. -.PP -Referenced by RoutMatchedCapacitor\&.drawHRLayers()\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for Oroshi - Analog Devices Layout from the source code\&. diff --git a/oroshi/doc/man/man3/python_CapacitorUnit_CapacitorUnit.3 b/oroshi/doc/man/man3/python_CapacitorUnit_CapacitorUnit.3 deleted file mode 100644 index d284446b..00000000 --- a/oroshi/doc/man/man3/python_CapacitorUnit_CapacitorUnit.3 +++ /dev/null @@ -1,759 +0,0 @@ -.TH "CapacitorUnit" 3 "Thu Mar 19 2020" "Version 1.0" "Oroshi - Analog Devices Layout" \" -*- nroff -*- -.ad l -.nh -.SH NAME -CapacitorUnit \- -.PP -Draws a capacitor of type Poly-Poly or Metal-Metal in 350 nm AMS CMOS technology\&. - -.SH SYNOPSIS -.br -.PP -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__init__\fP" -.br -.RI "\fIThis is the class constructor\&. \fP" -.ti -1c -.RI "def \fB__setCapacitorPerUnit__\fP" -.br -.RI "\fISets the area and perimeter capacitances as specified in 350 nm AMS technology and according to \fCcapacitorType\fP (MIM or PIP)\&. \fP" -.ti -1c -.RI "def \fB__computeCapDim__\fP" -.br -.RI "\fIComputes width and length of the capacitor\&. \fP" -.ti -1c -.RI "def \fB__isCapacitorUnitOK__\fP" -.br -.RI "\fIChecks if the computed capacitor dimensions exceed or are less than maximum and minimum limits, respectively, as specified in technology rules\&. \fP" -.ti -1c -.RI "def \fBsetRules\fP" -.br -.RI "\fISelects technological rules according to the capacitor type\&. \fP" -.ti -1c -.RI "def \fBgetCapacitorType\fP" -.br -.ti -1c -.RI "def \fBgetMaximumCapWidth\fP" -.br -.RI "\fImaximum size of capacitor's top plate\&. \fP" -.ti -1c -.RI "def \fBgetMinimumCapWidth\fP" -.br -.ti -1c -.RI "def \fBgetLayers\fP" -.br -.RI "\fILoads the technology file then extracts the adequate layers according to the capacitor type (MIM or PIP)\&. \fP" -.ti -1c -.RI "def \fBcreate\fP" -.br -.RI "\fIWhen bonding box mode is activated, the function draws all layout physical layers of the capacitor after checking its dimensions\&. \fP" -.ti -1c -.RI "def \fBdrawCapacitor\fP" -.br -.RI "\fIDraws all layout physicial layers of the capacitor\&. \fP" -.ti -1c -.RI "def \fBcomputeBottomPlateCuts\fP" -.br -.RI "\fIComputes needed parameters to draw bottom plate cuts in its exact position, including : \fP" -.ti -1c -.RI "def \fBcomputeTopPlateCuts\fP" -.br -.RI "\fIComputes needed parameters to draw top plate cuts in its exact position, including : \fP" -.ti -1c -.RI "def \fBdrawAbutmentBox\fP" -.br -.RI "\fIDraws the abutment box of the capacitor in position \fC<\fP(abutmentBoxXMin, abutmentBoxYMin)>\&. \fP" -.ti -1c -.RI "def \fBdrawOnePlate\fP" -.br -.RI "\fIDraws the top or bottom plate through inflation of the Box under it\&. \fP" -.ti -1c -.RI "def \fBdrawBottomPlateCut\fP" -.br -.RI "\fIDraws the required cuts to connect the bottom plate\&. \fP" -.ti -1c -.RI "def \fBdrawTopPlateCut\fP" -.br -.RI "\fIDraws the top plate's cuts after computing the maximal number of cuts that can be placed and its exact enclosure in the top plate\&. \fP" -.ti -1c -.RI "def \fBdrawRoutingLayers\fP" -.br -.RI "\fIDraws the routing layers of both bottom and top plates after computing widths and the exact position of these layers\&. \fP" -.ti -1c -.RI "def \fBcutMaxNumber\fP" -.br -.RI "\fIComputes the maximal number of cuts to be placed on a layer of width \fCwidth_layer\fP considering specifications such as the spacing between the cuts, its width and its enclosure in the layer\&. \fP" -.ti -1c -.RI "def \fBcutLine\fP" -.br -.RI "\fICreates a horizontal or vertical line of contacts according to the specified direction\&. \fP" -.ti -1c -.RI "def \fBcutMatrix\fP" -.br -.RI "\fICreates a matrix of cuts by vertically stacking horizontal lines of identical cuts\&. \fP" -.ti -1c -.RI "def \fBgetBottomPlateYMax\fP" -.br -.ti -1c -.RI "def \fBgetBottomPlateLeftCutXMin\fP" -.br -.ti -1c -.RI "def \fBgetBottomPlateLeftCutYMin\fP" -.br -.ti -1c -.RI "def \fBgetBottomPlateLeftCutYMax\fP" -.br -.ti -1c -.RI "def \fBgetBottomPlateRightCutXMin\fP" -.br -.ti -1c -.RI "def \fBgetBottomPlateRightCutYMin\fP" -.br -.ti -1c -.RI "def \fBgetBottomPlateRightCutYMax\fP" -.br -.ti -1c -.RI "def \fBgetBotPlateLeftRLayerXMax\fP" -.br -.ti -1c -.RI "def \fBgetBottomPlateRightCutYCenter\fP" -.br -.ti -1c -.RI "def \fBgetBotPlateLeftRLayerXMin\fP" -.br -.ti -1c -.RI "def \fBgetBotPlateRLayerYMin\fP" -.br -.ti -1c -.RI "def \fBgetBotPlateRLayerYMax\fP" -.br -.ti -1c -.RI "def \fBgetBotPlateRLayerWidth\fP" -.br -.ti -1c -.RI "def \fBgetBotPlateRightRLayerXCenter\fP" -.br -.ti -1c -.RI "def \fBgetBotPlateLeftRLayerXCenter\fP" -.br -.ti -1c -.RI "def \fBgetTopPlateRLayerYMin\fP" -.br -.ti -1c -.RI "def \fBgetTopPlateRLayerYMax\fP" -.br -.ti -1c -.RI "def \fBgetTopPlateRLayerWidth\fP" -.br -.ti -1c -.RI "def \fBgetTopPlateRLayerXCenter\fP" -.br -.ti -1c -.RI "def \fBgetTopPlateRLayerXMin\fP" -.br -.ti -1c -.RI "def \fBgetTopPlateRLayerXMax\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -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\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "def __init__ (self, device, capacitorType, abutmentBoxPosition, capacitance = \fC0\fP, capDim = \fC{}\fP)" - -.PP -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 : -.PP -\fBParameters:\fP -.RS 4 -\fIdevice\fP \fBHurricane\fP AMS device into which layout is drawn\&. -.br -\fIcapacitance\fP Capacitor value, expressed in $ femto Farad (fF) $\&. -.br -\fIabutmentBoxPosition\fP A list containing abscissa and ordinate of the bottom left corner of the abutment box\&. -.RE -.PP -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\&. -.PP -\fBParameters:\fP -.RS 4 -\fIdevice\fP \fBHurricane\fP AMS device into which layout is drawn\&. -.br -\fIcapacitance\fP Capacitor value, expressed in $ femto Farad (fF) $\&. -.br -\fIcapacitorType\fP Can be 'MIMCap' or 'PIPCap' as capacitor type\&. -.br -\fIabutmentBoxDict\fP A dictionary containing abscissa and ordinate of the bottom left corner of the abutment box, (XMin) and (YMin), respectively\&. -.br -\fIabutmentBox\fP Abutment box drawn square\&. It is an object of type \fCBox\fP\&. -.br -\fIbottomPlateBox\fP Bottom plate drawn square\&. It is an object of type \fCBox\fP\&. -.br -\fItopPlateBox\fP Top plate drawn square\&. It is an object of type \fCBox\fP\&. -.br -\fIcut2MatrixDict\fP A 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 \fCself\&.capacitorType\fP is equal to \fC'MIMCap'\fP\&. -.br -\fIcutLeftLineDict\fP A dictionary containing abcissa and ordinate of the bottom cut in the left line of cuts to be drawn on bottom plate's layer\&. -.br -\fIcutRightLineDict\fP A dictionary containing abcissa and ordinate of the bottom cut in the right line of cuts to be drawn on bottom plate's layer\&. -.br -\fItopCutLineDict\fP A 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 \fCself\&.capacitorType\fP is equal to \fC'PIPCap'\fP\&. -.br -\fItopPlateRLayerDict\fP A dictionary containing position information of the top plate's routing layer\&. The dictionary includes ordinates of the layer's top and bottom extremities, \fC'XMin'\fP and \fC'YMin'\fP, respectively, the abcissa of it's center, \fC'XCenter'\fP and its width, \fC'width'\fP\&. -.br -\fIbottomPlateRLayerDict\fP A dictionary containing -.br -\fIenclosure_botPlate_topPlate\fP Top plate's layer encolusre in bottom plate's layer\&. -.br -\fIminheight_topPlatecut\fP Minimum height of cuts for top plate connection to other metal layer\&. -.br -\fItopCutLineNumber\fP Maximum possible number cuts to be drawn for top plate's connection\&. -.br -\fIbottomCutLineNumber\fP Maximum possible number cuts to be drawn for top plate's connection\&. -.RE -.PP -\fBRemark:\fP -.RS 4 -Abutment box must be defined as an attribute because the position of dummy capacitor in \fCNonUnitCapacitor\fP class must be precisely defined\&. -.RE -.PP - -.PP -References CapacitorUnit\&.__computeCapacitance__(), CapacitorUnit\&.__computeCapDim__(), CapacitorUnit\&.__initCapDim__(), CapacitorUnit\&.abutmentBox, CapacitorUnit\&.abutmentBoxDict, CapacitorUnit\&.bottomCutLineNumber, CapacitorUnit\&.bottomPlateBox, CapacitorUnit\&.bottomPlateBoxDict, CapacitorUnit\&.bottomPlateRLayerDict, CapacitorUnit\&.capacitorType, CapacitorUnit\&.capDim, CapacitorUnit\&.cut2MatrixDict, CapacitorUnit\&.cutLeftLineDict, CapacitorUnit\&.cutRightLineDict, CapacitorUnit\&.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\&. -.SH "Member Function Documentation" -.PP -.SS "def __setCapacitorPerUnit__ (self, capacitorType)" - -.PP -Sets the area and perimeter capacitances as specified in 350 nm AMS technology and according to \fCcapacitorType\fP (MIM or PIP)\&. -.PP -\fBReturns:\fP -.RS 4 -a list containing the area and perimeter capacitances\&. -.RE -.PP -\fBRemarks:\fP -.RS 4 -An exception is raised if the entered capacitor type is unknown\&. -.RE -.PP - -.PP -Referenced by CapacitorUnit\&.__computeCapDim__()\&. -.SS "def __computeCapDim__ (self, capacitance, capacitorType)" - -.PP -Computes width and length of the capacitor\&. Given \fCcapacitance\fP 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)\&. -.PP -\fBReturns:\fP -.RS 4 -a dictionary containing width and length\&. -.RE -.PP -\fBRemark:\fP -.RS 4 -The capacitor is square\&. Thus, length and width are equal\&. -.RE -.PP - -.PP -References CapacitorUnit\&.__setCapacitorPerUnit__()\&. -.PP -Referenced by CapacitorStack\&.__init__(), and CapacitorUnit\&.__init__()\&. -.SS "def __isCapacitorUnitOK__ (self, capDim)" - -.PP -Checks if the computed capacitor dimensions exceed or are less than maximum and minimum limits, respectively, as specified in technology rules\&. -.PP -\fBReturns:\fP -.RS 4 -\fCTrue\fP if all rules are respected\&. -.RE -.PP -\fBRemark:\fP -.RS 4 -Maximum poly2 layer dimensions for PIP capacitor are not specified in technology rules\&. Thus, only minimum limit condition is checked\&. -.RE -.PP - -.PP -References CapacitorUnit\&.capacitorType, CapacitorUnit\&.getMaximumCapWidth(), and CapacitorUnit\&.getMinimumCapWidth()\&. -.PP -Referenced by CapacitorStack\&.__init__(), and CapacitorUnit\&.create()\&. -.SS "def setRules (self)" - -.PP -Selects technological rules according to the capacitor type\&. -.PP -\fBReturns:\fP -.RS 4 -a dictionary with rules labels as keys and rules as values\&. Example of technology rules are : -.IP "\(bu" 2 -minimum spacing between cuts or metals, -.IP "\(bu" 2 -minimum width of a plate, a cut or a routing metal\&. -.IP "\(bu" 2 -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\&. -.PP -.RE -.PP -\fBRemark:\fP -.RS 4 -An exception is raised if the entered capacitor type is unknown\&. -.RE -.PP - -.PP -References CapacitorUnit\&.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\&. -.PP -Referenced by CapacitorStack\&.create(), CapacitorUnit\&.create(), RoutMatchedCapacitor\&.route(), and VerticalRoutingTracks\&.setRules()\&. -.SS "def getCapacitorType (self)" - -.PP -\fBReturns:\fP -.RS 4 -capacitor type \fC'MIMCap'\fP or \fC'PIPCap'\fP\&. -.RE -.PP -\fBRemarks:\fP -.RS 4 -\fC\fBgetCapacitorType()\fP\fP is especially useful when an instance of \fC\fBCapacitorUnit\fP\fP class is called in another classes instances to identify the capacitor's type\&. -.RE -.PP - -.SS "def getMaximumCapWidth (self)" - -.PP -maximum size of capacitor's top plate\&. \fC\fBgetMaximumCapWidth()\fP\fP is called to check if capacitor dimensions are within acceptable technological limits\&. An exception is raised if the entered capacitor type is unknown\&. -.PP -\fBRemarks:\fP -.RS 4 -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\&. -.PP -2\&. The maximum value of the poly2 size in PIP capacitor is not specified\&. Thus, it is not considered in \fC\fBgetMaximumCapWidth()\fP\fP -.RE -.PP - -.PP -References CapacitorUnit\&.capacitorType\&. -.PP -Referenced by CapacitorUnit\&.__isCapacitorUnitOK__()\&. -.SS "def getMinimumCapWidth (self)" - -.PP -\fBReturns:\fP -.RS 4 -The minimum size of the capacitor's top plate\&. An exception is raised if the entered capacitor type is unknown\&. -.RE -.PP -\fBRemarks:\fP -.RS 4 -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\&. -.PP -An exception is raised if the entered capacitor type is unknown\&. -.RE -.PP - -.PP -References CapacitorUnit\&.capacitorType\&. -.PP -Referenced by CapacitorUnit\&.__isCapacitorUnitOK__()\&. -.SS "def getLayers (self)" - -.PP -Loads the technology file then extracts the adequate layers according to the capacitor type (MIM or PIP)\&. -.PP -\fBReturns:\fP -.RS 4 -a dictionary containing the layer labels as attributes and its values\&. -.RE -.PP -\fBRemarks:\fP -.RS 4 -An exception is raised if the entered capacitor type is unknown\&. -.RE -.PP - -.PP -References CapacitorUnit\&.capacitorType\&. -.PP -Referenced by CapacitorUnit\&.create()\&. -.SS "def create (self, t, b, bbMode = \fCFalse\fP, vEnclosure_botPlate_abtBox = \fCNone\fP, hEnclosure_botPlate_abtBox = \fCNone\fP)" - -.PP -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 \fCbbMode\fP parameters is other than \fCTrue\fP or \fCFalse\fP\&. -.PP -\fBParameters:\fP -.RS 4 -\fI(\fP t , b ) nets of top and bottom plates, respectively -.br -\fIbbMode\fP activates bonding box dimensions computing when set to \fCTrue\fP -.RE -.PP - -.PP -References CapacitorUnit\&.__isCapacitorUnitOK__(), CapacitorUnit\&.abutmentBoxDict, CapacitorUnit\&.capDim, CapacitorUnit\&.computeDimensions(), Stack\&.computeDimensions(), CapacitorUnit\&.drawAbutmentBox(), CapacitorUnit\&.drawCapacitor(), Technology\&.getLayers(), CapacitorUnit\&.getLayers(), and CapacitorUnit\&.setRules()\&. -.SS "def drawCapacitor (self, layerDict, t, b)" - -.PP -Draws all layout physicial layers of the capacitor\&. -.PP -\fBParameters:\fP -.RS 4 -\fIlayerDict\fP a dictionary containing a description of the required physical layers according to capacitor type -.br -\fI(\fP t , b ) nets of top and bottom plates, respectively -.RE -.PP - -.PP -References CapacitorUnit\&.bottomPlateBox, CapacitorUnit\&.bottomPlateBoxDict, CapacitorUnit\&.drawBottomPlateCut(), CapacitorUnit\&.drawOnePlate(), CapacitorUnit\&.drawRoutingLayers(), CapacitorUnit\&.drawTopPlateCut(), CapacitorUnit\&.topPlateBox, and CapacitorUnit\&.topPlateBoxDict\&. -.PP -Referenced by CapacitorUnit\&.create()\&. -.SS "def computeBottomPlateCuts (self)" - -.PP -Computes needed parameters to draw bottom plate cuts in its exact position, including : -.IP "\(bu" 2 -maximum number of cuts to draw on both sides of bottom plate, -.IP "\(bu" 2 -adjusted enclosure of -.IP "\(bu" 2 -abcissas of the two bottom cuts on left and right sides of bottom plate, -.IP "\(bu" 2 -ordinate of the same two cuts\&. -.PP -.PP -Given parameters described above, it is possible to draw the entire lines of cuts on both sides of bottom plate using \fCcutLine\fP function\&. -.PP -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\&. -.PP -Referenced by CapacitorUnit\&.drawAbutmentBox()\&. -.SS "def computeTopPlateCuts (self)" - -.PP -Computes needed parameters to draw top plate cuts in its exact position, including : -.IP "\(bu" 2 -maximum number of cuts to draw on both sides of top plate, -.IP "\(bu" 2 -adjusted enclosure of -.IP "\(bu" 2 -abcissas of the two top cuts on left and right sides of top plate, -.IP "\(bu" 2 -ordinate of the same two cuts\&. -.PP -.PP -Given parameters described above, it is possible to draw the entire lines of cuts on both sides of bottom plate using \fCcutLine\fP function\&. -.PP -References CapacitorUnit\&.abutmentBoxDict, CapacitorUnit\&.bottomPlateBoxDict, CapacitorUnit\&.bottomPlateRLayerDict, CapacitorUnit\&.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\&. -.PP -Referenced by CapacitorUnit\&.drawAbutmentBox()\&. -.SS "def drawAbutmentBox (self)" - -.PP -Draws the abutment box of the capacitor in position \fC<\fP(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\&. -.PP -References CapacitorUnit\&.abutmentBox, CapacitorUnit\&.abutmentBoxDict, CapacitorUnit\&.bottomPlateBoxDict, 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\&. -.PP -Referenced by CapacitorStack\&.create(), and CapacitorUnit\&.create()\&. -.SS "def drawOnePlate (self, layer, net, boxDimensions)" - -.PP -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\&. -.PP -\fBReturns:\fP -.RS 4 -The drawn box\&. -.RE -.PP - -.PP -Referenced by CapacitorUnit\&.drawCapacitor()\&. -.SS "def drawBottomPlateCut (self, layer, b)" - -.PP -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\&. -.PP -\fBRemark:\fP -.RS 4 -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\&. -.RE -.PP - -.PP -References CapacitorUnit\&.bottomCutLineNumber, CapacitorUnit\&.cutLeftLineDict, CapacitorUnit\&.cutLine(), CapacitorUnit\&.cutRightLineDict, CapacitorUnit\&.minheight_topPlatecut, CapacitorUnit\&.minSpacingOnBotPlate_cut, and CapacitorUnit\&.minWidth_botPlatecut\&. -.PP -Referenced by CapacitorUnit\&.drawCapacitor()\&. -.SS "def drawTopPlateCut (self, layer, t)" - -.PP -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\&. -.PP -References CapacitorUnit\&.capacitorType, CapacitorUnit\&.cut2MatrixDict, CapacitorUnit\&.cutLine(), CapacitorUnit\&.cutMatrix(), CapacitorUnit\&.minheight_topPlatecut, CapacitorUnit\&.minSpacingOnTopPlate_cut, CapacitorUnit\&.minWidth_topPlatecut, CapacitorUnit\&.topCutLineDict, and CapacitorUnit\&.topCutLineNumber\&. -.PP -Referenced by CapacitorUnit\&.drawCapacitor()\&. -.SS "def drawRoutingLayers (self, bottomPlateLayer, topPlateLayer, t, b)" - -.PP -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\&. -.PP -References CapacitorUnit\&.bottomPlateRLayerDict, CapacitorUnit\&.cutLeftLineDict, CapacitorUnit\&.cutRightLineDict, and CapacitorUnit\&.topPlateRLayerDict\&. -.PP -Referenced by CapacitorUnit\&.drawCapacitor()\&. -.SS "def cutMaxNumber (self, width_layer, width_cut, spacing_cut, enclosure_cut)" - -.PP -Computes the maximal number of cuts to be placed on a layer of width \fCwidth_layer\fP considering specifications such as the spacing between the cuts, its width and its enclosure in the layer\&. -.PP -Referenced by CapacitorUnit\&.computeBottomPlateCuts(), and CapacitorUnit\&.computeTopPlateCuts()\&. -.SS "def cutLine (self, net, layer, firstCutXCenter, firstCutYCenter, width_cut, height_cut, spacing_cut, cutNumber, direction)" - -.PP -Creates a horizontal or vertical line of contacts according to the specified direction\&. -.PP -Referenced by CapacitorUnit\&.cutMatrix(), CapacitorUnit\&.drawBottomPlateCut(), and CapacitorUnit\&.drawTopPlateCut()\&. -.SS "def cutMatrix (self, net, layer, firstCutXCenter, firstCutYCenter, width_cut, height_cut, spacing_cut, cutColumnNumber, cutRowNumber)" - -.PP -Creates a matrix of cuts by vertically stacking horizontal lines of identical cuts\&. -.PP -\fBParameters:\fP -.RS 4 -\fInet\fP net to which the cuts belong -.br -\fIlayer\fP cuts physical layer -.br -\fIfirstCutXCenter\fP center's abcissa of the bottom left cut ( that is the first cut to be drawn in the matrix ) -.br -\fIfirstCutYCenter\fP center's abcissa of the bottom left cut -.br -\fI(width_cut,height_cut,spacing_cut)\fP cuts dimenions -.br -\fI(cutColumnNumber,cutRowNumber)\fP matrix dimensions -.RE -.PP -\fBRemarks:\fP -.RS 4 -The matrix can have any dimensions zero or negative one\&. -.RE -.PP - -.PP -References CapacitorUnit\&.cutLine()\&. -.PP -Referenced by CapacitorUnit\&.drawTopPlateCut()\&. -.SS "def getBottomPlateYMax (self)" - -.PP -\fBReturns:\fP -.RS 4 -the ordinate of the bottom plate's highest end-point ( that is equivalent to \fCdySource\fP of the bottom plate's box ) \&. -.RE -.PP - -.PP -References CapacitorUnit\&.bottomPlateBoxDict\&. -.SS "def getBottomPlateLeftCutXMin (self)" - -.PP -\fBReturns:\fP -.RS 4 -the abcissa of the bottom plate's left line of cuts\&. -.RE -.PP - -.SS "def getBottomPlateLeftCutYMin (self)" - -.PP -\fBReturns:\fP -.RS 4 -the ordinate of the first ( or bottom) cut in the left line of cuts on the bottom plate\&. -.RE -.PP - -.SS "def getBottomPlateLeftCutYMax (self)" - -.PP -\fBReturns:\fP -.RS 4 -the ordinate of the highest cut of the bottom plate's left line of cuts\&. -.RE -.PP - -.PP -References CapacitorUnit\&.bottomCutLineNumber, CapacitorUnit\&.minSpacingOnBotPlate_cut, and CapacitorUnit\&.minWidth_botPlatecut\&. -.SS "def getBottomPlateRightCutXMin (self)" - -.PP -\fBReturns:\fP -.RS 4 -the absissa of the bottom plate's right line of cuts\&. -.RE -.PP - -.SS "def getBottomPlateRightCutYMin (self)" - -.PP -\fBReturns:\fP -.RS 4 -the ordinate of the first ( or bottom) cut in the right line of cuts on the bottom plate\&. -.RE -.PP - -.PP -Referenced by CapacitorUnit\&.getBottomPlateRightCutYCenter()\&. -.SS "def getBottomPlateRightCutYMax (self)" - -.PP -\fBReturns:\fP -.RS 4 -the ordinate of the highest ( or top) cut in the right line of cuts on the bottom plate\&. -.RE -.PP - -.PP -References CapacitorUnit\&.bottomCutLineNumber, CapacitorUnit\&.minSpacingOnBotPlate_cut, and CapacitorUnit\&.minWidth_botPlatecut\&. -.PP -Referenced by CapacitorUnit\&.getBottomPlateRightCutYCenter()\&. -.SS "def getBotPlateLeftRLayerXMax (self)" - -.PP -\fBReturns:\fP -.RS 4 -the center's ordinate of the bottom plate's left cut (the cut that is the first one in the line)\&. -.RE -.PP - -.SS "def getBottomPlateRightCutYCenter (self)" - -.PP -\fBReturns:\fP -.RS 4 -the position of the bottom plate's right cuts on the horitontal axis (also applicable to left cuts)\&. -.RE -.PP - -.PP -References CapacitorUnit\&.getBottomPlateRightCutYMax(), and CapacitorUnit\&.getBottomPlateRightCutYMin()\&. -.SS "def getBotPlateLeftRLayerXMin (self)" - -.PP -\fBReturns:\fP -.RS 4 -the position of the bottom plate's left cuts on the horitontal axis\&. -.RE -.PP - -.SS "def getBotPlateRLayerYMin (self)" - -.PP -\fBReturns:\fP -.RS 4 -the position of bottom plate's left cuts on the horitontal axis\&. -.RE -.PP - -.SS "def getBotPlateRLayerYMax (self)" - -.PP -\fBReturns:\fP -.RS 4 -the position of bottom plate's left cuts on the horitontal axis\&. -.RE -.PP - -.SS "def getBotPlateRLayerWidth (self)" - -.PP -\fBReturns:\fP -.RS 4 -the position of bottom plate's left cuts on the horitontal axis\&. -.RE -.PP - -.SS "def getBotPlateRightRLayerXCenter (self)" - -.PP -\fBReturns:\fP -.RS 4 -the position of bottom plate's left cuts on the horitontal axis\&. -.RE -.PP - -.SS "def getBotPlateLeftRLayerXCenter (self)" - -.PP -\fBReturns:\fP -.RS 4 -the position of bottom plate's left cuts on the horitontal axis\&. -.RE -.PP - -.SS "def getTopPlateRLayerYMin (self)" - -.PP -\fBReturns:\fP -.RS 4 -the ordinate of the bottom end points of the top plate routing layer\&. -.RE -.PP - -.SS "def getTopPlateRLayerYMax (self)" - -.PP -\fBReturns:\fP -.RS 4 -the ordinate of the higher end points of the top plate routing layer\&. -.RE -.PP - -.SS "def getTopPlateRLayerWidth (self)" - -.PP -\fBReturns:\fP -.RS 4 -the width of top plate's routing layer\&. -.RE -.PP - -.SS "def getTopPlateRLayerXCenter (self)" - -.PP -\fBReturns:\fP -.RS 4 -the center's abcissa of the bottom plate routing layer\&. -.RE -.PP - -.SS "def getTopPlateRLayerXMin (self)" - -.PP -\fBReturns:\fP -.RS 4 -the origin (bottom-left end point) abcissa of the top plate routing layers\&. -.RE -.PP - -.PP -References CapacitorUnit\&.topPlateRLayerDict\&. -.SS "def getTopPlateRLayerXMax (self)" - -.PP -\fBReturns:\fP -.RS 4 -the abscissa of the bottom-right end-point of the top plate routing layer\&. -.RE -.PP - -.PP -References CapacitorUnit\&.topPlateRLayerDict\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for Oroshi - Analog Devices Layout from the source code\&. diff --git a/oroshi/doc/man/man3/python_CapacitorVRTracks_VerticalRoutingTracks.3 b/oroshi/doc/man/man3/python_CapacitorVRTracks_VerticalRoutingTracks.3 deleted file mode 100644 index 3105c43e..00000000 --- a/oroshi/doc/man/man3/python_CapacitorVRTracks_VerticalRoutingTracks.3 +++ /dev/null @@ -1,87 +0,0 @@ -.TH "VerticalRoutingTracks" 3 "Thu Mar 19 2020" "Version 1.0" "Oroshi - Analog Devices Layout" \" -*- nroff -*- -.ad l -.nh -.SH NAME -VerticalRoutingTracks \- -.PP -Route two matched capacitors, C1 and C2, drawn in a capacitor matrix\&. - -.SH SYNOPSIS -.br -.PP -.PP -Inherits CapacitorUnit, and CapacitorStack\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__setStretching__\fP" -.br -.RI "\fISets vertical stretching value considering spacing between elementary capacitors in the matrix\&. \fP" -.ti -1c -.RI "def \fBsetRules\fP" -.br -.RI "\fIDefines technology rules used to draw the layout\&. \fP" -.ti -1c -.RI "def \fBdrawVRoutingTracks\fP" -.br -.RI "\fIIteratively draws vertical routing tracks given the physical layer \fCvRoutingTracksLayer\fP\&. \fP" -.in -1c -.SH "Detailed Description" -.PP -Route two matched capacitors, C1 and C2, drawn in a capacitor matrix\&. - -Connections are put in place with reference to a given matching scheme\&. Elementary capacitor units are connected to horizontal and vertical routing tracks that represent top plates and bottom plates nets of C1 and C2\&. Supported types of capacitors are Poly-Poly and Metal-Metal\&. Technologycal rules are provided by 350 nm AMS CMOS technology with three-four metal layers\&. Metal layers that are used for routeing are placed similarly to horziontal-vertical (HV) symbolic Alliance CAD tool router, where horizontal metal channels are drawn in metal 2 and the vertical ones are in metal 3\&. Given a matrix of dimensions $ R*C $, the total number of vertical tracks is $ 2C+2 $ equivalent to $ C+1 $ couples, ensuring that every elementary capacitor is positioned between four vertical tracks, two from each side\&. In fact, every adjacent couple of these tracks represent top plates and bottom plates of C1 or C2 as shown in Figure 1\&. -.PP -Layout -.PP -An elementary capacitor unit can be a part of C1 or C2 according to the matching scheme\&. However, to respect common-centroid layout specifications, for C1 and C2 to be equal, the matrix number of colums and number of rows must be both even\&. Addionnally, the number of elementary capacitors dedicated to C1 must be equal to those dedicated to C2\&. These two conditions are tested in one of the class methods\&. An exception is raised if at least one of the two is not respected\&. -.SH "Member Function Documentation" -.PP -.SS "def __setStretching__ (self)" - -.PP -Sets vertical stretching value considering spacing between elementary capacitors in the matrix\&. -.PP -\fBReturns:\fP -.RS 4 -stratching value\&. -.RE -.PP - -.PP -References VerticalRoutingTracks\&.abutmentBox_spacing, CapacitorStack\&.abutmentBox_spacing, and RoutMatchedCapacitor\&.abutmentBox_spacing\&. -.PP -Referenced by RoutMatchedCapacitor\&.computeHRLayerYCenter(), and VerticalRoutingTracks\&.drawVRoutingTracks()\&. -.SS "def setRules (self)" - -.PP -Defines technology rules used to draw the layout\&. Some of the rules, namely those describing routeing layers and tracks are applicable for both MIM and PIP capacitors\&. However, cuts rules are different\&. -.PP -\fBRemark:\fP -.RS 4 -All \fCCapacitorStack\fP class rules are also reloaded in this class\&. An exception is raised if the entered capacitor type is unsupported\&. -.RE -.PP -\fBReturns:\fP -.RS 4 -a dictionary with rules labels as keys and rules content as values\&. -.RE -.PP - -.PP -References VerticalRoutingTracks\&.capacitorsNumber, CapacitorStack\&.capacitorsNumber, VerticalRoutingTracks\&.computeVRTDimensions(), VerticalRoutingTracks\&.drawVRoutingTracks(), VerticalRoutingTracks\&.minEnclosure_hRoutingLayer_vRoutingTrack_cut, VerticalRoutingTracks\&.minEnclosure_hRoutingTrackCut, VerticalRoutingTracks\&.minimizeVRTs(), VerticalRoutingTracks\&.minSpacing_hRoutingTrack, RoutMatchedCapacitor\&.minSpacing_hRoutingTrack, VerticalRoutingTracks\&.minWidth_hRoutingLayer, VerticalRoutingTracks\&.minWidth_hRoutingLayer_vRoutingTrack_cut, VerticalRoutingTracks\&.minWidth_hRoutingTrack, VerticalRoutingTracks\&.minWidth_hRoutingTrackCut, VerticalRoutingTracks\&.setRules(), CapacitorStack\&.setRules(), CapacitorUnit\&.setRules(), and RoutMatchedCapacitor\&.setRules()\&. -.PP -Referenced by VerticalRoutingTracks\&.setRules()\&. -.SS "def drawVRoutingTracks (self, vRoutingTracksLayer)" - -.PP -Iteratively draws vertical routing tracks given the physical layer \fCvRoutingTracksLayer\fP\&. Every elementary capacitor is consequently positioned between four routing tracks, two from each side\&. Each couple of adjacent routeing tracks represent top plate and bottom plate nets of Ci, where i is in [1,2]\&. As given in Figure 2, capacitor $ C_{ij} $ with an even j value situated in even columns have and inversely for odd columns numbers\&. -.PP -References VerticalRoutingTracks\&.__computeVRTsNumber__(), VerticalRoutingTracks\&.__findCapIdsToEliminate__(), VerticalRoutingTracks\&.__findCapIdsToEliminatePerColumn__(), VerticalRoutingTracks\&.__findUsedCapIdsPerColumn__(), VerticalRoutingTracks\&.__findVRTsToEliminate__(), VerticalRoutingTracks\&.__setNetsDistribution__(), VerticalRoutingTracks\&.__setPlatesDistribution__(), VerticalRoutingTracks\&.__setStretching__(), VerticalRoutingTracks\&.__setVRTsDistribution__(), VerticalRoutingTracks\&.abutmentBox_spacing, CapacitorStack\&.abutmentBox_spacing, RoutMatchedCapacitor\&.abutmentBox_spacing, VerticalRoutingTracks\&.capacitorIds, VerticalRoutingTracks\&.capacitorsNumber, CapacitorStack\&.capacitorsNumber, VerticalRoutingTracks\&.computeXCenters(), VerticalRoutingTracks\&.dummyElement, CapacitorStack\&.dummyElement, RoutMatchedCapacitor\&.dummyElement, VerticalRoutingTracks\&.dummyRing, CapacitorStack\&.dummyRing, RoutMatchedCapacitor\&.dummyRing, VerticalRoutingTracks\&.getVTrackYMax(), VerticalRoutingTracks\&.getVTrackYMin(), CapacitorUnit\&.hpitch, RoutMatchedCapacitor\&.hRoutingTrack_width, VerticalRoutingTracks\&.hRoutingTrack_width, VerticalRoutingTracks\&.matchingScheme, CapacitorStack\&.matchingScheme, CapacitorStack\&.matrixDim, VerticalRoutingTracks\&.matrixDim, RoutMatchedCapacitor\&.maximumPosition, VerticalRoutingTracks\&.maximumPosition, CapacitorUnit\&.metal2Width, VerticalRoutingTracks\&.minEnclosure_hRoutingTrackCut, VerticalRoutingTracks\&.minimizeVRT, RoutMatchedCapacitor\&.minimumPosition, VerticalRoutingTracks\&.minimumPosition, VerticalRoutingTracks\&.minWidth_hRoutingTrack, VerticalRoutingTracks\&.minWidth_hRoutingTrackCut, VerticalRoutingTracks\&.nets, CapacitorStack\&.nets, VerticalRoutingTracks\&.platesDistribution, VerticalRoutingTracks\&.vRoutingTrack_width, CapacitorStack\&.vRoutingTrack_width, VerticalRoutingTracks\&.vRoutingTrackDict, RoutMatchedCapacitor\&.vRoutingTrackDict, VerticalRoutingTracks\&.vRoutingTrackXCenter, RoutMatchedCapacitor\&.vRoutingTrackXCenter, VerticalRoutingTracks\&.vRTsDistribution, RoutMatchedCapacitor\&.vRTsDistribution, and VerticalRoutingTracks\&.vRTsToEliminate\&. -.PP -Referenced by VerticalRoutingTracks\&.setRules()\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for Oroshi - Analog Devices Layout from the source code\&. diff --git a/oroshi/doc/man/man3/python_Stack_Stack.3 b/oroshi/doc/man/man3/python_Stack_Stack.3 deleted file mode 100644 index d0142196..00000000 --- a/oroshi/doc/man/man3/python_Stack_Stack.3 +++ /dev/null @@ -1,185 +0,0 @@ -.TH "Stack" 3 "Thu Mar 19 2020" "Version 1.0" "Oroshi - Analog Devices Layout" \" -*- nroff -*- -.ad l -.nh -.SH NAME -Stack \- -.PP -Draw a \fBStack\fP of Transistors\&. - -.SH SYNOPSIS -.br -.PP -.PP -Inherits object\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__init__\fP" -.br -.RI "\fI\fB[API]\fP Constructor \fP" -.ti -1c -.RI "def \fBsetWirings\fP" -.br -.RI "\fI\fB[API]\fP Set the \fBStack\fP wiring specification\&. \fP" -.ti -1c -.RI "def \fBcomputeDimensions\fP" -.br -.RI "\fI\fB[internal]\fP Compute \fBStack\fP dimensions from the technological rules\&. \fP" -.ti -1c -.RI "def \fBdoLayout\fP" -.br -.RI "\fI\fB[API]\fP Draw the complete layout\&. \fP" -.in -1c -.SH "Detailed Description" -.PP -Draw a \fBStack\fP of Transistors\&. - -A \fBStack\fP of Transistors is a set of transistor put into a regular band and connected through their sources/drains\&. All share the exact same W & L\&. The way they are connecteds defines what functionnality the \fBStack\fP implement\&. -.PP -The abutment box of the stack is adjusted so that both height and width are even multiples of the track pitches, so the device can be easily placed and handled by the mixed router\&. The extra space needed for padding is added around the active area\&. Due to the presence of tracks at the top and bottom of the stack, the active area will be horizontally centered but \fBnot\fP vertically\&. -.PP -The drawing of the stack is controlled through a set of variables (attributes) that allows to create it regardless of the technology\&. The technology is taken into account in the way those variables are computed and, obviously, their values\&. The following schematics details the main stack drawing variables along with their computations\&. -.SH "Stack Layout" -.PP -.SS "Gate pitch" -.IP "\(bu" 2 -\fCself\&.gatePitch\fP : the pitch of transistors gates, inside the stack\&. It also applies to dummy transistors\&. -.PP -.PP -Gate Pitch Gate Pitch -.SS "Active Side Width" -.IP "\(bu" 2 -\fCself\&.activeSideWidth\fP : the distance between the axis of the last transistor gate (on the left or right) and the edge of the active area (\fInot\fP the diffusion area)\&. -.PP -.PP -Active Side Width Active Side Width -.SS "H-Track Distance" -.IP "\(bu" 2 -\fCself\&.hTrackDistance\fP : the minimal distance between either the top or bottom edge of the active area and the \fIaxis\fP of the first track\&. -.PP -.PP -H-Track distance H-Track distance -.SS "BoundingBox & Overall Variables" -.IP "\(bu" 2 -\fCself\&.xpitches\fP : the number of vertical track pitches needed to fully enclose the active area\&. -.IP "\(bu" 2 -\fCself\&.ypitches\fP : the number of horizontal track pitches needed to fully enclose the active area\&. -.IP "\(bu" 2 -\fCself\&.activeOffsetX\fP & \fCself\&.activeOffsetY\fP : the offsets of the active area from the bottom left corner of the abutment box\&. -.IP "\(bu" 2 -\fCself\&.diffusionWidth\fP & \fCself\&.diffusionHeight\fP are the minimun dimensions required to fit the active area\&. -.IP "\(bu" 2 -\fCself\&.topTracksNb()\fP : the number of tracks at the top of the stack\&. -.IP "\(bu" 2 -\fCself\&.botTracksNb()\fP : the number of tracks at the bottom of the stack\&. -.PP -.PP -General Stack Layout General Stack Layout -.SH "Wiring Specifications" -.PP -\fBStack\fP routing is done through vertical \fCmetal1\fP wires coming from the gates and diffusions areas and \fCmetal2\fP horizontal wires that can be either above or below the active area\&. \fCmetal2\fP wires (or track) goes through the whole stack and are assigned to one net only\&. A net will have at least one track above or below and may have both\&. -.PP -The connections to the diffusions areas and gates of the various fingers are specified through a list\&. The stack is made of a regular alternation of diffusions and gates\&. The list tells, for each one starting from the left, to which net and track they are connected\&. For a stack of $NFs$ transistor fingers, the must wiring specification must contains $ 3 + (NFs-1) \times 2$ elements\&. The list is given through one \fIstring\fP with each elements separated by one or more whitespace\&. The syntax for \fIone\fP element is detailed \fBAtomic Wiring Specification\fP\&. -.PP -\fBTrack numbering scheme\fP -.PP -Tracks above (top) the active area and below (bottom) each have their own numbering\&. In both case, the count start \fIfrom\fP the active area\&. This, the top tracks will be numbered by increasing Y and the bottom tracks by \fIdecreasing\fP Y\&. -.PP -\fBTrack/Net assignement\fP -.PP -The track/net assignement is deduced from the atomic wiring specifications\&. It also allows to compute the total number of tracks needed above and below the active area\&. -.PP -Wiring Specification Wiring Specification -.SS "Atomic Wiring Specification" -An atomic wiring specification has the same syntax for either diffusions or gates\&. It \fImust\fP not comprise any whitespaces\&. it is made of the following parts: -.IP "\(bu" 2 -The net name to connect to\&. -.IP "\(bu" 2 -Whether the track is above the active area (\fC't'\fP) or below (\fC'b'\fP)\&. The special case (\fC'z'\fP) means that this element must be left unconnected (is such case possible?)\&. -.IP "\(bu" 2 -The number of the track\&. -.PP -.PP -Atomic Wiring Specification Atomic Wiring Specification -.SH "Stack Implementation Details" -.PP -The \fC__setattr__()\fP and \fC__getattr__\fP functions have been redefined so that the technological values (rules) can be accessed has normal attributes of the \fBStack\fP class, in addition to the regular ones\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "def __init__ (self, device, NERC, NIRC)" - -.PP -\fB[API]\fP Constructor param rules The physical rule set\&. -.PP -\fBParameters:\fP -.RS 4 -\fIdevice\fP The \fBHurricane\fP AMS device into which the layout will be drawn\&. -.br -\fINERC\fP Number of contact rows in external (first & last) diffusion connectors\&. -.br -\fINIRC\fP Number of contact rows in middle diffusion connectors\&. param w The \fBwidth\fP of every transistor of the stack (aka \fIfingers\fP)\&. param L The \fBlength\fP of every transistor\&. param NFs The total number of fingers (dummies includeds)\&. param NDs The number of dummies to put on each side of the stack\&. -.RE -.PP - -.PP -References Stack\&.bImplantLayer, Stack\&.botTracks, Stack\&.botWTracks, Stack\&.bulkNet, Stack\&.bulks, Stack\&.device, Stack\&.dimensioned, Bulk\&.flags, Stack\&.flags, Stack\&.isNmos(), Stack\&.L, Stack\&.metaTnb(), Stack\&.metaTransistors, Stack\&.NDs, Stack\&.NERC, Stack\&.NFs, Stack\&.NIRC, Stack\&.tImplantLayer, Stack\&.topTracks, Stack\&.topWTracks, Stack\&.w, Stack\&.wellLayer, and Stack\&.wirings\&. -.SH "Member Function Documentation" -.PP -.SS "def setWirings (self, wiringSpec)" - -.PP -\fB[API]\fP Set the \fBStack\fP wiring specification\&. -.PP -\fBParameters:\fP -.RS 4 -\fIwiringSpec\fP A string defining the connections for the gates and diffusion areas\&. -.RE -.PP -For a comprehensive explanation of the wiring specification, refers to \fBWiring Specifications\fP \&. -.PP -References Stack\&.botTracks, Stack\&.botTracksNb(), Stack\&.botWTracks, Stack\&.bulkNet, Stack\&.computeDimensions(), Stack\&.device, Stack\&.dimensioned, Stack\&.eDiffMetal1Width, Bulk\&.flags, Stack\&.flags, Stack\&.gatePitch, Stack\&.getBotTrackY(), Stack\&.getHorizontalWidth(), Stack\&.horPitch, Stack\&.L, Stack\&.metal1ToGate, Stack\&.metaTransistors, Stack\&.sideActiveWidth, Stack\&.topTracks, Stack\&.topTracksNb(), Stack\&.topWTracks, Stack\&.wirings, and Stack\&.ypitches\&. -.SS "def computeDimensions (self)" - -.PP -\fB[internal]\fP Compute \fBStack\fP dimensions from the technological rules\&. \fBInternal function\&.\fP Perform the computation of: -.IP "\(bu" 2 -\fCself\&.metal1Pitch\fP -.IP "\(bu" 2 -\fCself\&.minWidth_metal1\fP -.IP "\(bu" 2 -\fCself\&.metal2Pitch\fP -.IP "\(bu" 2 -\fCself\&.minWidth_metal2\fP -.IP "\(bu" 2 -\fCself\&.gatePitch\fP -.IP "\(bu" 2 -\fCself\&.sideActiveWidth\fP -.IP "\(bu" 2 -\fCself\&.hTrackDistance\fP -.IP "\(bu" 2 -\fCself\&.xpitches\fP -.IP "\(bu" 2 -\fCself\&.ypitches\fP -.IP "\(bu" 2 -\fCself\&.activeOffsetX\fP -.IP "\(bu" 2 -\fCself\&.activeOffsetY\fP -.IP "\(bu" 2 -\fCself\&.boundingBox\fP -.PP - -.PP -References Stack\&.activeBox, Stack\&.activeOffsetX, Stack\&.activeOffsetY, Stack\&.bbHeight, Stack\&.bbWidth, Stack\&.botWTracks, Stack\&.boundingBox, Stack\&.bulks, Stack\&.bulkWidth, Stack\&.computeLayoutParasitics(), Stack\&.computeStressEffect(), Stack\&.contactDiffPitch, Stack\&.contactDiffSide, Stack\&.DGG, Stack\&.DGI, Stack\&.dimensioned, Stack\&.DMCG, Stack\&.DMCGT, Stack\&.DMCI, Stack\&.eDiffMetal1Width, Bulk\&.flags, Stack\&.flags, Stack\&.gatePitch, Stack\&.gateVia1Pitch, Stack\&.getBotTrackY(), Stack\&.getHorizontalWidth(), Stack\&.getLastTopTrackY(), Stack\&.horPitch, Stack\&.hTrackDistance, Stack\&.iDiffMetal1Width, Stack\&.isVH, Stack\&.L, Stack\&.metal1ToGate, Stack\&.metal2Pitch, Stack\&.metal2TechnoPitch, Stack\&.metal3Pitch, Stack\&.NERC, Stack\&.NFs, Stack\&.NIRC, Stack\&.sideActiveWidth, Stack\&.tracksNbPitch(), Stack\&.vBulkDistance, Stack\&.verPitch, Stack\&.w, Stack\&.wire1Width, Stack\&.wire2Width, Stack\&.wire3Width, Stack\&.wirings, Stack\&.xpitches, and Stack\&.ypitches\&. -.PP -Referenced by CapacitorUnit\&.create(), Stack\&.doLayout(), RoutMatchedCapacitor\&.route(), and Stack\&.setWirings()\&. -.SS "def doLayout (self, bbMode)" - -.PP -\fB[API]\fP Draw the complete layout\&. Draw the commplete layout of the \fBStack\fP\&. -.PP -References Stack\&.activeOffsetX, Stack\&.activeOffsetY, Stack\&.bbWidth, Stack\&.botTracks, Stack\&.botWTracks, Stack\&.boundingBox, Stack\&.bulkNet, Stack\&.bulks, Stack\&.bulkWidth, Stack\&.computeDimensions(), Stack\&.contactDiffPitch, Stack\&.device, Stack\&.DGG, Stack\&.DGI, Stack\&.DMCG, Stack\&.DMCGT, Stack\&.DMCI, Stack\&.drawActive(), Stack\&.drawGate(), Stack\&.drawSourceDrain(), Stack\&.drawWell(), Stack\&.eDiffMetal1Width, Bulk\&.flags, Stack\&.flags, Stack\&.gatePitch, Stack\&.gateVia1Pitch, Stack\&.getBotTrackY(), Stack\&.getHorizontalAxis(), Stack\&.getHorizontalWidth(), Stack\&.getTopTrackY(), Stack\&.getWiringWidth(), Stack\&.horPitch, Stack\&.iDiffMetal1Width, Stack\&.isBotTrack(), Stack\&.isVH, Stack\&.L, Stack\&.metal1ToGate, Stack\&.NERC, Stack\&.NFs, Stack\&.NIRC, Stack\&.sideActiveWidth, Stack\&.tImplantLayer, Stack\&.topTracks, Stack\&.topWTracks, Stack\&.w, Stack\&.wellLayer, Stack\&.wire1Width, Stack\&.wire2Width, Stack\&.wire3Width, and Stack\&.wirings\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for Oroshi - Analog Devices Layout from the source code\&. diff --git a/oroshi/doc/rtf/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 b/oroshi/doc/rtf/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 deleted file mode 100644 index 9c2da9ab..00000000 --- a/oroshi/doc/rtf/classpython_1_1CapacitorMatrix_1_1CapacitorStack__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6d59f047aa372948d1fcd41f41b1f537 \ No newline at end of file diff --git a/oroshi/doc/rtf/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 b/oroshi/doc/rtf/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 deleted file mode 100644 index 2c43a5d2..00000000 --- a/oroshi/doc/rtf/classpython_1_1CapacitorRouted_1_1RoutMatchedCapacitor__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d6c9adda9bbd3f3b5faa5c7f1118343e \ No newline at end of file diff --git a/oroshi/doc/rtf/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 b/oroshi/doc/rtf/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 deleted file mode 100644 index a68c56c8..00000000 --- a/oroshi/doc/rtf/classpython_1_1CapacitorUnit_1_1CapacitorUnit__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -50514444a4014c92a4db51e06796eaa6 \ No newline at end of file diff --git a/oroshi/doc/rtf/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.md5 b/oroshi/doc/rtf/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.md5 deleted file mode 100644 index f448ab6a..00000000 --- a/oroshi/doc/rtf/classpython_1_1CapacitorVRTracks_1_1VerticalRoutingTracks__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3d3cf14caaab2647a548eff0ca30853f \ No newline at end of file