7. I linguaggi descrittivi HDL.

Documenti analoghi
Progettazione di circuiti integrati

Progettazione di circuiti integrati

Cos è il VHDL. Il VHDL è un linguaggio standard per la descrizione dell hardware

IL VHDL. Perché si usa un linguaggio di descrizione dell'hardware? Permette di formalizzare il progetto di sistemi digitali complessi

(b) LOGIC SYNTHESIS DESIGN FLOW

interfacciamento statico e dinamico analisi di interconnessioni, driver e receiver

Reti logiche A All. Informatici (M-Z) Fabrizio Ferrandi a.a

Sommario. Modellizzazione Sintassi Classi di Oggetti Tipi di Dati e Operatori Package e Librerie Processi Esempi di codice VHDL VHDL Testbenches

INTRODUZIONE ALLE LOGICHE PROGRAMMABILI

Regole per la scrittura di VHDL Sintetizzabile. Fabio Campi. Corso di Elettronica dei Sistemi Digitali LS AA

Introduzione al VHDL Lezione 1

Introduzione al Flusso di Progetto di Circuiti e Sistemi Digitali

Minimizzazione di Reti Logiche Combinatorie Multi-livello

METODOLOGIE PROGETTUALI CMOS

Esercitazione : REALIZZAZIONE IMPIANTO SEMAFORICO

Calcolatori Elettronici A a.a. 2008/2009

Progetto di Contatori sincroni. Mariagiovanna Sami Corso di reti Logiche 8 Anno

UNIVERSITÀ DEGLI STUDI DI TRIESTE

Flusso di Progetto Mixed Signal in ambiente CADENCE. Approccio Analog Centric. Corso di Progettazione Mixed Signal 19/12/2013 Prof.

Indice. Prefazione. sommario.pdf 1 05/12/

orario ricevimento via orario ufficio risposta entro 3 giorni

I bistabili ed il register file

Minimizzazione a più livelli di reti combinatorie Cristina Silvano

Il linguaggio di programmazione Python

Introduzione al linguaggio VHDL

Università degli Studi di Cassino

Circuiti sequenziali e latch

Un linguaggio per la descrizione dello hardware: il VHDL

MODULO PREREQUISITI OBIETTIVI CONTENUTI ORE

Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi

Circuiti sincroni Circuiti sequenziali: i bistabili

MATERIALI PER LA DISCUSSIONE

ESAMI DI STATO PER L'ABILITAZIONE ALL'ESERCIZIO DELLA PROFESSIONE DI INGEGNERE SEZIONE A I SESSIONE - ANNO 2015 SEZIONE A- Settore Industriale

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

I Bistabili. Maurizio Palesi. Maurizio Palesi 1

LOGICA SEQUENZIALE. Un blocco di logica puramente combinatoria è un. blocco con N variabili di ingresso e M variabili di uscita

Un linguaggio per la descrizione dello hardware: il VHDL

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Circuiti Logici

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Corso di Architettura (Prof. Scarano) 09/04/2002

Università degli Studi di Cassino e del Lazio Meridionale Corso di Calcolatori Elettronici Elementi di memoria e Registri

Reti Logiche 1. Prof. B. Buttarazzi A.A. 2009/2010. Reti Sequenziali

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Corso Programmazione

Minimizzazione di Reti Logiche Combinatorie Multi-livello. livello

Cap. 2 - Rappresentazione in base 2 dei numeri interi

Tecniche di Progettazione Digitale Logiche programmabili; standard cells; generazione automatica del layout: algoritmi di partitioning p.

Definizione e ambito della disciplina ARCHITETTURA DEI CALCOLATORI

Laboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE

Una breve introduzione alla simulazione numerica nei circuiti con PSpice + qualche esempio...

Capitolo 6. Reti asincrone. Elaborazione asincrona Procedimenti di sintesi e analisi Memorie binarie

Analisi ed Esplorazione della Potenza Dissipata e delle Prestazio. delle Prestazioni di una Architettura Superscalare

Esercizio 1 (12 punti) Minimizzare il numero di stati dell automa qui rappresentato. Disegnare l automa minimo.

Elettronica dei Sistemi Digitali L-A

Memorie Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella

PECUP SECONDO BIENNIO terzo anno Meccanica, Meccatronica ed Energia - Articolazione: Meccanica e Meccatronica

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Organizzazione strutturata

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Linguaggi di programmazione e astrazione

Reti Logiche Combinatorie

Modelli di programmazione parallela

Programmazione = decomposizione basata su astrazioni

Reti combinatorie. Reti combinatorie (segue)

Note sull utilizzazione di componenti logici di tipo memoria

Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata

Lezione E2. Sistemi embedded e real-time

CALCOLATORI ELETTRONICI

2.6 Riflessione conclusiva su descrizione e sintesi delle reti logiche

Introduzione alla programmazione

Lezione M1 - DDM

Componenti e connessioni. Capitolo 3

I Indice. Prefazione. Capitolo 1 Introduzione 1

Calcolatori Elettronici M Modulo Introduzione all ambiente Xilinx ISE 12.3 e ISIM

Esercizi svolti e da svolgere sugli argomenti trattati nella lezione 25

Design for Testability (DFT): Scan

Dispositivi Logici Programmabili

IIS Via Silvestri ITIS Volta Programma svolto di Tecnologie Informatiche A.S. 2015/16 Classe 1 A

Capitolo I1: Laboratorio con DevC++

ISTITUTO DI ISTRUZIONE SUPERIORE J.C. MAXWELL Data: / / Pag. di

Il comportamento di un amplificatore ideale, ad esempio di tensione, è descritto dalla relazione lineare V out = A V in (3.1)

Architettura degli Elaboratori

2. Le fasi della realizzazione di sistemi elettronici.

PORTE LOGICHE. Si effettua su due o più variabili, l uscita assume lo stato logico 1 se almeno una variabile di ingresso è allo stato logico 1.

Metodologie e modelli di progetto

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

CODING nella scuola primaria

Introduzione I contatori sono dispositivi fondamentali nell elettronica digitale e sono utilizzati per:

Introduzione al VHDL. Alcuni concetti introduttivi

Il Software programmabili programma algoritmo

Università degli Studi di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Corso di Circuiti Integrati Anno Accademico 2016/2017

Antonio D'Amore I CIRCUITI DI COMMUTAZIONE

Reti logiche: analisi, sintesi e minimizzazione Esercitazione. Venerdì 9 ottobre 2015

Circuiti sequenziali

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

3. Programmi e algoritmi

Architettura degli Elaboratori

Transcript:

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 7-1 7. I linguaggi descrittivi HDL. Introduzione. I linguaggi descrittivi HDL (Hardware Description Language) nascono negli anni 80 con lo scopo di documentare progetti hardware complessi. L esigenza era essenzialmente quella di utilizzare una metodologia standard per descrivere il comportamento dei sistemi elettronici. Questi linguaggi sono molto simili ai linguaggi software, ma contemplano costrutti atti alla definizione di architetture e di funzionalità tipiche dell hardware, come la sincronizzazione ed il parallelismo tra processi. Se inizialmente questi linguaggi sono sfruttati al solo scopo di documentazione, ben presto essi vengono utilizzati anche per la simulazione al fine di verificare il corretto comportamento del sistema. Ciò naturalmente è molto importante per rendersi conto della correttezza dell algoritmo scelto per la risoluzione di un particolare problema. A questo livello nel programma che descrive il funzionamento possono essere introdotti costrutti sintattici che prescindono dalla vera e propria implementazione hardware del sistema. L aumento degli anni della complessità dei sistemi, permessa anche dal progredire incessante della tecnologia, ha reso sempre più stringente l esigenza di automatizzare al massimo le procedure di sintesi. Tecniche ed algoritmi sempre più sofisticati hanno permesso di sviluppare CAD che avessero capacità di tradurre descrizioni ad alto livello di sistemi elettronici in architetture che facessero riferimento direttamente a blocchi logici di libreria. Naturalmente il tipo di descrizione di sistemi, al fine della loro successiva sintesi, non può più prescindere dall implementazione e la sintassi del linguaggio deve rispettare alcuni vincoli precisi che ne rendano possibile l implementazione, primo tra questi la necessità che il sistema sia sincrono. Questo implica che qualsiasi blocco logico abbia le uscite registrate, ovvero che qualsiasi variazione in uscita sia sincrona con il fronte attivo del clock. Ciò si ottiene appunto attraverso l uso di un flip-flop. La tipologia di descrizione adatta ad essere sintetizzata è la descrizione RTL (Register Transfer Logic). In essa viene specificata l architettura del sistema con la descrizione del flusso di dati attraverso i registri che fungono da unità di memorizzazione delle informazioni. I linguaggi HDL attualmente più utilizzati sono il VHDL (VHSIC, Very High Speed Integrated Circuits HDL) diffuso soprattutto in Europa, la cui sintassi richiama quella del Pascal e soprattutto dell ADA, e il Verilog, più simile al C è attualmente in via di rapida diffusione a causa della sua maggiore semplicità rispetto al VHDL, in confronto molto più prolisso. Utilizzo dei linguaggi HDL. I campi di utilizzo dei linguaggi descrittivi HDL possono essere classificati, secondo la loro finalità, nelle seguenti categorie. 1. Descrizione di sistemi al fine di effettuarne la sintesi. 2. Descrizione di sistemi al fine di descriverne il comportamento. 3. Descrizione strutturale del sistema. 4. Descrizione del testbench.

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 7-2 La descrizione al fine della sintesi deve essere una descrizione RTL e deve prevedere solo costrutti sintetizzabili. La descrizione comportamentale di blocchi logici è effettuata prima di prevedere la realizzazione RTL di un blocco da sintetizzare, oppure dopo la sintesi per descrivere il comportamento di un modulo già sintetizzato e mappato su una certa tecnologia. Ciò dà la possibilità di simulare insieme blocchi diversi, alcuni dei quali descritti in RTL ed altri in attraverso la loro funzionalità. Ciò può essere importantissimo quando alcuni dei blocchi hardware sono moduli esterni al sistema da progettare e quindi da sintetizzare, ma fanno parte integrante del sistema globale. Si pensi, ad esempio, di dover progettare un sistema che debba interagire con un microprocessore standard e una memoria. La descrizione strutturale del sistema consiste in un listato che contiene le istanze dei moduli e le loro interconnessioni. Ciò costituisce la netlist del sistema che viene utilizzata soprattutto nell interscambio di dati tra diversi pacchetti software. Esistono linguaggi appositamente studiati solo per questo scopo, come ad esempio l EDIF, ma possono essere utilizzati anche gli i comuni linguaggi HDL. La descrizione del testbench, ovvero del banco di prova, è una descrizione comportamentale degli stimoli esterni del sistema. Questo approccio permette di descrivere i segnali in ingresso e di controllare quelli in uscita per verificare se corrispondono a quello attesi semplificando notevolmente la fase di test. Questa descrizione, come illustrato in Figura 1, costituisce a tutti gli effetti un modulo del sistema. Testbench module Figura 1 Modulo di testbench Partizione del sistema. La partizione di un sistema elettronico è la fase che precede quella vera e propria di descrizione dei singoli moduli a livello RTL e consiste nella sua suddivisione in sottoblocchi. Questa è effettuata direttamente a livello di descrizione HDL dal progettista programmatore oppure dal compilatore che per effettuare particolari ottimizzazioni raggruppa moduli indipendenti o suddivide moduli singoli. Normalmente i criteri che orientano la partizione sono la suddivisione in moduli secondo la funzione espletata, l orientamento del progettista e l ottenimento dei migliori risultati dalla successiva fase di sintesi. Da una attenta analisi si riescono infatti a ottenere oggetti sintetizzati ottimali, più semplici ed in tempi più brevi.

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 7-3 Si possono identificare alcune regole alla base dei criteri di partizione. L idea è sempre quella di rendere indipendenti parti del circuito per le quali esistono algoritmi di ottimizzazione specialistici. Alcune di queste regole inoltre sono del tutto generali e valgono non solo per l obiettivo di ottenere una sintesi ottimale, ma sono buone norme anche per la progettazione diretta di qualsiasi circuito elettronico. 1. Non introdurre gerarchie nei cammini combinatori. Questo implica il non portare su moduli differenti blocchi combinatori che potrebbero essere inglobati su un modulo singolo. Non possiamo infatti prevedere a priori quanto possa essere spinta l ottimizzazione sul blocco combinatorio intero. 2. Registrare tutte le uscite di ogni blocco. Porre ovvero un flip-flop comandato dal clock globale del sistema su tutte le uscite dei moduli. 3. Evitare di porre glue-logic (tipo poche porte di collegamento) tra blocchi. 4. Separare i progetti con differenti obiettivi di ottimizzazione. Ciò significa evitare di porre in un unico modulo due sottoblocchi per i quali sarebbero auspicabili criteri di ottimizzazione differenti. Ad esempio un blocco, molto critico, potrebbe essere ottimizzato per velocità, ed un secondo per area. 5. Isolare le macchine a stati. Esistono algoritmi molto efficienti per ottimizzare questo tipo di circuiti di controllo, ma questi funzionano solo se non sono presenti altri elementi combinatori e/o sequenziali che non ne fanno parte logicamente. 6. Mantenere una adeguata dimensione dei blocchi. Evitare di realizzare moduli che generano circuiti di dimensioni molto differenti tra loro. Ciò renderebbe difficile il floorplan e lunga la sintesi di blocchi troppo grandi. 7. Separare nel sistema la core-logic, i pads, i clock, e la logica JTAG. Ognuno di questi componenti ha sistemi specifici di sintesi e di ottimizzazione. Descrizione RTL di sistemi elettronici. La descrizione RTL è, come detto, la modalità tipica usata per la sintesi. Un modulo RTL sarà costituito da parti combinatorie le cui uscite sono registrate e i cui ingressi provengono dall esterno del modulo o dall uscita di altri registri interni al modulo stesso, come mostrato dall esempio di Figura 2. Figura 2 Schematico RTL di un sistema

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 7-4 Tutti registri del modulo sono flip-flop, ovvero sono comandati su un fronte del clock (lo stesso per tutti i moduli del sistema) e sono ovviamente sincroni, ovvero il fronte attivo del clock comanda contemporaneamente tutti i flip-flop. Se dalla fase di sintesi risulterà che alcuni registri sono stati tradotti in hardware come latch, ovvero comandati sul livello anziché sul fronte, ciò significherà un errore in fase di descrizione del sistema. Una struttura così descritta agevola enormemente la fase di sintesi e, soprattutto, di ottimizzazione. Una volta stabilito infatti il tempo di clock, le procedure di ottimizzazione cercheranno di tradurre in hardware ogni blocco combinatorio in modo che il tempo di ritardo sul cammino critico aggiunto ai tempi di ritardo propri di setup e di hold dei flip-flop, sia minore del tempo di clock stesso. Ogni blocco combinatorio registrato può essere descritto in due sezioni separando la parte combinatoria da quella sequenziale come illustrato dallo schema in Figura 3. A B C clock Figura 3 Separazione della parte combinatoria e sequenziale La prima specifica le uscite B del solo blocco combinatorio al variare degli ingressi A, mentre la seconda sincronizza le uscite C del registro, eventualmente a più bit, i cui ingressi B provengono dalle uscite della parte combinatoria. Il Verilog. Il Verilog è un linguaggio di descrizione hardware che permette la descrizione di un sistema digitale in un ampio spettro di livelli di astrazione, dal comportamentale allo strutturale. Esso include inoltre costrutti gerarchici che permettono al progettista di controllare facilmente la complessità di un sistema. Il Verilog è stato originariamente sviluppato alla fine del 1983 come prodotto proprietario della Cadence per la simulazione e verifica, ma successivamente sono stati sviluppati numerosi strumenti per la simulazione dei guasti, l analisi temporale e la sintesi. Il linguaggio è attualmente standardizzato dallo standard IEEE 1364-1995 ed è disponibile per l utilizzo con qualsiasi CAD elettronico. L organizzazione Open Verilog International (http://www.ovi.org) ne promuove la diffusione. Per quanto riguarda la sintassi del linguaggio si rimanda ad un testo specifico.

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 7-5 Calcolo delle capacità e dei tempi di ritardo. Il calcolo delle capacità è necessario al calcolo dei tempi di ritardo. La capacità di uscita può essere vista come la somma delle capacità di ingresso delle porte alle quali quella in questione è collegata e di quella relativa alle linee di connessione in uscita. In Synopsys di default la prima viene posta a zero, mentre la seconda è calcolata attraverso il Wireload Model. Si può specificare il carico in unità di carico, attraverso: un numero, il nome di una cella, un multiplo di una cella. Il compilatore usa il carico di fanout per regolare il fanout massimo. Se il fanout esterno più quello interno eccede il fanout massimo, verranno aggiunti dei buffer opportuni. Il compilatore ottimizza il progetto basandosi sulle condizioni operative del processo, della tensione e della temperatura come illustrato in Figura 4. Delay Delay Delay Processo Tensione Temperatura Figura 4 Variazioni del tempo di ritardo I ritardi relativi alle celle e alle linee verranno opportunamente scalati secondo le condizioni operative. Le librerie sono normalmente caratterizzate usando le condizioni operative nominali. L ottimizzatore usa i modelli di Wire Load per stimare la capacità, la resistenza e l area delle linee prima del floorplanning o del layout. Il modello di Wire Load è basato sulla lunghezza media statistica di una linea per un dato fanout per una certa area. Attraverso una opzione si può specificare quale Wire Load Model usare per linee che attraversano i confini gerarchici. I tre modelli possibili sono: top, enclosed e segmented. Il modello top ignora i livelli più bassi di wireloads. Il modello enclosed usa la migliore approssimazione per il wireload. Il modello segmented usa alcuni wireloads. Alcune variabili permettono di specificare: il tempo di transizione maggiore sulle porte, il massimo fanout sulle porte di ingresso, la massima capacità sulle porte. Le regole di progetto contengono i vincoli sulle linee, ma sono associate con le uscite delle celle per una certa libreria tecnologica. Molte librerie specificano le regole di progetto di default. Tali regole non devono essere assolutamente violate, poiché questo interferirebbe sui vincoli legati alle ottimizzazioni. Un progettista può pensare di eseguire il progetto con regole più restrittive di quelle dettate dalle regole di progetto, ma non meno restrittive. Le regole di progetto non sono applicate alle porte. Queste ereditano le regole delle celle che pilotano le uscite o che ricevono i segnali di ingresso.

Marcello Salmeri - Progettazione Automatica di Circuiti e Sistemi Elettronici Capitolo 7-6 Il Wire Load Model descrive il modello per il calcolo della lunghezza e della capacità delle linee (vedi Figura 5). Lunghezza Fanout Figura 5 Calcolo delle capacità delle linee Esempio: wire_load ( 10x10 ) { resistance : 0.5 capacitance : 1.1 area : 0.05 slope : 0.5 fanout_length (1, 2.6) fanout_length (3, 2.9) fanout_length (5, 3.2) fanout_length (7, 3.9) fanout_length (9, 4.1) fanout_length (10, 4.7) } L ottimizzatore calcola la lunghezza attraverso l interpolazione tra due valori o lo slope. Attraverso il coefficiente di capacità viene dunque calcolata la capacità relativa e il coefficiente di area viene calcolata l area della linea. I ritardi delle celle sono calcolati usando uno dei seguenti quattro diversi modelli fornito dalla fonderia: 1. Modello lineare. 2. Modello lineare a due tratti. 3. Modello lineare a più tratti. 4. Modello non lineare.