Diapositiva 1 - UniNa STiDuE

Transcript

Diapositiva 1 - UniNa STiDuE
’
UNIVERSITA DEGLI STUDI DI
NAPOLI FEDERICO II
Facoltà di Ingegneria
FLUSSO DI PROGETTO PER SOPC
CORSO DI CALCOLATORI ELETTRONICI II
Prof. A. Mazzeo – [email protected]
Ing. Carmelo Lofiego – [email protected]
30 Aprile 2010
Corso di Laurea Specialistica in Ingegneria Informatica
Flusso di progetto per un sistema digitale

Specifiche del sistema



Descrizione HDL


Occorre verificare che il comportamento
funzionale del sistema sia congruente con le
specifiche
Sintesi


Dalle specifiche all’architettura del sistema
Simulazione funzionale


Funzionali (comportamento ingresso/uscita,
interfaccia con l’esterno, … )
Non- funzionali (throughput, area, timing,
potenza dissipata, … )
La descrizione di alto livello (RTL, strutturale,
comportamentale) viene trasformata in una
netlist di porte logiche mediante strumenti CAD
Simulazione post-sintesi

occorre verificare che il comportamento
ingresso/uscita del sistema sintetizzato rispetti
le specifiche funzionali
Flusso di progetto per un sistema digitale

Place&Route



Simulazione post Place&Route


Poiché viene utilizzato uno strumento
automatico, occorre verificare la
correttezza funzionale della
trasformazione
Stima dei parametri


Ottenuta la netlist bisogna mapparne e
disporne gli elementi sul silicio
I parametri non funzionali del circuito
ottenuto dipendono da quanto il processo
di place&route è stato effettuato
efficacemente
E’ possibile estrarre i parametri non
funzionali
Se i vincoli non funzionali non vengono
soddisfatti bisogna effettuare un redisign
Field-Programmable Gate Array (FPGA)
 Gate
Array:

 Blocchi
logici (CLB)
 Interconnessioni
 Blocchi di I/O (IOB)
 Struttura
regolare di celle
logiche, connesse attraverso
una rete di interconnessione
 Field
Programmable:
 Programmabili
on field
dopo la loro produzione
Elementi base (programmabili):

La configurazione viene
memorizzata in una SRAM
Blocchi logici programmabili (CLB)

LUT (Look Up table):




Permette di implementare logica
combinatoria; una LUT a N
ingressi permette di
implementare funzioni booleane
a N-ingressi
Può essere configurata come un
multiplexer binario o come una
memoria programmabile a 2N bit
Registri
Altre risorse:

Logica per la propagazione del
riporto, multiplexer
programmabili, …
Select
Out
A
B
C
L
U
T
A simple look up table
logic block
DQ
Clock
A more realistic logic
block
Rete d’interconnessione
L
E
L
E
Switc
h
Matri
x
L
E
L
E
Switc
h
Matri
x
L
E
L
E
Tecnologia target

Non solo CLB (blocchi di memoria, moltiplicatori, IOB)
Flusso di sviluppo per FPGA
Il progetto hardware viene realizzato
modellando il sistema utilizzando un
linguaggio di descrizione dell’hardware (HDL)
 Mediante un tool di sintesi viene generata una
netlist di componenti di libreria
 Questa viene mappata sulla particolare
tecnologia
 I componenti inferenziati vengono posizionati sul
chip
 La rete di interconnessione viene configurata in
modo da realizzare le connessioni necessarie
 In genere ci si riferisce alle fasi di map-placeroute come implementazione

Programmazione dell’FPGA
 L'output
della sintesi è un file di configurazione detto
bitstream
 Il bitstream può essere scaricato sull'fpga
determinandone la configurazione di tutti i componenti
programmabili
 La configurazione è volatile
Xilinx ISE
Xilinx PlanAhead
System on Programmable Chip (SoPC)
System-on-Chip (SoC)

I System-on-a-Chip (SoC) sono
particolari circuiti integrati che in
un solo chip contengono più parti
di un sistema


Un IP (Intellectual-Property) core
è un componente hardware con
funzionalità ben definite



Microprocessore. Memori, Bus,
Periferiche, Logica custom, …
Permettono di riutilizzare lavoro già
fatto (anche di terze parti)
Il flusso di progetto di un SoPC si
basa sun una libreria di core IP
Vengono realizzati su ASIC e su
FPGA
Flusso di progetto SoC

Oltre ai componenti hw, un SoC
consiste anche di software che
controlla I vari componenti e li fa
interagire


Il progetto di un SoC richiede
l'emulazione dello stesso


Il flusso di design si complica
FPGA costituiscono un supporto
molto importante alla
progettazione
Dopo la fase di emulazione il
chip SoC segue le fasi classiche
di sviluppo di un chip custom
Partizionamento Hardware/Software

La fase di
partizionamento consiste
nel decidere quali
componenti/funzionalità
realizzare in hardware
piuttosto che in software

Decisione presa in base a
qualche metrica o tecniche
di profiling (hot-spot)

Implementazione hw



Implementazione sw



Prestazioni migliori
Elevato costo
Maggiore flessibilità e minor
costo
Prestazioni peggiori
Problema di ottimo
complesso. Bisogna tener
conto di diversi fattori in
conflitto

Costo, prestazioni, area, …
System-on-Programmable-Chip (SoPC)


Con SoPC ci si riferisce a
all'implementazione di un SoC su
un device programmabile (FPGA)
Vantaggi




Place&Route e programmazione
vengono effettuati dall’utente
Nessun ritardo per la realizzazione
del prototipo
Nessun ritardo per la produzione su
grandi volumi
Modifiche veloci ed economiche
Hard/Soft IP

Un IP può essere implementato su
FPGA in maniera Hard o Soft


Hard: occupa risorse dedicate sul
device
Soft: viene implementato
utilizzando risorse programmabili
dell'FPGA

Hard IP



Soft IP


Tipicamente i Soft IP sono molto
più flessibili e ricchi di
caratteristiche, mentre gli Hard
IP offrono performance più
elevate e un consumo di potenza
inferiore
Non configurabile
garantisce timing, area, consumo
di potenza


Vengono rilasciati i sorgenti (HDL
sintetizzabile) o un formato criptato
che ne permette la configurazione
Tipicamente sono altamente
configurabili
Timing, area e consumo di potenza
dipendono dall’implementazione,
strumenti CAD utilizzati e tecnologia
target
Processori per SoPC

Soft Processor per FPGA




Hard Processor per FPGA



NIOS II -- Altera
Microblaze, Picoblaze -- Xilinx
LEON -- Gaisler
MIPS Altera, anche ARM ma non nelle nuove FPGA
PowerPC Xilinx, ma non nelle nuove FPGA
FPGA capienti possono contenere diversi soft-processor
Software per il flusso di progetto SoPC

Sintesi


Implementazione


Leonardo, Symplify, Altera Quartus, Xilinx ISE, …
Xilinx ISE, Altera Quartus, …
Tool per la configurazione del SoPC

Xilinx EDK, Altera SoPC Builder, …
Compilatore C/C++ per architettura target
 Tool di supporto al debug

Flusso di sviluppo per SoPC
Ambienti commerciali
SOPC BUILDER - ALTERA
EDK - XILINX
LEON3
GRLIB/LEON3


GRLIB è una libreria di
soft IP della
Gaisler/Aeroflex
Architettura di
riferimento basata su
bus comune


I core IP istanziati
vengono connessi tramite
un bus on-chip (AMBA)
Supporta diversi tool
CAD e tecnologie
target

Qualche IP:










LEON3 SPARC V8 32-bit processor
DSU3 Multi-processor Debug support
unit
GRFPU High-performance Floatingpoint unit
GRFPU-Lite Low-area Floating-point
unit
SRCTRL - PROM/SRAM controller
SDCTRL - SDRAM controller
DDRCTRL - DDR controller with two
AHB ports (Xilinx only)
AHBBRIDGE - Bi-directional
AHB/AHB Bridge
APBUART - Programmable UART
with APB interface
GPIO - General purpose I/O port
LEON3





Soft-core altamente configurabile
Modello VHDL sintetizzabile su diversi device FPGA
La prima versione (P-1754) è stata realizzata da
Jiri Gaisler per l’European Space Agency (ESA) per
essere utilizzato in sistemi di controllo satellitare
Viene rilasciato sotto licenza GNU LGPL
Attualmente mantenuto dalla Aeroflex
LEON3 - Caratteristiche







Architettura RISC
Unità intera compatibile SPARC V8,
pipelined a 7 stadi
Numero di registri configurabile (2-32)
Cache separate per istruzioni e dati,
moltiplicatore e divisore hardware,
controller d'interruzioni
Debug Support Unit (DSU) con trace
buffer, 2 timer a 24-bit, 2 UART
Porto di I/O a 16-bit, controller di
memoria molto flessibile, Ethernet MAC,
PCI interface
Permette una facile integrazione di
nuovi componenti
Diagram of the LEON core from Gaisler Research
Debug Support Unit (DSU)
Permette un debugging non intrusivo sull'hw target
 In particolare permette di:

Inserire breakpoint e watchpoint
 accedere a tutti i registri on-chip
 Caricare un programma in memoria e controllarne
l'esecuzione
 Tracciare il flusso delle istruzioni eseguite e monitorare il
traffico sul bus tramite dei trace buffer


Può essere utilizzato come interfaccia per un debugger
remoto (i.e. gdb)
Bus AMBA


Advanced Microcontroller Bus
Architecture (AMBA) è una specifica
di bus per dispositivi SoC
AMBA BUS fornisce specifiche solo
a livello di ciclo di clock



La specifica è indipendente dalla
tecnologia che successivamente sarà
usata per realizzare il chip su cui il
bus viene usato
Caratteristiche elettriche: non sono
fornite specifiche dato che saranno
totalmente dipendenti dalla
tecnologia usata
Specifiche temporali: non sono fornite
informazioni e/o misure temporali di
tipo assoluto dato che esse
dipendono fortemente dalla
tecnologia realizzativa

La specifica definisce diversi
bus. In particolare abbiamo:


Advanced High-performance
Bus (AHB)


AHB, APB
Multimaster, operazioni
pipelined, trasferimenti burst,
split transaction
Advanced Peripheral Bus
(APB)


Consumi ridotti
Semplice Interfaccia verso le
periferiche
LEON3 Bus Architecture

LEON utilizza un'architettura
a bus su due livelli:



Il bus AHB viene utilizzato per la
CPU, per gli altri master, per la
memoria on chip e le periferiche
che richiedono elevata disponibilità
di banda (ad es. l’interfaccia verso
la memoria off-chip, periferiche che
possono essere oggetto di
trasferimenti DMA)
Il bus APB per le periferiche di I/O
più semplici e con minori requisiti di
banda e performance
Un bridge AHB/APB bufferizza
dati e operazioni tra i due bus; il
bridge AHB/APB è slave sul bus
AHB e l'unico master sul bus APB.
Configurazione, Sintesi e programmazione di un SoPC su
board di sviluppo
Cosa ci proponiamo di realizzare?

Vogliamo realizzare
un SoPC basato su
core IP della libreria
GRLIB e farne il
download sulla board
Nexys2* della Digilent
[*] http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,789&Prod=NEXYS2
Digilent Nexys2

Cos’è?


E’ una piattaforma di sviluppo per
sistemi digitali il cui nucleo è un’FPGA
Xilinx della famiglia Spartan3E
Le dimensioni della logica sono tali
da poter ospitare un SoPC basato su
libreria Xilinx (EDK) e GRLIB.

Qualche caratteristica:








Xilinx Spartan-3E FPGA da 500K o
1200K gate
Permette alimentazione e
programmazione tramite porta USB
Compatibile con ISE/Webpack e EDK
della Xilinx
16MB Micron PSDRAM
16MB Intel StrataFlash Flash
Xilinx Platform Flash ROM
Oscillatore da 50MHz; permette
l’alloggiamento di un oscillatore
esterno
75 pin di I/O distribuiti su:



Un bus di espansione high-speed da
43 pin
4 connettori pmod 2x6
8 LED, 4 display a 7-segmenti, 4
push-button, 8 switch
Strumenti necessari

Cygwin


Oltre al sistema base installare i
pacchetti make, tcltk, …
Libreria di componenti GRLIB
 Simulatore per LEON (TSIM)
 Debug monitor (grmon)
 Tool chain per la crosscompilazione
"GRTools installer for windows"

http://www.cygwin.com

LEON3/GRLIB
Strumenti per la simulazione e sintesi di
sistemi digitali
Active HDL, Modelsim
 Xilinx ISE Webpack
http://www.xilinx.com/tools/webpack.htm

http://www.gaisler.com

Utility per la programmazione
dell’FPGA
Digilent Adept
http://www.digilentinc.com/Products
/Detail.cfm?NavTop=2&NavSub
=69&Prod=ADEPT

Qualche dettaglio sull’ambiente

In particolare:
 In
boards troviamo una directory
per ciascuna board supportata

Es. digilent-xup-xc2vp
 In
designs vari esempi di
configurazioni di SoPC per le
varie board supportate


Es. leon3-digilent-xup
La Nexys2 non è supportata
dalla versione ufficiale di GRLIB
Design di esempio per la Nexys2

Sorgenti disponibili sull’ftp del corso
Configurazione del SoPC
Top level entity e User Constraint File (UCF)
Sintesi
Occupazione delle risorse sulla logica
grlib/designs/leon3-digilent-nexys2/leon3mp.mrp
Verifica del vincolo sul cammino critico


A valle della fase di sintesi
occorre verificare che il
cammino critico sia
compatibile con il clock di
sistema
Nel caso specifico abbiamo:



un clock di board di 50 Mhz
un DCM configurato in modo
da moltiplicare la frequenza
del clock di board per 4/5
Otteniamo così un clock di
sistema di 40 Mhz
grlib/designs/leon3-digilent-nexys2/leon3mp.twr
Compilazione “Hello World!”
#include <stdio.h>
main() {
printf("Hello\n");
}
grlib/software/examples/hello.c
Compilazione applicazioni d’esempio

Con GRLIB vengono rilasciati anche altre
applicazioni d’esempio/benchmark
 Possono
essere compilati utilizzando make
Download del bitstream


Per il download del
bitstream sull’FPGA
occorre un’utility
software
Possiamo scegliere tra

iMPACT della Xilinx
Richiede cavo JTAG
 Adept
della Digilent
Permette la
programmazione della
logica tramite USB
Download del bitstream
Interfacciarsi al sistema tramite
GRMON/DSU