Design Flow - Ingegneria elettrica ed elettronica

ARCHITETTURE DI SISTEMI INTEGRATI
PER APPLICAZIONI SPECIFICHE
Design Flow
Prof. Luigi Raffo
Dipartimento di ingegneria elettrica ed elettronica
Università di Cagliari
Flusso di progetto classico su silicio
Arch.Sist.Int.App.Spec. a.a 2004/05
Prof. L. Raffo 25-set-04
DF-1
Descrizione del design-flow classico
Quello che si vede e` il classico approccio Top-down alla
progettazione (o anche a cascata, water-fall). Identifichiamone le
parti principali:
Progetto di sistema/architetturale: sviluppo dell’idea di sistema e
verifica del modello, identificazione dei sottoblocchi principali.
Realizzazione dei blocchi: a seconda delle esigenze si puo`
decidere di implementare tali blocchi direttamente a livello circuitale
(progettazione full-custom) oppure attraverso la sintesi RTL
(progettazione standard-cells).
Realizzazione fisica: i blocchi progettati vengono messi assieme
nel modo piu` conveniente per temporizzazioni e prestazioni
(placement and routing). Viene stabilito il layout fisico
determinando un subset delle maschere necessarie (file GDSII)
che messe assieme alle informazioni sulla tecnologia determinano
in maniera univoca la struttura del chip finale.
Nello schema non si vedono dei ricircoli, ma ogni passo deve avere
un punto di simulazione e verifica che si sta procedendo come
previsto. Di solito ogni parte ha esperti specializzati che non si
occupano del restante flusso di progetto. La parte piu` cruciale per
la riuscita del progetto (anche in relazione all’importanza che
normalmente si da ad essa) e` sicuramente quella di definizione del
sistema.
Arch.Sist.Int.App.Spec. a.a 2004/05
Prof. L. Raffo 25-set-04
DF-2
Flusso digitale top-down
Questo e` un dettaglio della progettazione basata su sintesi RTL.
Lo scopo finale puo` anche essere l’implementazione su FPGA.
Arch.Sist.Int.App.Spec. a.a 2004/05
Prof. L. Raffo 25-set-04
DF-3
Progettazione di sistemi su chip (SoC)
Il design-flow top-down e` perfetto per chip/sistemi che devono
essere sviluppati completamente da zero. Questo e` il caso di
moduli specifici (un moltiplicatore, un sommatore per esempio) ben
definiti come interfaccia e prestazioni e di complessita` limitata. Le
capacita` di integrazione su silicio hanno portato a mettere su un
singolo pezzo di silicio dei sistemi anche molto complessi per
esempio della complessita` di un semplice computer o di un
modulo base di un cellulare. Questi sistemi (system-on-chip) non
sono progettati completamente, ma utilizzano in gran parte moduli
gia` disponibili sul mercato (IP), limitandosi quindi al progetto di
alcuni moduli specifici e dell’assemblaggio dei vari moduli. Deve
essere chiaro che il risultato finale e` comunque un unico chip.
Gli IP (intellectual property) sono forniti in una forma adatta alle
esigenze di progettazione, possono essere di tipo:
Soft-IP: viene fornita una versione RTL sintetizzabile
Hard-IP: vengono fornite le maschere dell’oggetto
Nel primo caso ci deve essere una compatibilita` con la tool-chain
usata dal progettista. Nel secondo deve essere usata per la
specifica tecnologia utilizzata.
La progettazione per SoC non puo` quindi essere globalmente di
tipo top-down perche` deve tenere conto che alla base ci devono
essere il piu` possibile blocchi gia` disponibili sul mercato. Tale
esigenza e` l’unica compatibile con il time-to-market richesto
attualmente. La progettazione quindi diventa quasi spiroidale: parte
dalle esigenze di
sistema (top) ma
anche
dagli
IP
disponibili (bottom).
Arch.Sist.Int.App.Spec. a.a 2004/05
Prof. L. Raffo 25-set-04
DF-4
Design flow a spirale
Quello che segue e` un design flow tipico della progettazione di un
SoC in cui tutti gli aspetti del progetto sono tenuti in considerazione
parallelamente. Questa tecnica permette di avere subito una
valutazione di come una scelta architetturale incida sul progetto
fisico finale.
Arch.Sist.Int.App.Spec. a.a 2004/05
Prof. L. Raffo 25-set-04
DF-5
Progetto di un modulo-Design for reuse
In questo contesto e` ovvio che se lo scopo e` quello di progettare
un blocco comune puo` essere vantaggioso progettarlo per essere
riusabile (Design for reuse).
Un modulo per essere semplicemente usabile deve essere:
ben documentato
ben commentato
scritto in un codice comprensibile
ben determinata la procedura di verifica
Un modulo per essere anche riusabile deve essere:
progettato per risolvere un problema generale
progettato per funzionare con diversi simulatori
progettato con interfacce standard
verificato separatamente dal chip per il quale e` stato
progettato
verificato in modo estremamente accurato
completamente documentato indicando possibili applicazioni e
limitazioni
Di solito il progettista e` soggetto a scadenze molto stringenti,
quindi non e` facile “convincerlo” a sviluppare design-for-reuse (si
stima che si impieghi fino a 2/3 volte il tempo necessario per
sviluppare un progetto non riusabile), daltronde si stima che il
vantaggio di riutilizzare un modulo non sviluppato per esserlo e`
irrisorio (1/2, 1/3 del tempo necessario a svilupparlo da zero).
A prescindere comunque dalle considerazioni di convenienza, e`
certo che lo sviluppo di moduli da usare in sistemi complessi/SoC
richiede la capacita` di maneggiare due principi che sono ormai
cardine: riusabilita` e verificabilita`.
Arch.Sist.Int.App.Spec. a.a 2004/05
Prof. L. Raffo 25-set-04
DF-6
La definizione del problema
(specification)
La prima parte della progettazione consente di sviluppare,
verificare e rifinire fino a che non si ottengano delle specifiche
sufficientemente dettagliate per permettere la codifica RTL. Questa
prima parte e` di solito la piu` delicata e la piu` sottovalutata.
In generale questa fase chiede che vengano definite:
Funzionalita`
Interfacce esterne ad altro hardware
Interfacce verso il software
Temporizzazioni
Prestazioni
Vincoli sull’implementazione fisica come area e potenza
Se il sistema ha una parte software:
Funzionalita`
Temporizzazioni
Prestazioni
Interfaccia con l’hardware
Struttura del software
Le specifiche possono essere:
Formali – Esistono linguaggi specifici che definiscono
funzionalita` e vincoli
Eseguibili – Un programma C, C++ o SystemC che
implementa la funzionalita` del sistema richiesta. Questo
metodo e` molto utile/utilizzato, ma specie se si usa C e C++,
non permette di mettere vincoli su temporizzazioni e
dissipazione di potenza per esempio.
Arch.Sist.Int.App.Spec. a.a 2004/05
Prof. L. Raffo 25-set-04
DF-7
Progettazione di sistema
La progettazione di un sistema SoC deve determinare tra l’altro:
cosa va su software cosa va su hardware
se utilizzare un processore, quale e quanti
che blocchi devono essere sviluppati, quali acquistati
Si procede con:
determinazione delle specifiche di sistema
sviluppo di un modello comportamentale
raffinare il modello comportamentale attraverso il test
determinare cosa mettere su harware, cosa mettere su
software
sviluppare un modello architetturale
raffinare il modello architetturale attraverso il test
specificare i blocchi da
implementare.
La progettazione di un chip
deve prevedere quindi una
ampia parte di investigazione a
livello di sistema/architetturale
che deve essere affrontata con
mezzi che non sono tipici della
progettazione classica.
Servono quindi linguaggi di
programmazione (C/C++) o
linguaggi specifici (SystemC) o
tools di sviluppo (ad esempio
Simulink per il Digital Signal
Processing).
Arch.Sist.Int.App.Spec. a.a 2004/05
Prof. L. Raffo 25-set-04
DF-8