This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
pcb:drc [2018/08/05 19:04] cparker |
pcb:drc [2018/09/02 16:23] cparker |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | This page will serve to document the design rule checker. | + | This page will serve to document the design rule checker. This is presently documented "as-is". |
===DRC Violations=== | ===DRC Violations=== | ||
Line 15: | Line 15: | ||
===Process=== | ===Process=== | ||
- | Presently, the violations are identified in find.c, and then appended to a list in either the lesstif or gtkhid. | + | Presently, the violations are identified in find.c, and then appended to a list in the gtk hid. In the lesstif and batch hids, you get a pop-up window or a text prompt that describes the error. |
+ | |||
+ | Executing the DRC() action will wipe out the selected, found, and DRC flags on most objects, although, apparently not elements. | ||
+ | |||
+ | - Execute the DRC() action. | ||
+ | - Generate the "DRC doesn't catch everything" warning. | ||
+ | - Save layer state and turn on all layers. | ||
+ | - Clear the FOUNDFLAG, DRCFLAG, and SELECTEDFLAG on all objects. DRC uses these flags to find errors. | ||
+ | - InitConnectionLookup -- This resets all of the lists that are used for building the connectivity map. | ||
+ | - For every element pin, pad, and via, execute DRCFind. DRCFind builds a connection list starting from the given pin/pad/via four times. See below for a more detailed description of that process (if I get around to writing it). | ||
+ | - Apply a global bloat of value "Shrink", and build a connection list, with global drc set to false. This will set the DRCFLAG and SELECTEDFLAG on every object that is touching the given pin/pad/via. | ||
+ | - Apply a global bloat of value 0, and build a connection list with global "drc" set to true. | ||
+ | |||
+ | |