Placa
Verificações de regras de design
Todas as regras de layout com o respetivo id, severidade e a condição sob a qual são executadas: cobre, furações, máscara, serigrafia, montagem, zonas, sinais, acesso de teste e posicionamento.
As verificações de layout executam-se a partir de um registo de regras, cada uma com um id estável, uma categoria (copper, drill, mask, silk, assembly, zone, signal, test, placement), uma gravidade predefinida e uma condição na placa: uma regra para camadas internas só corre com 4 ou mais camadas de cobre, uma regra de preenchimento de vias só quando as vias estão em pads, uma regra de BGA só quando há um BGA. Cada mensagem de uma regra começa com o seu id entre parênteses retos, p. ex. [via-cuts-pad]. agentee drc NAME --list (MCP drc com list = true) imprime todas as regras com a sua categoria, gravidade e se se aplicam a esta placa e porquê; agentee drc NAME imprime apenas as mensagens de regras do 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 | gravidade | corre quando | verificações |
|---|---|---|---|
via-cuts-pad | erro | sempre | uma via cujo cobre se sobrepõe ou toca um pad SMD enquanto o seu furo não está totalmente dentro do pad: a solda escorre pelo furo e a borda do pad é danificada. Uma via de outra rede que toca um pad é reportada como short em vez disso |
via-annulus-past-pad | aviso | vias em pads | o furo está no pad, mas o anel da via ultrapassa a borda do pad sob a máscara |
via-in-pad | informação | vias em pads | conta as vias em pads SMD da sua própria rede (furo dentro do pad); fab-notes.txt pede ao fabricante para preencher e tampar exatamente estas (tipo VII da IPC-4761) |
via-in-pad-fill | erro | vias em pads | uma via em um pad com furo mais largo do que max_filled_via_drill, ou cujo tipo de via define um fill diferente de filled_capped (tipo VII da IPC-4761) |
hole-to-smd-pad | aviso | sempre | um furo de via mais próximo de min_hole_to_smd_pad de um pad SMD da sua própria rede (ou sem rede) que não toca; a pasta e a solda podem escorrer para dentro dele |
drill-size | erro | sempre | furos em pads abaixo de min_drill (com banho) ou min_npth_drill (sem banho), ou acima de max_drill (furos maiores são roteados, desenhe-os como recortes). Os tamanhos das vias são verificados no [[vias]] da placa |
slot-size | erro | furos em fenda | fendas mais estreitas do que min_plated_slot_width ou min_npth_slot_width, ou mais curtas do que duas vezes a sua largura |
aspect-ratio | erro | sempre | furos com banho cuja profundidade (o cobre e o dielétrico por onde passam) sobre o furo excede max_aspect_ratio |
hole-to-copper | erro | sempre | a parede de um furo de via ou pad com banho mais próxima de min_via_hole_to_copper ou min_pth_hole_to_copper do cobre de outra rede numa camada que o furo atravessa: pistas, pads, vias, áreas de cobre |
inner-hole-to-copper | erro | 4 ou mais camadas de cobre | a parede de um furo de pad com banho mais próxima de min_inner_pth_hole_to_copper do cobre de outra rede numa camada interna |
npth-to-copper | erro | furos sem banho | a parede de um furo sem banho mais próxima de min_npth_to_copper de qualquer cobre, incluindo a área de cobre da sua própria rede |
hole-to-edge | erro | furos sem banho | a parede de um furo sem banho mais próxima de min_copper_to_edge do contorno da placa ou de um recorte da placa, ou através dele |
smd-pad-gap | erro | sempre | pads SMD de redes diferentes mais próximos de min_smd_pad_gap, uma linha por par de componentes com os pads mais próximos |
pad-to-edge | erro | sempre | cobre de pad mais próximo de min_copper_to_edge do contorno da placa ou de um recorte da placa; pads marcados com edge = true estão isentos |
edge-pad-reach | aviso | sempre | um pad marcado com edge = true que não chega ao contorno da placa |
starved-thermal | aviso | áreas de cobre | um pad ligado a uma área de cobre da sua rede por menos de metade do seu contorno, por menos de duas hastes com pelo menos min_track_width de largura, e com menos cobre no total do que a própria largura do pad |
part-to-edge | aviso | componentes | pads SMD mais próximos de min_part_to_edge do contorno ou de um recorte da placa, onde o esforço de despanelamento fende os componentes; ignora fiduciais, furos de montagem e componentes com pads edge |
part-body-to-edge | informação | componentes | o corpo de um componente mais próximo de min_body_to_edge do contorno ou de um recorte da placa, ou além dele (sobre um recorte conta como além) (guias de DFM de montagem: nenhum componente a menos de 1 mm da borda). O corpo é o contorno do fabricante, senão o courtyard, senão o cobre do pad, e a mensagem indica qual; ignora fiduciais, furos de montagem, componentes com pads edge e footprints com overhang = true |
fiducials | informação | componentes | nenhum footprint com nome como Fiducial na placa |
tooling-holes | informação | componentes | nenhum furo sem banho de 1,5 mm ou mais |
bga-pad | erro | um BGA | pads de BGA (16 ou mais pads SMD redondos) mais pequenos do que min_bga_pad |
bga-pitch | erro | um BGA | passo de esferas mais fino do que min_bga_pitch |
bga-pad-ratio | aviso | um BGA | diâmetro do pad fora de 40% a 65% do passo (tamanhos de land da IPC-7351) |
paste-without-mask | aviso | componentes | um pad de cobre com pasta mas sem abertura de máscara nesse lado, de modo que a estêncil imprime sobre a máscara |
mlcc-flex-zone-case | informação | condensadores cerâmicos | um condensador cerâmico de invólucro 0805 (2012 métrico) ou maior dentro de flex_zone do contorno, de um canto da placa, de um recorte da placa, de um furo de montagem (um footprint MountingHole*) ou de um furo sem banho de 2 mm ou mais (Knowles: a zona de esforço é tipicamente dentro de 5 mm da borda da PCB ou dos pontos de fixação); quanto mais longo o chip, mais deformação as suas extremidades sofrem |
mlcc-flex-zone | informação | condensadores cerâmicos | um condensador cerâmico mais pequeno dentro de flex_zone cujo eixo longo aponta para a borda, canto ou furo mais próximo (FAQ da Murata: oriente o chip horizontalmente à direção de esforço, de modo que o seu eixo longo corra ao longo da borda) |
mlcc-flex-zone-info | informação | condensadores cerâmicos | conta os condensadores cerâmicos mais pequenos dentro de flex_zone que já estão ao longo da borda |
tombstone-risk | informação | chips de 0603 ou mais pequenos | um componente SMD de dois pads de 0603 (1608 métrico) ou mais pequeno cujos pads diferem em tamanho ou forma, que tem uma via num pad e não no outro, ou cujo cobre dentro de 0,3 mm de um pad na sua camada (pistas, vias, áreas de cobre da sua rede) excede tombstone_ratio (predefinido 3) vezes o do outro; um pad ligado à sua área de cobre através de um alívio térmico é pesado pela largura da sua haste em relação à largura da pista no outro pad em vez disso, e um pad sem pista, via ou área de cobre ainda não é comparado; a extremidade que aquece primeiro molha primeiro e levanta o componente (guias de DFM de EMS: lands simétricos e cobre equilibrado nas duas extremidades) |
tall-part-shadow | informação | alturas de componentes acima de 3 mm | um chip de dois pads de 0603 ou mais pequeno mais próximo de um componente com altura superior a 3 mm do que a altura desse componente, medido dos pads do chip ao corpo do componente alto (regra empírica de EMS 1:1: sombreamento em reflow e inspeção); as alturas vêm do height do footprint, senão do corpo que a vista 3D desenha sem um modelo: o predefinido da sua família (SOIC, QFN, headers, shields) ou um _h1.25mm no nome |
test-access | informação | componentes | redes que a secção [test] pede sem acesso de sonda do lado da sonda: nenhum pad de um ponto de teste (referência TP1..., ou um footprint com o nome TestPoint*), nenhum pad de furo passante metálico exposto (through_holes), nenhuma via sem máscara (vias). As redes em classes com um objetivo de impedância, e as redes de pares, estão isentas e são nomeadas, porque um ramo curto as prejudica |
test-pad-geometry | informação | pontos de teste | um pad de ponto de teste abaixo de min_test_pad, mais próximo do que min_test_pad_pitch de outro centro a centro, mais próximo do que min_test_pad_to_body do corpo de outra peça no lado da sonda, mais próximo do que min_test_pad_to_edge da borda da placa ou de um furo de ferramenta (furos sem metálico e furos de montagem), ou não no lado da sonda |
placement-decoupling-distance | informação | componentes | um condensador entre uma alimentação e a massa cujo pad de alimentação está mais longe do que decoupling_distance (3 mm) do pino mais próximo de um CI nessa alimentação, 2,5 vezes esse valor para condensadores de reserva acima de 1 uF |
placement-crystal-distance | informação | componentes | um cristal ou oscilador (referência Y, ou um footprint com um nome de cristal ou oscilador) cujo pad de sinal está mais longe do que crystal_distance (5 mm) do pino do CI na sua rede |
placement-large-part-off-centre | informação | componentes | um chip grande (um BGA, um encapsulamento com 16 ou mais pinos acima de 25 mm2, senão as peças com mais pinos) cujo centro do courtyard está mais do que off_centre (0,6) do caminho do centro da placa para a borda |
placement-hot-parts-close | informação | componentes | duas peças quentes cujos courtyards estão mais próximos do que hot_distance (5 mm): as [[sources]] das simulações térmicas deste layout a 0,25 W ou mais, e os encapsulamentos grandes (courtyard de 49 mm2 ou mais) que essas simulações não listam |
placement-cluster-spread | informação | componentes | um passivo de dois pinos cujas redes de sinal chegam a um CI e a mais nada, mais longe do que cluster_spread (10 mm) do pino desse CI |
placement-connector-not-at-edge | informação | componentes | um conector (pads de borda, overhang = true, ou uma referência J/P que não é um Tag-Connect, U.FL ou pad de teste) cujo courtyard está mais longe do que connector_edge (3 mm) do contorno |
short | erro | sempre | cobre de duas redes diferentes toca |
clearance | erro | sempre | cobre de duas redes mais próximo do que o maior dos seus afastamentos de classe (um clearance de footprint substitui-os para os seus pads), ou cobre que entra num furo sem metálico |
unrouted | erro | sempre | uma rede cujos pads não estão todos ligados por pistas, vias e áreas de cobre, nomeando os grupos que estão separados |
dangling-track | aviso | sempre | uma extremidade de pista que não toca cobre da sua rede nem área de cobre |
track-grazes-pad | aviso | sempre | pistas que chegam a um pad apenas com a sua borda; conduzir a linha central até ao pad |
copper-to-edge | erro | sempre | uma pista ou via mais próxima do que min_copper_to_edge do contorno da placa ou de um recorte da placa, ou fora da placa (uma pista através de um recorte sai da placa) |
pad-off-board | erro | sempre | pads fora do contorno ou num recorte da placa; pads marcados com edge = true estão isentos |
stitching | informação | sempre | conta as vias que cada entrada [[stitching]] colocou |
stitching-empty | aviso | sempre | uma entrada [[stitching]] que não colocou nenhuma via |
fanout-empty | aviso | sempre | uma entrada [[fanouts]] que não colocou nenhuma via |
hole-to-hole | erro | sempre | furos de peças diferentes ou vias mais próximos do que min_hole_to_hole, parede a parede, contados com o primeiro par; só contam furos cujas extensões partilham um dielétrico, por isso uma microvia ao lado de uma via enterrada não é um par |
stacked-via | erro | sempre | uma via no mesmo sítio que outra via da sua rede através do mesmo dielétrico (perfurada duas vezes), empilhada sobre outra via numa camada quando stacked_microvias está desligado ou fora da ordem de construção da laminação (a via sob um empilhamento perfurada numa etapa posterior à do topo), ou empilhada com uma via de profundidade controlada |
via-lamination | erro | sempre | vias cuja extensão e tipo de perfuração não correspondem a nenhuma etapa de perfuração da laminação (ver Laminação), por tipo de via e extensão; a mensagem nomeia a entrada [[vias]] da placa e lista todas as extensões que a laminação perfura, por tipo de perfuração. A verificação da placa deixa um tipo de via que um layout coloca a esta regra |
neckdown | informação | sempre | uma pista mais estreita do que a largura da sua classe mas não abaixo de min_track_width, num percurso até ao comprimento neckdown da classe (0,5 mm por omissão) |
class-width | erro | sempre | uma pista mais estreita do que a largura da sua classe que não é um neck-down |
impedance-width | aviso | classes de impedância | uma pista de uma classe de impedância a outra largura, a sua impedância muda |
impedance-trace | erro | classes de impedância | uma pista de uma classe de impedância cuja largura, incluindo neck-downs, ou o cobre ao lado numa camada externa coloca a sua impedância fora da tolerância da classe; o afastamento não é verificado dentro do comprimento neck-down de um pad ou de uma junção |
track-overlap | erro | sempre | pistas de uma rede a correr uma sobre a outra, o cobre está duplicado |
acute-turn | aviso | sempre | uma pista a voltar mais de 90 graus, uma armadilha de ácido |
zone-overlap | erro | áreas de cobre | preenchimentos de duas redes numa camada sobrepõem-se, um curto |
zone-to-zone | erro | áreas de cobre | preenchimentos de duas redes numa camada mais próximos do que o seu afastamento |
zone-clearance | erro | áreas de cobre | um preenchimento que cobre ou chega demasiado perto de cobre de outra rede |
zone-tips | aviso | áreas de cobre | puntas de preenchimento mais afiadas do que 30 graus; aumentar o min_width da área |
copper-neck | aviso | áreas de cobre | gargalos num preenchimento mais estreitos do que 90% do min_width da área, que o preenchimento deveria ter aberto; contados por sítio com o mais estreito |
zone-islands | informação | sempre | ilhas de preenchimento que não chegam a nada da rede da área e foram removidas |
courtyard-overlap | erro | componentes | courtyards de duas peças num lado sobrepõem-se pelo seu contorno |
courtyard-hole | erro | componentes | um courtyard que cobre um furo de montagem ou um furo sem metálico de outra peça |
mask-web | erro | sempre | pads de redes diferentes cujas aberturas de máscara deixam menos do que min_mask_web, uma linha por par de peças; pads de um footprint com mask_web = false são ignorados entre si |
silk-text | erro | sempre | texto de serigrafia que aperta outro texto, assenta em pads, imprime sobre vias, cruza um contorno de serigrafia ou sai da placa; uma referência recebe um sítio limpo (agentee silk move-a para lá) |
silk-hidden | aviso | sempre | texto de serigrafia apenas escondido sob o corpo de outra peça |
silk-text-height | aviso | sempre | texto de serigrafia abaixo de min_silk_text_height |
silk-artwork | erro | sempre | arte de serigrafia em pads, sobre texto de serigrafia ou fora da placa |
watermark | erro | sempre | a marca de água agentee vX.Y.Z-HASH não tem um sítio limpo na serigrafia, ou o sítio [watermark] não está limpo; o fabricante recusa sem um sítio, e desligar a regra não remove a marca de água |
silk-width | aviso | sempre | linhas de serigrafia da placa (os [[graphics]] do layout, não texto) mais finas do que min_silk_width, contadas com a mais fina; a serigrafia de footprint é verificada com o footprint |
pair-skew | erro | pares | um par com skew superior ao max_skew dele ou ao max_skew da classe, com a rede a alongar |
pair-skew-info | informação | pares | o skew de cada par dentro do seu limite |
pair-gap | erro | pares | um par a correr lado a lado com um espaçamento diferente do diff_gap da classe, além do max_uncoupled |
pair-coupling | aviso | pares | menos de 80% de um par a correr lado a lado com o espaçamento do par |
match-length | erro | grupos de igualação | um membro de um grupo de igualação fora do alvo em mais do que a tolerância |
interface-pair | erro | interfaces | uma rede de uma interface diferencial sem parceiro de par |
interface-impedance | erro | interfaces | uma rede de interface cuja classe não tem alvo de impedância, uma fora da janela, ou sem espaçamento de par numa interface diferencial |
interface-skew | erro | interfaces | um par com skew superior ao max_skew da interface |
interface-bus-skew | erro | interfaces | os sinais de dados espalham-se mais do que max_bus_skew |
interface-clock-window | erro | interfaces | um sinal de dados a chegar fora do clock_window em relação ao relógio |
interface-vias | erro | interfaces | uma pista com mais vias do que max_vias |
interface-stub | erro | interfaces | um stub de via mais longo do que max_stub |
interface-return-via | erro | interfaces | uma via de sinal sem via de referência dentro de return_via |
interface-length | erro | interfaces | uma pista mais longa do que max_length |
interface-reference | erro | interfaces | uma pista a correr mais do que max_unreferenced sem plano de referência ao lado |
As regras de posicionamento são orientações sobre onde as peças ficam, avisos por omissão; aumente-as com [drc] severity. Os seus limiares estão na placa:
[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 centreAs regras mecânicas (part-body-to-edge, as regras mlcc-flex-zone, tombstone-risk, tall-part-shadow) são orientações e por omissão são informação; aumente-as com [drc] severity. Um condensador cerâmico é uma peça com exatamente dois pads SMD cujo footprint se chama C_* ou contém Capacitor, ou cuja referência é C e um dígito, a menos que o nome do footprint diga CP_, Tantal, Elec ou Polymer; mlcc no footprint ou no posicionamento sobrepõe a estimativa. O corpo vem do nome do footprint (1608Metric, senão um código imperial como 0603), senão da distância entre os centros dos dois pads, que é próxima do comprimento do corpo.
Um id que não nomeia nenhuma regra é um aviso. Erros nos próprios ficheiros (uma rede que não está no esquema, uma camada que não é cobre, um preset inválido) não são regras e não podem ser desativados.