Altifigence Academy

35 / 37 · Concetto

Compilazione, lint e sintesi: portata delle diagnosi

Fissa sorgenti, top e lingua e distingui sintassi, larghezze, latch e funzione.

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:

text
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvp

Registra 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

DiagnosiDomanda
Modulo assenteFile e nome sono corretti?
TroncamentoQuali bit, carry o segno si perdono?
Latch inferitoQuale percorso combinatorio non assegna?
Driver multipliChi possiede la variabile?
Segnale inutilizzatoIntenzionale o collegamento assente?
Ciclo combinatorioTorna 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:

text
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:

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

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.