Note per il laboratorio di VHDL

Queste note dovrebbero facilitare l'attività di laboratorio (sia che avvenga durante una lezione, sia a casa). Esse sono state scritte ipotizzando l'uso di Sonata (VHDL Simili).

Errori comuni

Ho rilevato che buona parte degli errori commessi in laboratorio possono essere associati alle seguenti domande: Nel seguito cerco di dare qualche risposta a questi quesiti.

Colorazione automatica del testo

Per attivare la colorazione automatica delle parole dei file VHDL (detta syntax highlighting) è necessario salvare il file con l'estensione ".vhdl". Allo scopo, può essere utilizzato il comando "File → Save as", dal menù dei comandi. Attenzione, perché bisogna esplicitamente aggiungere l'estensione ".vhdl".

Requisiti per la compilazione

La compilazione viene effettuata solo se il file VHDL è incluso nella libreria di lavoro. Pertanto, un Workspace deve essere attivo e una libreria di lavoro deve essere presente.

Se la finestra in alto a sinistra è vuota, bisogna aprire un Workspace, oppure crearne uno nuovo. Ciò può essere fatto, rispettivamente, tramite i comandi "File → New Workspace" e "File → Open Workspace", dal menù dei comandi.

I file da compilare vanno inseriti nella libreria di lavoro. La libreria di lavoro assume il nome del Workspace utilizzato. Per aggiungere i file da compilare alla libreria, usare il comando "Project → Add Files" del menù dei comandi, oppure la voce "Add File" del menù contestuale che appare cliccando con il tasto destro sul nome della libreria presente nella finestra in alto a sinistra.

Selezione del toplevel

L'indicazione di una unità toplevel è un'operazione necessaria per la simulazione. L'unità Toplevel è l'unità che verrà effettivamente simulata. Viene chiamata così perché è l'unità di massimo grado gerarchico fra quelle di cui si vuole simulare il comportamento, in quanto essa include le altre unità. Simulando l'unità Toplevel, quindi si effettuerà anche la simulazione delle altre unità.

Tipicamente, l'unità Toplevel è l'unità di testbench. Si può indicare l'unità Toplevel usando il comando "Simulate → Select Toplevel", oppure la voce "Set as top level" del menù contestuale che appare cliccando con il tasto destro sul nome dell'unità presente nella finestra in alto a sinistra.

Requisiti per la simulazione

Per riuscire ad arrivare alla simulazione di un testbench è necessario che diverse condizioni si siano verificate.

Innanzitutto, l'entity di testbench è una entity VHDL. Ciò significa che deve essere inserita nella libreria di lavoro e compilata (senza errori di compilazione).

L'entity di testbench deve includere l'unità sotto test come componente. Ciò significa che deve comparire una dichiarazione di component che riporti fedelmente:

In altri termini, le informazioni passati tramite la dichiarazione component devono essere una copia di quelle fissate nella dichiarazione entity dell'unità sotto test.

L'unità sotto test deve essere inclusa nell'unità di testbench. Essa deve apparire nel corso della dichiarazione architecture usando il costrutto port map (e il nome dell'entity sotto test deve precedere la parola chiave port map).

L'entity sotto test deve essere collegata all'entity di testbench. Devono essere quindi definiti dei segnali ausiliari nell'architettura del testbench e tali segnali devono essere collegati alle porte dell'unità sotto test.

Di questi segnali, quelli collegati alle porte di input dell'unità sotto test devono fornire stimoli opportuni per verificare il funzionamento dell'unità sotto test. Ciò può essere realizzato modellando l'andamento dei segnali mediante gli operatori di ritardo (after, wait).

Infine, i segnali dell'unità di testbench devono essere inseriti nella finestra di visualizzazione delle forme d'onda.

Se una modifica appena effettuata non causa il cambiamento che ci si attendeva nella simulazione, probabilmente è necessario terminare la simulazione ("Simulate → End simulation" o il tasto con una crocetta rossa), ricompilare e poi riavviare la simulazione.