agentee

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
idgravidadecorre quandoverificações
via-cuts-paderrosempreuma 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-padavisovias em padso furo está no pad, mas o anel da via ultrapassa a borda do pad sob a máscara
via-in-padinformaçãovias em padsconta 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-fillerrovias em padsuma 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-padavisosempreum 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-sizeerrosemprefuros 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-sizeerrofuros em fendafendas mais estreitas do que min_plated_slot_width ou min_npth_slot_width, ou mais curtas do que duas vezes a sua largura
aspect-ratioerrosemprefuros com banho cuja profundidade (o cobre e o dielétrico por onde passam) sobre o furo excede max_aspect_ratio
hole-to-coppererrosemprea 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-coppererro4 ou mais camadas de cobrea 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-coppererrofuros sem banhoa 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-edgeerrofuros sem banhoa 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-gaperrosemprepads 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-edgeerrosemprecobre 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-reachavisosempreum pad marcado com edge = true que não chega ao contorno da placa
starved-thermalavisoáreas de cobreum 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-edgeavisocomponentespads 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-edgeinformaçãocomponenteso 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
fiducialsinformaçãocomponentesnenhum footprint com nome como Fiducial na placa
tooling-holesinformaçãocomponentesnenhum furo sem banho de 1,5 mm ou mais
bga-paderroum BGApads de BGA (16 ou mais pads SMD redondos) mais pequenos do que min_bga_pad
bga-pitcherroum BGApasso de esferas mais fino do que min_bga_pitch
bga-pad-ratioavisoum BGAdiâmetro do pad fora de 40% a 65% do passo (tamanhos de land da IPC-7351)
paste-without-maskavisocomponentesum 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-caseinformaçãocondensadores cerâmicosum 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-zoneinformaçãocondensadores cerâmicosum 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-infoinformaçãocondensadores cerâmicosconta os condensadores cerâmicos mais pequenos dentro de flex_zone que já estão ao longo da borda
tombstone-riskinformaçãochips de 0603 ou mais pequenosum 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-shadowinformaçãoalturas de componentes acima de 3 mmum 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-accessinformaçãocomponentesredes 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-geometryinformaçãopontos de testeum 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-distanceinformaçãocomponentesum 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-distanceinformaçãocomponentesum 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-centreinformaçãocomponentesum 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-closeinformaçãocomponentesduas 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-spreadinformaçãocomponentesum 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-edgeinformaçãocomponentesum 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
shorterrosemprecobre de duas redes diferentes toca
clearanceerrosemprecobre 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
unroutederrosempreuma rede cujos pads não estão todos ligados por pistas, vias e áreas de cobre, nomeando os grupos que estão separados
dangling-trackavisosempreuma extremidade de pista que não toca cobre da sua rede nem área de cobre
track-grazes-padavisosemprepistas que chegam a um pad apenas com a sua borda; conduzir a linha central até ao pad
copper-to-edgeerrosempreuma 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-boarderrosemprepads fora do contorno ou num recorte da placa; pads marcados com edge = true estão isentos
stitchinginformaçãosempreconta as vias que cada entrada [[stitching]] colocou
stitching-emptyavisosempreuma entrada [[stitching]] que não colocou nenhuma via
fanout-emptyavisosempreuma entrada [[fanouts]] que não colocou nenhuma via
hole-to-holeerrosemprefuros 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-viaerrosempreuma 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-laminationerrosemprevias 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
neckdowninformaçãosempreuma 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-widtherrosempreuma pista mais estreita do que a largura da sua classe que não é um neck-down
impedance-widthavisoclasses de impedânciauma pista de uma classe de impedância a outra largura, a sua impedância muda
impedance-traceerroclasses de impedânciauma 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-overlaperrosemprepistas de uma rede a correr uma sobre a outra, o cobre está duplicado
acute-turnavisosempreuma pista a voltar mais de 90 graus, uma armadilha de ácido
zone-overlaperroáreas de cobrepreenchimentos de duas redes numa camada sobrepõem-se, um curto
zone-to-zoneerroáreas de cobrepreenchimentos de duas redes numa camada mais próximos do que o seu afastamento
zone-clearanceerroáreas de cobreum preenchimento que cobre ou chega demasiado perto de cobre de outra rede
zone-tipsavisoáreas de cobrepuntas de preenchimento mais afiadas do que 30 graus; aumentar o min_width da área
copper-neckavisoáreas de cobregargalos 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-islandsinformaçãosempreilhas de preenchimento que não chegam a nada da rede da área e foram removidas
courtyard-overlaperrocomponentescourtyards de duas peças num lado sobrepõem-se pelo seu contorno
courtyard-holeerrocomponentesum courtyard que cobre um furo de montagem ou um furo sem metálico de outra peça
mask-weberrosemprepads 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-texterrosempretexto 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-hiddenavisosempretexto de serigrafia apenas escondido sob o corpo de outra peça
silk-text-heightavisosempretexto de serigrafia abaixo de min_silk_text_height
silk-artworkerrosemprearte de serigrafia em pads, sobre texto de serigrafia ou fora da placa
watermarkerrosemprea 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-widthavisosemprelinhas 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-skewerroparesum par com skew superior ao max_skew dele ou ao max_skew da classe, com a rede a alongar
pair-skew-infoinformaçãopareso skew de cada par dentro do seu limite
pair-gaperroparesum par a correr lado a lado com um espaçamento diferente do diff_gap da classe, além do max_uncoupled
pair-couplingavisoparesmenos de 80% de um par a correr lado a lado com o espaçamento do par
match-lengtherrogrupos de igualaçãoum membro de um grupo de igualação fora do alvo em mais do que a tolerância
interface-pairerrointerfacesuma rede de uma interface diferencial sem parceiro de par
interface-impedanceerrointerfacesuma 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-skewerrointerfacesum par com skew superior ao max_skew da interface
interface-bus-skewerrointerfacesos sinais de dados espalham-se mais do que max_bus_skew
interface-clock-windowerrointerfacesum sinal de dados a chegar fora do clock_window em relação ao relógio
interface-viaserrointerfacesuma pista com mais vias do que max_vias
interface-stuberrointerfacesum stub de via mais longo do que max_stub
interface-return-viaerrointerfacesuma via de sinal sem via de referência dentro de return_via
interface-lengtherrointerfacesuma pista mais longa do que max_length
interface-referenceerrointerfacesuma 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 centre

As 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.

docs/format.md · Markdown para agentes