Klauzule najwyższego poziomu(version <numer>)
(rule <nazwa_reguły> <warunek_reguły> ...)Klauzule warunkowe(constraint <typ_ograniczenia> ...)
(condition "<wyrażenie>")
(layer "<nazwa_warstwy>")Typy ograniczeń- 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
Typy elementów- buried_via
- graphic
- hole
- micro_via
- pad
- text
- track
- via
- zone
PrzykładyCode: Select all
(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
# szerszy prześwit pomiędzy ścieżkami HV
(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*')"))
UwagiKlauzula wersji musi być pierwszą klauzulą. Oznacza ona wersję składni zastosowanej w pliku, wobec czego przyszłe parsery będą mogły przeprowadzać automatyczne aktualizacje. Obecnie powinna być ustawiona na "1".
Reguły powinny być uporządkowane według szczegółowości. Dalsze reguły mają pierwszeństwo nad regułami wcześniejszymi; jak tylko odnaleziona będzie pasująca reguła dalsze reguły nie będą sprawdzane.
Użyj Ctrl+/ by zakomentować lub odkomentować linię.
Funkcje wyrażenioweWszystkie parametry funkcji obsługują proste symbole wieloznaczne (* oraz ?).
A.insideCourtyard('<oznaczenie_footprintu>')Prawdziwe jeśli dowolna część A leży wewnątrz obszaru zajętości podanego footprintu.
A.insideFrontCourtyard('<oznaczenie_footprintu>')Prawdziwe jeśli dowolna część A leży wewnątrz obszaru zajętości podanego footprintu na stronie górnej.
A.insideBackCourtyard('<oznaczenie_footprintu>')Prawdziwe jeśli dowolna część A leży wewnątrz obszaru zajętości podanego footprintu na stronie dolnej.
A.insideArea('<nazwa_strefy>')Prawdziwe jeśli dowolna część A leży w obrysie podanej strefy.
A.isPlated()Prawdziwe jeśli A posiada otwór, który jest metalizowany.
A.inDiffPair('<nazwa_sieci>')Prawdziwe jeśli A posiada sieć, która jest składnikiem pary różnicowej. <nazwa_sieci> to nazwa bazowa pary różnicowej. Na przykład inDiffPair('CLK') odnosi się do sieci zarówno CLK_P jak i CLK_N.
AB.isCoupledDiffPair()Prawdziwe jeśli A i B są członkami tej samej pary różnicowej.
A.memberOf('<nazwa_groupy>')Prawdziwe jeśli A jest członkiem podanej grupy. Nawet zagnieżdżonej w innej grupie.
A.existsOnLayer('<nazwa_warstwy>')Prawdziwe jeśli A istnieje na określonej warstwie. Nazwa warstwy może być zarówno nazwą przypisaną w oknie dialogowym Ustawienia Płytki > Ustawienia warstw jak też jej nazwą kanoniczną (na przykład: F.Cu).
UWAGA: Zwraca prawdę, jeśli A znajduje się na danej warstwie, niezależnie czy reguła jest oceniana dla tej warstwy. W tym ostatnim przypadku użyj w regule klauzuli
(layer "nazwa_warstwy").
Więcej przykładówCode: Select all
(rule "blokada strefy"
(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.05mm) (opt 0.08mm))
(condition "A.insideCourtyard('U3')"))
# zapobiega opisowi na przelotkach
(rule silk_over_via
(constraint silk_clearance (min 0.2mm))
(condition "A.Type == '*Text' && B.Type == 'Via'"))
(rule "Odległość między przelotkami różnych sieci"
(constraint hole_to_hole (min 0.254mm))
(condition "A.Type =='Via' && B.Type =='Via' && A.Net != B.Net"))
(rule "Prześwit między polami różnych sieci"
(constraint clearance (min 3.0mm))
(condition "A.Type =='Pad' && B.Type =='Pad' && A.Net != B.Net"))
(rule "Prześwit między otworem a ścieżką"
(constraint hole_clearance (min 0.254mm))
(condition "A.Type =='Via' && B.Type =='Track'"))
(rule "Prześwit między polem a ścieżką"
(constraint clearance (min 0.2mm))
(condition "A.Type =='Pad' && B.Type =='Track'"))
(rule "clearance-to-1mm-cutout"
(constraint clearance (min 0.8mm))
(condition "A.Layer=='Edge.Cuts' && A.Thickness == 1.0mm"))
(rule "Maksymalny rozmiar otworu mechanicznego"
(constraint hole (max 6.3mm))
(condition "A.Pad_Type == 'NPTH, mechanical'"))
(rule "Maksymalny rozmiar otworu przewlekanego"
(constraint hole (max 6.35mm))
(condition "A.Pad_Type == 'Through-hole'"))
# Określa optymalną przerwę dla konkretnej pary różnicowej
(rule "prześwit dp dla lini zegarowej"
(constraint diff_pair_gap (opt "0.8mm"))
(condition "A.inDiffPair('CLK') && AB.isCoupledDiffPair()"))
# Określa większy prześwit wokół dowolnej pary różnicowej
(rule "prześwit dp"
(constraint clearance (min "1.5mm"))
(condition "A.inDiffPair('*') && !AB.isCoupledDiffPair()"))