Printplaat
Ontwerpregelcontroles
Elke layout regel met zijn id, ernst en de voorwaarde waaronder hij wordt uitgevoerd: koper, boringen, masker, zeefdruk, assemblage, zones, signalen, testtoegang en plaatsing.
Layoutchecks worden uitgevoerd vanuit een register van regels, elk met een stabiele id, een categorie (copper, drill, mask, silk, assembly, zone, signal, test, placement), een standaard ernst en een voorwaarde voor de printplaat: een regel voor binnenlagen geldt alleen bij 4 of meer koperlagen, een via-vulregel alleen als vias in pads zitten, een BGA-regel alleen als er een BGA is. Elke melding van een regel begint met de id in haakjes, bijvoorbeeld [via-cuts-pad]. agentee drc NAME --list (MCP drc met list = true) toont elke regel met de categorie, ernst en of deze op deze printplaat van toepassing is en waarom; agentee drc NAME toont alleen de regelmeldingen van het layout.
[drc] # in the board file
disable = ["silk-width"] # rule ids to skip; their checks are not computed, so with silk-text
# and silk-hidden off `agentee silk` has nothing to move
severity = { "starved-thermal" = "error", "via-in-pad" = "warning" } # info | warning | error
tombstone_ratio = 3 # copper or feed width one chip pad may have over the other| id | ernst | geldt wanneer | checks |
|---|---|---|---|
via-cuts-pad | fout | altijd | een via waarvan het koper een SMD-pad overlapt of raakt terwijl de boor niet volledig binnen het pad zit: soldeer loopt de boorgatbuis in en de padrand wordt beschadigd. Een via van een ander net die een pad raakt, wordt als short gemeld |
via-annulus-past-pad | waarschuwing | vias in pads | de boor zit in het pad, maar de annulus van de via reikt onder het masker verder dan de padrand |
via-in-pad | info | vias in pads | telt de vias in SMD-pads van hun eigen net (boor binnen het pad); fab-notes.txt vraagt de fabrikant om precies deze te vullen en te dichten (IPC-4761 type VII) |
via-in-pad-fill | fout | vias in pads | een via in een pad die breder is geboord dan max_filled_via_drill, of waarvan het viatype een fill heeft die niet filled_capped is (IPC-4761 type VII) |
hole-to-smd-pad | waarschuwing | altijd | een via-gat dichter dan min_hole_to_smd_pad bij een SMD-pad van zijn eigen net (of zonder net) die hij niet raakt; pasta en soldeer kunnen erin lopen |
drill-size | fout | altijd | padgaten kleiner dan min_drill (geplated) of min_npth_drill (niet-geplated), of groter dan max_drill (grotere gaten worden gerouteerd, teken ze als uitsparingen). Via-maten worden gecheckt op de [[vias]] van de printplaat |
slot-size | fout | gaten met een slot | slots smaller dan min_plated_slot_width of min_npth_slot_width, of korter dan twee keer hun breedte |
aspect-ratio | fout | altijd | geplated gaten waarvan de diepte (het koper en de dielektrica die ze passeren) gedeeld door de boor groter is dan max_aspect_ratio |
hole-to-copper | fout | altijd | een via- of geplated pad-gatwand dichter dan min_via_hole_to_copper of min_pth_hole_to_copper bij koper van een ander net op een laag die het gat passeert: sporen, pads, vias, kopervlakken |
inner-hole-to-copper | fout | 4+ koperlagen | een geplated pad-gatwand dichter dan min_inner_pth_hole_to_copper bij koper van een ander net op een binnenlaag |
npth-to-copper | fout | niet-geplated gaten | een niet-geplated gatwand dichter dan min_npth_to_copper bij elk koper, inclusief het kopervlak van zijn eigen net |
hole-to-edge | fout | niet-geplated gaten | een niet-geplated gatwand dichter dan min_copper_to_edge bij de printplaatcontour of een printplaatuitsparing, of erdoorheen |
smd-pad-gap | fout | altijd | SMD-pads van verschillende nets dichter dan min_smd_pad_gap, één regel per paar onderdelen met de dichtstbijzijnde pads |
pad-to-edge | fout | altijd | padkoper dichter dan min_copper_to_edge bij de printplaatcontour of een printplaatuitsparing; pads gemarkeerd met edge = true zijn uitgesloten |
edge-pad-reach | waarschuwing | altijd | een pad gemarkeerd met edge = true dat niet tot de printplaatcontour reikt |
starved-thermal | waarschuwing | zones | een pad verbonden met een kopervlak van zijn net over minder dan de helft van zijn contour, met minder dan twee spaken van minimaal min_track_width breed, en met minder koper in totaal dan de eigen breedte van het pad |
part-to-edge | waarschuwing | onderdelen | SMD-pads dichter dan min_part_to_edge bij de contour of een printplaatuitsparing, waar depanelingsstress onderdelen kan barsten; slaat fiducials, montagegaten en onderdelen met edge-pads over |
part-body-to-edge | info | onderdelen | een onderdeellichaam dichter dan min_body_to_edge bij de contour of een printplaatuitsparing, of eroverheen (over een uitsparing telt als eroverheen) (assembly DFM-richtlijnen: geen component binnen 1 mm van de rand). Het lichaam is de fabcontour, anders de courtyard, anders het padkoper, en de melding noemt welke; slaat fiducials, montagegaten, onderdelen met edge-pads en footprints met overhang = true over |
fiducials | info | onderdelen | geen footprint met een naam als Fiducial op de printplaat |
tooling-holes | info | onderdelen | geen niet-geplated gat van 1,5 mm of groter |
bga-pad | fout | een BGA | BGA-pads (16 of meer ronde SMD-pads) kleiner dan min_bga_pad |
bga-pitch | fout | een BGA | balpitch fijner dan min_bga_pitch |
bga-pad-ratio | waarschuwing | een BGA | paddoorspeter buiten 40% tot 65% van de pitch (IPC-7351 landmaten) |
paste-without-mask | waarschuwing | onderdelen | een koperpad met pasta maar geen maskering op die zijde, zodat de stencil op het masker print |
mlcc-flex-zone-case | info | keramische condensatoren | een keramische condensator van case 0805 (2012 metrisch) of groter binnen flex_zone van de contour, een printplaathoek, een printplaatuitsparing, een montagegat (een MountingHole*-footprint) of een niet-geplated gat van 2 mm of groter (Knowles: de stresszone is typisch binnen 5 mm van de PCB-rand of bevestigingspunten); hoe langer de chip, hoe meer spanning de uiteinden ervaren |
mlcc-flex-zone | info | keramische condensatoren | een kleinere keramische condensator binnen flex_zone waarvan de lange as op de dichtstbijzijnde rand, hoek of gat wijst (Murata FAQ: oriënteer de chip horizontaal op de stressrichting, zodat de lange as langs de rand loopt) |
mlcc-flex-zone-info | info | keramische condensatoren | telt de kleinere keramische condensatoren binnen flex_zone die al langs de rand liggen |
tombstone-risk | info | chips van 0603 of kleiner | een tweepad SMD-onderdeel van 0603 (1608 metrisch) of kleiner waarvan de pads in maat of vorm verschillen, dat een via in één pad heeft en niet in het andere, of waarvan het koper binnen 0,3 mm van één pad op zijn laag (sporen, vias, kopervlakken van zijn net) meer dan tombstone_ratio (standaard 3) keer dat van het andere pad is; een pad verbonden met zijn kopervlak via een thermische ontlasting wordt gewogen op de spakbreedte tegen de spoorbreedte op het andere pad, en een pad zonder spoor, via of kopervlak wordt niet vergeleken; het uiteinde dat eerst warm wordt, nat eerst en zet het onderdeel op (EMS DFM-richtlijnen: symmetrische lands en gebalanceerd koper aan beide uiteinden) |
tall-part-shadow | info | onderdeelhoogtes boven 3 mm | een tweepad chip van 0603 of kleiner dichter bij een onderdeel hoger dan 3 mm dan de hoogte van dat onderdeel, gemeten van de pads van de chip naar het lichaam van het hoge onderdeel (EMS vuistregel 1:1: schaduw in reflow en inspectie); hoogtes komen uit de height van de footprint, anders uit het lichaam dat de 3D-view tekent zonder model: de standaard van de familie (SOIC, QFN, headers, shields) of een _h1.25mm-deel van de naam |
test-access | info | onderdelen | nets waarvoor de [test]-sectie vraagt, zonder probe-toegang vanaf de probe-zijde: geen pad van een testpunt (referentie TP1..., of een footprint met de naam TestPoint*), geen blootliggend geplateerd doorvoergat-pad (through_holes), geen via zonder deksel (vias). Nets in klassen met een impedantie-doel en de nets van paren zijn uitgesloten en worden genoemd, omdat een stub ze schaadt |
test-pad-geometry | info | testpunten | een testpunt-pad kleiner dan min_test_pad, dichter dan min_test_pad_pitch tot een ander centrum tot centrum, dichter dan min_test_pad_to_body tot het lichaam van een ander onderdeel aan de probe-zijde, dichter dan min_test_pad_to_edge tot de rand van de printplaat of een gereedschapsgat (niet-geplateerde gaten en montagegaten), of niet aan de probe-zijde |
placement-decoupling-distance | info | onderdelen | een condensator tussen voeding en massa waarvan het voeding-pad verder dan decoupling_distance (3 mm) van de dichtstbijzijnde pin van een IC op die voeding ligt, 2,5 keer die afstand voor bulkcondensatoren boven 1 uF |
placement-crystal-distance | info | onderdelen | een kristal of oscillator (referentie Y, of een footprint met een naam als die van een kristal of oscillator) waarvan het signaal-pad verder dan crystal_distance (5 mm) van de IC-pin op zijn net ligt |
placement-large-part-off-centre | info | onderdelen | een groot chip (een BGA, een behuizing met 16 of meer pinnen boven 25 mm2, anders de onderdelen met de meeste pinnen) waarvan het courtyard-centrum meer dan off_centre (0,6) van de weg van het printplaatcentrum naar de rand ligt |
placement-hot-parts-close | info | onderdelen | twee hete onderdelen waarvan de courtyards dichter dan hot_distance (5 mm) liggen: de [[sources]] van de thermische simulaties van dit layout met 0,25 W of meer, en de grote behuizingen (courtyard van 49 mm2 of meer) die die simulaties niet vermelden |
placement-cluster-spread | info | onderdelen | een tweepassief met twee pinnen waarvan de signaal-nets naar één IC lopen en niets anders, verder dan cluster_spread (10 mm) van de pin van die IC |
placement-connector-not-at-edge | info | onderdelen | een connector (rand-pads, overhang = true, of een J/P-referentie die geen Tag-Connect, U.FL of testpad is) waarvan het courtyard verder dan connector_edge (3 mm) van de omtrek ligt |
short | fout | altijd | koper van twee verschillende nets raakt elkaar |
clearance | fout | altijd | koper van twee nets dichter dan de grootste van hun klasse-clearances (een footprint-clearance vervangt ze voor zijn pads), of koper dat in een niet-geplateerd gat loopt |
unrouted | fout | altijd | een net waarvan de pads niet allemaal door sporen, vias en kopervlakken zijn verbonden, met de groepen die uit elkaar liggen |
dangling-track | waarschuwing | altijd | een sporeinde dat geen koper van zijn net en geen kopervlak raakt |
track-grazes-pad | waarschuwing | altijd | sporen die een pad alleen met hun rand raken; voer de middellijn in het pad |
copper-to-edge | fout | altijd | een spoor of via dichter dan min_copper_to_edge tot de omtrek van de printplaat of een uitsparing, of buiten de printplaat (een spoor over een uitsparing verlaat de printplaat) |
pad-off-board | fout | altijd | pads buiten de omtrek of in een uitsparing van de printplaat; pads met edge = true zijn uitgesloten |
stitching | info | altijd | telt de vias die elke [[stitching]]-invoeging heeft geplaatst |
stitching-empty | waarschuwing | altijd | een [[stitching]]-invoeging die geen via heeft geplaatst |
fanout-empty | waarschuwing | altijd | een [[fanouts]]-invoeging die geen via heeft geplaatst |
hole-to-hole | fout | altijd | gaten van verschillende onderdelen of vias dichter dan min_hole_to_hole, wand tot wand, geteld met het eerste paar; alleen gaten waarvan de spans een dielektricum delen tellen, dus een microvia naast een begraven via is geen paar |
stacked-via | fout | altijd | een via op dezelfde plek als een andere via van zijn net door hetzelfde dielektricum (tweemaal geboord), gestapeld op een andere via op één laag wanneer stacked_microvias uit staat of buiten de bouwvolgorde van de laminatie (de via onder een stapel geboord in een latere stap dan de bovenste), of gestapeld met een via met gecontroleerde diepte |
via-lamination | fout | altijd | vias waarvan de span en boorgatsoort geen boorgatstap van de laminatie overeenkomen (zie Laminatie), per via-type en span; het bericht noemt het [[vias]]-element van de printplaat en somt alle spans op die de laminatie boort, per boorgatsoort. De printplaatcontrole laat een via-type dat een layout plaatst aan deze regel over |
neckdown | info | altijd | een spoor smaller dan de breedte van zijn klasse maar niet onder min_track_width, op een stuk tot de neckdown-lengte van de klasse (0,5 mm als standaard) |
class-width | fout | altijd | een spoor smaller dan de breedte van zijn klasse dat geen neck-down is |
impedance-width | waarschuwing | impedantie-klassen | een spoor van een impedantie-klasse met een andere breedte, zijn impedantie verandert |
impedance-trace | fout | impedantie-klassen | een spoor van een impedantie-klasse waarvan de breedte, neck-downs inbegrepen, of het koper ernaast op een buitenlaag de impedantie buiten de tolerantie van de klasse brengt; de afstand wordt niet gecontroleerd binnen de neck-down-lengte van een pad of een knooppunt |
track-overlap | fout | altijd | sporen van één net die over elkaar lopen, het koper is verdubbeld |
acute-turn | waarschuwing | altijd | een spoor dat meer dan 90 graden terugkeert, een zuurval |
zone-overlap | fout | zones | vullingen van twee nets op één laag overlappen, een short |
zone-to-zone | fout | zones | vullingen van twee nets op één laag dichter dan hun clearance |
zone-clearance | fout | zones | een vulling die koper van een ander net bedekt of te dichtbij komt |
zone-tips | waarschuwing | zones | vultips scherper dan 30 graden; verhoog de min_width van de zone |
copper-neck | waarschuwing | zones | nekken in een vulling smaller dan 90% van de min_width van de zone, die de vulling had moeten openen; geteld op plek met de smalste |
zone-islands | info | altijd | vuleilanden die niets van het net van de zone bereiken en zijn verwijderd |
courtyard-overlap | fout | onderdelen | courtyards van twee onderdelen aan één zijde overlappen door hun omtrek |
courtyard-hole | fout | onderdelen | een courtyard die een montagegat of een niet-geplateerd gat van een ander onderdeel bedekt |
mask-web | fout | altijd | pads van verschillende nets waarvan de maskergaten minder dan min_mask_web laten, één regel per paar onderdelen; pads van één footprint met mask_web = false worden onderling overgeslagen |
silk-text | fout | altijd | zeefdruktxt die andere tekst benadert, op pads ligt, over vias print, een zeefdruk-omtrek kruist of van de printplaat loopt; een referentie krijgt een vrije plek (agentee silk verplaatst hem daar) |
silk-hidden | waarschuwing | altijd | zeefdruktxt alleen verborgen onder het lichaam van een ander onderdeel |
silk-text-height | waarschuwing | altijd | zeefdruktxt onder min_silk_text_height |
silk-artwork | fout | altijd | zeefdruk-afbeelding op pads, over zeefdruktxt of van de printplaat |
watermark | fout | altijd | de agentee vX.Y.Z-HASH-watermark heeft geen vrije plek op de zeefdruk, of de [watermark]-plek is niet vrij; de fab weigert zonder een plek, en het uitschakelen van de regel verwijdert de watermark niet |
silk-width | waarschuwing | altijd | printplaat-zeefdruklijnen (de [[graphics]] van het layout, geen tekst) dunner dan min_silk_width, geteld met de dunste; footprint-zeefdruk wordt gecontroleerd met de footprint |
pair-skew | fout | paren | een paar met een skew groter dan max_skew of de max_skew van de klasse, met het net dat verlengd moet worden |
pair-skew-info | info | paren | de skew van elk paar binnen de limiet |
pair-gap | fout | paren | een paar dat naast elkaar loopt met een andere afstand dan de diff_gap van de klasse, verder dan max_uncoupled |
pair-coupling | waarschuwing | paren | minder dan 80% van een paar loopt naast elkaar op de paar-afstand |
match-length | fout | matchgroepen | een lid van een matchgroep dat meer dan de tolerantie afwijkt van de doelwaarde |
interface-pair | fout | interfaces | een net van een differentieel interface zonder paarpartner |
interface-impedance | fout | interfaces | een interface-net waarvan de klasse geen impedantiedoel heeft, een net buiten het venster, of geen paar-afstand op een differentieel interface |
interface-skew | fout | interfaces | een paar met een skew groter dan de max_skew van het interface |
interface-bus-skew | fout | interfaces | de datasignalen spreiden zich meer uit dan max_bus_skew |
interface-clock-window | fout | interfaces | een datasignaal dat buiten clock_window aankomt ten opzichte van de klok |
interface-vias | fout | interfaces | een lane met meer vias dan max_vias |
interface-stub | fout | interfaces | een via-stub langer dan max_stub |
interface-return-via | fout | interfaces | een signaalvia zonder referentievia binnen return_via |
interface-length | fout | interfaces | een lane langer dan max_length |
interface-reference | fout | interfaces | een lane die meer dan max_unreferenced loopt zonder een referentievlak ernaast |
De plaatsingsregels zijn richtlijnen voor waar onderdelen zitten en zijn standaard meldingen; verhoog ze met [drc] severity. De drempelwaarden staan in de printplaat:
[drc.placement]
decoupling_distance = "3mm" # supply pad of a decoupling cap to the IC pin
crystal_distance = "5mm"
cluster_spread = "10mm" # a passive to the only IC it serves
hot_distance = "5mm" # courtyard gap between large packages
connector_edge = "3mm" # connector courtyard to the outline
off_centre = 0.6 # fraction of the half width or height from the centreDe mechanische regels (part-body-to-edge, de mlcc-flex-zone-regels, tombstone-risk, tall-part-shadow) zijn richtlijnen en standaard info; verhoog ze met [drc] severity. Een keramische condensator is een onderdeel met exact twee SMD-pads waarvan de footprint C_* heet of Capacitor bevat, of waarvan de referentie C is met een cijfer, tenzij de footprintnaam CP_, Tantal, Elec of Polymer zegt; mlcc op de footprint of de plaatsing gaat boven de schatting. De behuizing komt uit de footprintnaam (1608Metric, anders een imperiale code zoals 0603), anders uit de afstand tussen de twee padcentra, die dicht bij de lichaamslengte ligt.
Een id dat geen regel noemt is een waarschuwing. Fouten in de bestanden zelf (een net dat niet in het schema staat, een laag die geen koper is, een slechte preset) zijn geen regels en kunnen niet worden uitgeschakeld.