public class XMLRules extends java.lang.Object implements DRCRules, java.io.Serializable
Modifier and Type | Class and Description |
---|---|
static class |
XMLRules.XMLRule
Local class to store information
|
Modifier and Type | Field and Description |
---|---|
java.util.HashMap<XMLRules.XMLRule,XMLRules.XMLRule>[] |
matrix
Hash map to store rules per matrix index
|
Constructor and Description |
---|
XMLRules(Technology t) |
Modifier and Type | Method and Description |
---|---|
void |
addRule(int index,
DRCTemplate rule)
Method to add a rule based on template
|
void |
addRule(int index,
DRCTemplate rule,
DRCTemplate.DRCRuleType spacingCase,
boolean wideRules)
OLD FUNCTION
|
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 |
getMinValue(Layer layer,
DRCTemplate.DRCRuleType type)
Method to get the minimum
|
java.lang.String[] |
getNodesWithRules()
To retrieve those nodes whose have rules
|
int |
getNumberOfRules()
Method to get total number of rules stored
|
XMLRules.XMLRule |
getRule(int index,
DRCTemplate.DRCRuleType type)
Method to retrieve simple layer or node rules
|
XMLRules.XMLRule |
getRule(int index,
DRCTemplate.DRCRuleType type,
java.lang.String nodeName)
Method to retrieve specific SURROUND 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.
|
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 spacingCase,
boolean wideRules)
Method to retrieve different spacing rules depending on spacingCase.
|
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 |
loadDRCRules(Technology tech,
Foundry foundry,
DRCTemplate theRule,
boolean pWellProcess) |
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) |
void |
setWideLimits(double[] values)
To set wide limit for old techs
// * @param values
|
public java.util.HashMap<XMLRules.XMLRule,XMLRules.XMLRule>[] matrix
public XMLRules(Technology t)
public 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 DRCTemplate getEdgeRule(Layer layer1, Layer layer2)
getEdgeRule
in interface DRCRules
layer1
- the first layer.layer2
- the second layer.public boolean doesAllowMultipleWideRules(int index)
doesAllowMultipleWideRules
in interface DRCRules
index
- public int getNumberOfRules()
getNumberOfRules
in interface DRCRules
public java.lang.String[] getNodesWithRules()
getNodesWithRules
in interface DRCRules
public java.util.List<DRCTemplate> getSpacingRules(int index, DRCTemplate.DRCRuleType spacingCase, boolean wideRules)
getSpacingRules
in interface DRCRules
index
- spacingCase
- wideRules
- 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 XMLRules.XMLRule getRule(int index, DRCTemplate.DRCRuleType type)
public XMLRules.XMLRule getRule(int index, DRCTemplate.DRCRuleType type, java.lang.String nodeName)
public DRCTemplate getMinValue(Layer layer, DRCTemplate.DRCRuleType type)
getMinValue
in interface DRCRules
layer
- the Layer to examine.type
- rule typepublic 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 setWideLimits(double[] values)
public void deleteRule(int index, DRCTemplate rule)
deleteRule
in interface DRCRules
index
- rule
- public void addRule(int index, DRCTemplate rule, DRCTemplate.DRCRuleType spacingCase, boolean wideRules)
public void addRule(int index, DRCTemplate rule)
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
- true to find the distance when this is part of a multicut contact.wideS
- widest polygonlength
- length of the intersectionpublic 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 boolean isAnySpacingRule(Layer layer1, Layer layer2)
isAnySpacingRule
in interface DRCRules
layer1
- the first Layer to check.layer2
- the second Layer to check.public DRCTemplate isForbiddenNode(int nodeIndex, DRCTemplate.DRCRuleType type)
isForbiddenNode
in interface DRCRules
nodeIndex
- index of node in DRC rules map to examinetype
- rule typepublic double getWorstSpacingDistance(int lastMetal)
getWorstSpacingDistance
in interface DRCRules
lastMetal
- last metal to check if only metal values are requestedpublic double getMaxSurround(Layer layer, double maxSize)
getMaxSurround
in interface DRCRules
layer
- the Layer to examine.public void applyDRCOverrides(java.lang.String override, Technology tech)
applyDRCOverrides
in interface DRCRules
override
- the override string.tech
- the Technology in which these rules live.public void loadDRCRules(Technology tech, Foundry foundry, DRCTemplate theRule, boolean pWellProcess)