Progettazione di sistemi digitali
28/9
Programma
- Progetto del sistema digitale: conoscere il flusso progettuale, passi da percorrere per arrivare al progetto e le tecnologie che abbiamo a disposizione.
- Componenti digitali: prestazioni, come sono fatti, punti di forza di una soluzione tecnologica; voglio conoscere quindi le tecnologie, le prestazioni e le caratteristiche.
- Componenti discreti.
- Componenti programmabili in software o in hardware, la funzione è programmata all’interno del dispositivo in una fase specifica del progetto del dispositivo stesso.
- Hardware: PAL, PLD, FPGA.
- ASIC.
- Metodologia di progetto: scelte da fare.
- Metodologie corrette ed errate.
- Strumenti di CAD.
- Collaudo progetto e del circuito, verifica che il circuito non abbia problemi di fabbricazione.
Libro di testo: Digital Design Principle & Practice di John Wakely della Ed Pearson.
- Altro libro vecchio per gli ASIC: ASIC M. Smith.
Esame: orale + progetto.
Utilizzo grandezze digitali
Binario:
- (1) per le variabili di tipo logico, vero, falso, e (2) la rappresentazione dei numeri.
- Variabili logiche: sviluppo algoritmi logici, quindi applicazioni di controllo —> l’obiettivo è sviluppare delle funzioni logiche.
- Rappresentazione dei numeri: applicazioni di calcolo inteso come calcolo aritmetico e inteso come elaborazioni di segnali; ci sono poi applicazioni di controllo nelle quali è necessario fare del calcolo aritmetico, il confine non è così rigido —> da queste due applicazioni voglio sviluppare delle funzioni aritmetiche.
Specifiche di un’applicazione
- Certe specifiche sono difficili da definire a priori —> le specifiche diventano adattive in funzione delle decisioni progettuali che prendo durante la realizzazione del progetto; per il progetto da fare le specifiche saranno note.
Cosa significa fare il progetto di un sistema digitale —> valutazione delle scelte di progetto per partizionare la funzione complessa che abbiamo in mente in blocchi funzionali più semplici partizionamento.
- La chiave del progetto digitale, partendo dalle specifiche, è il —> ovvero partizionare il problema complesso in funzioni più semplici interallacciate tra di loro —> dopo aver fatto il partizionamento si effettua iterativamente la stessa operazione gerarchia sul blocco già partizionamento una volta —> si parla infatti di.
- Vado quindi a frazionare la funzione complessa che abbiamo in mente in funzioni più elementari, che a sua volta possono essere nuovamente suddivise —> prende il nome di partizionamento gerarchico. Si fa questo perché la sommatoria delle difficoltà di progetto dei singoli blocchi elementari è molto minore della difficoltà dell’intero progetto preso come un unico blocco —> inoltre, mi consente di ricondurmi a dei blocchi noti già sviluppati magari in altri blocchi ed è anche più facile andare a verificare il corretto funzionamento dei vari blocchi partizionati rispetto a verificare il sistema complessivo.
In questo modo poi è più facile anche andare a verificare la funzionalità dei singoli blocchetti partizionati che poi mettiamo insieme verificando l’interfaccia tra un blocco e l’altro piuttosto che effettuare la verifica sull’intero sistema nella sua complessità.
Quindi questo è un processo che è adattivo in senso orizzontale, si può declinare in tante soluzioni diverse, ma lo è anche in senso verticale, la gerarchia può variare in relazione alle scelte che facciamo.
Da questa struttura deriva una organizzazione strutturata, cioè i blocchi funzionali diventano delle strutture —> a questi blocchi corrispondono delle funzioni ma anche delle strutture che realizzano quelle funzioni.
Il partizionamento dove si ferma? Fino agli elementi primitivi, es la standard cell che realizza una certa funzione, che dipende dalla tecnologia realizzativa.
- Le primitive sono quindi degli elementi che corrispondono a componenti fisici.
In funzione della complessità crescente si parte da (1) componenti discreti, (2) componenti programmabili, PAL, FPGA, (3) ASIC e (4) circuiti general purpose, miliardi di transistor su un unico chip.
- Per quanto riguarda i componenti programmabili e gli ASIC è possibile arrivare anche ad una complessità simile a quella del general purpose.
Gli strumenti di CAD sono indispensabili anche per compiere l’operazione di partizionamento gerarchico —> il passaggio da un livello ad un livello successivo, partizionato, prende il nome di sintesi. Gli strumenti CAD si distinguono quindi in:
- Strumenti di CAD di sintesi.
- Strumenti di CAD di verifica.
- Lo strumento di CAD di verifica va a controllare finché il risultato della sintesi verifichi le specifiche che avevo prima di effettuare la partizione.
- Il fatto che il risultato di questi strumenti sia sempre lo stesso lo analizzeremo più in là; è una cosa molto complicata.
Flusso del progetto
30/9
Fase 1: Design Entry
- Descrivere il progetto, cioè trovare degli strumenti che ci consentono di identificare i vari blocchi e descrivere le loro funzionalità con degli strumenti che ci permettono di creare un database sul quale opera lo strumento di CAD —> si va a descrivere cosa fanno i vari blocchi.
Fase 2: Design Processing
- Devo scendere lungo la gerarchia per arrivare fino all’espansione completa in termini di primitive —> si esprime il blocco funzionale in una forma e struttura che realizzi esattamente quella funzione —> si utilizzano degli strumenti di CAD di sintesi che ci permettono di partizionare sempre di più verso le primitive. Alla fine di questa fase abbiamo un insieme di primitive opportunamente interconnesse tra di loro. Il processing ci indica che dobbiamo tenere conto delle scelte della tecnologia e quindi, di conseguenza, le primitive che abbiamo a disposizione.
Fase 3: Silicon Mapping — Mappatura su silicio
- Le primitive definite si spostano direttamente su pezzi reali di silicio, es posizionare un componente discreto sulla board, se invece considero una cella standard la devo posizionare fisicamente su silicio. Alla fine di questa fase il design è stato trasferito su una certa struttura tecnologica.
Fase 4: Design Verification
- Si effettua la verifica finale, validazione finale —> devo assicurarmi che il progetto svolga le funzioni che volevo e che soddisfi tutte le specifiche.
La fase 4 non necessariamente è solo in fondo, si fanno delle operazioni di verifica anche nelle altre fasi —> nella fase 1 ad esempio, quando penso ad una soluzione conviene andare a verificare con un’analisi che la soluzione scelta sia valida e funzionale e che quindi rispetti le specifiche; le verifiche si possono fare anche su un sottoblocco del progetto.
- Se con la verifica scopro che alcune specifiche non sono rispettate allora devo tornare alla fase precedente e riprogettare.
Due Silicon e essintesi sono Design Design Design dovuto all'opera Entry Verification Processing percorso Mapping di verifica aa va vv ae.
Quindi per realizzare un progetto digitale si compie una serie di iterazioni fino alla realizzazione completa del progetto.
È possibile poi che, una volta fatto il design entry, in maniera automatica si possa passare nelle varie fasi —> lo strumento di CAD a disposizione parte dalle descrizioni che abbiamo fatto e in maniera automatica va a generare il dispositivo finale, accade questo nei dispositivi programmabili —> è comoda come soluzione ma devo fare attenzione che il CAD faccia le scelte giuste.
Vado ora a dettagliare in maniera più precisa i passi di ogni fase.
Design Entry
Design Entry: si fa un’esplorazione delle possibili soluzioni progettuali e prima verifica, è la fase più complicata e lunga, ci sono 2 strade per compiere questa fase:
- Schematico: si lavora con un foglio di disegno sul quale posizioniamo le primitive secondo la struttura che abbiamo generato e si rappresentano con un simbolo grafico —> si va a costruire un diagramma a blocchi interconnesso del sistema.
- Testuale: invece che definire una primitiva con un simbolo grafico si definisce una primitiva in forma testuale con una certa sintassi.
I Y Testuale A Schematico v1 B Y Eff FILIIG nomedilibreria.
Con lo schematico vado a descrivere la struttura del circuito, con la forma testuale invece posso andare a definire la funzione indipendentemente, comportamento, del circuito dalla struttura.
É Testuale Schematico Y A B 11 I.
La forma testuale è più comoda quando il sistema è complesso, dove la forma schematica sarebbe troppo complessa.
Nota: lo strumento di sintesi automatica è uno strumento che dato il comportamento estrae la struttura fisica, cioè prende la descrizione comportamentale fatta nel design entry e la sbriciola in un insieme di primitive opportunamente connesse. Questo strumento ci consente di semplificare, velocizzare, le operazioni di sintesi e quindi effettuare delle descrizioni esclusivamente comportamentali.
- Vantaggi: (1) ci consente di fare delle verifiche ad alto livello, simulo solo l’operazione, cioè il comportamento, che ci comporta di poter fare delle verifiche precoci ed eventualmente cambiare le scelte fatte all’inizio della progettazione, senza questo strumento magari me ne sarei accorto nelle fasi successive e avrei perso molto tempo. (2) Inoltre, con questo strumento posso simulare sistemi più complessi e poi (3) si ha anche l’indipendenza dalla tecnologia, che andiamo dopo a definire.
- Svantaggi: (1) potrei però avere delle descrizioni che non sono sintetizzabili, (2) inoltre con la forma testuale perdo il controllo sulla struttura del progetto, cioè perdo il controllo della realizzazione fisica; se ad es lascio il compito di realizzare la struttura al sintetizzatore, questo potrebbe realizzare una soluzione che non rispetta le specifiche, ad esempio perché è troppo lento.
Design Processing
Design Processing: si utilizzano degli strumenti di CAD di sintesi che ci permettono di partizionare sempre di più fino ad arrivare alle primitive —> alla fine di questa fase abbiamo un’insieme di primitive interconnesse tra di loro.
- Questa fase ci dice anche che dobbiamo tenere di conto delle scelte di tecnologie e quindi le primitive che abbiamo a disposizione, che possono essere diverse a seconda della tecnologia utilizzata.
- Cosa fa il design processing? Si compie la sintesi di tutte le descrizioni funzionali in strutture e poi fa una valutazione di come sono queste strutture in termini di primitive —> fino ad arrivare alla netlist del circuito; la netlist descrive sia tutti i nodi che le interconnessioni —> dalla netlist ho tutte le info necessarie per trasferire poi il circuito su silicio.
Silicon Mapping
Silicon Mapping: è la fase di mappatura su silicio, dove le primitive definite si spostano direttamente su pezzetti di silicio reali —> alla fine di questo processo abbiamo il design completo, il design è stato trasferito su una certa struttura tecnologica e ad esempio possiamo avere la board con i componenti discreti, il layout del circuito integrato etc. Questa fase parte dalla netlist e poi si piazzano i vari dispositivi sulla board e si effettuano le interconnessioni —> questa fase dipende fortemente dalla tecnologia utilizzata, anche la parte finale della sintesi dipende dalla tecnologia.
- Il mapping fa le operazioni di PLACEMENT, piazzamento, e ROUTING, interconnessioni, es KiCAD.
- Per i circuiti programmabili, essendo dei circuiti integrati già preparati, può accadere che sia necessario utilizzare un certo numero dei componenti, es flip flop, maggiore di quelli presenti sul chip —> si deve quindi fare un’operazione di partizionamento, es utilizzo tutti i flip-flop di un chip e alcuni flip-flop di un altro chip, si fa quindi il device partitioning.
Design Verification
Design Verification: è la fase di verifica finale che l’obiettivo raggiunto sia corretto. In realtà per ogni passo di progetto devo verificare che siano sempre verificate le specifiche —> si fa quindi il design verification a tutti i livelli del progetto, guardare percorsi in verde e in rosso —> allora il progetto digitale diventa una serie di iterazioni tra i vari blocchi fino a dopo la verifica finale. Alla fine di questa fase il progetto è convalidato, il progetto può essere prodotto.
Gli strumenti principali di verifica sono i simulatori.
- Cosa significa simulare un circuito elettronico? Utilizzo un modello per compiere l’operazione di simulazione, es un modello può essere un insieme di equazioni —> al modello poi aggiungo degli ingressi e poi vado vedere come risponde l’uscita. Problema: (1) la risposta della simulazione dipende dal modello della simulazione, ad es un modello può non tenere di conto di tutti i fenomeni in gioco, (2) inoltre l’OUT dipende dalla sequenza degli ingressi che metto e se gli IN non stimolano correttamente tutto il circuito vado a fare una simulazione non completa, voglio stimolare il circuito in tutti i modi di funzionamento.
- Il modello deve quindi essere affidabile, gli IN devono essere validi, cioè tali che stimolano il circuito in tutte le sue caratteristiche —> in questo modo posso validare o no il circuito.
- Le grandezze in gioco sono tensioni e correnti —> se voglio fare una simulazione accurata devo utilizzare un modello elettrico circuitale —> la complessità con questo modello è elevata e i tempi di simulazione diventano troppo lunghi —> devo scalare il modello da un modello elettrico ad un modello logico.
Del nodi circuito su che sono A Valige obbligato a fare modello approx logico see.
Rappresento il circuito elettrico dell’invertitore con la sua struttura logica, NOT, senza incorrere in errori significativi.
Ti ha semplificazione poi grande sivaffg.vn una.
- Si fa una rappresentazione logica anche per l’uscita, come per la V (t).
A Se faccio questo passaggio da ambiente elettrico a ambiente logico allora i modelli in gioco non sono più quelli dei transistori e quindi non abbiamo più a che fare con grandezze continue ma sono livelli logici —> si semplifica la complessità della simulazione.
- Possiamo individuare un ritardo di propagazione in salita e in discesa: t e t —> sono i parametri di timing che caratterizzano la PLH PHL primitiva.
Si fa quindi una simulazione logica: le grandezze sono logiche, che tipo di simulazioni logiche ci sono?
Simulazione funzionale
- Si vanno a stimolare tutti gli elementi, primitive, blocchi etc, con degli ingressi e si va a vedere come rispondono le uscite, trascurando ogni indicazione relativa al timing della struttura —> si trascura il timing perché finché non si conoscono la struttura e la tecnologia utilizzata non possiamo sapere nulla sul timing. Si fa questa simulazione (1) per capire se il comportamento logico, funzionale, dell’oggetto è corretto oppure no a prescindere dal timing e (2) se riesce poi a validare scelte progettuali.
- Non avere info sul timing rappresenta uno svantaggio —> in realtà infatti si fa una successione di simulazioni, si parte con la simulazione funzionale per scegliere l’architettura e dopo la mappatura su silicio si fa una simulazione timing.
Simulazione timing
- Si ottengono delle informazioni sul timing delle primitive —> si evidenziano le evoluzioni temporali dei fronti logici e si mettono eventualmente in evidenzia delle criticità timing che non si riescono a vedere con la simulazione funzionale.
Immagino di avere una macchina a stati finiti, cioè un circuito sequenziale sincrono, ricordo macchina di Moore —> le OUT dipendono solo dagli stati.
- La simulazione funzionale ci dà l’andamento delle uscite in corrispondenza del fronte del ck, trascurando il timing —> la simulazione timing ci consente di vedere che le uscite variano con un certo ritardo rispetto al fronte di clock.
CK Tipicamente nei simulatori timing il modello prevede un ritardo minimo e funzionale Simulazione uno massimo e quindi si fanno delle simulazioni timing in condizioni di ritardo minimo e massimo timing Simulazione ritardo tutti dovuto t etcta tempi di propagaza risei.
Considero un’uscita Q 1. Questo andamento dell’uscita può essere dovuto al fatto che due segnali in IN ad una porta percorrono due strade diverse e quindi arrivano all’IN della porta in due tempi diversi oppure può essere dovuto al problema dell’alea, cioè quando il segnale commuta momentaneamente ad un valore per poi tornare allo stato di partenza.
- In certi casi questo fenomeno può essere un problema, ad es quando questo segnale va in IN ad un contatore.
- Un errore di questo tipo non emerge nella simulazione funzionale —> quindi abbiamo dimostrato che sono necessarie anche le simulazioni di timing.
Scelta degli IN
Scelta degli IN: è difficile trovare degli ingressi che soddisfano completamente tutte le richieste.
- Si dovrebbero provare tutte le combinazioni logiche degli IN, collaudo esaustivo, ma se questi IN sono tanti, 1024, diventa una simulazione troppo lunga; oltre a tutte le combinazioni degli ingressi devo considerare tutte le combinazioni degli stati —> questa caratteristica negativa ci spinge a sfruttare il partizionamento gerarchico che ci semplifica molto le simulazioni.
Per quanto riguarda il modello ci fidiamo di quello che ci dà il costruttore dei dispositivi —> il costruttore ci fornisce i modelli in condizioni di timing minimo, tipico e massimo; anche il costruttore di componenti programmabili fornisce un modello timing.
Strumento CAD: ci consente di fare lo schematico, ci consente di utilizzare un linguaggio, VHDL/Verilog, e ci consente di effettuare il progetto con un
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Progettazione Concettuale
-
Progettazione termotecnica
-
Domande con risposte Progettazione sistemi digitali, prof. Gorla
-
Progettazione di sistemi informativi