A module with many design rule checks. More...
This class allows the access to the design rule checker. For each rule available in the graphical user interface, there is a corresponding method in this class. Please see Design Rule Checker documentation for a more detailed description of the checks. Also the reporting of violations and the drc region can be setup by using this class.
For a complete DRC a plenty of rules are required. For a complete DRC in one step please create a macro with all your rules. There you can also give each rule an individual name. This macro gives an example. It is also included in the example macros.
#!/usr/bin/layout
#name=Macro: drc example.layout
#help=example for a drc macro
int main(){
layout->drcTool->result="DRC (LayoutEditor example) \r\n";
// setup error layer
layout->drawing->activeLayer=0;
layout->drcTool->setErrorLayerToActiveLayer();
// check for layer metal 1
layout->drcTool->ruleName= "Minimum Size Metal1";
layout->drcTool->minimumSize(800,6,true);
layout->drcTool->ruleName= "Minimum Distance Metal1";
layout->drcTool->minimumElementDistance(800,6,true);
// check for layer metal 2
layout->drcTool->ruleName= "Minimum Size Metal2";
layout->drcTool->minimumSize(900,8,true);
layout->drcTool->ruleName= "Minimum Distance Metal2";
layout->drcTool->minimumElementDistance(900,8,true);
// check for via1 (metal1 to metal2)
layout->drcTool->ruleName= "Via in metal1";
layout->drcTool->inside(50,7,6);
layout->drcTool->ruleName= "Via in metal2";
layout->drcTool->inside(60,7,8);
layout->drcTool->showReport();
}
See also: DesignRuleChecker
Add a drc violation to the list of detected violations. This feature can be used to create own drc checks or importing results of external drc checks. Please see getViolationType for a list of supported types.
See also: getViolationType()
Adds a violation graphical in the same way it is done with internal checks. (introduced with release 20191212)
// displays the DRC window
layout->showToolBar("Design Rule Checker");
pointArray pa;
pa.attach(40,50);
pa.attach(40,70);
pa.attach(90,50);
// if graphical display is enabled, it display a polygon on the error layer
if (layout->drcTool->isCheckedGraphical())
layout->drcTool->addViolationGraphical(pa);
// adds the violation to the violation list, if enabled in the user interface
if (layout->drcTool->isCheckedList())
layout->drcTool->addViolation("rule 3.4",0,pa.minimum(),pa.maximum(),2);
Tests for elements with non 45°angle to the axis.
See also: AngleCheck, DesignRuleChecker
Tests for elements with non 90°angle to the axis.
See also: AngleCheck, DesignRuleChecker
checkes all circles on the given layer on its radius. If min or max is zero, the minimum or maximum radius is not checked.
Parameter: | |
---|---|
min | minimum allowed radius |
max | maximal allowed radius |
layer | layer to be checked |
See also: DesignRuleChecker
all graphical DRC results in the current cell will be removed from the current design.
Clears the list of detected violations.
Check the densitiy of a single layer. min and max is the required density in procent. box is the rectangle size in which the density muss fit.
See also: DensityCheck, DesignRuleChecker
Tests, for element with axis dimension outside the specified range.
Number of errors on last check.
Sum of detected errors.
On this layer all errors are marked.
Tests, for element with a different size than a specified value.
See also: DimensionCheck, DesignRuleChecker
Tests, if all elements on insidelayer are inside in one of layer1 to layer3 and have a exact distance.
See also: Inside, DesignRuleChecker
Returns: result, it is crop of all no errors if it is longer than 40 lines.
Returns: the rule name of the violation on position index.
Example violation readout:
debug->clear();
int typ=1;
int index=0;
string location="Positions of Error 0201\n";
while (typ>=0){
string name=layout->drcTool->getViolationName(index).left(4);
typ=layout->drcTool->getViolationType(index);
if (name=="0201"){
string s1,s2;
point p=layout->drcTool->getViolationPoint1(index);
s1.setNum(p.x()); s2.setNum(p.y());
location+=s1+"/"+s2+"\n";
}
index++;
}
debug(location);
debug->show();
Returns: the value of the violation on position index, 0 if the index does not exists.
Returns: the status of the violation on position index, -1 if the index does not exists.
Returns: the type of the violation on position index, -1 if the index does not exists.
Type: | DRC: |
---|---|
1 | MinimumSize |
2 | OverlappingElements |
3 | MinimumElementsDistance |
4 | MinimumNotches |
5 | NoHoles |
6 | DimensionCheck |
7 | AreaCheck |
8 | AngleCheck |
9 | PerimeterCheck |
10 | MinimumDistance |
11 | MinimumDistanceOrOverlap |
12 | Inside |
13 | Enclosure |
14 | MinimumOverlap |
15 | OverlapDistance |
16 | LayerCombination |
17 | OnGrid |
18 | OnlyCircle |
19 | NoElement |
20 | NoPath |
21 | NoBox |
22 | NoPolygon |
23 | NoText |
24 | NoCircle |
25 | Self-Intersection |
26 | DensityCheck |
27 | NoPathesWithSpikes |
28 | CircleDimension |
29 | OnlyRectangle |
30 | NoZeroWidth |
31 | Inaccessibility |
32 | MinimumEdgeLength |
Returns: the position1 of the violation on position index.
Returns: the position2 of the violation on position index.
Tests, if all elements on insidelayer are inside in one of layer1 to layer3 and have a minimum distance.
See also: Inside, DesignRuleChecker
Returns: true, if the list illustration is enabled in the user interface (introduced with release 20191212)
Returns: true, if the graphical illustration is enabled in the user interface (introduced with release 20191212)
Tests, if there exists regions on all layers.
See also: LayerCombination, DesignRuleChecker
Load a list of violations into the user interface.
displays the violation list in full height of the toolbar, checks and setup buttons will get invisible. (introduced with release 20200503)
Tests for elements with angle bigger anglevalue on layer.
See also: AngleCheck, DesignRuleChecker
Tests for elements with an area bigger than areavalue on layer.
See also: AreaCheck, DesignRuleChecker
Tests, for element with axis dimension bigger a specified value.
See also: DimensionCheck, DesignRuleChecker
It is checked, if any shape on layer1 has a shape on layer2 next it with a distance less than distance.
See also: MinimumDistance, DesignRuleChecker
wil check the most remote inner point of any shape. If it is located more far away from any edge as the entered value a violation is triggered.
See also: InaccessibilityCheck, DesignRuleChecker
Tests, if all elements on insidelayer are inside in one of layer1 to layer3 and have a maximum distance.
See also: Inside, DesignRuleChecker
Tests for perimeter bigger than perimetervalue on layer.
See also: PerimeterCheck, DesignRuleChecker
Tests for elements with angle smaller anglevalue on layer. anglevalue must be a negative value. So it is a test for obtuse angles. With an check value of 0 a check for convext polygons is performed. (introduced with release 20191206)
See also: AngleCheck, DesignRuleChecker
Tests for elements with an area smaller than areavalue on layer.
See also: AreaCheck, DesignRuleChecker
Tests, for element with axis dimension smaller a specified value.
See also: DimensionCheck, DesignRuleChecker
Tests, if all elements between layer1 and layer2 have a minimum distance
See also: maximumDistance(), [MinimumDistance]((/layout/design-rule-checker/multi-layer-checks#distane) DesignRuleChecker
Tests, if all elements between layer1 and layer2 have a minimum distance, an overlap is not marked as an error.
See also: MinimumDistanceOrOverlap, DesignRuleChecker
Tests for edges smaller edgeSize in polygon, path, and box elements on the layer. (introduced with release 20221119)
Tests, if there are elements on layer with a lower distance.
See also: MinimumElementsDistance, DesignRuleChecker
Tests, if there are elements on active layer with a lower distance.
See also: MinimumElementsDistance, DesignRuleChecker
layer1 must enclose layer2 by minimum of distance
See also: Enclosure, DesignRuleChecker
wil check the most remote inner point of any shape. If it is located nearer to an edge as the entered value a violation is triggered.
See also: InaccessibilityCheck, DesignRuleChecker
Tests, if all elements on insidelayer are inside in one of layer1 to layer3 and have a minimum distance.
See also: Inside, DesignRuleChecker
Tests, if all elements on insidelayer are inside in one of layer1 to layer3 and have a minimum distance or alternative completely outside of any inside layer.
See also: Inside, DesignRuleChecker
Tests for notches smaller notchsize in polygon/path elements on the layer. If mergeBefore is true all shapes will be merged before the check. If testSlots is true, also slots within a single element will be checked.
See also: MinimumNotches, DesignRuleChecker
Tests, if all elements between layer1 and layer2 have a minimum overlap .
See also: MinimumOverlap, DesignRuleChecker
Performs an boolean and operation of the two layers and tests, if its distance.
See also: OverlapDistance, DesignRuleChecker
Tests for perimeter smaller than perimetervalue on layer.
See also: PerimeterChecck, DesignRuleChecker
Tests, if all elements on layer have a minimum size. If mergeBefure is true, all elements are merged. If sharpAngles is true, sharp angles will also be marked as an error.
See also: MinimumSize, DesignRuleChecker
Tests ,if there are box elements on the active layer.
See also: NoBox, DesignRuleChecker
Tests ,if there are box elements on the layer.
See also: NoBox, DesignRuleChecker
Tests, if there is a polygon with a circular shape on the active layer.
See also: NoCircle, DesignRuleChecker
Tests, if there is a polygon with a circular shape on the layer.
See also: NoCircle, DesignRuleChecker
Tests ,if there are elements on the active layer.
See also: NoElement, DesignRuleChecker
Tests ,if there are elements on the layer.
See also: NoElement, DesignRuleChecker
Tests, if there is a polygon with a hole on the layer.
See also: NoHoles, DesignRuleChecker
Tests, if there are path elements on the active layer.
See also: NoPath, DesignRuleChecker
Tests, if there are path elements on the layer.
See also: NoPath, DesignRuleChecker
Tests, if there are polygons on the active layer.
See also: NoPolygon, DesignRuleChecker
Tests, if there are polygons on the layer.
See also: NoPolygon, DesignRuleChecker
Tests, if there are self-intersecting polygons on the active layer..
See also: Self-Intersection, DesignRuleChecker
Tests, if there are self-intersecting polygons on the layer.
See also: Self-Intersection, DesignRuleChecker
Tests, if there are pathes with spikes on the layer. That means pathes with segments in the opposite direction to the previous segement. If sharpAngles is true, it will also check for sharp angles on pathes.
See also: NoPathesWithSpikes, DesignRuleChecker
Tests, if there are text elements on the active layer.
See also: NoText, DesignRuleChecker
Tests, if there are text elements on the layer.
See also: NoText, DesignRuleChecker
Tests, if there are elements on the layer with a width of zero e.g. paths.
See also: NoZeroWidth, DesignRuleChecker
Tests, if there are elements on the active layer with a width of zero e.g. paths.
See also: NoZeroWidth, DesignRuleChecker
Tests, if all points on the layer are on the grid.
See also: OnGrid, DesignRuleChecker
Tests, if there are other elements then polygons with a circular shape on the active layer.
See also: OnlyCircle, DesignRuleChecker
Tests, if there are other elements then polygons with a circular shape on the layer.
See also: OnlyCircle, DesignRuleChecker
Tests, if there are other elements then rectangles on the active layer.
See also: OnlyRectangle, DesignRuleChecker
Tests, if there are other elements then pRectangles on the layer.
See also: OnlyRectangle, DesignRuleChecker
Tests, if there are overlapping elements on layer.
See also: OverlappingElements, DesignRuleChecker
Tests, if there are overlapping elements on the active layer.
Listed violations inside any shape of layer are removed from the list. The grafical display is not changed.
This string contains a little report of the last test results.
The name of the next rule.
Saves the list of detected violations to a file. The default file format of it is a macro which can be executed to load the violations again into the LayoutEditor.
Call the method will remove all limitation of the design rule checks and the hole cell will be tested.
Call the method will limit all design rule checks to a region defined by the to given points.
Call the method will limit all design rule checks to the current view.
The error Layer is set to the active Layer.
If bool is true, all detected violations will be marked within the design.
If bool is true, all detected violations will be displayed in a list.
Sets the drawing area in a mode which will allow to define the drc region by mouse.
Shows a messagebox with the results of the design rule checker.
A minimum distance check on layer but only for shapes having a width more than width