Design Rule Checker
The LayoutEditor supports different design rule checks. For all checks the check area can be defined as well as the way the violation is reported. As a matter of course all design rule checks work on all angle elements. Some DRC require boolean operation or have a optional boolean operation. These checks need a flat copy of some design data and therefore need additional memory to perform. Avoid such an option to improve performance and memory use. Design rule checks are not intended to check multi Gb designs, it will leak on performance. But designs with some 100.000 shapes are no problem even if a boolean (merge) option is used.
Illustration
Graphical Illustration
The basic concept of a graphical illustration is: A new cell will be created with the name of the check cell plus the name of the design rule check. All detected errors are added to this cell on an error layer. To the unmodified original cell a new cell reference with all errors is added. If an identical check was performed before, the earlier results are deleted.
Listing Violations
A list with each detected violation will be generated. One line for each violation. Each line contains the symbol and name of the check and where applicable the measured value. By a click on the list the current view is set to the location of the violation. A double click will mark the entry. The violation list can be stored and loaded. The violation list is emptied manual.
Summarizing Report
Beside the graphical display and a full list with all error a small report with a summary of all errors is generated. This report contains the sum of all error for each check.
Check Area
The area used for the check can be defined. It can be the hole cell, limited to the current view in the drawing window or a user a defined region. If the check region is limited all violation in the check area are found. Depending on the check some violations near the region boarder are also found.
List of Design Rule Checks
DRC Macro
Each DRC check avaiable in the user interface just performs a single check. 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.
1 #!/usr/bin/layout
2 #name=Macro: drc example.layout
3 #help=example for a drc macro
4
5
6 int main(){
7
8 layout->drcTool->result="DRC (LayoutEditor example) \r\n";
9
10 // setup error layer
11 layout->drawing->activeLayer=0;
12 layout->drcTool->setErrorLayerToActiveLayer();
13
14 // check for layer metal 1
15 layout->drcTool->ruleName= "Minimum Size Metal1";
16 layout->drcTool->minimumSize(800,6,true);
17 layout->drcTool->ruleName= "Minimum Distance Metal1";
18 layout->drcTool->minimumElementDistance(800,6,true);
19
20 // check for layer metal 2
21 layout->drcTool->ruleName= "Minimum Size Metal2";
22 layout->drcTool->minimumSize(900,8,true);
23 layout->drcTool->ruleName= "Minimum Distance Metal2";
24 layout->drcTool->minimumElementDistance(900,8,true);
25
26 // check for via1 (metal1 to metal2)
27 layout->drcTool->ruleName= "Via in metal1";
28 layout->drcTool->inside(50,7,6);
29 layout->drcTool->ruleName= "Via in metal2";
30 layout->drcTool->inside(60,7,8);
31
32 layout->drcTool->showReport();
33
34 }