Simulazione. Simulazione verilog. Testbench. Testbench

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Simulazione. Simulazione verilog. Testbench. Testbench"

Transcript

1 Simulazione Simulazione verilog Lucidi del Corso di Elettronica Digitale Modulo 8 Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB) Il verilog come prima cosa è un linguaggio per la simulazione dei sistemi digitali: viene usato come design entry per software di simulazione (noi useremo ModelSim) che simulano, appunto, il comportamento del sistema nel tempo Per simulare un sistema è necessario per prima cosa descriverlo (descrivere il modulo che lo implementa) e poi definire un insieme di stimoli esterni opportuni per validarne il funzionamento Testbench Testbench Concetto base per la simulazione è il testbench (letteralmente banco di prova) Il testbench non è altro che un modulo ad alto livello che contiene al suo interno: L istanziazione del modulo da testare La generazione degli stimoli Eventuali strumenti di visualizzazione dei risultati Gli stimoli possono essere generati dal testbench stesso (con blocchi initial ed always) oppure da sottomoduli istanziati nel testbench Generazione degli stimoli UUT (Unit Under Test) TESTBENCH Visualizzazione o verifica dei risultati

2 Testbench Esempio Il testbench non ha né ingressi né uscite Contiene sempre al suo interno il modulo da testare (UUT) Gli ingressi del UUT, all interno del modulo testbech sono definiti come reg perché devono essere imposti dal testbench stesso (a meno che non vengano generati da moduli istanziati nel testbench, nel qual caso sono wire) Le uscite del UUT, dentro il testbench sono sicuramente wire perché devono essere imposte dal UUT e NON dal testbench module tb_and; reg A,B; wire Z; my_and UUT(A,B,Z); initial begin A=0; B=0; #5 A=1; #5 A=0; B=1; #5 A=1; #5 $stop; end initial $monitor($time,, A,B,,Z); Ovviamente my_and è un modulo che va definito a parte Istanziazione del modulo da testare Generazione degli stimoli Visualizzazione delle uscite Funzioni di visualizzazione e controllo In verilog le espressioni che iniziano con $ sono funzioni di sistema (che vengono usate SOLO nei testbench per opportune verifiche e visualizzazioni). Fra queste: $monitor( Qualsiasi stringa,,var1, str2,var2) Serve per visualizzare i risultati, viene stampato ciò che compare fra parentesi ogni volta che i segnali del sistema cambiano. Si può usare la stessa formattazione del C $stop Serve per interrompere la simulazione dopo un certo tempo (altrimenti continuerebbe all infinito soprattutto se ci fossero dei blocchi always) Accesso ai file Il verilog mette a disposizione due costrutti (fra gli altri) per leggere dati da un file $readmemb (per leggere dati in forma binaria) $readmemh (per leggere dati esadecimali) L uso di dati da file può essere utile in un testbench per prelevare gli stimoli da un file precedentemente preparato, oppure per inizializzare il contenuto di una memoria (per esempio con un programma)

3 Accesso ai file $readmemb( nomefile,memory_name [,indirizzo_iniziale [,indirizzo_finale]]) nomefile è evidentemente il nome del file da cui leggere i dati memory_name è il nome del array dove inserire i dati letti dal file indirizzo_iniziale (opzionale) è l indirizzo da cui iniziare a scrivere (l elemento dell array da cui si inizia a riempire l array stesso con il contenuto del fie) indirizzo_finale (opzionale) è l ultimo elemento dell array che viene riempito La sintassi di $readmemh è uguale, ma i dati sono esadecimali e non binari module testbench; reg [7:0] mem [0:9]; reg [7:0] outbus; integer kk; Accesso ai file: esempio initial $readmemb("prova.txt",mem); prova.txt Nel testbench mem è un array di 10 posizioni, ciascuna di 8 bit. I valori da assegnare a ciascun bit vengono presi dal file prova.txt che è un semplice file di testo Accesso ai file: esempio prova.txt // Il file può contenere commenti che verranno // ignorati // Si può esplicitare la posizione in cui inserire // il dato utilizzando la sintassi dato // come qui VERILOG Modello fisico Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB)

4 Verso un modello fisico Le rappresentazioni verilog viste finora sono tutte equivalenti fra loro perché danno solo una rappresentazione funzionale del blocco logico Simulare una rappresentazione strutturale, dataflow od algoritmica di uno stesso blocco quindi fornisce gli stessi risultati Per potere realizzare fisicamente un sistema è però necessario arrivare fino ad una descrizione circuitale dello stesso: la descrizione circuitale aggiunge informazioni (le prestazioni fisiche del circuito) Verilog: simulazione fisica Il verilog può essere utilizzato anche per una simulazione del comportamento reale dei circuiti, in sostituzione di spice Le simulazioni spice infatti richiedono molto tempo e sono ragionevoli solo per singole porte logiche (di cui bisogna determinare i parametri) Le simulazioni di sistemi costituiti da molte porte logiche, invece, vengono fatte a livello di descrizione verilog, pur tenendo conto delle informazioni fisiche (tempi di propagazione) sulle singole porte ricavate con spice Verilog: ritardi In verilog è possibile rappresentare in tempo di propagazione di una primitiva logica (porta logica) per mezzo dell operatore # and #2 g1(z,a,b); Tempo di propagazione di 2nsec Ha senso definire un tempo di propagazione per le singole porte logiche (che saranno implementate circuitalmente in CMOS) Timescale La direttiva timescale viene usata per determinare l unità di tempo usata nelle simulazioni. Viene inserita all inizio di un file verilog (al di fuori della definizione dei moduli) `timescale <unità di tempo>/<precisione> L unità in cui sono espressi i tempi La precisione con cui vengono approssimati i tempi inseriti Es. `timescale 1ns/1ns

5 `timescale 1ns/1ns module my_and(a,b,z); input A,B; output Z; wire A,B,Z; Esempio: porta AND and #2 a1(z,a,b); Rappresentazione di una porta AND con un tempo di propagazione di 2ns Timescale (fuori dal modulo) L apice (`) si scrive con ALT+96, NON è l apostrofo ( ) che c è nella tastiera Primitiva con ritardo Definizione dei ritardi Ogni ritardo inserito può essere costituito da una tripletta (minimo, tipico, massimo) i cui elementi sono separati dal simbolo : (due punti) and #(1:2:3) g1(z,a,b); Si possono inserire separatamente i tempi di propagazione LH e HL separandoli con virgole and #(2,3) g1(z,a,b); (tplh=2ns, tphl=3ns) Si possono mettere le due cose insieme (min:typ:max per tplh e tphl) and #(1:2:3, 2:3:4) g1(z,a,b); Esempio Ritardo inerziale A and #2 g1(z,a,b); Una combinazione che dà luogo ad una commutazione dell uscita viene rigettata (inerzia) se dura per un tempo più breve del ritardo della porta B Z tplh tphl Rigettato Nell esempio precedente la seconda combinazione A=1, B=1 dura solo 1ns contro un ritardo complessivo della porta di 2ns, quindi l uno logico che dovrebbe risultare da tale combinazione non riesce mai ad arrivare in uscita (ritardo inerziale) t

6 Circuiti reali Esempio Se le primitive logiche contengono un ritardo due diverse implementazioni di una stessa funzione non sono più equivalenti ma avranno tempi di risposta complessivi differenti a seconda di come sono state implementate. `timescale 1ns/1ns module my_and(a,b,z); input A,B; output Z; wire A,B,Z; `timescale 1ns/1ns module my_and2(a,b,z); input A,B; output Z; wire A,B,C,Z; and #3 a1(z,a,b); Ritardo complessivo 3ns nand #1 a1(c,a,b); not #1 b1(z,c); Ritardo complessivo 2ns

Logica sequenziale: implementazione verilog

Logica sequenziale: implementazione verilog Logica sequenziale: implementazione verilog Lucidi del Corso di Elettronica igitale Modulo 11 Università di Cagliari ipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB)

Dettagli

Logica sequenziale: implementazione verilog

Logica sequenziale: implementazione verilog Logica sequenziale: implementazione verilog Lucidi del Corso di Elettronica Digitale Modulo 10 Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB)

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole e Circuiti Logici Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 Algebra di Boole e Circuiti Logici L Algebra

Dettagli

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi 0.1.1.1 Definire un algoritmo 1. Con il termine algoritmo si intende: a) il software utilizzato in un calcolatore b) l elenco finito di istruzioni necessario per risolvere un problema c) un elaboratore

Dettagli

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754 Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori Standard IEEE754 Addizionatori Il circuito combinatorio che implementa l addizionatore a n bit si basa su 1-bit adder collegati

Dettagli

Simulazione Spice. Simulazione Circuitale Spice. Netlist. Netlist

Simulazione Spice. Simulazione Circuitale Spice. Netlist. Netlist Simulazione Spice Simulazione Circuitale Spice Lucidi del Corso di Elettronica Digitale Modulo 4 Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB)

Dettagli

Linguaggi di Descrizione del Hardware: VERILOG. Livelli di astrazione. Livelli di astrazione. Livelli di astrazione. Introduzione

Linguaggi di Descrizione del Hardware: VERILOG. Livelli di astrazione. Livelli di astrazione. Livelli di astrazione. Introduzione Linguaggi di Descrizione del Hardware: VERILOG Lucidi del Corso di Elettronica Digitale Modulo 7 Livelli di astrazione Introduzione Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica

Dettagli

Variabili e Istruzioni

Variabili e Istruzioni Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome

Dettagli

Algebra di Boole. Modulo 2. Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB)

Algebra di Boole. Modulo 2. Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB) Algebra di Boole Modulo 2 Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB) Algebra di Boole L algebra di Boole o della commutazione è lo strumento

Dettagli

Richiami di Algebra di Commutazione

Richiami di Algebra di Commutazione LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n Prof. Rosario Cerbone [email protected] http://digilander.libero.it/rosario.cerbone a.a. 6-7 Richiami di Algebra di Commutazione In questa

Dettagli

Elementi di Base. Introduzione a Python.

Elementi di Base. Introduzione a Python. Elementi di Base Introduzione a Python http://www.dia.uniroma3.it/~roselli/ [email protected] Credits Materiale a cura del Prof. Franco Milicchio Panoramica Elementi di base della sintassi (struttura,

Dettagli

Introduzione alla programmazione. Alice Pavarani

Introduzione alla programmazione. Alice Pavarani Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello

Dettagli

Esercitazioni di Reti Logiche

Esercitazioni di Reti Logiche Esercitazioni di Reti Logiche Sintesi di Reti Combinatorie & Complementi sulle Reti Combinatorie Zeynep KIZILTAN Dipartimento di Scienze dell Informazione Universita degli Studi di Bologna Anno Academico

Dettagli

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi

Dettagli

I circuiti digitali: dalle funzioni logiche ai circuiti

I circuiti digitali: dalle funzioni logiche ai circuiti Architettura dei calcolatori e delle Reti Lezione 4 I circuiti digitali: dalle funzioni logiche ai circuiti Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi

Dettagli

Espressione di chiamata di funzione

Espressione di chiamata di funzione Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è

Dettagli

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense. Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Dettagli

Esercitazione 2 Introduzione a GATESIM

Esercitazione 2 Introduzione a GATESIM Esercitazione 2 Introduzione a GATESIM Gatesim (Logic Gate Simulator) è un simulatore di circuiti logici scritto in in C#/WPF (.NET 3.5 SP1) che permette di creare e simulare semplici circuiti costituiti

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

senza stato una ed una sola

senza stato una ed una sola Reti Combinatorie Un calcolatore è costituito da circuiti digitali (hardware) che provvedono a realizzare fisicamente il calcolo. Tali circuiti digitali possono essere classificati in due classi dette

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using

Dettagli

Introduzione a Matlab

Introduzione a Matlab INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

APPUNTI DI ELETTRONICA DIGITALE

APPUNTI DI ELETTRONICA DIGITALE APPUNTI DI ELETTRONICA DIGITALE Prerequisiti: Conoscere il sistema di numerazione binario Modulo 1 1. Concetti fondamentali L elettronica digitale tratta segnali di tipo binario, cioè segnali che possono

Dettagli

I CARATTERI E LE STRINGHE

I CARATTERI E LE STRINGHE I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Algebra di Boole X Y Z V. Algebra di Boole

Algebra di Boole X Y Z V. Algebra di Boole L algebra dei calcolatori L algebra booleana è un particolare tipo di algebra in cui le variabili e le funzioni possono solo avere valori 0 e 1. Deriva il suo nome dal matematico inglese George Boole che

Dettagli

C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.

C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Non sappiamo a priori quante variabili dobbiamo definire per contenere gli interi.

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Fortran in pillole : prima parte

Fortran in pillole : prima parte Fortran in pillole : prima parte Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi Numerici per l Ingegneria Introduzione al Fortran Un libro consigliato

Dettagli

INTRODUZIONE AL LINGUAGGIO DI PROGRAMMAZIONE PASCAL. Per iniziare lo studio del linguaggio di programmazione pascal, consideriamo il seguente esempio.

INTRODUZIONE AL LINGUAGGIO DI PROGRAMMAZIONE PASCAL. Per iniziare lo studio del linguaggio di programmazione pascal, consideriamo il seguente esempio. INTRODUZIONE AL LINGUAGGIO DI PROGRAMMAZIONE PASCAL Per iniziare lo studio del linguaggio di programmazione pascal, consideriamo il seguente esempio. ESERCIZIO: realizzare un algoritmo (in linguaggio di

Dettagli

Reti Logiche Combinatorie

Reti Logiche Combinatorie Reti Logiche Combinatorie Modulo 4 Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Microelettronica e Bioingegneria (EOLAB) Logica combinatoria Un blocco di logica

Dettagli

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni [email protected] Programmazione prof. Domenico

Dettagli

Architettura degli elaboratori Tema d esame del 20/01/2016

Architettura degli elaboratori Tema d esame del 20/01/2016 Architettura degli elaboratori - Luigi Lavazza A.A. 5/6 Università degli Studi dell Insubria Dipartimento di Informatica e Comunicazione Architettura degli elaboratori Tema d esame del //6 Luigi Lavazza

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo [email protected] Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

I.3 Porte Logiche. Elisabetta Ronchieri. Ottobre 13, Università di Ferrara Dipartimento di Economia e Management. Insegnamento di Informatica

I.3 Porte Logiche. Elisabetta Ronchieri. Ottobre 13, Università di Ferrara Dipartimento di Economia e Management. Insegnamento di Informatica I.3 Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Ottobre 13, 2015 Argomenti 1 2 3 Elaboratore Hardware È il mezzo con il quale l informazione è elaborata. Software

Dettagli

Algebra di Boole Algebra di Boole

Algebra di Boole Algebra di Boole 1 L algebra dei calcolatori L algebra booleana è un particolare tipo di algebra in cui le variabili e le funzioni possono solo avere valori 0 e 1. Deriva il suo nome dal matematico inglese George Boole

Dettagli

Moduli combinatori Barbara Masucci

Moduli combinatori Barbara Masucci Architettura degli Elaboratori Moduli combinatori Barbara Masucci Punto della situazione Ø Abbiamo studiato le reti logiche e la loro minimizzazione Ø Obiettivo di oggi: studio dei moduli combinatori di

Dettagli