Politecnico di Milano BAnMaT:un framework per l’analisi e la manipolazione di bitstream orientato alla riconfigurabilità parziale Relatore: Correlatore: Prof. Fabrizio FERRANDI Ing. Marco D. SANTAMBROGIO Tesi di Laurea di: Dario Deori Anno Accademico 2004/2005 Sommario • Obiettivi • La riconfigurabilità parziale • Memoria di configurazione • BAnMaT • Lavoro svolto • Conclusioni 2 Obiettivi • Configurazione parziale • Evitare le sintesi da VHDL • Modifiche mirate • Possibilità di effettuare configurazione dinamica • Di bitstream • Di dispositivo in cascata 3 Riconfigurazione Parziale • La FPGA viene riconfigurata solo in parte • Riduzione dei tempi di riconfigurazione • Possibilità di realizzare sistemi complessi attraverso divisione in moduli • Due approcci • Module based • Difference based 4 Organizzazione della memoria di configurazione • Unità base: frame •Indirizzamento • Colonna: composta da più frame Major Address Colonna CLB = 48 frame 5 Bitstream • File binario contenente la configurazione della FPGA • Composto da • Comandi di configurazione • Dati di configurazione • Struttura 6 Bitstream Analysis Manipulation Tool Funzionalità dello strumento: • Funzionalità all’utente • Funzionalità interne • Implementazione: analisi del file mediante funzione di parsing 7 Flusso di esecuzione del parser 8 Calcolo funzioni 1/2 • Permettono di localizzare un componente nel bitstream • Esempio: caso CLB 9 Calcolo funzioni 2/2 Esempio: caso BRAM Mja If ( RAM_Col<Chip_Rams / 2 ) Then 2 x (Chip_Rams / 2 – 1 - RAM -Col) Else 2 x (RAM_Col - Chip_Rams / 2 ) + 1 Mna 1 x floor(((ram_bit / 64) % 64) / 32)+ 2 x floor(((ram_bit / 64) % 32) / 16)+ 4 x floor(((ram_bit / 64) % 16) / 8)+ 8 x floor(((ram_bit / 64) % 8) / 4)+ 16 x floor(((ram_bit / 64) % 4) / 2)+ 32 x floor(((ram_bit / 64) % 2) / 1) Equivalent to Mna= div64 [0..5] where div64[5..0]= floor(ram_bit / 64) fm_bit_idx 18+ 72 x RAM_Row+Bit_pos Fm_st_wd FL x MNA + RW x FL Fm_wd Floor(Fm_bit_idx / 32) Fm_st_wd_idx 31+32xfm_wd – fm_bit_idx 10 Fasi del lavoro •Funzionalità aggiunte • Lettura frame BRAM • Scrittura frame BRAM • Lettura colonne BRAM • Lettura intera BRAM • Scrittura colonna BRAM • Debugging 11 Lettura frame/colonna • Lettura frame • Calcolo di MJA e MNA • Estrazione del frame voluto • Lettura colonna • Calcolo del MJA • Lettura di 64 frame consecutivi (da MNA=0 a MNA=63) 12 Lettura Intera BRAM • La lettura viene effettuata come per la singola colonna e iterata per il numero di colonne presenti sul dispositivo • Valutazione qualitativa tramite visione complessiva dei dati presenti 13 Scrittura di una colonna BRAM e Debugging • Riconfigurazione porzione software • Comportamento ciclico di lettura e scrittura su ogni frame della colonna • Approccio di riconfigurabilità basata su moduli • Controllo della posizione di scrittura 14 Conclusioni • Possibili applicazioni • Approccio difference based alla riconfigurazione parziale • Correzione di componenti logici mal configurati • Analisi struttura bitstream • Individuazione errori • Approccio module based alla riconfigurazione parziale • Inserimento di nuovi dati in BRAM • Lettura dei dati in tempo reale dai blocchi BRAM 15 Fine Presentazione 16