### Top-level Clauses (version <number>) (rule <rule_name> <rule_clause> ...) <br> ### Rule Clauses (constraint <constraint_type> ...) (condition "<expression>") (layer "<layer_name>") (severity <severity_name>) <br> ### Constraints | Constraint type| Argument type| Description| |---------------------------|-----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `annular_width`| min/opt/max| Checks the width of annular rings on vias.<br>| | `assertion`| "<expression>"| Checks the given expression.<br>| | `clearance`| min| Specifies the **electrical** clearance between copper objects of different nets.(See `physical_clearance` if you wish to specify clearance between objects regardless of net.)<br><br>To allow copper objects to overlap (collide), create a `clearance` constraint with the `min` value less than zero (for example, `-1`).<br>| | `courtyard_clearance`| min| Checks the clearance between footprint courtyards and generates an error if any two courtyards are closer than the `min` distance.If a footprint does not have a courtyard shape, no errors will be generated from this constraint.<br>| | `diff_pair_gap`| min/opt/max| Checks the gap between coupled tracks in a differential pair.Coupled tracks are segments that are parallel to each other.Differential pair gap is not tested on uncoupled portions of a differential pair (for example, the fanout from a component).<br>| | `diff_pair_uncoupled`| max| Checks the distance that a differential pair track is routed uncoupled from the other polarity track in the pair (for example, where the pair fans out from a component, or becomes uncoupled to pass around another object such as a via).<br>| | `disallow`| `track`<br>`via`<br>`micro_via`<br>`buried_via`<br>`pad`<br>`zone`<br>`text`<br>`graphic`<br>`hole`<br>`footprint`<br> | Specify one or more object types to disallow, separated by spaces.For example, `(constraint disallow track)` or `(constraint disallow track via pad)`.If an object of this type matches the rule condition, a DRC error will be created.<br><br>This constraint is essentially the same as a keepout rule area, but can be used to create more specific keepout restrictions.<br>| | `edge_clearance`| min/opt/max| Checks the clearance between objects and the board edge.<br><br>This can also be thought of as the "milling tolerance" as the board edge will include all graphical items on the `Edge.Cuts` layer as well as any *oval* pad holes.(See `physical_hole_clearance` for the drilling tolerance.)<br>| | `length`| min/max| Checks the total routed length for the nets that match the rule condition and generates an error for each net that is below the `min` value (if specified) or above the `max` value (if specified) of the constraint.<br>| | `hole`| min/max| Checks the size (diameter) of a drilled hole in a pad or via.For oval holes, the smaller (minor) diameter will be tested against the `min` value (if specified) and the larger (major) diameter will be tested against the `max` value (if specified).<br>| | `hole_clearance`| min| Checks the clearance between a drilled hole in a pad or via and copper objects on a different net.The clearance is measured from the diameter of the hole, not its center.<br>| | `hole_to_hole`| min| Checks the clearance between mechanically-drilled holes in pads and vias.The clearance is measured between the diameters of the holes, not between their centers.<br><br>This constraint is soley for the protection of drill bits.The clearance between **laser-drilled** (microvias) and other non-mechanically-drilled holes is not checked, nor is the clearance between **milled** (oval-shaped) and other non-mechanically-drilled holes.<br> | | `physical_clearance`| min| Checks the clearance between two objects on a given layer (including non-copper layers).<br><br>While this can perform more general-purpose checks than `clearance`, it is much slower.Use `clearance` where possible.<br>| | `physical_hole_clearance` | min| Checks the clearance between a drilled hole in a pad or via and another object, regardless of net. The clearance is measured from the diameter of the hole, not its center.<br><br>This can also be thought of as the "drilling tolerance" as it only includes **round** holes (see `edge_clearance` for the milling tolerance).<br>| | `silk_clearance`| min/opt/max| Checks the clearance between objects on silkscreen layers and other objects.<br>| | `skew`| max| Checks the total skew for the nets that match the rule condition, that is, the difference between the length of each net and the average of all the lengths of each net that is matched by the rule.If the absolute value of the difference between that average and the length of any one net is above the constraint `max` value, an error will be generated.<br>| | `thermal_relief_gap`| min| Specifies the width of the gap between a pad and a zone with a thermal-relief connection.<br>| | `thermal_spoke_width`| opt| Specifies the width of the spokes connecting a pad to a zone with a thermal-relief connection.<br>| | `track_width`| min/opt/max| Checks the width of track and arc segments.An error will be generated for each segment that has a width below the `min` value (if specified) or above the `max` value (if specified).<br>| | `via_count`| max| Counts the number of vias on every net matched by the rule condition.If that number exceeds the constraint `max` value on any matched net, an error will be generated for that net.<br>| | `zone_connection`| `solid`<br>`thermal_reliefs`<br>`none`| Specifies the connection to be made between a zone and a pad.<br>| ### Items * `A` _the first (or only) item under test_ * `B` _the second item under test (for binary tests)_ * `L` _the layer currently under test_ <br> ### Severity Names * warning * error * exclusion * ignore <br> ### Examples (version 1) (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.enclosedByArea('Shield*')")) (rule heavy_thermals (constraint thermal_spoke_width (min 0.5mm)) (condition "A.NetClass == 'HV'")) <br><br> ### Notes Version clause must be the first clause.It indicates the syntax version of the file so that future rules parsers can perform automatic updates.It should be set to "1". 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). <br><br><br> ### Expression functions All function parameters support simple wildcards (`*` and `?`). <br><br> A.intersectsCourtyard('<footprint_refdes>') True if any part of `A` lies within the given footprint's principal courtyard. <br><br> A.intersectsFrontCourtyard('<footprint_refdes>') True if any part of `A` lies within the given footprint's front courtyard. <br><br> A.intersectsBackCourtyard('<footprint_refdes>') True if any part of `A` lies within the given footprint's back courtyard. <br><br> A.intersectsArea('<zone_name>') True if any part of `A` lies within the given zone's outline. <br><br> A.enclosedByArea('<zone_name>') True if all of `A` lies within the given zone's outline. NB: this is potentially a more expensive call than `intersectsArea()`.Use `intersectsArea()` where possible. <br><br> A.getField('<field_name>') The value of the given field. Only footprints have fields, so a field is only returned if `A` is a footprint. <br><br> A.isPlated() True if `A` has a hole which is plated. <br><br> A.inDiffPair('<net_name>') True if `A` has a net that is part of the specified differential pair. `<net_name>` is the base name of the differential pair.For example, `inDiffPair('/CLK')` matches items in the `/CLK_P` and `/CLK_N` nets. <br><br> AB.isCoupledDiffPair() True if `A` and `B` are members of the same diff pair. <br><br> A.memberOfGroup('<group_name>') True if `A` is a member of the given group. The name can contain wildcards. Includes nested membership. <br><br> A.memberOfFootprint('<footprint_reference>|<footprint_id>') True if `A` is a member of a footprint matching the given reference designator or footprint ID.The parameter can contain wildcards. NB: If matching against a footprint ID is desired, the parameter must contain a ':'. <br><br> A.memberOfSheet('<sheet_path>') True if `A` is a member of the given schematic sheet. The sheet path can contain wildcards. <br><br> A.existsOnLayer('<layer_name>') 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`). 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. <br><br> ### More Examples (rule "copper keepout" (constraint disallow track via zone) (condition "A.intersectsArea('zone3')")) (rule "BGA neckdown" (constraint track_width (min 0.2mm) (opt 0.25mm)) (constraint clearance (min 0.05mm) (opt 0.08mm)) (condition "A.intersectsCourtyard('U3')")) # prevent silk over tented vias (rule silk_over_via (constraint silk_clearance (min 0.2mm)) (condition "A.Type == '*Text' && B.Type == 'Via'")) (rule "Distance between Vias of Different Nets" (constraint hole_to_hole (min 0.254mm)) (condition "A.Type == 'Via' && B.Type == 'Via' && A.Net != B.Net")) (rule "Clearance between Pads of Different Nets" (constraint clearance (min 3.0mm)) (condition "A.Type == 'Pad' && B.Type == 'Pad' && A.Net != B.Net")) (rule "Via Hole to Track Clearance" (constraint hole_clearance (min 0.254mm)) (condition "A.Type == 'Via' && B.Type == 'Track'")) (rule "Pad to Track Clearance" (constraint clearance (min 0.2mm)) (condition "A.Type == 'Pad' && B.Type == 'Track'")) (rule "clearance-to-1mm-cutout" (constraint edge_clearance (min 0.8mm)) (condition "A.Layer == 'Edge.Cuts' && A.Line_Width == 1.0mm")) (rule "Max Drill Hole Size Mechanical" (constraint hole_size (max 6.3mm)) (condition "A.Pad_Type == 'NPTH, mechanical'")) (rule "Max Drill Hole Size PTH" (constraint hole_size (max 6.35mm)) (condition "A.Pad_Type == 'Through-hole'")) # Specify an optimal gap for a particular diff-pair (rule "dp clock gap" (constraint diff_pair_gap (opt "0.8mm")) (condition "A.inDiffPair('/CLK')")) # Specify a larger clearance around any diff-pair (rule "dp clearance" (constraint clearance (min "1.5mm")) (condition "A.inDiffPair('*') && !AB.isCoupledDiffPair()")) # Don't use thermal reliefs on heatsink pads (rule heat_sink_pad (constraint zone_connection solid) (condition "A.Fabrication_Property == 'Heatsink pad'")) # Require all four thermal relief spokes to connect to parent zone (rule fully_spoked_pads (constraint min_resolved_spokes 4)) # Set thermal relief gap & spoke width for all zones (rule defined_relief (constraint thermal_relief_gap (min 10mil)) (constraint thermal_spoke_width (min 12mil))) # Override thermal relief gap & spoke width for GND and PWR zones (rule defined_relief_pwr (constraint thermal_relief_gap (min 10mil)) (constraint thermal_spoke_width (min 12mil)) (condition "A.Name == 'zone_GND' || A.Name == 'zone_PWR'")) # Prevent solder wicking from SMD pads (rule holes_in_pads (constraint physical_hole_clearance (min 0.2mm)) (condition "B.Pad_Type == 'SMD'")) # Disallow solder mask margin overrides (rule "disallow solder mask margin overrides" (constraint assertion "A.Soldermask_Margin_Override == 0mm") (condition "A.Type == 'Pad'")) # Enforce a mechanical clearance between components and board edge (rule front_mechanical_board_edge_clearance (layer "F.Courtyard") (constraint physical_clearance (min 3mm)) (condition "B.Layer == 'Edge.Cuts'")) # Check current-carrying capacity (rule high-current (constraint track_width (min 1.0mm)) (constraint connection_width (min 0.8mm)) (condition "A.NetClass == 'Power'")) # Separate drill bit and milling cutter size constraints (rule "Plated through-hole size" (constraint hole_size (min 0.2mm) (max 6.35mm)) (condition "A.isPlated() && A.Hole_Size_X == A.Hole_Size_Y")) (rule "Plated slot size" (constraint hole_size (min 0.5mm)) (condition "A.isPlated() && A.Hole_Size_X != A.Hole_Size_Y")) ### Documentation For the full documentation see [https://docs.kicad.org](https://docs.kicad.org/GetMajorMinorVersion/en/pcbnew/pcbnew.html#custom_design_rules).
### Toppnivåsatser (version <nummer>) (rule <regelnamn> <regelsats> ...) <br> ### Regelsatser (constraint <begränsningstyp> ...) (condition "<uttryck>") (layer "<lagernamn>") (severity <allvarlighetsnamn>) <br> ### Begränsningar | Begränsningstyp| Argumenttyp| Beskrivning| |---------------------------|------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `annular_width`| min/opt/max| Kontrollerar bredden på viakragar.<br>| | `clearance`| min| Specificerar **elektriskt** isolationsavstånd mellan kopparobjekt från olika nät.(Se `physical_clearance` om du vill specificera frigång mellan objekt oberoende av nättillhörighet.)<br><br>För att tillåta kopparobjekt att överlappa (kollidera), skapa en `clearance`-begränsning med `min`-värde mindre än noll (till exempel, `-1`).<br>| | `courtyard_clearance`| min| Kontrollerar frigång mellan fotavtrycks gårdsplaner och genererar ett felmeddelande om två godtyckliga gårdsplaner är närmare varandra än `min`-avståndet.Om ett fotavtryck inte har en definierad gårdsplan, genereras inga felmeddelanden från denna begränsning.<br>| | `diff_pair_gap`| min/opt/max| Kontrollerar avståndet mellan kopplade ledare i ett differentiellt par.Kopplade ledare är segment som är parallella med varandra.Ledaravstånd för differentiellt par testas inte för okopplade delar av ett differentiellt par (till exempel, utbrytningen från en komponent).<br>| | `diff_pair_uncoupled`| max| Kontrollerar sträckan som ett differentiellt pars ledare är dragen okopplad från parets ledare med motsatt polaritet (till exempel, där paret bryter ut från en komponent, eller blir okopplad för att passera runt ett annat objekt som till exempel ett via).<br>| | `disallow`| `track`<br>`via`<br>`micro_via`<br>`buried_via`<br>`pad`<br>`zone`<br>`text`<br>`graphic`<br>`hole`<br>`footprint`<br> | Specifcera en eller flera objekttyper som inte tillåts, separerade med mellanslag.Till exempel, `(constraint disallow track)` eller `(constraint disallow track via pad)`.Om ett objekt av denna typ matchar regelvillkoret genereras ett designregelfel.<br><br>Denna begränsning är väsentligen detsamma som en spärrzon, men kan användas för att skapa mer specifika spärrbegränsningar.<br>| | `edge_clearance`| min/opt/max| Kontrollerar frigången mellan objekt och mönsterkortets kant.<br><br>Detta kan också förstås som "frästoleransen" eftersom mönsterkortets kantkontur innehåller alla grafiska element på lagret `Edge.Cuts` såväl som eventuella *ovala* hål i lödytor.(Se `physical_hole_clearance` för borrtoleransen.)<br>| | `length`| min/max| Kontrollerar den totala dragna ledarlängden för de nät som matchar regelvillkoret och genererar ett felmeddelande för varje nät vars längd understiger `min`-värdet (om specificerat) eller överstiger `max`-värdet (om specificerat) för begränsningen.<br>| | `hole`| min/max| Kontrollerar storleken (diametern) för ett borrat hål i en lödyta eller ett via.För ovala hål testas den mindre diametern mot `min`-värdet (om specificerat) och den större diametern testas mot `max` värdet (om specificerat).<br>| | `hole_clearance`| min| Kontrollerar frigången mellan ett borrat hål i en lödyta eller ett via och kopparobjekt tillhörande andra nät.Frigången mäts från hålets periferi, inte från dess centrum.<br>| | `hole_to_hole`| min| Kontrollerar frigången mellan mekaniskt borrade hål i lödytor och vior.Frigången mäts mellan hålens periferier, inte mellan deras centrum.<br><br>Denna begränsning är enkom för att skydda borrstålen.Frigången till/mellan **laserborrade** (mikrovior) och andra icke-mekaniskt borrade hål kontrolleras inte, inte heller frigången till/mellan **frästa** (ovala) och andra icke mekaniskt borrade hål.<br> | | `physical_clearance`| min| Kontrollerar frigången mellan två objekt på ett givet lager (inklusive icke-kopparlager).<br><br>Medan detta kan utföra mer universella kontroller än`clearance`, är det också mycket långsammare.Använd `clearance` där det är möjligt.<br>| | `physical_hole_clearance` | min| Kontrollera frigången mellan ett borrat hål i en lödyta eller ett via och ett annat objekt, oberoende av dess nättillhörighet. Frigången mäts från hålets periferi, inte dess centrum.<br><br>Detta kan också förstås som "borrtoleransen" då det bara inkluderar **runda** hål (se `edge_clearance` för frästoleransen).<br>| | `silk_clearance`| min/opt/max| Kontrollerar frigången mellan objekt på anvisningstryckslagret och andra objekt.<br>| | `skew`| max| Kontrollerar total skew för de nät som matchar regelvillkoret, med andra ord, skillanden mellan varje individuellt näts ledarlängd och medelvärdet av ledarlängden för alla nät som matchar regelvillkoret.Om absolutvärdet av skillnaden mellan det medelvärdet och ledarlängden för något individuellt nät överstiger `max`-värdet genereras ett felmeddelande.<br>| | `thermal_relief_gap`| min| Specificerar bredden på gapet mellan en lödyta och kopparzonen när termiskt avlastad zonanslutning används.<br>| | `thermal_spoke_width`| opt| Specificerar ekerbredd för termiskt avlastad anslutning mellan en lödyta och kopparzonen den ansluter till.<br>| | `track_width`| min/opt/max| Kontrollerar ledar- och bågsegments bredd.Ett felmeddelande genereras för varje segmetn vars bredd understiger `min`-värdet (om specificerat) eller överstiger `max`-värdet (om specificerat).<br>| | `via_count`| max| Räknar antalet vior på i varje nät som matchar regelvillkoret.Om antalet i något nät överstiger begränsningens `max`-värde genereras ett felmeddelande för det nätet.<br>| | `zone_connection`| `solid`<br>`thermal_reliefs`<br>`none`| Specificerar vilken typ av anslutning som skall utföras mellan en zon och en lödyta.<br>| ### Objekt * `A` _det första (eller enda) objekt som testas_ * `B` _det andra objektet som testas (för binära test)_ * `L` _lagret som för närvarande testas_ <br> ### Namn på allvarlighetsgrader * warning * error * exclusion * ignore <br> ### Exempel (version 1) (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 # större frigång mellan högspännings (HV) ledare (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.enclosedByArea('Shield*')")) (rule heavy_thermals (constraint thermal_spoke_width (min 0.5mm)) (condition "A.NetClass == 'HV'")) <br><br> ### Noteringar Versionssatsen måste vara den första satsen.Den indikerar syntaxversionen i filen så att framtida regeltolkar kan utföra automatiska uppdateringar.Den skall vara satt till "1". Regler skall ordnas enligt stigande grad av specificitet.Senare regler har företräde framför tidigare regler; när väl en matchande regel hittats kontrolleras inga fler regler. Använd Ctrl+/ för att kommentera eller avkommentera rad(er). <br><br><br> ### Uttrycksfunktioner Alla funktionsparametrar stöder enkla jokertecken (`*` och `?`). <br><br> A.intersectsCourtyard('<footprint_refdes>') Sant om någon del av `A` ligger innanför det angivna fotavtryckets huvudgårdsplan. <br><br> A.intersectsFrontCourtyard('<footprint_refdes>') Sant om någon del av `A` ligger innanför det angivna fotavtryckets gårdsplan på mönsterkortets framsida. <br><br> A.intersectsBackCourtyard('<footprint_refdes>') Sant om någon del av `A` ligger innanför det angivna fotavtryckets gårdsplan på mönsterkortets baksida. <br><br> A.intersectsArea('<zone_name>') Sant om någon del av `A` ligger innanför den angivna zonens kontur. <br><br> A.enclosedByArea('<zone_name>') Sant om hela `A` ligger innanför den angivna zonens kontur. OBS: detta är potentiellt ett dyrare anrop (mer arbetsamt att utföra) än `intersectsArea()`.Använd `intersectsArea()` där det är möjligt. <br><br> A.getField('<field_name>') Värdet för det givna fältet. Endast fotavtryck har fält, varför ett fält endast returneras om `A` är ett fotavtryck. <br><br> A.isPlated() Sant om `A` har ett genompläterat hål. <br><br> A.inDiffPair('<net_name>') Sant om `A` har ett nät som är en del av det specificerade differentiella paret. `<net_name>` är basnamnet för det differentiella paret.Till exempel matchar `inDiffPair('/CLK')` objekt i näten`/CLK_P` och `/CLK_N`. <br><br> AB.isCoupledDiffPair() Sant om `A` och `B` tillhör samma differentiella par. <br><br> A.memberOfGroup('<group_name>') Sant om `A` är medlem av den givna gruppen. Namnet kan innehålla jokertecken. Inkluderar nästlade medlemskap (som härleds i flera steg). <br><br> A.memberOfFootprint('<footprint_reference>') Sant om `A` tillhör ett fotavtryck som matchar den angivna referensbeteckningen. Referensbeteckningen kan innehålla jokertecken. <br><br> A.memberOfSheet('<sheet_path>') Sant om `A` tillhör det angivna kretsschemaarket. Sökvägen för kretsschemaarket kan innehålla jokertecken. <br><br> A.existsOnLayer('<layer_name>') Sant om `A` finns på det angivna lagret.Lagrets namn kan vara endera det namn som tilldelats i Mönsterkortsinställningar > Lager i mönsterkortsredigeraren eller det kanoniska namnet (ie: `F.Cu`). OBS: detta returnerar sant om `A` är på det angivna lagret, oberoende av om regeln utvärderas för det lagret eller inte. För det senare fallet använd en sats `(layer "layer_name")` i regeln. <br><br> ### Fler exempel (rule "copper keepout" (constraint disallow track via zone) (condition "A.intersectsArea('zone3')")) (rule "BGA neckdown" (constraint track_width (min 0.2mm) (opt 0.25mm)) (constraint clearance (min 0.05mm) (opt 0.08mm)) (condition "A.intersectsCourtyard('U3')")) # förhindra anvisningstryck över täckta vior (rule silk_over_via (constraint silk_clearance (min 0.2mm)) (condition "A.Type == '*Text' && B.Type == 'Via'")) (rule "Distance between Vias of Different Nets" (constraint hole_to_hole (min 0.254mm)) (condition "A.Type == 'Via' && B.Type == 'Via' && A.Net != B.Net")) (rule "Clearance between Pads of Different Nets" (constraint clearance (min 3.0mm)) (condition "A.Type == 'Pad' && B.Type == 'Pad' && A.Net != B.Net")) (rule "Via Hole to Track Clearance" (constraint hole_clearance (min 0.254mm)) (condition "A.Type == 'Via' && B.Type == 'Track'")) (rule "Pad to Track Clearance" (constraint clearance (min 0.2mm)) (condition "A.Type == 'Pad' && B.Type == 'Track'")) (rule "clearance-to-1mm-cutout" (constraint edge_clearance (min 0.8mm)) (condition "A.Layer == 'Edge.Cuts' && A.Line_Width == 1.0mm")) (rule "Max Drill Hole Size Mechanical" (constraint hole_size (max 6.3mm)) (condition "A.Pad_Type == 'NPTH, mechanical'")) (rule "Max Drill Hole Size PTH" (constraint hole_size (max 6.35mm)) (condition "A.Pad_Type == 'Through-hole'")) # Specificera ett optimalt ledaravstånd för ett visst differentiellt par (rule "dp clock gap" (constraint diff_pair_gap (opt "0.8mm")) (condition "A.inDiffPair('/CLK')")) # Specificera ett större isolationsavstånd runt alla differentiella par (rule "dp clearance" (constraint clearance (min "1.5mm")) (condition "A.inDiffPair('*') && !AB.isCoupledDiffPair()")) # Använd inte termisk avlastning på lödytor för kylning (rule heat_sink_pad (constraint zone_connection solid) (condition "A.Fabrication_Property == 'Heatsink pad'")) # Kräv att alla fyra termiska ekrar är anslutna till den överordnade kopparzonen (rule fully_spoked_pads (constraint min_resolved_spokes 4)) # Definiera alla zoners gap och ekerbredd för termisk avlastning (rule defined_relief (constraint thermal_relief_gap (min 10mil)) (constraint thermal_spoke_width (min 12mil))) # Definiera avvikande gap och ekerbredd för termisk avlastning för kopparzonerna GND och PWR (rule defined_relief_pwr (constraint thermal_relief_gap (min 10mil)) (constraint thermal_spoke_width (min 12mil)) (condition "A.Name == 'zone_GND' || A.Name == 'zone_PWR'")) # Förhindra att lod sugs bort från ytmonteringslödytor (rule holes_in_pads (constraint physical_hole_clearance (min 0.2mm)) (condition "B.Pad_Type == 'SMD'")) # Tillåt inte avvikelser för lödmasksmarginal (rule "disallow solder mask margin overrides" (constraint assertion "A.Soldermask_Margin_Override == 0mm") (condition "A.Type == 'Pad'")) # Upprätthåll mekanisk frigång mellan komponenter och mönsterkortets kant (rule front_mechanical_board_edge_clearance (layer "F.Courtyard") (constraint physical_clearance (min 3mm)) (condition "B.Layer == 'Edge.Cuts'")) # Kontrollera strömkapacitet (rule high-current (constraint track_width (min 1.0mm)) (constraint connection_width (min 0.8mm)) (condition "A.NetClass == 'Power'")) # Separera storleksbegränsningar för borr- och frässtål (rule "Plated through-hole size" (constraint hole_size (min 0.2mm) (max 6.35mm)) (condition "A.isPlated() && A.Hole_Size_X == A.Hole_Size_Y")) (rule "Plated slot size" (constraint hole_size (min 0.5mm)) (condition "A.isPlated() && A.Hole_Size_X != A.Hole_Size_Y")) ### Dokumentation För den fullständiga dokumentationen se: [https://docs.kicad.org](https://docs.kicad.org/GetMajorMinorVersion/en/pcbnew/pcbnew.html#custom_design_rules).
(version <number>)
(rule <rule_name> <rule_clause> ...)
<br>
### Rule Clauses
(constraint <constraint_type> ...)
(condition "<expression>")
(layer "<layer_name>")
(severity <severity_name>)
<br>
### Constraints
| Constraint type | Argument type | Description |
|---------------------------|-----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `annular_width` | min/opt/max | Checks the width of annular rings on vias.<br> |
| `assertion` | "<expression>" | Checks the given expression.<br> |
| `clearance` | min | Specifies the **electrical** clearance between copper objects of different nets. (See `physical_clearance` if you wish to specify clearance between objects regardless of net.)<br><br>To allow copper objects to overlap (collide), create a `clearance` constraint with the `min` value less than zero (for example, `-1`).<br> |
| `courtyard_clearance` | min | Checks the clearance between footprint courtyards and generates an error if any two courtyards are closer than the `min` distance. If a footprint does not have a courtyard shape, no errors will be generated from this constraint.<br> |
| `diff_pair_gap` | min/opt/max | Checks the gap between coupled tracks in a differential pair. Coupled tracks are segments that are parallel to each other. Differential pair gap is not tested on uncoupled portions of a differential pair (for example, the fanout from a component).<br> |
| `diff_pair_uncoupled` | max | Checks the distance that a differential pair track is routed uncoupled from the other polarity track in the pair (for example, where the pair fans out from a component, or becomes uncoupled to pass around another object such as a via).<br> |
| `disallow` | `track`<br>`via`<br>`micro_via`<br>`buried_via`<br>`pad`<br>`zone`<br>`text`<br>`graphic`<br>`hole`<br>`footprint`<br> | Specify one or more object types to disallow, separated by spaces. For example, `(constraint disallow track)` or `(constraint disallow track via pad)`. If an object of this type matches the rule condition, a DRC error will be created.<br><br>This constraint is essentially the same as a keepout rule area, but can be used to create more specific keepout restrictions.<br> |
| `edge_clearance` | min/opt/max | Checks the clearance between objects and the board edge.<br><br>This can also be thought of as the "milling tolerance" as the board edge will include all graphical items on the `Edge.Cuts` layer as well as any *oval* pad holes. (See `physical_hole_clearance` for the drilling tolerance.)<br> |
| `length` | min/max | Checks the total routed length for the nets that match the rule condition and generates an error for each net that is below the `min` value (if specified) or above the `max` value (if specified) of the constraint.<br> |
| `hole` | min/max | Checks the size (diameter) of a drilled hole in a pad or via. For oval holes, the smaller (minor) diameter will be tested against the `min` value (if specified) and the larger (major) diameter will be tested against the `max` value (if specified).<br> |
| `hole_clearance` | min | Checks the clearance between a drilled hole in a pad or via and copper objects on a different net. The clearance is measured from the diameter of the hole, not its center.<br> |
| `hole_to_hole` | min | Checks the clearance between mechanically-drilled holes in pads and vias. The clearance is measured between the diameters of the holes, not between their centers.<br><br>This constraint is soley for the protection of drill bits. The clearance between **laser-drilled** (microvias) and other non-mechanically-drilled holes is not checked, nor is the clearance between **milled** (oval-shaped) and other non-mechanically-drilled holes.<br> |
| `physical_clearance` | min | Checks the clearance between two objects on a given layer (including non-copper layers).<br><br>While this can perform more general-purpose checks than `clearance`, it is much slower. Use `clearance` where possible.<br> |
| `physical_hole_clearance` | min | Checks the clearance between a drilled hole in a pad or via and another object, regardless of net. The clearance is measured from the diameter of the hole, not its center.<br><br>This can also be thought of as the "drilling tolerance" as it only includes **round** holes (see `edge_clearance` for the milling tolerance).<br> |
| `silk_clearance` | min/opt/max | Checks the clearance between objects on silkscreen layers and other objects.<br> |
| `skew` | max | Checks the total skew for the nets that match the rule condition, that is, the difference between the length of each net and the average of all the lengths of each net that is matched by the rule. If the absolute value of the difference between that average and the length of any one net is above the constraint `max` value, an error will be generated.<br> |
| `thermal_relief_gap` | min | Specifies the width of the gap between a pad and a zone with a thermal-relief connection.<br> |
| `thermal_spoke_width` | opt | Specifies the width of the spokes connecting a pad to a zone with a thermal-relief connection.<br> |
| `track_width` | min/opt/max | Checks the width of track and arc segments. An error will be generated for each segment that has a width below the `min` value (if specified) or above the `max` value (if specified).<br> |
| `via_count` | max | Counts the number of vias on every net matched by the rule condition. If that number exceeds the constraint `max` value on any matched net, an error will be generated for that net.<br> |
| `zone_connection` | `solid`<br>`thermal_reliefs`<br>`none` | Specifies the connection to be made between a zone and a pad.<br> |
### Items
* `A` _the first (or only) item under test_
* `B` _the second item under test (for binary tests)_
* `L` _the layer currently under test_
<br>
### Severity Names
* warning
* error
* exclusion
* ignore
<br>
### Examples
(version 1)
(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.enclosedByArea('Shield*')"))
(rule heavy_thermals
(constraint thermal_spoke_width (min 0.5mm))
(condition "A.NetClass == 'HV'"))
<br><br>
### Notes
Version clause must be the first clause. It indicates the syntax version of the file so that
future rules parsers can perform automatic updates. It should be
set to "1".
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).
<br><br><br>
### Expression functions
All function parameters support simple wildcards (`*` and `?`).
<br><br>
A.intersectsCourtyard('<footprint_refdes>')
True if any part of `A` lies within the given footprint's principal courtyard.
<br><br>
A.intersectsFrontCourtyard('<footprint_refdes>')
True if any part of `A` lies within the given footprint's front courtyard.
<br><br>
A.intersectsBackCourtyard('<footprint_refdes>')
True if any part of `A` lies within the given footprint's back courtyard.
<br><br>
A.intersectsArea('<zone_name>')
True if any part of `A` lies within the given zone's outline.
<br><br>
A.enclosedByArea('<zone_name>')
True if all of `A` lies within the given zone's outline.
NB: this is potentially a more expensive call than `intersectsArea()`. Use `intersectsArea()`
where possible.
<br><br>
A.getField('<field_name>')
The value of the given field. Only footprints have fields, so a field is only returned if
`A` is a footprint.
<br><br>
A.isPlated()
True if `A` has a hole which is plated.
<br><br>
A.inDiffPair('<net_name>')
True if `A` has a net that is part of the specified differential pair.
`<net_name>` is the base name of the differential pair. For example, `inDiffPair('/CLK')`
matches items in the `/CLK_P` and `/CLK_N` nets.
<br><br>
AB.isCoupledDiffPair()
True if `A` and `B` are members of the same diff pair.
<br><br>
A.memberOfGroup('<group_name>')
True if `A` is a member of the given group. The name can contain wildcards.
Includes nested membership.
<br><br>
A.memberOfFootprint('<footprint_reference>|<footprint_id>')
True if `A` is a member of a footprint matching the given reference designator or footprint
ID. The parameter can contain wildcards.
NB: If matching against a footprint ID is desired, the parameter must contain a ':'.
<br><br>
A.memberOfSheet('<sheet_path>')
True if `A` is a member of the given schematic sheet. The sheet path can contain wildcards.
<br><br>
A.existsOnLayer('<layer_name>')
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`).
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.
<br><br>
### More Examples
(rule "copper keepout"
(constraint disallow track via zone)
(condition "A.intersectsArea('zone3')"))
(rule "BGA neckdown"
(constraint track_width (min 0.2mm) (opt 0.25mm))
(constraint clearance (min 0.05mm) (opt 0.08mm))
(condition "A.intersectsCourtyard('U3')"))
# prevent silk over tented vias
(rule silk_over_via
(constraint silk_clearance (min 0.2mm))
(condition "A.Type == '*Text' && B.Type == 'Via'"))
(rule "Distance between Vias of Different Nets"
(constraint hole_to_hole (min 0.254mm))
(condition "A.Type == 'Via' && B.Type == 'Via' && A.Net != B.Net"))
(rule "Clearance between Pads of Different Nets"
(constraint clearance (min 3.0mm))
(condition "A.Type == 'Pad' && B.Type == 'Pad' && A.Net != B.Net"))
(rule "Via Hole to Track Clearance"
(constraint hole_clearance (min 0.254mm))
(condition "A.Type == 'Via' && B.Type == 'Track'"))
(rule "Pad to Track Clearance"
(constraint clearance (min 0.2mm))
(condition "A.Type == 'Pad' && B.Type == 'Track'"))
(rule "clearance-to-1mm-cutout"
(constraint edge_clearance (min 0.8mm))
(condition "A.Layer == 'Edge.Cuts' && A.Line_Width == 1.0mm"))
(rule "Max Drill Hole Size Mechanical"
(constraint hole_size (max 6.3mm))
(condition "A.Pad_Type == 'NPTH, mechanical'"))
(rule "Max Drill Hole Size PTH"
(constraint hole_size (max 6.35mm))
(condition "A.Pad_Type == 'Through-hole'"))
# Specify an optimal gap for a particular diff-pair
(rule "dp clock gap"
(constraint diff_pair_gap (opt "0.8mm"))
(condition "A.inDiffPair('/CLK')"))
# Specify a larger clearance around any diff-pair
(rule "dp clearance"
(constraint clearance (min "1.5mm"))
(condition "A.inDiffPair('*') && !AB.isCoupledDiffPair()"))
# Don't use thermal reliefs on heatsink pads
(rule heat_sink_pad
(constraint zone_connection solid)
(condition "A.Fabrication_Property == 'Heatsink pad'"))
# Require all four thermal relief spokes to connect to parent zone
(rule fully_spoked_pads
(constraint min_resolved_spokes 4))
# Set thermal relief gap & spoke width for all zones
(rule defined_relief
(constraint thermal_relief_gap (min 10mil))
(constraint thermal_spoke_width (min 12mil)))
# Override thermal relief gap & spoke width for GND and PWR zones
(rule defined_relief_pwr
(constraint thermal_relief_gap (min 10mil))
(constraint thermal_spoke_width (min 12mil))
(condition "A.Name == 'zone_GND' || A.Name == 'zone_PWR'"))
# Prevent solder wicking from SMD pads
(rule holes_in_pads
(constraint physical_hole_clearance (min 0.2mm))
(condition "B.Pad_Type == 'SMD'"))
# Disallow solder mask margin overrides
(rule "disallow solder mask margin overrides"
(constraint assertion "A.Soldermask_Margin_Override == 0mm")
(condition "A.Type == 'Pad'"))
# Enforce a mechanical clearance between components and board edge
(rule front_mechanical_board_edge_clearance
(layer "F.Courtyard")
(constraint physical_clearance (min 3mm))
(condition "B.Layer == 'Edge.Cuts'"))
# Check current-carrying capacity
(rule high-current
(constraint track_width (min 1.0mm))
(constraint connection_width (min 0.8mm))
(condition "A.NetClass == 'Power'"))
# Separate drill bit and milling cutter size constraints
(rule "Plated through-hole size"
(constraint hole_size (min 0.2mm) (max 6.35mm))
(condition "A.isPlated() && A.Hole_Size_X == A.Hole_Size_Y"))
(rule "Plated slot size"
(constraint hole_size (min 0.5mm))
(condition "A.isPlated() && A.Hole_Size_X != A.Hole_Size_Y"))
### Documentation
For the full documentation see [https://docs.kicad.org](https://docs.kicad.org/GetMajorMinorVersion/en/pcbnew/pcbnew.html#custom_design_rules).
(version <nummer>)
(rule <regelnamn> <regelsats> ...)
<br>
### Regelsatser
(constraint <begränsningstyp> ...)
(condition "<uttryck>")
(layer "<lagernamn>")
(severity <allvarlighetsnamn>)
<br>
### Begränsningar
| Begränsningstyp | Argumenttyp | Beskrivning |
|---------------------------|------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `annular_width` | min/opt/max | Kontrollerar bredden på viakragar.<br> |
| `clearance` | min | Specificerar **elektriskt** isolationsavstånd mellan kopparobjekt från olika nät. (Se `physical_clearance` om du vill specificera frigång mellan objekt oberoende av nättillhörighet.)<br><br>För att tillåta kopparobjekt att överlappa (kollidera), skapa en `clearance`-begränsning med `min`-värde mindre än noll (till exempel, `-1`).<br> |
| `courtyard_clearance` | min | Kontrollerar frigång mellan fotavtrycks gårdsplaner och genererar ett felmeddelande om två godtyckliga gårdsplaner är närmare varandra än `min`-avståndet. Om ett fotavtryck inte har en definierad gårdsplan, genereras inga felmeddelanden från denna begränsning.<br> |
| `diff_pair_gap` | min/opt/max | Kontrollerar avståndet mellan kopplade ledare i ett differentiellt par. Kopplade ledare är segment som är parallella med varandra. Ledaravstånd för differentiellt par testas inte för okopplade delar av ett differentiellt par (till exempel, utbrytningen från en komponent).<br> |
| `diff_pair_uncoupled` | max | Kontrollerar sträckan som ett differentiellt pars ledare är dragen okopplad från parets ledare med motsatt polaritet (till exempel, där paret bryter ut från en komponent, eller blir okopplad för att passera runt ett annat objekt som till exempel ett via).<br> |
| `disallow` | `track`<br>`via`<br>`micro_via`<br>`buried_via`<br>`pad`<br>`zone`<br>`text`<br>`graphic`<br>`hole`<br>`footprint`<br> | Specifcera en eller flera objekttyper som inte tillåts, separerade med mellanslag. Till exempel, `(constraint disallow track)` eller `(constraint disallow track via pad)`. Om ett objekt av denna typ matchar regelvillkoret genereras ett designregelfel.<br><br>Denna begränsning är väsentligen detsamma som en spärrzon, men kan användas för att skapa mer specifika spärrbegränsningar.<br> |
| `edge_clearance` | min/opt/max | Kontrollerar frigången mellan objekt och mönsterkortets kant.<br><br>Detta kan också förstås som "frästoleransen" eftersom mönsterkortets kantkontur innehåller alla grafiska element på lagret `Edge.Cuts` såväl som eventuella *ovala* hål i lödytor. (Se `physical_hole_clearance` för borrtoleransen.)<br> |
| `length` | min/max | Kontrollerar den totala dragna ledarlängden för de nät som matchar regelvillkoret och genererar ett felmeddelande för varje nät vars längd understiger `min`-värdet (om specificerat) eller överstiger `max`-värdet (om specificerat) för begränsningen.<br> |
| `hole` | min/max | Kontrollerar storleken (diametern) för ett borrat hål i en lödyta eller ett via. För ovala hål testas den mindre diametern mot `min`-värdet (om specificerat) och den större diametern testas mot `max` värdet (om specificerat).<br> |
| `hole_clearance` | min | Kontrollerar frigången mellan ett borrat hål i en lödyta eller ett via och kopparobjekt tillhörande andra nät. Frigången mäts från hålets periferi, inte från dess centrum.<br> |
| `hole_to_hole` | min | Kontrollerar frigången mellan mekaniskt borrade hål i lödytor och vior. Frigången mäts mellan hålens periferier, inte mellan deras centrum.<br><br>Denna begränsning är enkom för att skydda borrstålen. Frigången till/mellan **laserborrade** (mikrovior) och andra icke-mekaniskt borrade hål kontrolleras inte, inte heller frigången till/mellan **frästa** (ovala) och andra icke mekaniskt borrade hål.<br> |
| `physical_clearance` | min | Kontrollerar frigången mellan två objekt på ett givet lager (inklusive icke-kopparlager).<br><br>Medan detta kan utföra mer universella kontroller än`clearance`, är det också mycket långsammare. Använd `clearance` där det är möjligt.<br> |
| `physical_hole_clearance` | min | Kontrollera frigången mellan ett borrat hål i en lödyta eller ett via och ett annat objekt, oberoende av dess nättillhörighet. Frigången mäts från hålets periferi, inte dess centrum.<br><br>Detta kan också förstås som "borrtoleransen" då det bara inkluderar **runda** hål (se `edge_clearance` för frästoleransen).<br> |
| `silk_clearance` | min/opt/max | Kontrollerar frigången mellan objekt på anvisningstryckslagret och andra objekt.<br> |
| `skew` | max | Kontrollerar total skew för de nät som matchar regelvillkoret, med andra ord, skillanden mellan varje individuellt näts ledarlängd och medelvärdet av ledarlängden för alla nät som matchar regelvillkoret. Om absolutvärdet av skillnaden mellan det medelvärdet och ledarlängden för något individuellt nät överstiger `max`-värdet genereras ett felmeddelande.<br> |
| `thermal_relief_gap` | min | Specificerar bredden på gapet mellan en lödyta och kopparzonen när termiskt avlastad zonanslutning används.<br> |
| `thermal_spoke_width` | opt | Specificerar ekerbredd för termiskt avlastad anslutning mellan en lödyta och kopparzonen den ansluter till.<br> |
| `track_width` | min/opt/max | Kontrollerar ledar- och bågsegments bredd. Ett felmeddelande genereras för varje segmetn vars bredd understiger `min`-värdet (om specificerat) eller överstiger `max`-värdet (om specificerat).<br> |
| `via_count` | max | Räknar antalet vior på i varje nät som matchar regelvillkoret. Om antalet i något nät överstiger begränsningens `max`-värde genereras ett felmeddelande för det nätet.<br> |
| `zone_connection` | `solid`<br>`thermal_reliefs`<br>`none` | Specificerar vilken typ av anslutning som skall utföras mellan en zon och en lödyta.<br> |
### Objekt
* `A` _det första (eller enda) objekt som testas_
* `B` _det andra objektet som testas (för binära test)_
* `L` _lagret som för närvarande testas_
<br>
### Namn på allvarlighetsgrader
* warning
* error
* exclusion
* ignore
<br>
### Exempel
(version 1)
(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
# större frigång mellan högspännings (HV) ledare
(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.enclosedByArea('Shield*')"))
(rule heavy_thermals
(constraint thermal_spoke_width (min 0.5mm))
(condition "A.NetClass == 'HV'"))
<br><br>
### Noteringar
Versionssatsen måste vara den första satsen. Den indikerar syntaxversionen i filen så att
framtida regeltolkar kan utföra automatiska uppdateringar. Den skall vara
satt till "1".
Regler skall ordnas enligt stigande grad av specificitet. Senare regler har
företräde framför tidigare regler; när väl en matchande regel hittats
kontrolleras inga fler regler.
Använd Ctrl+/ för att kommentera eller avkommentera rad(er).
<br><br><br>
### Uttrycksfunktioner
Alla funktionsparametrar stöder enkla jokertecken (`*` och `?`).
<br><br>
A.intersectsCourtyard('<footprint_refdes>')
Sant om någon del av `A` ligger innanför det angivna fotavtryckets huvudgårdsplan.
<br><br>
A.intersectsFrontCourtyard('<footprint_refdes>')
Sant om någon del av `A` ligger innanför det angivna fotavtryckets gårdsplan på mönsterkortets framsida.
<br><br>
A.intersectsBackCourtyard('<footprint_refdes>')
Sant om någon del av `A` ligger innanför det angivna fotavtryckets gårdsplan på mönsterkortets baksida.
<br><br>
A.intersectsArea('<zone_name>')
Sant om någon del av `A` ligger innanför den angivna zonens kontur.
<br><br>
A.enclosedByArea('<zone_name>')
Sant om hela `A` ligger innanför den angivna zonens kontur.
OBS: detta är potentiellt ett dyrare anrop (mer arbetsamt att utföra) än `intersectsArea()`. Använd `intersectsArea()`
där det är möjligt.
<br><br>
A.getField('<field_name>')
Värdet för det givna fältet. Endast fotavtryck har fält, varför ett fält endast returneras om
`A` är ett fotavtryck.
<br><br>
A.isPlated()
Sant om `A` har ett genompläterat hål.
<br><br>
A.inDiffPair('<net_name>')
Sant om `A` har ett nät som är en del av det specificerade differentiella paret.
`<net_name>` är basnamnet för det differentiella paret. Till exempel matchar `inDiffPair('/CLK')`
objekt i näten `/CLK_P` och `/CLK_N`.
<br><br>
AB.isCoupledDiffPair()
Sant om `A` och `B` tillhör samma differentiella par.
<br><br>
A.memberOfGroup('<group_name>')
Sant om `A` är medlem av den givna gruppen. Namnet kan innehålla jokertecken.
Inkluderar nästlade medlemskap (som härleds i flera steg).
<br><br>
A.memberOfFootprint('<footprint_reference>')
Sant om `A` tillhör ett fotavtryck som matchar den angivna referensbeteckningen.
Referensbeteckningen kan innehålla jokertecken.
<br><br>
A.memberOfSheet('<sheet_path>')
Sant om `A` tillhör det angivna kretsschemaarket. Sökvägen för kretsschemaarket kan innehålla jokertecken.
<br><br>
A.existsOnLayer('<layer_name>')
Sant om `A` finns på det angivna lagret. Lagrets namn kan vara
endera det namn som tilldelats i Mönsterkortsinställningar > Lager i mönsterkortsredigeraren
eller det kanoniska namnet (ie: `F.Cu`).
OBS: detta returnerar sant om `A` är på det angivna lagret, oberoende
av om regeln utvärderas för det lagret eller inte.
För det senare fallet använd en sats `(layer "layer_name")` i regeln.
<br><br>
### Fler exempel
(rule "copper keepout"
(constraint disallow track via zone)
(condition "A.intersectsArea('zone3')"))
(rule "BGA neckdown"
(constraint track_width (min 0.2mm) (opt 0.25mm))
(constraint clearance (min 0.05mm) (opt 0.08mm))
(condition "A.intersectsCourtyard('U3')"))
# förhindra anvisningstryck över täckta vior
(rule silk_over_via
(constraint silk_clearance (min 0.2mm))
(condition "A.Type == '*Text' && B.Type == 'Via'"))
(rule "Distance between Vias of Different Nets"
(constraint hole_to_hole (min 0.254mm))
(condition "A.Type == 'Via' && B.Type == 'Via' && A.Net != B.Net"))
(rule "Clearance between Pads of Different Nets"
(constraint clearance (min 3.0mm))
(condition "A.Type == 'Pad' && B.Type == 'Pad' && A.Net != B.Net"))
(rule "Via Hole to Track Clearance"
(constraint hole_clearance (min 0.254mm))
(condition "A.Type == 'Via' && B.Type == 'Track'"))
(rule "Pad to Track Clearance"
(constraint clearance (min 0.2mm))
(condition "A.Type == 'Pad' && B.Type == 'Track'"))
(rule "clearance-to-1mm-cutout"
(constraint edge_clearance (min 0.8mm))
(condition "A.Layer == 'Edge.Cuts' && A.Line_Width == 1.0mm"))
(rule "Max Drill Hole Size Mechanical"
(constraint hole_size (max 6.3mm))
(condition "A.Pad_Type == 'NPTH, mechanical'"))
(rule "Max Drill Hole Size PTH"
(constraint hole_size (max 6.35mm))
(condition "A.Pad_Type == 'Through-hole'"))
# Specificera ett optimalt ledaravstånd för ett visst differentiellt par
(rule "dp clock gap"
(constraint diff_pair_gap (opt "0.8mm"))
(condition "A.inDiffPair('/CLK')"))
# Specificera ett större isolationsavstånd runt alla differentiella par
(rule "dp clearance"
(constraint clearance (min "1.5mm"))
(condition "A.inDiffPair('*') && !AB.isCoupledDiffPair()"))
# Använd inte termisk avlastning på lödytor för kylning
(rule heat_sink_pad
(constraint zone_connection solid)
(condition "A.Fabrication_Property == 'Heatsink pad'"))
# Kräv att alla fyra termiska ekrar är anslutna till den överordnade kopparzonen
(rule fully_spoked_pads
(constraint min_resolved_spokes 4))
# Definiera alla zoners gap och ekerbredd för termisk avlastning
(rule defined_relief
(constraint thermal_relief_gap (min 10mil))
(constraint thermal_spoke_width (min 12mil)))
# Definiera avvikande gap och ekerbredd för termisk avlastning för kopparzonerna GND och PWR
(rule defined_relief_pwr
(constraint thermal_relief_gap (min 10mil))
(constraint thermal_spoke_width (min 12mil))
(condition "A.Name == 'zone_GND' || A.Name == 'zone_PWR'"))
# Förhindra att lod sugs bort från ytmonteringslödytor
(rule holes_in_pads
(constraint physical_hole_clearance (min 0.2mm))
(condition "B.Pad_Type == 'SMD'"))
# Tillåt inte avvikelser för lödmasksmarginal
(rule "disallow solder mask margin overrides"
(constraint assertion "A.Soldermask_Margin_Override == 0mm")
(condition "A.Type == 'Pad'"))
# Upprätthåll mekanisk frigång mellan komponenter och mönsterkortets kant
(rule front_mechanical_board_edge_clearance
(layer "F.Courtyard")
(constraint physical_clearance (min 3mm))
(condition "B.Layer == 'Edge.Cuts'"))
# Kontrollera strömkapacitet
(rule high-current
(constraint track_width (min 1.0mm))
(constraint connection_width (min 0.8mm))
(condition "A.NetClass == 'Power'"))
# Separera storleksbegränsningar för borr- och frässtål
(rule "Plated through-hole size"
(constraint hole_size (min 0.2mm) (max 6.35mm))
(condition "A.isPlated() && A.Hole_Size_X == A.Hole_Size_Y"))
(rule "Plated slot size"
(constraint hole_size (min 0.5mm))
(condition "A.isPlated() && A.Hole_Size_X != A.Hole_Size_Y"))
### Dokumentation
För den fullständiga dokumentationen se: [https://docs.kicad.org](https://docs.kicad.org/GetMajorMinorVersion/en/pcbnew/pcbnew.html#custom_design_rules).