Compétence d'Analyse de Projets KiCad et de Création de Schémas
Compétences Associées
| Compétence | Objectif |
|---|---|
bom | Extraction, enrichissement, commande et export de nomenclatures (BOM) |
digikey | Recherche de composants sur DigiKey (approvisionnement prototype) |
mouser | Recherche de composants sur Mouser (source prototype secondaire) |
lcsc | Recherche de composants sur LCSC (approvisionnement production, JLCPCB) |
element14 | Recherche sur Newark/Farnell/element14 (approvisionnement international, fiches techniques fiables) |
jlcpcb | Commande de fabrication et d'assemblage de PCB |
pcbway | Alternative pour fabrication et assemblage de PCB |
spice | Vérification par simulation SPICE des sous-circuits détectés |
emc | Analyse de risque de pré-conformité CEM — consomme la sortie de l'analyseur de schéma + PCB |
Conseil de transfert : Utilisez cette compétence pour analyser les schémas/PCB et en extraire des données structurées. Passez à bom pour l'enrichissement de la nomenclature, la tarification et la commande. Passez à digikey/mouser/lcsc/element14 pour les recherches de composants et la récupération de fiches techniques. Passez à jlcpcb/pcbway pour la commande de fabrication et la validation des règles DFM. Exécutez toujours spice pour la vérification par simulation lors des revues de conception si un simulateur SPICE est installé (vérifiez avec which ngspice ltspice xyce). Exécutez toujours emc pour l'analyse de risque de pré-conformité CEM lors des revues de conception lorsque l'analyse du schéma et du PCB est disponible. Ces étapes ne sont pas optionnelles — les ignorer laisse des erreurs de calcul de valeur et des risques CEM non détectés.
Avant l'analyse : Lorsque l'utilisateur demande d'analyser ou de réviser un projet KiCad, vérifiez si un répertoire datasheets/ existe dans le projet. Si ce n'est pas le cas et que les clés API DigiKey sont disponibles (DIGIKEY_CLIENT_ID), proposez d'abord de synchroniser les fiches techniques : "Je peux télécharger les fiches techniques de vos composants avant l'analyse — cela permet une vérification au niveau des broches et une validation du découplage par rapport aux spécifications du fabricant. Voulez-vous que je les synchronise ?" Si l'utilisateur refuse ou qu'aucune clé API n'est définie, procédez sans fiches techniques — l'analyse fonctionne sans elles, mais les résultats de vérification basés sur les fiches techniques ne seront pas disponibles.
Si vous voyez un constat DS-001 dans la sortie de l'analyseur (sévérité haute, détecteur audit_datasheet_coverage), la revue ne peut faire aucune affirmation vérifiée. Arrêtez-vous et soit (a) exécutez la synchronisation des fiches techniques via digikey / mouser / lcsc / element14 (celui qui a des identifiants/stock), (b) renseignez les MPN sur les composants de la nomenclature, soit (c) indiquez explicitement dans le rapport que chaque constat au niveau des broches, électrique et de régulateur est uniquement de cohérence — n'utilisez nulle part les mots "vérifié", "confirmé" ou "selon la fiche technique". DS-002 (fiches techniques manquantes mais MPN définis) et DS-003 (couverture MPN partielle) sont des variantes plus légères avec la même implication pour les pièces qu'elles citent.
Création de Schémas (Dessin et Redessin)
Utilisez ce flux de travail lorsque l'utilisateur demande de créer, ajouter, redessiner ou restyler un schéma — par exemple "ajouter un circuit TPS54560 5V/5A", "把原理图画成可读风格", "générer un schéma buck", "重画这块电源".
- Lisez d'abord la norme.
references/schematic-drawing-standards.mdest obligatoire avant de créer ou de modifier un schéma. Elle définit la disposition du bus d'alimentation de type LM5013, le bus GND, la politique d'étiquetage, les contraintes de câblage KiCad 9 (fils divisés aux points de connexion ; pas de fils isolés broche-à-broche ; étiquettes aux nœuds partagés) et la porte de vérification. - Concevez à partir de la fiche technique. Récupérez/lisez la fiche technique du CI ; extrayez le brochage, Vref, les valeurs absolues maximales et l'application typique. Calculez les valeurs (diviseur de retour, RT/fréquence, inductance, condensateurs, compensation) avec les équations de la fiche technique et indiquez les nombres avant de dessiner.
- Planifiez le bloc sur la grille de 1,27 mm, en reflétant la structure canonique LM5013 : un bus d'alimentation continu
ENTRÉE → CI → SW → L → SORTIE, un bus GND en bas, et des composants de contrôle dans une bande ordonnée sous le CI (une colonne par fonction). Vérifiez les positions des broches des symboles et la sémantique de rotation avant d'écrire les fils. - Générez. Modifiez le
.kicad_schS-expr directement ou utilisez un script de génération. Chaque fil doit se terminer sur une broche, une jonction, une étiquette ou un symbole d'alimentation ; les rails sont divisés en segments à chaque point de connexion. Pour EasyEDA Pro, passez à la compétenceeasyeda-schematic-drawavec la même norme. - Vérifiez avec KiCad lui-même — cette porte est obligatoire avant de signaler le succès :
kicad-cli sch erc→ 0 erreurs / 0 avertissementskicad-cli sch export netlist→ correspondance broche par broche avec l'intention de conception- exécution de l'analyseur de schéma, avec les estimations heuristiques de Vout corrigées à la Vref de la fiche technique
- vérification géométrique : pas de chevauchement de corps de symboles, pas d'étiquette à l'intérieur d'un corps de CI
- rendu PDF/PNG + revue visuelle : un bus d'alimentation continu, une bande de contrôle lisible, pas d'empilement de composants
- Rapportez les valeurs de conception avec les équations, les preuves de vérification et toutes les limitations de l'analyseur que vous avez corrigées.
Les flux de travail d'analyse et de revue de conception ci-dessous s'appliquent toujours à ce qui a été généré.
Contrat de Revue de Conception
Lorsque l'utilisateur demande une revue de conception, un rapport complet, une évaluation prête-à-fabriquer ou quelque chose d'équivalent, ne vous arrêtez pas après avoir exécuté un ou deux analyseurs et résumé leurs résultats. Une revue de conception dans cette compétence a un contrat plus strict :
- Lisez l'intégralité du flux de travail dans ce
SKILL.md, pas seulement les sections de commande d'analyseur. - Lisez
references/report-generation.mdavant de rédiger le rapport. - Exécutez chaque analyseur applicable pour les fichiers présents dans le projet, puis dites explicitement lesquels ont été exécutés et lesquels ne l'ont pas été.
- Effectuez une vérification croisée des fichiers bruts et des fiches techniques avant d'affirmer que quoi que ce soit est "vérifié".
- Triez les faux positifs probables de l'analyseur avant de les élever au rang de bloqueurs.
- Si une étape requise n'a pas pu être effectuée, indiquez-la comme une lacune de la revue, pas comme une omission silencieuse.
Considérez cela comme le minimum. Le JSON de l'analyseur seul n'est pas la revue finale.
Liste de Vérification Minimale de Revue
Pour une revue de conception complète, rendez compte explicitement de chaque élément ci-dessous dans le rapport :
- Répertoire
datasheets/présent, synchronisé, ou lacune de vérification indiquée analyze_schematic.pyanalyze_pcb.py --fullcross_analysis.pyanalyze_emc.py- Simulation SPICE lorsqu'un simulateur est installé
analyze_thermal.pylorsque les JSON de schéma et de PCB existentanalyze_gerbers.pylorsque les sorties de fabrication existent- Audit de cycle de vie lorsque l'accès réseau et la couverture MPN le permettent
- Vérification delta revue précédente / exécution précédente
- Vérification ponctuelle du schéma/PCB brut élevée à une vérification complète pour les parties critiques
- Sections de rapport explicites pour les bloqueurs, la base de vérification, les faux positifs et les analyses ignorées
Si un élément n'est pas applicable, dites pourquoi. S'il a été ignoré, dites pourquoi. S'il a échoué, dites comment cela limite la confiance.
Modes de Défaillance Courants de la Revue
Voici les modes de défaillance que ce contrat vise à prévenir :
- S'arrêter après la sortie schéma + PCB + EMC et appeler cela une revue complète
- Rapporter les résultats de l'analyseur sans vérifier s'il s'agit d'artefacts de disposition attendus
- Affirmer "vérifié" sans preuve directe de la fiche technique ou preuve d'extraction structurée
- Omettre les vérifications thermiques, de cycle de vie, de delta de revue précédente ou de gerber sans divulgation
- Rédiger un rapport qui manque de verdict, de tableau de bloqueurs, de base de vérification ou de notes d'analyse ignorée
- Lire uniquement la première partie de cette compétence et manquer le flux de travail de revue de conception plus loin dans le fichier
Analyse de Schéma PDF
Cette compétence gère également les schémas PDF — conceptions de référence, schémas de cartes de développement, documents de cartes d'évaluation, notes d'application et circuits d'application typiques des fiches techniques. Cas d'utilisation courants :
- Analyser la conception de référence d'un fabricant pour comprendre le circuit
- Extraire un sous-circuit (alimentation, interface USB, front-end capteur) à intégrer dans votre propre conception KiCad
- Comparer une conception de référence PDF avec votre propre schéma
- Extraire une nomenclature complète d'un schéma PDF
- Valider les valeurs des composants dans un PDF par rapport aux fiches techniques actuelles
Flux de travail : Lisez les pages PDF visuellement → identifiez les composants et les connexions → extrayez des données structurées → traduisez en symboles et nets KiCad → validez par rapport aux fiches techniques.
Pour la méthodologie complète — extraction de composants, conventions de notation, mappage de net, extraction de sous-circuit, traduction KiCad et validation — lisez references/pdf-schematic-extraction.md.
Pour une validation approfondie des circuits extraits par rapport aux fiches techniques (vérification des valeurs, contrôle des motifs, détection d'erreurs), utilisez la méthodologie dans references/schematic-analysis.md.
Scripts d'Analyse
Cette compétence inclut des scripts Python qui extraient un JSON structuré complet des fichiers KiCad en un seul passage. Exécutez-les d'abord, puis raisonnez sur la sortie.
Lisez la sortie JSON de l'analyseur directement plutôt que d'écrire des scripts d'extraction ad-hoc. Le schéma JSON a des noms de champs spécifiques (documentés ci-dessous et dans references/output-schema.md) qu'il est facile de mal interpréter dans du code personnalisé. Pour extraire une section spécifique : python3 -c "import json; d=json.load(open('file.json')); print(json.dumps(d['key'], indent=2))".
Lorsque le JSON vous surprend — une AttributeError, une forme inattendue, un champ retournant None qui "devrait" avoir une valeur — arrêtez-vous et exécutez --schema avant d'écrire une deuxième tentative d'extraction. Il affiche les noms de champs et types exacts pour chaque clé de niveau supérieur :
python3 <chemin-compétence>/scripts/analyze_schematic.py --schema
python3 <chemin-compétence>/scripts/analyze_pcb.py --schema
python3 <chemin-compétence>/scripts/analyze_gerbers.py --schema
Aide-mémoire des champs JSON — les erreurs les plus courantes lors de la lecture manuelle de la sortie de l'analyseur :
| Ce que vous voulez | Chemin et champ corrects | Erreur courante |
|---|---|---|
| Broches sur un net | nets[<nom>].pins[].component / .pin_number / .pin_name / .pin_type | ref, pin, type, number |
| Affichage lisible du net sans nom | nets[<nom>].display_name — lorsqu'il est défini, un indice Ref.PinName pour un net __unnamed_N dont la seule broche de CI nommée raconte l'histoire (par exemple __unnamed_36 → U1.VBOOT). Absent signifie que l'analyseur n'a pas pu désambiguïser. | Ignorer display_name et coller __unnamed_36 brut dans le rapport |
| Carte des broches CI | ic_pin_analysis[] est une liste d'entrées CI ; chacune a .reference et .pins[] avec .pin_number / .pin_name / .pin_type / .net / .connected_to[] | Le traiter comme {ref: {...}} ou pins[].number |
| Circuits détectés | Chaque circuit à correspondance de motif (régulateurs de puissance, filtres RC, oscillateurs à quartz, ponts, ...) se trouve dans findings[] — filtrez avec finding_schema.get_findings(data, Det.POWER_REGULATORS) etc. Ne lisez pas depuis subcircuits[] : c'est un regroupement de voisinage CI ({center_ic, ic_value, neighbor_components, …}), pas un index de détection catégorisé | Chercher subcircuits.power_regulators, subcircuits.rc_filters, ou toute clé subcircuits[type] — celles-ci n'ont jamais existé dans la sortie v1.3 |
| Net de zone | pcb.zones[].net est un ID de net entier, pas une chaîne. Utilisez f"{net!r}" ou convertissez d'abord | f"{net:20s}" — plante avec ValueError: Unknown format code 's' for object of type 'int' |
| Position de l'empreinte | pcb.footprints[].x / .y au niveau supérieur (pas de wrapper .position) | footprints[].position.x |
| Constats | findings[] liste plate — chacun a rule_id, detector, severity, summary, report_context. Filtrez avec finding_schema.get_findings(data, Det.*) ou group_findings(data) | Chercher des dictionnaires clés comme signal_analysis.power_regulators[] (format pré-v1.3, supprimé) |
Cela évite les bogues de format de chaîne et les noms de champs incorrects. Utilisez les f-strings ou json.dumps() pour le formatage de la sortie — n'utilisez jamais %s avec des types non-chaîne. Voir references/output-schema.md pour le schéma complet avec des motifs d'extraction courants.
Dans toutes les commandes ci-dessous, <chemin-compétence> fait référence au répertoire de base de cette compétence (indiqué en haut de ce fichier lors du chargement).
Analyseur de Schéma
python3 <chemin-compétence>/scripts/analyze_schematic.py <fichier.kicad_sch> --analysis-dir analysis/
python3 <chemin-compétence>/scripts/analyze_schematic.py <fichier.kicad_sch> --analysis-dir analysis/ --compact
python3 <chemin-compétence>/scripts/analyze_schematic.py <fichier.kicad_sch> --output analysis.json # ponctuel, sans cache
Produit un JSON structuré (~60-220 Ko selon la complexité de la carte) avec :
- Composants et nomenclature : inventaire avec référence, valeur, empreinte, lib_id, classification de type, MPN, fiche technique ; nomenclature dédupliquée avec quantités
- Nets : carte de connectivité complète avec mappage broche-à-net, nombre de fils, non-connectés
- Sous-circuits détectés (circuits à correspondance de motif — tous émis comme des entrées
findings[]avec des détecteursDet.*correspondants ; utilisezget_findings(data, Det.POWER_REGULATORS)etc. pour les récupérer) :- Régulateurs de puissance — topologie LDO/commutation/inverseur, estimation de Vout via recherche de Vref vérifiée par fiche technique (~60 familles) avec repli heuristique et analyse de suffixe à sortie fixe, champs
vref_source(lookup/heuristic/fixed_suffix) etvout_net_mismatch - Diviseurs de tension, filtres RC/LC (fréquence de coupure), réseaux de rétroaction, circuits à quartz (analyse de capacité de charge, détection basée sur les broches CI)
- Circuits ampli-op (configuration, gain, intégrateur/compensateur), circuits à transistors (classification de charge sensible au nom de net : moteur/chauffage/ventilateur/solénoïde/vanne/pompe/relais/haut-parleur/buzzer/lampe ; topologie de décalage de niveau FET)
- Circuits en pont (pont en H, triphasé, détection inter-feuilles), dispositifs de protection (ESD/TVS), détection de courant, analyse de découplage
- Spécifiques au domaine : chaînes RF, réseaux d'adaptation RF, BMS, Ethernet (traçage BFS PHY-à-connecteur), interfaces HDMI/DVI, interfaces mémoire, matrices de touches (basé sur le nom de net et la topologie), barrières d'isolation, chaînes LED adressables (WS2812/SK6812/APA102), chargeurs de batterie (TP4056/MCP73831/BQ2404x), pilotes de moteur (A4988/TMC2209/DRV8301), audit de couverture de protection ESD, interfaces de débogage (SWD/JTAG avec traçage MCU), chemin d'alimentation (interrupteurs de charge/diodes idéales/contrôleurs USB PD), conditionnement de signal ADC (ADC externes + références de tension avec référence croisée anti-repliement), circuits de réinitialisation/superviseur (superviseurs de tension/chien de garde/réseaux RC de réinitialisation), distribution d'horloge (générateurs d'horloge/PLL/traçage de sortie d'oscillateur), ...
- Régulateurs de puissance — topologie LDO/commutation/inverseur, estimation de Vout via recherche de Vref vérifiée par fiche technique (~60 familles) avec repli heuristique et analyse de suffixe à sortie fixe, champs