SystemVerilog: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Botcrux (discussione | contributi)
m Bot: correggo ordine e/o titoli e/o formattazione delle sezioni predefinite
FrescoBot (discussione | contributi)
m Bot: spazi attorno alle parentesi e modifiche minori
Riga 17:
}}
 
'''SystemVerilog''', standardizzato come '''IEEE 1800''', è un linguaggio [[Linguaggio di descrizione hardware|di descrizione]] e verifica dell'hardware utilizzato per modellare, progettare, simulare, testare e implementare sistemi elettronici. SystemVerilog è basato su [[Verilog]] ed è comunemente usato nell'industria dei [[Semiconduttore|semiconduttori]] e della progettazione [[elettronica]] come evoluzione di Verilog. Dal 2008 Verilog e SystemVerilog fanno parte dello stesso standard [[Institute of Electrical and Electronics Engineers|IEEE]].
 
== Storia ==
Riga 38:
'''I tipi di variabili avanzati''' aggiungono nuove funzionalità al tipo "reg" di Verilog:<syntaxhighlight lang="systemverilog" line="1">
logic [31:0] my_var;
</syntaxhighlight>Verilog-1995 e Verilog-2001 limitano le variabili reg a statement comportamentali come nel caso del [[Register transfer level|codice RTL]]. SystemVerilog estende il tipo reg in modo che possa essere guidato da un singolo driver come un gate o un modulo. SystemVerilog chiama questo tipo "logic" per ricordare questa capacità ulteriore e che non si tratta di un registro hardware. I nomi "logic" e "reg" sono intercambiabili. Un segnale con più di un driver (come un [[Three state|buffer a tre stati]] per [[General Purpose Input/Output|input/output generico]] ) deve essere dichiarato usando un tipo net come "wire" in modo che SystemVerilog possa risolverne il valore finale.
 
'''I Packed array multidimensionali''' unificano ed estendono la nozione di "registri" e "memorie" di Verilog:<syntaxhighlight lang="systemverilog" line="1">
Riga 66:
 
=== Blocchi procedurali ===
SystemVerilog introduce tre nuovi blocchi procedurali destinati a modellare l'hardware: <code>always_comb</code> (per modellare [[Circuito combinatorio|la logica combinatoria]] ), <code>always_ff</code> (per [[Flip-flop|i flip-flop]] ) e <code>always_latch</code> (per [[Flip-flop|i latch]] ). Mentre Verilog utilizza un unico blocco generico <code>always</code> per modellare diversi tipi di strutture hardware, ciascuno dei nuovi blocchi di SystemVerilog ha lo scopo di modellare un tipo specifico di hardware, imponendo restrizioni semantiche per garantire che l'hardware descritto dai blocchi corrisponda all'uso previsto del modello. Un compilatore HDL o un programma di verifica può eseguire passaggi aggiuntivi per garantire che si verifichi solo il tipo di comportamento previsto.
 
Un blocco <code>always_comb</code> modella [[Circuito combinatorio|circuiti logici combinatori]]. Il simulatore deduce che la ''sensitivity list'' sia costituito da tutte le variabili dalle istruzioni contenute:<syntaxhighlight lang="systemverilog" line="1">