Package/pinout/ratings mismatches, SPOF as REVIEW, EMI only with a datasheet quote, and Tj from copper+vias+θJA when every parameter exists. Re-extract SI layout_rules from 1.12.0; ImpedenceFinder license stays UNKNOWN.
4.6 KiB
Motore finding — schema e PCB (stesso oggetto)
Fonte: specifica di Michele (Project chat). Vale per analizzatore schematico e PCB. Un finding è un oggetto riproducibile, non un paragrafo LLM.
Libreria datasheet: una (library/extracted + extracted/ di progetto). L’esame PDF profondo gira una volta (pipeline schema). Il job PCB consuma quella cache e aggiunge solo geometria.
1. Tre strati — non mescolare
Ogni finding ha tre campi distinti:
| Strato | Nome campo | Chi lo produce | Cosa può contenere |
|---|---|---|---|
| FACT | facts |
Motore deterministico (netlist, BOM, .kicad_pcb) |
Solo osservabili: pin, net, mm, V, A, width, thickness |
| REQUIREMENT | requirement |
Rule DB + estrazione libreria (citazione, pagina, MPN) | Testo sourced. Provenance nel DB, non nella prosa del modello |
| INFERENCE | inference |
Ingegnere / LLM solo qui | Giudizio. Mai copiare un’inferenza in facts o requirement |
Non mescolare: un check non scrive “probabilmente sottodimensionato” dentro facts. Se manca un parametro, evidence_status=INSUFFICIENT e si dice che manca — non si inventa 1 oz, 10 °C, 50 Ω, IEC.
finding / why restano per compatibilità UI (copia di facts / requirement).
2. Provenance datasheet (rule DB)
Sul record di regola, non nel testo LLM:
provenance |
Significato | Classe / severity |
|---|---|---|
| MANDATORY | Shall / abs-max / pin NC | Può essere RULE + ERROR |
| RECOMMENDED | Should / layout note | Mai ERROR. RISK o INFO |
| TYPICAL | Typical / default application | INFO o RISK, mai RULE ERROR |
| EXAMPLE | Figure / typical application circuit | REVIEW o INFO |
Recommended ≠ ERROR. Il clamp è nel motore (complete_finding).
3. Classi — Design Rule ≠ Design Review
finding_class |
Ruolo | |
|---|---|---|
| RULE | Violazione di un requisito MANDATORY misurato (FACT vs REQUIREMENT). Deterministico. | |
| RISK | Margine / derating / inferenza ingegneristica con evidenza parziale. | |
| REVIEW | Esame AI (schema o PCB). Non è una design rule. | |
| INFO | Inventario, evidenza insufficiente, decisione del progettista, skip onesto. |
LLM source=review / pcb_review → sempre REVIEW, mai RULE.
4. Intent + memoria DECISION
Il progettista può dichiarare un intent (es. PSEL tied low on purpose). Persistenza: decisions.json nel progetto, fingerprint:
{rule_id\|source}|{designator}|{net}|{aspect}
wontfix / false_positive sul report scrive una DECISION. Al rescan il motore non ri-naga come ERROR: finding suppressed=true, finding_class=INFO, decision_id valorizzato.
5. Severity, confidence, evidence — indipendenti
status(severity): ERROR | WARNING | INFOconfidence: 0–1 (quanto è solido il FACT+REQUIREMENT)evidence_status: SUFFICIENT | INSUFFICIENT
Alto confidence + INFO è legale (misura chiara, non è un fault). Bassa confidence + ERROR non è legale se evidence è INSUFFICIENT: si declassa.
6. Oggetto finding (riproducibile)
Campi obbligatori del motore (oltre a designator / MPN / ids esistenti):
facts, requirement, inference
source (pagina/MPN/rule_id)
calculation
assumptions[]
confidence
status (severity)
action # cosa fare; UI usa anche recommendation
provenance
finding_class
evidence_status
decision_id? suppressed?
7. Libreria unica / esame unico
| Store | Path |
|---|---|
| Estrazioni IC | library/extracted/{safe_mpn}.json (shared) ∪ extracted/ progetto |
| PDF blob | library/datasheets/blobs/{md5}.pdf |
PCB: review_ic_async(..., pdf_path=None) se c’è pintable. Skip: no library extraction — run schematic review first.
8. Cosa è solo PCB
Geometria board: width/thickness, via, pour courtyard, placement mm, return/stitch, pad-net vs schema (PE-LAY-* gerarchia /net). Non duplicare check schema (mux, LED, filtri netlist).
9. Fasi (non fingere completezza)
Fase A: oggetto finding + clamp provenance/class (ERROR solo se RULE e MANDATORY) + decisions + UI schema/PCB + libreria condivisa + check geometria già gated.
Fase B (questa slice): gerarchia component→pin→net→block; derating PASS/MARGIN/RISK da Vop/Vrated; timing RC/strap solo con numeri; PI local vs bulk; ESD e return path come REVIEW.
Fase B close-out: BOM↔PCB↔datasheet (package/pinout/V/T/I); SPOF REVIEW; EMI solo con FACT in layout_rules; Tj da θJA+rame+via quando tutti i parametri ci sono.
Fase B leftovers: thermal FEM / OpenEMS; ImpedenceFinder LICENSE UNKNOWN; auto-place pcbnew; PinScope identity.