35 / 37 · Concetto
Compilazione, lint e sintesi: portata delle diagnosi
Fissa sorgenti, top e lingua e distingui sintassi, larghezze, latch e funzione.
Le lezioni sono gratuite. Iscriviti per salvare i progressi.
Definire la richiesta allo strumento
Il risultato dipende da sorgenti, top, parametri, lingua e versione. Compila DUT e dipendenze con banco come top separato. Non sintetizzare il generatore di clock del banco e non confondere modulo non istanziato con quello verificato. Gli esempi usano un sottoinsieme sintetizzabile pratico; simulatore e motore di prodotto possono supportare parti differenti. .sv non attiva magicamente tutte le funzioni.
Compilare e simulare hanno portate diverse
Compilazione può rifiutare sintassi, moduli assenti e riferimenti invalidi, senza provare aritmetica o priorità. Simulazione confronta scenari eseguiti; PASS vale per quei confronti e quella sorgente. Per il laboratorio:
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvpRegistra entrambi gli stati. Eseguire una vecchia sim.vvp dopo compilazione fallita può dare PASS fuorviante. Genera file nuovo per configurazione e fermati su errore di compilazione.
Esaminare le cause
| Diagnosi | Domanda |
|---|---|
| Modulo assente | File e nome sono corretti? |
| Troncamento | Quali bit, carry o segno si perdono? |
| Latch inferito | Quale percorso combinatorio non assegna? |
| Driver multipli | Chi possiede la variabile? |
| Segnale inutilizzato | Intenzionale o collegamento assente? |
| Ciclo combinatorio | Torna all'ingresso senza registro? |
Non sopprimere tutti gli avvisi per ripulire il log. Correggi o documenta un'eccezione limitata, intenzionale e verificata. Le categorie variano per versione. La documentazione ufficiale degli avvisi Verilator spiega WIDTH, LATCH. Se installato, un'opzione aggiuntiva:
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.svÈ un percorso suggerito, non prova d'esecuzione. Distingui comandi usati da quelli proposti.
Sintesi: un altro confine
Una verifica generica Yosys:
yosys -p 'read_verilog -sv modulo_tick.sv periodic_accumulator.sv; hierarchy -check -top periodic_accumulator; proc; opt; check -assert; stat'Controlla front end e struttura generica, non risorse FPGA specifiche, posizionamento, instradamento, timing o produzione. Mapping tecnologico e vincoli richiedono altro lavoro.
Esercizio: isolare copie difettose
Crea tre copie usa e getta: nome figlio errato, somma di nove bit in otto, assegnazione combinatoria mancante. Osserva cosa rileva ogni strumento e cosa richiede test funzionale. Larghezza ridotta può essere voluta, un latch può compilare: confronta requisiti. Conserva un difetto rilevante insieme alla sorgente ripristinata. Diagnosi senza spiegazione restano aperte.