Habilidade de Análise e Criação de Esquemáticos KiCad
Habilidades Relacionadas
| Habilidade | Propósito |
|---|---|
bom | Extração, enriquecimento, pedido e exportação de BOM |
digikey | Pesquisar DigiKey por componentes (prototipagem) |
mouser | Pesquisar Mouser por componentes (fonte secundária de prototipagem) |
lcsc | Pesquisar LCSC por componentes (produção, JLCPCB) |
element14 | Pesquisar Newark/Farnell/element14 (fontes internacionais, datasheets confiáveis) |
jlcpcb | Pedido de fabricação e montagem de PCB |
pcbway | Fabricação e montagem alternativa de PCB |
spice | Verificação de simulação SPICE de subcircuitos detectados |
emc | Análise de risco de pré-conformidade EMC — consome saída do analisador de esquemático + PCB |
Diretriz de handoff: Use esta habilidade para analisar esquemáticos/PCBs e extrair dados estruturados. Passe para bom para enriquecimento, precificação e pedido de BOM. Passe para digikey/mouser/lcsc/element14 para pesquisas de componentes e obtenção de datasheets. Passe para jlcpcb/pcbway para pedido de fabricação e validação de regras DFM. Sempre execute spice para verificação de simulação durante revisões de design quando qualquer simulador SPICE estiver instalado (verifique com which ngspice ltspice xyce). Sempre execute emc para análise de risco de pré-conformidade EMC durante revisões de design quando tanto a análise de esquemático quanto de PCB estiverem disponíveis. Estas não são opcionais — ignorá-las deixa erros de computação de valor e riscos EMC não detectados.
Antes da análise: Quando o usuário pedir para analisar ou revisar um projeto KiCad, verifique se existe um diretório datasheets/ no projeto. Se não existir, e as chaves de API DigiKey estiverem disponíveis (DIGIKEY_CLIENT_ID), ofereça sincronizar datasheets primeiro: "Posso baixar datasheets para seus componentes antes da análise — isso permite verificação em nível de pino e validação de desacoplamento contra especificações do fabricante. Quer que eu sincronize?" Se o usuário recusar ou não houver chaves de API configuradas, prossiga sem datasheets — a análise funciona sem eles, mas as descobertas de verificação de datasheet não estarão disponíveis.
Se você vir uma descoberta DS-001 na saída do analisador (gravidade high, detector audit_datasheet_coverage), a revisão não pode fazer nenhuma afirmação verificada. Pare e (a) execute a sincronização de datasheet via digikey / mouser / lcsc / element14 (qualquer um com credenciais/estoque), (b) preencha MPNs nas peças da BOM, ou (c) declare explicitamente no relatório que cada descoberta em nível de pino, elétrica e de regulador é apenas consistência — não use as palavras "verificado", "confirmado" ou "por datasheet" em nenhum lugar. DS-002 (datasheets faltando mas MPNs definidos) e DS-003 (cobertura MPN parcial) são variantes mais suaves com a mesma implicação para as peças que citam.
Criação de Esquemático (Desenho e Redesenho)
Use este fluxo de trabalho quando o usuário pedir para criar, adicionar, redesenhar ou reestilizar um esquemático — ex.: "adicione um circuito TPS54560 5V/5A", "把原理图画成可读风格", "crie um buck schematic", "重画这块电源".
- Leia o padrão primeiro.
references/schematic-drawing-standards.mdé obrigatório antes de criar ou editar qualquer esquemático. Ele define o layout de barramento de energia estilo LM5013, barramento GND, política de rótulos, restrições de fiação KiCad 9 (dividir fios em pontos de conexão; sem fios soltos pino a pino; rótulos em nós compartilhados) e a validação. - Projete a partir do datasheet. Obtenha/leia o datasheet do CI; extraia pinagem, Vref, classificações máximas absolutas e a aplicação típica. Calcule valores (divisor de realimentação, RT/frequência, indutor, capacitores, compensação) com as equações do datasheet e declare os números antes de desenhar.
- Planeje o bloco na grade de 1,27 mm, espelhando a estrutura canônica LM5013: um barramento de energia contínuo
INPUT → CI → SW → L → OUTPUT, um barramento GND inferior e componentes de controle em uma faixa ordenada abaixo do CI (uma coluna por função). Verifique as posições dos pinos do símbolo e a semântica de rotação antes de escrever fios. - Gere. Edite o
.kicad_schS-expr diretamente ou use um script gerador. Cada fio deve terminar em um pino, junção, rótulo ou símbolo de alimentação; trilhos são divididos em segmentos em cada ponto de conexão. Para EasyEDA Pro, passe para a habilidadeeasyeda-schematic-drawcom o mesmo padrão. - Verifique com o próprio KiCad — este passo é obrigatório antes de relatar sucesso:
kicad-cli sch erc→ 0 erros / 0 avisoskicad-cli sch export netlist→ correspondência pino a pino com a intenção do design- execução do analisador de esquemático, com estimativas heurísticas de Vout corrigidas para Vref do datasheet
- verificação geométrica: sem sobreposições de corpos de símbolos, sem rótulo dentro de um corpo de CI
- renderização PDF/PNG + revisão visual: um barramento de energia contínuo, faixa de controle legível, sem empilhamento de componentes
- Relate os valores de design com equações, as evidências de verificação e quaisquer limitações do analisador que você corrigiu.
Os fluxos de trabalho de análise e revisão de design abaixo ainda se aplicam ao que foi gerado.
Contrato de Revisão de Design
Quando o usuário pedir uma revisão de design, relatório completo, avaliação pronta para fabricação ou algo equivalente, não pare em executar um ou dois analisadores e resumir suas descobertas. Uma revisão de design nesta habilidade tem um contrato mais rigoroso:
- Leia o fluxo de trabalho completo neste
SKILL.md, não apenas as seções de comando do analisador. - Leia
references/report-generation.mdantes de escrever o relatório. - Execute cada analisador aplicável para os arquivos presentes no projeto, então diga explicitamente quais foram e quais não foram executados.
- Realize verificação cruzada de arquivos brutos e datasheets antes de afirmar que algo está "verificado".
- Classifique falsos positivos prováveis do analisador antes de elevá-los a bloqueadores.
- Se uma etapa necessária não pôde ser realizada, declare-a como uma lacuna de revisão, não como omissão silenciosa.
Trate isso como o mínimo. Apenas o JSON do analisador não é a revisão final.
Lista de Verificação Mínima de Revisão
Para uma revisão de design completa, explique explicitamente cada item abaixo no relatório:
datasheets/presente, sincronizado ou lacuna de verificação declaradaanalyze_schematic.pyanalyze_pcb.py --fullcross_analysis.pyanalyze_emc.py- Simulação SPICE quando qualquer simulador estiver instalado
analyze_thermal.pyquando tanto o JSON do esquemático quanto do PCB existiremanalyze_gerbers.pyquando saídas de fabricação existirem- auditoria de lifecycle quando acesso à rede e cobertura MPN permitirem
- verificação de delta de revisão anterior / execução anterior
- verificação pontual de esquemático/PCB bruto elevada a verificação completa para peças críticas
- seções de relatório explícitas para bloqueadores, base de verificação, falsos positivos e análises ignoradas
Se um item não for aplicável, diga por quê. Se foi ignorado, diga por quê. Se falhou, diga como isso limita a confiança.
Modos de Falha Comuns de Revisão
Estes são os modos de falha que este contrato visa prevenir:
- Parar após a saída de esquemático + PCB + EMC e chamar de revisão completa
- Relatar descobertas do analisador sem verificar se são artefatos de layout esperados
- Afirmar "verificado" sem evidência direta de datasheet ou evidência de extração estruturada
- Omitir verificações térmicas, de lifecycle, de delta de revisão anterior ou de gerber sem divulgação
- Escrever um relatório que carece de veredito, tabela de bloqueadores, base de verificação ou notas de análises ignoradas
- Ler apenas a primeira parte desta habilidade e perder o fluxo de trabalho de revisão de design mais adiante no arquivo
Análise de Esquemático PDF
Esta habilidade também lida com esquemáticos PDF — designs de referência, esquemáticos de placas de desenvolvimento, documentos de placas de avaliação, notas de aplicação e circuitos de aplicação típica de datasheets. Casos de uso comuns:
- Analisar um design de referência do fabricante para entender o circuito
- Extrair um subcircuito (fonte de alimentação, interface USB, front-end de sensor) para incorporar em seu próprio design KiCad
- Comparar um design de referência em PDF com seu próprio esquemático
- Extrair uma BOM completa de um esquemático PDF
- Validar valores de componentes em um PDF contra datasheets atuais
Fluxo de trabalho: Leia visualmente as páginas do PDF → identifique componentes e conexões → extraia dados estruturados → traduza para símbolos e redes KiCad → valide contra datasheets.
Para a metodologia completa — extração de componentes, convenções de notação, mapeamento de rede, extração de subcircuito, tradução KiCad e validação — leia references/pdf-schematic-extraction.md.
Para validação profunda de circuitos extraídos contra datasheets (verificando valores, verificando padrões, detectando erros), use a metodologia em references/schematic-analysis.md.
Scripts de Análise
Esta habilidade inclui scripts Python que extraem JSON estruturado abrangente de arquivos KiCad em uma única passada. Execute estes primeiro, depois raciocine sobre a saída.
Leia a saída JSON do analisador diretamente em vez de escrever scripts de extração ad-hoc. O esquema JSON tem nomes de campo específicos (documentados abaixo e em references/output-schema.md) que são fáceis de errar em código personalizado. Para extrair uma seção específica: python3 -c "import json; d=json.load(open('file.json')); print(json.dumps(d['key'], indent=2))".
Quando o JSON te surpreender — um AttributeError, formato inesperado, campo retornando None que "deveria" ter um valor — pare e execute --schema antes de escrever uma segunda tentativa de extração. Ele imprime os nomes de campo e tipos exatos para cada chave de nível superior:
python3 <skill-path>/scripts/analyze_schematic.py --schema
python3 <skill-path>/scripts/analyze_pcb.py --schema
python3 <skill-path>/scripts/analyze_gerbers.py --schema
Folha de dicas de campos JSON — os erros mais comuns ao ler a saída do analisador manualmente:
| O que você quer | Caminho e campo corretos | Erro comum |
|---|---|---|
| Pinos em uma rede | nets[<name>].pins[].component / .pin_number / .pin_name / .pin_type | ref, pin, type, number |
| Exibição bonita de rede sem nome | nets[<name>].display_name — quando definido, uma dica Ref.PinName para uma rede __unnamed_N cujo único pino de CI nomeado conta a história (ex.: __unnamed_36 → U1.VBOOT). Ausente significa que o analisador não conseguiu desambiguar. | Ignorar display_name e colar __unnamed_36 bruto no relatório |
| Mapa de pinos de CI | ic_pin_analysis[] é uma lista de entradas de CI; cada uma tem .reference e .pins[] com .pin_number / .pin_name / .pin_type / .net / .connected_to[] | Tratar como {ref: {...}} ou pins[].number |
| Circuitos detectados | Cada circuito correspondido por padrão (reguladores de potência, filtros RC, osciladores de cristal, pontes, …) reside em findings[] — filtre com finding_schema.get_findings(data, Det.POWER_REGULATORS) etc. Não leia de subcircuits[]: isso é um agrupamento de vizinhança de CI ({center_ic, ic_value, neighbor_components, …}), não um índice de detecção categorizado | Procurar por subcircuits.power_regulators, subcircuits.rc_filters ou qualquer chave subcircuits[type] — nunca existiram na saída v1.3 |
| Rede de zona | pcb.zones[].net é um ID de rede inteiro, não uma string. Use f"{net!r}" ou converta primeiro | f"{net:20s}" — trava com ValueError: Unknown format code 's' for object of type 'int' |
| Posição de footprint | pcb.footprints[].x / .y no nível superior (sem invólucro .position) | footprints[].position.x |
| Descobertas | Lista plana findings[] — cada uma tem rule_id, detector, severity, summary, report_context. Filtre com finding_schema.get_findings(data, Det.*) ou group_findings(data) | Procurar por dicionários chaveados como signal_analysis.power_regulators[] (formato pré-v1.3, removido) |
Isso evita bugs de formato de string e nomes de campo errados. Use f-strings ou json.dumps() para formatação de saída — nunca %s com tipos não string. Veja references/output-schema.md para o esquema completo com padrões de extração comuns.
Em todos os comandos abaixo, <skill-path> refere-se ao diretório base desta habilidade (mostrado no topo deste arquivo quando carregado).
Analisador de Esquemático
python3 <skill-path>/scripts/analyze_schematic.py <file.kicad_sch> --analysis-dir analysis/
python3 <skill-path>/scripts/analyze_schematic.py <file.kicad_sch> --analysis-dir analysis/ --compact
python3 <skill-path>/scripts/analyze_schematic.py <file.kicad_sch> --output analysis.json # único, sem cache
Gera JSON estruturado (~60-220KB dependendo da complexidade da placa) com:
- Componentes e BOM: inventário com referência, valor, footprint, lib_id, classificação de tipo, MPN, datasheet; BOM desduplicada com quantidades
- Redes: mapa de conectividade completo com mapeamento pino a rede, contagens de fios, sem conexões
- Subcircuitos detectados (circuitos correspondidos por padrão — todos emitidos como entradas
findings[]com detectoresDet.*correspondentes; useget_findings(data, Det.POWER_REGULATORS)etc. para buscar):- Reguladores de potência — topologia LDO/chaveada/inversora, estimativa de Vout via consulta Vref verificada por datasheet (~60 famílias) com fallback heurístico e análise de sufixo de saída fixa, campos
vref_source(lookup/heuristic/fixed_suffix) evout_net_mismatch - Divisores de tensão, filtros RC/LC (frequência de corte), redes de realimentação, circuitos de cristal (análise de carga capacitiva, detecção baseada em pino de CI)
- Circuitos de amp-op (configuração, ganho, integrador/compensador), circuitos de transistor (classificação de carga consciente de nome de rede: motor/heater/fan/solenoid/valve/pump/relay/speaker/buzzer/lamp; topologia de deslocamento de nível FET)
- Circuitos de ponte (ponte H, 3 fases, detecção entre folhas), dispositivos de proteção (ESD/TVS), detecção de corrente, análise de desacoplamento
- Domínio específico: cadeias de RF, redes de correspondência RF, BMS, Ethernet (rastreamento BFS PHY para conector), interfaces HDMI/DVI, interfaces de memória, matrizes de teclas (baseadas em nome de rede e topologia), barreiras de isolamento, cadeias de LED endereçáveis (WS2812/SK6812/APA102), carregadores de bateria (TP4056/MCP73831/BQ2404x), drivers de motor (A4988/TMC2209/DRV8301), auditoria de cobertura de proteção ESD, interfaces de depuração (SWD/JTAG com rastreamento de MCU), caminho de potência (interruptores de carga/diodos ideais/controladores USB PD), condicionamento de sinal ADC (ADCs externos + referências de tensão com referência cruzada anti-aliasing), circuitos de reset/supervisor (supervisores de tensão/watchdogs/redes RC de reset), distribuição de clock (geradores de clock/PLLs/rastreamento de saída de oscilador)
- Reguladores de potência — topologia LDO/chaveada/inversora, estimativa de Vout via consulta Vref verificada por datasheet (~60 famílias) com fallback heurístico e análise de sufixo de saída fixa, campos