Class Reference extractionModule

A module to extract electrical parameter from the design. More...

Member

double calcResistance(pointArray p, int port1, int port2)
void extractComponent(string comp,string lib )
void inductanceAdd(element *shape, int conductorNum)
void inductanceAddSelection()
void inductanceCalc(double frequency=1000000)
void inductanceClear()
double inductanceResult(int con1,int con2)
void removeExtractedDevices()
void setDetailsResistance(int)

Detailed Description

graph LR la(layout)--extractionTool-->em(extractionModule) click la "/layoutscript/api/layout" click em "/layoutscript/api/extractionmodule" classDef thisClas fill:#eaf5fc,stroke:#3c7faa,stroke-width:4px; classDef clas fill:#eaf5fc,stroke:#3c7faa,stroke-width:1px; class em thisClas class la clas

Electrical extraction runs through layout->extractionTool, an extractionModule. calcResistance takes one polygon and two edge indices as ports and returns a dimensionless factor you multiply by sheet resistance. extractComponent pulls a named device from a component library; removeExtractedDevices deletes devices that a previous extract created. Inductance uses a list of conductors: inductanceClear, then inductanceAdd or inductanceAddSelection (paths are treated as in-plane current, polygons as current through the plane), then inductanceCalc at a frequency. inductanceResult returns self inductance when both conductor indices are equal and mutual coupling otherwise. The example below extracts two metal layers as two conductors and prints the self inductance of the first in nanohenry.

Example:

 // setup and performs the extraction
 layout->extractionTool->inductanceClear();
 layout->drawing->deselectAll();
 layout->drawing->activeLayer=1;
 layout->drawing->selectActiveLayer();
 layout->extractionTool->inductanceAddSelection();
 layout->drawing->deselectAll();
 layout->drawing->activeLayer=6;
 layout->drawing->selectActiveLayer();
 layout->extractionTool->inductanceAddSelection();
 layout->drawing->deselectAll();
 layout->extractionTool->inductanceCalc(1000000);
 debug("output self inductance in nH");
 debug(layout->extractionTool->inductanceResult(0,0)*1000000000); //output in nH

Member Function Documentation


double extractionModule::calcResistance(pointArray p, int port1, int port2)

Computes the resistance of one polygon p. port1 and port2 are edge indices: 1 uses the segment from point 1 to point 2 as a port.

Parameter:
p polygon
port1 first port segment index
port2 second port segment index

Returns: a dimensionless square count; multiply by sheet resistance for ohms.


void extractionModule::extractComponent(string comp,string lib )

Extracts the component comp using extraction data stored in library lib.


void extractionModule::inductanceAdd(element *shape, int conductorNum)

Adds shape to conductor conductorNum. Paths are treated as current in the drawing plane; polygons as current through the plane. The shortest path through the conductor is assumed.

Parameter:
shape shape added to the conductor
conductorNum conductor index

void extractionModule::inductanceAddSelection()

Adds all selected shapes as a new conductor.


void extractionModule::inductanceCalc(double frequency=1000000)

Runs the inductance calculation at frequency hertz (default 1e6).


void extractionModule::inductanceClear()

Removes every shape previously added for inductance.


double extractionModule::inductanceResult(int con1,int con2)

Returns: self inductance when con1 equals con2, otherwise mutual coupling.

 // setup and performs the extraction
 layout->extractionTool->inductanceClear();
 layout->drawing->deselectAll();
 layout->drawing->activeLayer=1;
 layout->drawing->selectActiveLayer();
 layout->extractionTool->inductanceAddSelection();
 layout->drawing->deselectAll();
 layout->drawing->activeLayer=6;
 layout->drawing->selectActiveLayer();
 layout->extractionTool->inductanceAddSelection();
 layout->drawing->deselectAll();
 layout->extractionTool->inductanceCalc(1000000);
 debug("output self inductance in nH");
 debug(layout->extractionTool->inductanceResult(0,0)*1000000000); //output in nH

void extractionModule::removeExtractedDevices()

Removes devices created by a previous extract from the current cell, including device cells that are no longer used.


void extractionModule::setDetailsResistance(int)

Sets how finely resistance is meshed. Allowed values run from 0 (fastest) to 100 (most detailed).