### Top-level Clauses (version ) (rule ...) ### Rule Clauses (constraint ...) (condition "") (layer "") ### Constraint Types * annular_width * clearance * courtyard_clearance * diff_pair_gap * diff_pair_uncoupled * disallow * edge_clearance * length * hole * hole_clearance * silk_clearance * skew * track_width * via_count ### Item Types * buried_via * graphic * hole * micro_via * pad * text * track * via * zone ### Examples # Comment (rule "copper keepout" (constraint disallow track via zone) (condition "A.insideArea('zone3')")) (rule "BGA neckdown" (constraint track_width (min 0.2mm) (opt 0.25mm)) (constraint clearance (min 0.05) (opt 0.08mm)) (condition "A.insideCourtyard('U3')")) (rule HV (constraint clearance (min 1.5mm)) (condition "A.NetClass == 'HV'")) (rule HV (layer outer) (constraint clearance (min 1.5mm)) (condition "A.NetClass == 'HV'")) (rule HV_HV # wider clearance between HV tracks (constraint clearance (min "1.5mm + 2.0mm")) (condition "A.NetClass == 'HV' && B.NetClass == 'HV'")) (rule HV_unshielded (constraint clearance (min 2mm)) (condition "A.NetClass == 'HV' && !A.insideArea('Shield*'))) # prevent silk over tented vias (rule silk_over_via (constraint silk_clearance (min 0.2mm)) (condition "A.Type == '*Text' && B.Type == 'Via'")) ### Notes Version clause must be the first clause. Rules should be ordered by specificity. Later rules take precedence over earlier rules; once a matching rule is found no further rules will be checked. Use Ctrl+/ to comment or uncomment line(s). ### Expression functions All function parameters support simple wildcards (`*` and `?`). True if any part of `A` lies within the given footprint's courtyard. A.insideCourtyard('') True if any part of `A` lies within the given zone's outline. A.insideArea('') True if `A` has a hole which is plated. A.isPlated() True if `A` is a member of the given group. Includes nested membership. A.memberOf('') True if `A` exists on the given layer. The layer name can be either the name assigned in Board Setup > Board Editor Layers or the canonical name (ie: `F.Cu`). A.existsOnLayer('') NB: this returns true if `A` is on the given layer, independently of whether or not the rule is being evaluated for that layer. For the latter use a `(layer "layer_name")` clause in the rule.