Modifier and Type | Field and Description |
---|---|
java.lang.Double[] |
conList
minimum distances when connected
|
java.lang.Double[] |
conListMulti
minimum distances when connected (multi-cut)
|
java.lang.String[] |
conListMultiRules
minimum distance rules when connected (multi-cut)
|
java.lang.String[] |
conListNodes
minimum distance ruless when connected
|
java.lang.String[] |
conListRules
minimum distance ruless when connected
|
java.lang.Double[] |
conListWide
minimum distances when connected (wide)
|
java.lang.String[] |
conListWideRules
minimum distance rules when connected (wide)
|
java.lang.Double[] |
cutNodeSize
cut size in the technology
|
java.lang.String[] |
cutNodeSizeRules
cut size rules
|
java.lang.Double[] |
cutNodeSpa1D
cut 1D spacing in the technology
|
java.lang.String[] |
cutNodeSpa1DRules
cut 1D s[acing rules
|
java.lang.Double[] |
cutNodeSpa2D
cut 2D spacing in the technology
|
java.lang.String[] |
cutNodeSpa2DRules
cut 2D s[acing rules
|
java.lang.Double[] |
cutNodeSurround
cut surround in the technology
|
java.lang.String[] |
cutNodeSurroundRules
cut surround rules
|
java.lang.Double[] |
edgeList
minimum edge distances
|
java.lang.String[] |
edgeListRules
minimum edge distance rules
|
java.lang.String[] |
layerNames
names of layers
|
java.lang.Double[] |
minArea
minimum area rules
|
java.lang.String[] |
minAreaRules
minimum area rule names
|
java.lang.Double[] |
minNodeSize
minimim node size in the technology
|
java.lang.String[] |
minNodeSizeRules
minimim node size rules
|
java.lang.Double[] |
minWidth
minimum width of layers
|
java.lang.String[] |
minWidthRules
minimum width rules
|
java.lang.String[] |
nodeNames
names of nodes
|
int |
numLayers
number of layers in the technology
|
int |
numNodes
number of nodes in the technology
|
java.lang.Double[] |
slotSize
maximum slot size rules
|
java.lang.String[] |
slotSizeRules
maximum slot size rule names
|
double |
transPolyOverhang
poly overhang/surround along gate
|
java.lang.Double[] |
unConList
minimum distances when unconnected
|
java.lang.Double[] |
unConListMulti
minimum distances when unconnected (multi-cut)
|
java.lang.String[] |
unConListMultiRules
minimum distance rules when unconnected (multi-cut)
|
java.lang.String[] |
unConListNodes
minimum distance rules when unconnected
|
java.lang.String[] |
unConListRules
minimum distance rules when unconnected
|
java.lang.Double[] |
unConListWide
minimum distances when unconnected (wide)
|
java.lang.String[] |
unConListWideRules
minimum distance rules when unconnected (wide)
|
int |
uTSize
size of upper-triangle of layers
|
java.lang.Double |
wideLimit
width limit that triggers wide rules
|
Constructor and Description |
---|
MOSRules() |
MOSRules(Technology t) |
Modifier and Type | Method and Description |
---|---|
void |
addRule(int index,
DRCTemplate rule) |
void |
addRule(int index,
DRCTemplate rule,
DRCTemplate.DRCRuleType spacingCase,
boolean wideRules)
Method to add a rule based on template
|
void |
applyDRCOverrides(java.lang.String override,
Technology tech)
Method to apply overrides to a set of rules.
|
void |
deleteRule(int index,
DRCTemplate rule)
Method to delete a given spacing rule
|
boolean |
doesAllowMultipleWideRules(int index)
Method to tell UI if multiple wide rules are allowed.
|
DRCTemplate |
getEdgeRule(Layer layer1,
Layer layer2)
Method to find the edge spacing rule between two layer.
|
DRCTemplate |
getExtensionRule(Layer layer1,
Layer layer2,
boolean isGateExtension)
Method to find the extension rule between two layer.
|
double |
getMaxSurround(Layer layer,
double maxSize)
Method to find the maximum design-rule distance around a layer.
|
DRCTemplate |
getMinNodeSize(int index,
int when) |
DRCTemplate |
getMinValue(Layer layer,
DRCTemplate.DRCRuleType type)
Method to get the minimum
|
java.lang.String[] |
getNodesWithRules()
To retrieve those nodes that have rules.
|
int |
getNumberOfRules()
Method to retrieve total number of rules stored.
|
double |
getPolyOverhang()
Method to return overhang of poly in transistors along the gate
|
DRCTemplate |
getRule(int index,
DRCTemplate.DRCRuleType type)
Method to retrieve simple layer or node rules
|
DRCTemplate |
getRule(int index,
DRCTemplate.DRCRuleType type,
java.lang.String nodeName)
Method to retrieve specific rules stored per node that involve two layers
|
int |
getRuleIndex(int index1,
int index2)
Method to determine the index in the upper-left triangle array for two layers/nodes.
|
static int |
getRuleIndex(int index1,
int index2,
int numLayers)
Method to determine the index in the upper-left triangle array for two layers/nodes.
|
java.util.List<DRCTemplate> |
getRules(Layer layer1,
DRCTemplate.DRCRuleType type)
Method to find all rules of specified type associated to Layer layer1
|
DRCTemplate |
getSpacingRule(Layer layer1,
Geometric geo1,
Layer layer2,
Geometric geo2,
boolean connected,
int multiCut,
double wideS,
double length)
Method to find the spacing rule between two layer.
|
java.util.List<DRCTemplate> |
getSpacingRules(int index,
DRCTemplate.DRCRuleType type,
boolean wideRules)
Method to retrieve different spacing rules depending on type.
|
Technology |
getTechnology()
Method to determine the technology associated with this rules set.
|
double |
getWorstSpacingDistance(int lastMetal)
Method to find the worst spacing distance in the design rules.
|
boolean |
isAnySpacingRule(Layer layer1,
Layer layer2)
Method to tell whether there are any design rules between two layers.
|
DRCTemplate |
isForbiddenNode(int nodeIndex,
DRCTemplate.DRCRuleType type)
Method to determine if given node is not allowed by foundry.
|
void |
setMinValue(Layer layer,
java.lang.String name,
double value,
DRCTemplate.DRCRuleType type)
Method to set the minimum
|
void |
setSpacingRules(int index,
java.util.List<DRCTemplate> newRules,
DRCTemplate.DRCRuleType spacingCase,
boolean wideRules) |
public int numLayers
public int uTSize
public java.lang.Double wideLimit
public java.lang.String[] layerNames
public java.lang.Double[] minWidth
public java.lang.String[] minWidthRules
public java.lang.Double[] conList
public java.lang.String[] conListRules
public java.lang.String[] conListNodes
public java.lang.Double[] unConList
public java.lang.String[] unConListRules
public java.lang.String[] unConListNodes
public java.lang.Double[] conListWide
public java.lang.String[] conListWideRules
public java.lang.Double[] unConListWide
public java.lang.String[] unConListWideRules
public java.lang.Double[] conListMulti
public java.lang.String[] conListMultiRules
public java.lang.Double[] unConListMulti
public java.lang.String[] unConListMultiRules
public java.lang.Double[] edgeList
public java.lang.String[] edgeListRules
public java.lang.Double[] minArea
public java.lang.String[] minAreaRules
public java.lang.Double[] slotSize
public java.lang.String[] slotSizeRules
public int numNodes
public java.lang.String[] nodeNames
public java.lang.Double[] minNodeSize
public java.lang.String[] minNodeSizeRules
public java.lang.Double[] cutNodeSize
public java.lang.String[] cutNodeSizeRules
public java.lang.Double[] cutNodeSpa1D
public java.lang.String[] cutNodeSpa1DRules
public java.lang.Double[] cutNodeSpa2D
public java.lang.String[] cutNodeSpa2DRules
public java.lang.Double[] cutNodeSurround
public java.lang.String[] cutNodeSurroundRules
public double transPolyOverhang
public MOSRules()
public MOSRules(Technology t)
public DRCTemplate getMinNodeSize(int index, int when)
index
- represents node, widths are stored in index*2 and height in index*2+jwhen
- represents the foundry being usedpublic Technology getTechnology()
getTechnology
in interface DRCRules
public int getRuleIndex(int index1, int index2)
getRuleIndex
in interface DRCRules
index1
- the first layer/node index.index2
- the second layer/node index.public static int getRuleIndex(int index1, int index2, int numLayers)
index1
- the first layer/node index.index2
- the second layer/node index.numLayers
- the number of layerspublic double getPolyOverhang()
public DRCTemplate isForbiddenNode(int nodeIndex, DRCTemplate.DRCRuleType type)
isForbiddenNode
in interface DRCRules
nodeIndex
- index of node in DRC rules map to examine.type
- rule type.public double getWorstSpacingDistance(int lastMetal)
getWorstSpacingDistance
in interface DRCRules
lastMetal
- public double getMaxSurround(Layer layer, double maxSize)
getMaxSurround
in interface DRCRules
layer
- the Layer to examine.public java.util.List<DRCTemplate> getRules(Layer layer1, DRCTemplate.DRCRuleType type)
public DRCTemplate getExtensionRule(Layer layer1, Layer layer2, boolean isGateExtension)
getExtensionRule
in interface DRCRules
layer1
- the first layer.layer2
- the second layer.isGateExtension
- to decide between the rule EXTENSIONGATE or EXTENSIONpublic DRCTemplate getEdgeRule(Layer layer1, Layer layer2)
getEdgeRule
in interface DRCRules
layer1
- the first layer.layer2
- the second layer.public DRCTemplate getSpacingRule(Layer layer1, Geometric geo1, Layer layer2, Geometric geo2, boolean connected, int multiCut, double wideS, double length)
getSpacingRule
in interface DRCRules
layer1
- the first layer.layer2
- the second layer.connected
- true to find the distance when the layers are connected.multiCut
- 1 to find the distance when this is part of a multicut contact.wideS
- widest polygonlength
- length of the intersectionpublic boolean isAnySpacingRule(Layer layer1, Layer layer2)
isAnySpacingRule
in interface DRCRules
layer1
- the first Layer to check.layer2
- the second Layer to check.public boolean doesAllowMultipleWideRules(int index)
doesAllowMultipleWideRules
in interface DRCRules
index
- the index in the upper-diagonal table of layers.public int getNumberOfRules()
getNumberOfRules
in interface DRCRules
public java.lang.String[] getNodesWithRules()
getNodesWithRules
in interface DRCRules
public void addRule(int index, DRCTemplate rule)
public void addRule(int index, DRCTemplate rule, DRCTemplate.DRCRuleType spacingCase, boolean wideRules)
public void deleteRule(int index, DRCTemplate rule)
deleteRule
in interface DRCRules
index
- rule
- public void setSpacingRules(int index, java.util.List<DRCTemplate> newRules, DRCTemplate.DRCRuleType spacingCase, boolean wideRules)
setSpacingRules
in interface DRCRules
index
- newRules
- spacingCase
- SPACING for normal case, SPACINGW for wide case, CUTSPA for multi cutswideRules
- public java.util.List<DRCTemplate> getSpacingRules(int index, DRCTemplate.DRCRuleType type, boolean wideRules)
getSpacingRules
in interface DRCRules
index
- the index of the layer being queried.type
- SPACING (normal values), SPACINGW (wide values),
SPACINGE (edge values) and CUTSPA (multi cuts).wideRules
- public DRCTemplate getMinValue(Layer layer, DRCTemplate.DRCRuleType type)
getMinValue
in interface DRCRules
layer
- the Layer to examine.type
- rule typepublic DRCTemplate getRule(int index, DRCTemplate.DRCRuleType type)
public DRCTemplate getRule(int index, DRCTemplate.DRCRuleType type, java.lang.String nodeName)
public void setMinValue(Layer layer, java.lang.String name, double value, DRCTemplate.DRCRuleType type)
setMinValue
in interface DRCRules
layer
- the Layer to examine.name
- the rule namevalue
- the new rule valuetype
- rule typepublic void applyDRCOverrides(java.lang.String override, Technology tech)
applyDRCOverrides
in interface DRCRules
override
- the override string.tech
- the Technology in which these rules live.