SystemVerilog: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: correggo ordine e/o titoli e/o formattazione delle sezioni predefinite |
m →Sincronizzazione: fix wl |
||
(6 versioni intermedie di 5 utenti non mostrate) | |||
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
== 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]]
'''I Packed array multidimensionali''' unificano ed estendono la nozione di "registri" e "memorie" di Verilog:<syntaxhighlight lang="systemverilog" line="1">
Riga 44:
</syntaxhighlight>Il Verilog classico consente di dichiarare solo una dimensione a sinistra del nome della variabile. SystemVerilog consente qualsiasi numero di tali dimensioni "impacchettate". Una variabile di tipo array packed mappa 1:1 su una quantità aritmetica intera. Nell'esempio precedente, ogni elemento di <code>my_pack</code> può essere utilizzato nelle espressioni come numero intero a sei bit. Le dimensioni a destra del nome (32 in questo caso) sono indicate come dimensioni "unpacked". Come in [[Verilog|Verilog-2001]], è consentito qualsiasi numero di dimensioni unpacked.
'''I tipi di dati enumerati''' (<code>enums</code>) consentono di assegnare nomi significativi a quantità numeriche. Le variabili dichiarate di tipo enumerato non possono essere assegnate a variabili di un diverso tipo enumerato senza [[
typedef enum logic [2:0] {
RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW
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]]
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">
Riga 289:
=== Sincronizzazione ===
Un ambiente di test complesso è costituito da componenti di verifica riutilizzabili che devono comunicare tra loro. La primitiva "event" di Verilog consente a diversi blocchi di istruzioni procedurali di attivarsi a vicenda, ma l'applicazione
== Miglioramenti generali al Verilog classico ==
Riga 367:
{{portale|elettrotecnica|informatica}}
[[Categoria:Linguaggi di descrizione hardware]]
|