IT201800000631A1 - Metodo per generare una configurazione ridondante in FPGA - Google Patents

Metodo per generare una configurazione ridondante in FPGA Download PDF

Info

Publication number
IT201800000631A1
IT201800000631A1 IT201800000631A IT201800000631A IT201800000631A1 IT 201800000631 A1 IT201800000631 A1 IT 201800000631A1 IT 201800000631 A IT201800000631 A IT 201800000631A IT 201800000631 A IT201800000631 A IT 201800000631A IT 201800000631 A1 IT201800000631 A1 IT 201800000631A1
Authority
IT
Italy
Prior art keywords
configuration
fpga
frame
src
address
Prior art date
Application number
IT201800000631A
Other languages
English (en)
Inventor
Raffaele Giordano
Original Assignee
Univ Degli Studi Di Napoli Federico Ii
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Univ Degli Studi Di Napoli Federico Ii filed Critical Univ Degli Studi Di Napoli Federico Ii
Priority to IT201800000631A priority Critical patent/IT201800000631A1/it
Priority to US16/348,810 priority patent/US11106849B2/en
Priority to PCT/IB2018/060461 priority patent/WO2019138282A1/en
Publication of IT201800000631A1 publication Critical patent/IT201800000631A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17768Structural details of configuration resources for security
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/31816Soft error testing; Soft error rate evaluation; Single event testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/337Design optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

Descrizione del brevetto per invenzione dal titolo: “Metodo per generare una configurazione ridondante in FPGA”
DESCRIZIONE
CAMPO DELL’INVENZIONE
La presente invenzione riguarda in generale i Field Programmable Gate Array (FPGA), e più in particolare tecniche per generare una configurazione ridondante in tali dispositivi FPGA. La configurazione ridondante può essere sfruttata da circuiti appositamente concepiti per rilevare e correggere gli errori nella memoria di configurazione e mitigarne gli effetti sulla funzionalità implementata.
DESCRIZIONE DELL’ARTE NOTA
Gli FPGA sono circuiti integrati che possono essere programmati per eseguire specifiche funzioni logiche, come reso noto in “Virtex UltraScale FPGAs Data Sheet: DC and AC Switching Characteristics”, Xilinx Inc. DS893 (v1.7.1) April 4, 2016 e in “Stratix 10 Device Overview S10-OVERVIEW”, Altera Corp. 2015.12.04.
Questi circuiti integrati sono tipicamente costituiti da una schiera di risorse programmabili. Tali risorse programmabili possono includere blocchi di ingresso e uscita dedicati (IOB) e blocchi logici configurabili (CLB), blocchi di memoria ad accesso casuale (BRAM), microprocessori, gestori di clock, anelli ad aggancio di ritardo, e così via.
Ogni risorsa programmabile comprende tipicamente interconnessioni programmabili e logica programmabile. Le interconnessioni programmabili comprendono normalmente un numero elevato di linee di varia lunghezza, le quali possono essere cortocircuitate o isolate dai cosiddetti punti di interconnessione programmabili (PIP).
Gli FPGA sono largamente adottati in una varietà di applicazioni, che vanno dall’elettronica di consumo, come le Smart TV, ad applicazioni di nicchia, come l’avionica e l’elettronica aerospaziale, per l’implementazione di logica veloce grazie alla loro riconfigurabilità, alle loro ampie capacità di elaborazione in tempo reale e agli I/O seriali ad alta velocità incorporati.
Tuttavia questi dispositivi sono sensibili agli effetti delle radiazioni, come i single event upset (SEU) o i multiple bit upset (MBU) nella memoria di configurazione, che possono alterarne la funzionalità implementata, come reso noto in M. Wirthlin, “High-Reliability FPGA-Based Systems: Space, High-Energy Physics, and Beyond”, in Proc. of the IEEE, vol. 103, no. 3, pp. 379-389, Mar. 2015. doi: 10.1109/JPROC.2015.2404212 e H. Quinn, “Radiation effects in reconfigurable FPGAs. Semicond. Sci. Technol., vol. 32, no. 4 (8pp), Mar. 2017 doi: https://doi.org/10.1088/1361-6641/aa57f6.
Questi effetti devono quindi essere opportunamente mitigati per garantire un funzionamento affidabile del dispositivo.
Alcune famiglie speciali di FPGA (es. Xilinx® Virtex5QV, come reso noto in “Radiation-Hardened, Space-Grade Virtex-5QV Family Overview”, Xilinx Inc. DS192 (v1.4) November 12, 2014), sono state progettate per applicazioni aerospaziali, ma il loro costo elevato (alcune decine di migliaia di dollari) rispetto alla loro controparte standard (�500$) solitamente ne limita l’impiego in altre applicazioni, tra cui il controllo degli acceleratori di particelle, applicazioni mediche o elettronica per esperimenti di fisica nucleare e subnucleare.
Si osserva quindi un notevole interesse verso l’individuazione di soluzioni che consentano l’impiego di FPGA standard anche in tali applicazioni.
Per la correzione degli SBU e dei MBU, che divengono sempre più significativi con il progredire della scalatura tecnologica verso dimensioni elementari sempre più ridotte, si utilizzano metodi basati sulla ridondanza modulare tripla, come reso noto in L. Sterpone and M. Violante, “Analysis of The Robustness of The TMR Architecture in SRAM-based FPGAs”, IEEE Trans. on Nucl. Sci., vol. 52, no. 5, pp. 1545-1549, Oct.
2005. doi: 10.1109/TNS.2005.856543, e per la correzione periodica (scrubbing) della configurazione, come reso noto in I. Herrera-Alzu and M. Lopez-Vallejo, “Design Techniques for Xilinx® Virtex FPGA Configuration Memory Scrubbers”, IEEE Trans. Nucl. Sci., vol. 60, no. 1, pp. 376385, Feb. 2013., in A. Stoddard, A. Gruwell, P. Zabriskie and M. J. Wirthlin, “A Hybrid Approach to FPGA Configuration Scrubbing”, IEEE Trans. on Nucl. Sci., vol. 64, no. 1, pp. 497-503, Jan. 2017. doi: 10.1109/TNS.2016.2636666, e in M. Berg, C. Poivey, D. Petrick, D. Espinosa, A. Lesea, K.A. LaBel, M. Friendlich, H. Kim, A. Phan, “Effectiveness of Internal Versus External SEU Scrubbing Mitigation Strategies in a Xilinx FPGA: Design, Test, and Analysis”, IEEE Trans. Nucl. Sci., vol. 55, no. 4, pp. 22592266, Aug. 2008 doi: 10.1109/TNS.2008.2001422.
L’abbinamento tra scrubbing e ridondanza modulare è dovuto al fatto che le tecniche di mascheramento degli errori necessitano di evitare l’accumulo di errori nell’FPGA, come reso noto in A. Manuzzato, S. Gerardin, A. Paccagnella, L. Sterpone, M. Violante, “Effectiveness of TMR-Based Techniques to Mitigate Alpha-Induced SEU Accumulation in Commercial SRAM-Based FPGAs”, IEEE Trans. Nucl. Sci., vol. 55, no. 4, pp. 1968-1973, Aug. 2008 doi: 10.1109/TNS.2008.2000850 e in P. S. Ostler, M. P. Caffrey, D. S. Gibelyou, P. S. Graham, K. S. Morgan, B. H. Pratt, H. M. Quinn, and M. J. Wirthlin, “SRAM FPGA reliability analysis for harsh radiation environments”, IEEE Trans. Nucl. Sci., vol. 56, no. 6, pp. 3519-3526, Dec.
2009.
Alcuni FPGA includono una circuiteria di autocorrezione dedicata per la rilevazione e la correzione degli errori di configurazione (EDAC) basata su bit di parità supplementari aggiunti ai dati di configurazione veri e propri.
Queste circuiterie sono normalmente limitate, per quanto riguarda il numero massimo di errori che sono in grado di rilevare e correggere, dalla quantità di bit di parità.
In alcuni dispositivi di ultima generazione, la circuiteria di correzione può rilevare errori di doppio bit e correggere errori di singolo bit (SECDED) in ogni posizione della memoria di configurazione, che normalmente comprende migliaia di bit.
Altre architetture di scrubbing, come reso noto in Xilinx Inc., “LogiCORE IP Soft Error Mitigation Controller”, v4.0, 2013, sono in grado di correggere un numero arbitrario di errori, in quanto si basano su memorie esterne a prova di radiazione che conservano una copia protetta della configurazione dell’FPGA. Trattandosi di componenti esterni, queste memorie vanno ad aumentare la complessità generale, i costi e il consumo di potenza del sistema.
Per evitare l’impiego di memorie esterne e correggere comunque gli MBU, sono state sviluppate tecniche di scrubbing che si basano sulla ridondanza di configurazione.
Sebbene non si possa classificare come “scrubber”, la soluzione resa nota in G.C. Steiner, “Method And Apparatus For Error Mitigation Of Programmable Logic Devices Configuration Memory”, U.S. 7,298,168B1, Nov. 20, 2007 mostra un’architettura FPGA e un flusso di implementazione di progetto mirati alla generazione di una configurazione ridondante a livello di bit.
Bit di configurazione identici sono raggruppati in gruppi di votazione, e le uscite dei votanti determinano l’effettivo comportamento della logica nella struttura. Siccome esso richiede un’architettura FPGA dedicata, questo approccio può essere adottato solamente dai costruttori dei dispositivi e non può essere implementato a livello di utente. Inoltre esso non consente di rilevare gli errori, ma solamente di mascherarli, per cui non è efficace contro l’accumulo di errori e non ne consente la registrazione.
La soluzione descritta in P. H. Alfke, “System for preventing radiation failures in programmable logic devices”, U.S.6,104,211A, Aug. 15, 2000 e lo studio presentato in I. Herrera-Alzu and M. López-Vallejo, “Self-reference scrubber for TMR systems based on xilinx virtex FPGAs”, Lecture Notes Comput. Sci., vol. 6951, pp. 133-142, 2011, LNCS. si basano entrambi sulla ridondanza di configurazione a livello di dispositivo. Tre FPGA identici implementano lo stesso progetto e ospitano quindi la stessa configurazione. Le principali limitazioni di questo approccio sono date dalla necessità di utilizzare tre dispositivi, dall’aumento del consumo di potenza di un fattore tre e dall'esigenza di impiegare un dispositivo addizionale o risorse aggiuntive per eseguire lo scrubbing e la votazione a maggioranza delle uscite.
Un altro approccio basato sulla ridondanza di configurazione a livello di frame è descritto in J. Tonfat, F. L. Kastensmidt, P. Rech, R. Reis, and H. M. Quinn, “Analyzing the Effectiveness of a Frame-Level Redundancy Scrubbing Technique for SRAM-based FPGAs”, IEEE Trans. Nucl. Sci., vol.
62, no. 6, pp. 3080-3087, Dec. 2015, per un FPGA Xilinx® Virtex-5. La tecnica richiede un flusso di progetto personalizzato basato su un software datato (Xilinx® ISE), la capacità di esportare layout nel formato Xilinx® Design Language (XDL), e il programma CAD accademico Rapidsmith, come descritto in C. Lavin, M. Padilla, J. Lamprecht, P. Lundrigan, B. Nelson, and B. Hutchings, “RapidSmith: Do-it-yourself CAD tools for xilinx FPGAs”, in Proc. 2011 21st Int. Conf. F. Program. Log. Appl., Sep. 2011, pp. 349-355. Il programma Rapidsmith è utilizzato per replicare tre volte il layout di un modulo, generando quindi tre sottoinsiemi identici della configurazione; gli autori sfruttano quindi la ridondanza modulare per generare ridondanza di configurazione.
La soluzione descritta richiede l’individuazione di tre sottoinsiemi identici del dispositivo FPGA per ospitare i tre identici layout, il che potrebbe non essere possibile per progetti che occupino una percentuale più elevata delle risorse del dispositivo.
In questa implementazione, nell’architettura si implementano la logica di scrubbing e un votante per ciascuno dei tre moduli. Questa soluzione comporta un aumento del consumo di energia, proporzionale alle risorse programmabili addizionali utilizzate. Tuttavia, come reso noto in R. Giordano, A. Aloisio, V. Bocci, M. Capodiferro, V. Izzo, L.
Sterpone, M. Violante, “Layout and Radiation Tolerance Issues in High-Speed Links”, IEEE Trans. Nucl. Sci. vol. 62, no. 6, pp. 3177-3185, Dec. 2015. doi: 10.1109/TNS.2015.2498307, l’impatto sul consumo di potenza è minore rispetto alle soluzioni basate su dispositivi ridondanti, dove anche la potenza a riposo del dispositivo risulta triplicata.
Sfortunatamente alcune famiglie di FPGA più recenti, come la 7-Series, la Ultrascale o la Ultrascale+, non sono supportate dal programma Rapidsmith, e le FPGA di ultima generazione non sono nemmeno supportate dal software ISE. In aggiunta, il nuovo programma CAD Xilinx® Vivado, raccomandato per progetti basati su famiglie a partire dalla 7-Series, non supporta XDL. Come reso noto in “RAPIDSMITH 2: A Library for Low-level Manipulation of Vivado Designs at the Cell/BEL Level”, B. Nelson, T. Haroldsen, T. Townsend, [Online] Disponibile: https://github.com/byuccl/RapidSmith2/blob/master/doc/TechRep ort.pdf, sono state avviate nuove iniziative per consentire flussi di progetto personalizzati anche con il programma Vivado.
Tuttavia l’utilizzo di strumenti di layout di terze parti va ad aumentare ulteriormente la complessità del flusso di progetto e solitamente non permette al progettista di scegliere dispositivi di ultima generazione, in quanto occorre implementare supporto dedicato per ogni nuova famiglia di FPGA. SINTESI DELL’INVENZIONE
La presente invenzione intende risolvere questi ed altri problemi indicando un metodo e un apparato per generare una configurazione ridondante in dispositivi FPGA.
L’idea alla base della presente invenzione consiste nel generare configurazioni ridondanti.
In particolare, il metodo si basa sulla combinazione tra verifica della copia dei frame di configurazione, misurazione della potenza assorbita dal dispositivo, e prova della funzionalità durante la copia di ogni frame di configurazione o di un insieme di frame. La configurazione ridondante risultante può essere utilizzata da circuiti dedicati allo scopo di rilevare e correggere gli errori di configurazione mediante votazione a maggioranza.
Questo obiettivo è raggiunto per mezzo di un metodo per generare una configurazione ridondante in un dispositivo FPGA, comprendente i passi di:
- analizzare la configurazione corrispondente a un determinato progetto da configurare, o già configurato, nel dispositivo FPGA, allo scopo di identificare porzioni di memoria di configurazione programmate e vuote,
- configurare il dispositivo FPGA per implementare detto progetto,
- misurare il consumo di potenza del dispositivo FPGA configurato,
- copiare la configurazione da almeno alcuni sottoinsiemi della porzione programmata a sottoinsiemi della porzione vuota,
- (a) verificare la configurazione riletta da detti insiemi della porzione vuota confrontandola con i dati di configurazione letti da detti sottoinsiemi della porzione programmata,
- (b) verificare se dopo la copia la funzionalità del progetto è ancora corretta,
- (c) misurare il consumo di potenza del dispositivo FPGA e verificare se la variazione di consumo di potenza del dispositivo FPGA dopo la copia è accettabile secondo criteri predefiniti,
se i passi di verifica (a), (b) e (c) hanno tutti esito positivo, la configurazione ridondante è stata generata correttamente, e
se i passi di verifica (a), (b) e (c) non hanno tutti esito positivo, il metodo riparte dall’inizio scegliendo altri sottoinsiemi della porzione vuota del dispositivo FPGA per copiare i dati di configurazione da detta porzione programmata. BREVE DESCRIZIONE DEI DISEGNI
Le caratteristiche e altri vantaggi della presente invenzione risulteranno chiari dalla descrizione di una forma di realizzazione illustrata nei disegni allegati, forniti a puro titolo di esempio non limitativo, in cui:
- la Figura 1 mostra una forma di realizzazione esemplificativa del layout delle risorse programmabili e dei frame di configurazione in un FPGA,
- la Figura 2 mostra un esempio di un setup per la generazione di ridondanza in un FPGA con quattro domini di potenza,
- le Figure 3A e 3B mostrano alcuni esempi di tentativi di copie di frame; in particolare, la Figura 3A mostra una copia di frame con esito positivo e la Figura 3B mostra una copia di frame con esito negativo,
- le Figure 4A, 4B e 4C mostrano alcuni esempi dell’andamento della corrente misurata dal primo amperometro (A1) durante la configurazione iniziale (Figura 4A), durante un test di consumo di potenza superato (Figura 4B) e durante un test fallito (Figura 4C),
- le Figure 5A, 5B, 5C e 5D mostrano alcuni esempi di un progetto configurato nelle risorse programmabili dell’FPGA; la Figura 5A mostra la configurazione iniziale che implementa la funzionalità corretta prima dell’esecuzione della copia, la Figura 5B mostra un primo esempio della configurazione dopo la copia di un frame, dove alcuni bit corrispondenti a PIP sono alterati e generano un cortocircuito, la Figura 5C mostra un secondo esempio della configurazione dopo la copia di un frame, dove alcuni bit corrispondenti a una LUT sono alterati e ne cambiano la funzione logica, e la Figura 5D mostra un terzo esempio della configurazione dopo la copia di un frame, dove alcuni bit corrispondenti a PIP sono alterati, ma non hanno effetto sulla corretta funzionalità iniziale,
- la Figura 6 mostra un diagramma di flusso per la generazione di una sequenza di frame ridondante, e
- la Figura 7 mostra un altro esempio di un setup per la generazione di ridondanza con un controllore di replicazione interno in un FPGA con quattro domini di potenza.
DESCRIZIONE DETTAGLIATA DELL’INVENZIONE
Il riferimento ad "una forma di realizzazione" all'interno di questa descrizione sta ad indicare che una particolare configurazione, struttura o caratteristica relativa all’implementazione dell’invenzione è compresa in almeno una forma di realizzazione dell'invenzione. Quindi, le espressioni "in una forma di realizzazione" e simili, presenti in diverse parti all'interno di questa descrizione, non sono necessariamente tutte riferite alla stessa forma di realizzazione. Inoltre le particolari configurazioni, strutture o caratteristiche possono essere combinate in ogni modo adeguato in una o più forme di realizzazione.
I riferimenti utilizzati nel seguito sono soltanto per comodità e non limitano l'ambito di tutela o la portata delle varie forme di realizzazione.
Tutte le funzioni programmabili dall’utente dei dispositivi FPGA sono controllate da celle di memoria, le quali devono essere configurate a seconda del progetto da implementare.
Queste celle di memoria sono collettivamente note come memoria di configurazione, come descritto in “7-Series FPGAs Configuration User Guide”, Xilinx Inc., San Jose, Calif. 2016 https://www.xilinx.com/support/documentation/user_guides/ug47 0_7Series_Config.pdf.
Le celle della memoria di configurazione definiscono, ad esempio, equazioni logiche per i CLB, l’instradamento dei segnali per i PIP, gli standard di tensione di ingresso/uscita per gli IOB, e tutti gli altri aspetti del progetto. La memoria di configurazione del dispositivo è partizionata in modo logico nei cosiddetti “frame”, che sono disposti verticalmente. Il frame è il frammento di configurazione accessibile più piccolo, e nei dispositivi più recenti può comprendere alcune migliaia di bit, come mostrato in Tabella 1.
Tabella 1:
Dimensioni dei frame nelle più recenti famiglie di FPGA Xilinx®.
Da una prospettiva di configurazione, la struttura dell’FPGA può essere suddivisa in righe e colonne (v. Figura 1).
La Figura 1 mostra il layout delle risorse programmabili e dei frame di configurazione in un FPGA. Una riga (es. numero di riferimento 12) consiste in una sequenza di colonne relative a risorse come CLB, IOB, BRAM, e così via.
In particolare, il numero di riferimento 1 indica una colonna IOB, il numero di riferimento 2 indica una colonna IO Interconnect, i numeri di riferimento da 3 a 8 indicano colonne CLB, il numero di riferimento 9 indica una colonna BRAM e il numero di riferimento 10 indica una colonna BRAM Interconnect.
Ogni colonna richiede la configurazione di uno o più frame. Le colonne inutilizzate corrispondono a frame di configurazione impostati su un valore predefinito e prevedibile.
E’ importante notare come la memoria di configurazione sia molto diversa dalle memorie standard utilizzate solamente per l’immagazzinamento di informazioni. Infatti, siccome ciascun bit di configurazione controlla una risorsa fisica, qualsiasi cambiamento può avere un impatto sul comportamento del dispositivo, sia logico che elettrico. Un’importante conseguenza di questa peculiarità è che non è possibile memorizzare un qualunque dato in un qualunque frame, in quanto ciò potrebbe comportare un funzionamento scorretto del dispositivo.
Un tipico flusso di progetto per FPGA termina con la generazione di un file di configurazione, il bitstream, da caricare sul dispositivo per implementare la funzionalità di progetto. Per analizzare il contenuto della configurazione di progetto è possibile riversare il contenuto dei frame per ogni indirizzo di frame dal file del bitstream oppure, dopo aver programmato il dispositivo FPGA, leggendo la configurazione da quest’ultimo.
Ciò può essere effettuato per mezzo di un programma software specifico, denominato “script di analisi”. Lo stesso script di analisi può anche raggruppare i frame in sequenze di frame vuoti, ossia frame che saranno caricati con i rispettivi dati di default, e di frame programmati, ossia frame che saranno caricati con dati differenti da quelli di default.
Per un dato progetto, lo script determina quali frame sono programmati e quali non lo sono, e produce una lista di sequenze programmate e vuote. Di seguito si descriverà un esempio di un lista di sequenze di frame generate da uno script di analisi della configurazione.
# Lista di sequenze di frame programmate
# es. la riga seguente descrive una sequenza di frame programmati # dall’indirizzo 0x0000001D all’indirizzo 0x0000009D, composta # da 43 frame (gli indirizzi dei frame non crescono linearmente) PROGRAMMED 0x0000001D 0x0000009D 00000043
# es. la riga seguente descrive una sequenza di frame con valori # di default dall’indirizzo 0x00000100 all’indirizzo 0x00000C9A, # composta da 817 frame
# (gli indirizzi dei frame non crescono linearmente)
EMPTY 0x00000100 0x00000C9A 00000817
PROGRAMMED 0x00000C9B 0x00000D2300000039
EMPTY 0x00000D80 0x00000C9A 00000344
PROGRAMMED 0x000012800x0000129F 00000032
EMPTY 0x00020000 0x00C201FE 00006126
I moderni FPGA consentono l’accesso in lettura e in scrittura ai frame di configurazione per mezzo delle cosiddette porte CAP (Configuration Access Port). Infatti è possibile scrivere controllori software o hardware che permettano di accedere a singoli frame tramite la CAP dell’FPGA.
E’ possibile configurare l’FPGA con il bitstream relativo al progetto e quindi utilizzare il succitato controllore per leggere la configurazione dal dispositivo e/o generare copie ridondanti di frame programmati in frame vuoti.
Durante questa operazione occorre tuttavia procedere con cautela, in quanto il contenuto della memoria di configurazione ha un impatto fisico sul dispositivo, e non tutti i frame sono compatibili e in grado di ospitare il contenuto di altri frame.
Inoltre il tipo di ciascun frame è normalmente ignoto al progettista, in quanto i produttori di FPGA non rivelano tali dettagli realizzativi. In ogni caso, copiare la configurazione da un frame, o insieme di frame, a un altro frame, o insieme di frame, può portare a comportamenti anomali del circuito o a un indesiderato aumento del consumo di potenza dovuto a dispute fra i driver sulle interconnessioni programmabili.
La soluzione descritta in questo documento consiste in un metodo per la generazione di una configurazione ridondante completamente indipendente da tali dettagli dell’hardware sottostante.
La soluzione si basa su un controllore dedicato connesso a un FPGA e a una serie di amperometri, uno per ogni dominio di potenza dell’FPGA (N essendo il numero di domini di potenza) e un alimentatore.
La Figura 2 mostra un esempio in cui l’FPGA 30 ha quattro domini di potenza, ognuno collegato a un canale di uscita dell’alimentatore 40 tramite un amperometro Ai (con i = 1, 2, 3, 4).
Ogni amperometro è un dispositivo per misurare la corrente elettrica che attraversa un conduttore o un elemento circuitale, il quale misura le correnti corrispondenti I1, I2, I3, I4 associate a ciascun dominio di potenza.
L’alimentatore 40 è un dispositivo che fornisce le tensioni di alimentazione necessarie per il corretto funzionamento dell’FPGA, V1, V2, V3, V4. Il numero di domini di potenza e la tensione di alimentazione richiesta per ogni dominio dipendono dal dispositivo FPGA specifico e sono normalmente specificati nel relativo datasheet.
Il controllore di replicazione 20 scambia segnali di ingresso/uscita funzionali 50 con il progetto 32 configurato nell’FPGA e segnali di ingresso/uscita di configurazione 52 con la porta CAP (Configuration Access Port) 34 del dispositivo.
Tutte le misurazioni di corrente I1, I2, I3, I4 vengono inviate in retroazione al controllore dedicato 20 tramite segnali 54.
Per ciascun frame di ogni sequenza di frame identificata dallo script di analisi, il controllore 20 accede alla CAP 34, per mezzo dei segnali 52, per copiare la configurazione da un indirizzo di frame sorgente SRC a un indirizzo di frame destinatario DST.
Inoltre, dopo la copia il controllore 20 rilegge i dati di configurazione dalla CAP 34 per mezzo dei segnali 52 e li confronta con i dati che ha tentato di scrivere.
Se c’è corrispondenza, la copia ha esito positivo; in caso contrario la copia ha esito negativo. La copia può avere esito negativo, ad esempio, se i frame destinatari configurano risorse diverse rispetto ai frame sorgente.
Le Figure 3A e 3B mostrano degli esempi di tentativi di copia di frame. Il controllore 20 legge (freccia A) i dati del frame dall’indirizzo SRC tramite la CAP 34, scrive (freccia B) gli stessi dati nell’indirizzo DST tramite la CAP 34, e rilegge quindi i dati (freccia C) dall’indirizzo DST tramite la CAP 34 per la verifica.
La Figura 3A mostra una copia di frame con esito positivo, mentre la Figura 3B mostra una copia di frame che ha esito negativo, in quanto lo stato di rilettura (‘1’) del bit 200 non corrisponde allo stato scritto (‘0’).
Ad esempio, il tentativo di copiare la configurazione da un frame della colonna CLB a un frame della colonna IO Interconnect potrebbe fallire, in quanto le celle di configurazione sono collegate a differenti risorse hardware e il loro stato potrebbe risultare diverso al momento della rilettura.
Ad esempio, un determinato bit potrebbe essere letto solo nello stato ‘1’, e un tentativo di scrivervi uno ‘0’ potrebbe non andare a buon fine. Al momento della rilettura il bit sarà ancora ‘1’.
Quando la copia ha esito negativo, il controllore 20 esegue un test di consumo di potenza misurando i valori di corrente I1, I2, I3, I4 assorbiti dall’FPGA sui suoi domini di potenza, prima (Ii(SRC), con i = 1,..,4) e dopo (I’i(SRC), con i = 1,..,4) la copia.
Un metodo semplice consiste nel valutare le differenze di corrente assorbita e confrontarle con valori di soglia predefiniti (ΔI<th>i, per i = 1,..,4), i quali possono essere calcolati in funzione di SRC, ossia ΔI<th>i = ΔI<th>i (SRC).
Se |Ii-I’i| < ΔI<th>i(SRC) per i = 1,..,4, (1) la variazione di consumo di potenza è considerata normale; in caso contrario si presuppone l’esistenza di un guasto interno, come un cortocircuito.
I valori di soglia possono essere determinati analizzando il consumo di potenza del dispositivo durante la configurazione iniziale della sequenza di frame sorgente da copiare.
I valori di soglia sono in generale una funzione dell’andamento della corrente rispetto all’indirizzo di frame, I<0>i=I<0>i(f) per i=1,..,n, dove f varia fra gli indirizzi di frame della sequenza configurata (f=0,..,SRC).
Ad esempio, è possibile scegliere i valori di soglia come:
ΔI<th>i(SRC) = α| I<0>i(SRC 1) - I<0>i(SRC)|,
dove α è un coefficiente opportunamente scelto dal progettista.
La Figura 4 mostra alcuni esempi dell’andamento della corrente misurata dal primo amperometro A1 durante la configurazione iniziale (Figura 4A), durante un test di consumo di potenza superato (Figura 4B) e durante un test di consumo di potenza fallito (Figura 4C).
Per valutare se il consumo di potenza è corretto si potranno comunque prevedere anche altri metodi più complessi.
Ad esempio, tenendo conto dell’andamento delle correnti nei domini di potenza durante il processo di generazione di ridondanza Ii(f) e l’andamento delle correnti I<0>i(f) durante la configurazione iniziale, e considerandoli come vettori dello spazio delle sequenze l<2>, è possibile stabilire che il test di consumo di potenza è superato se
||O(Ii(f),�I<0>i(f))||<2 >< Ki (2) per i=1,..,N,
dove N è il numero di domini di potenza, Ki sono N numeri
reali, O è un operatore dello spazio l<2 >⊗ l<2>, in cui il simbolo ⊗ denota il prodotto tensoriale, �� ||O(Ii(f),�I<0>
i(f))|| è la
norma del vettore O(Ii(f),�I<0>i(f)) nello spazio l<2 >⊗ l<2>.
Il controllore 20 esegue anche un test funzionale sul progetto 32 allo scopo di verificare se il suo comportamento dopo la copia è ancora corretto.
Il test funzionale viene eseguito confrontando i segnali di uscita reali 50 del progetto 32 con quelli attesi, ossia quelli corretti. In altre parole, il test funzionale verifica che il processo di generazione di ridondanza non abbia corrotto la funzionalità di 32. Ciò può accadere se la nuova configurazione scritta nei frame ridondanti interagisce con la funzionalità del progetto.
Le Figure 5A, 5B, 5C e 5D mostrano alcuni esempi della configurazione relativa a un progetto prima e dopo alcuni tentativi di copia di frame.
La Figura 5A mostra la funzionalità corretta iniziale di 32 prima dell’esecuzione della copia.
La Figura 5B mostra un primo esempio in cui i bit 60 alterati dalla copia corrompono la funzionalità di 32 generando un cortocircuito 62.
La Figura 5C mostra un secondo esempio in cui i bit 60 alterati dalla copia corrompono la funzionalità di 32 cambiando la funzione logica della tabella di look-up 64.
La Figura 5D mostra un terzo esempio in cui i bit alterati 60 lasciano inalterata la funzionalità di 32.
In alcune forme di realizzazione, il controllore 20 può implementare la stessa funzionalità del progetto 32 e può fornire le corrette uscite da confrontare con le uscite dell’FPGA 50.
In alcune forme di realizzazione, il test funzionale può anche essere un self-test integrato, ossia un meccanismo che consente al progetto 32 di controllare la propria funzionalità e di emettere in uscita un segnale di test superato/fallito, tra i segnali 50, verso il controllore 20.
Se la copia fallisce, se il consumo di potenza non è corretto rispetto ai criteri predefiniti o se il test funzionale ha esito negativo, il controllore 20 si riavvia ripristinando la configurazione precedente del frame destinatario, il controllore 20 aggiorna DST con un valore diverso, e il controllore 20 ritenta l’operazione di copia.
La Figura 6 è un diagramma di flusso che mostra i passi di generazione di una sequenza di frame ridondante.
Al passo 100 la procedura ha inizio.
Al passo 104 l’indirizzo del frame sorgente SRC viene impostato sull’indirizzo del frame da copiare e l’indirizzo del frame destinatario DST viene impostato sull’indirizzo di un frame vuoto.
In successivo passo 106 la procedura misura la corrente assorbita sui domini di potenza dell’FPGA prima della copia del frame di configurazione Ii(SRC), i = 1,..,N, in cui N indica il numero di domini di potenza compresi nell’FPGA considerato.
Al passo 108 la procedura crea una copia di backup dei dati di configurazione all’indirizzo DST e quindi copia i dati di configurazione dall’indirizzo SRC all’indirizzo DST.
Al passo successivo 110 la procedura rilegge i dati di configurazione scritti all’indirizzo DST durante il passo precedente.
Successivamente, al passo 112, i dati di configurazione riletti al passo 110 vengono confrontati con i dati di configurazione scritti al passo 108 per verificare che la copia sia corretta.
L’implementazione di questo confronto dipende dal modo in cui è realizzato il controllore 20.
Se il controllore è realizzato sotto forma di un circuito digitale, il confronto sarà probabilmente implementato sotto forma di un comparatore bit-to-bit binario.
Nel caso in cui il controllore 20 sia realizzato sotto forma di un programma software in esecuzione in un microprocessore, il confronto sarà implementato con una funzione che confronterà due variabili di input contenenti i dati di configurazione dei frame.
Si deve considerare che sono numerose le possibili implementazioni di questa operazione, di cui si sono qui presentati solamente due esempi.
In Figura 6, se la copia è corretta, la procedura va al passo 114; in caso contrario, la procedura continua con il passo 118.
Al passo 114 vengono misurate le correnti assorbite nei domini di potenza dell’FPGA, ossia i valori I’i(SRC), i = 1,..,N.
Al passo 116 si verifica quindi se il test di “consumo di potenza” e il test “funzionale” sono stati superati.
In caso affermativo la procedura salta al passo 120, mentre in caso negativo la procedura va al passo 118.
Al passo 118 il frame all’indirizzo DST viene riportato alla sua configurazione prima della copia, l’indirizzo DST viene cambiato con un altro indirizzo di frame vuoto, ad esempio il frame successivo nella sequenza di frame vuoti, e la procedura ritorna al passo 106.
Il nuovo indirizzo DST può essere scelto in modi differenti a seconda dei requisiti di progetto. Ad esempio, il nuovo indirizzo può essere il primo che consenta di individuare un numero contiguo di frame vuoti per memorizzare la parte restante della sequenza di frame. Inoltre si possono evitare specifici intervalli di frame per lasciare alcuni frame liberi per logica addizionale da configurare nell’FPGA dopo la generazione della ridondanza.
Al passo 120 si verifica se tutti i frame della sequenza sono stati elaborati, ossia se è stato raggiunto l’ultimo frame della sequenza.
In caso affermativo la procedura va al passo 122 per elaborare la successiva sequenza di frame, mentre in caso negativo la procedura ritorna al passo 104.
Per ogni sequenza di frame, a seconda che ciò sia o meno critico per il funzionamento del progetto, è possibile aggiungere un numero diverso di copie ridondanti, da un minimo di 0 (nessuna ridondanza) a un valore massimo che dipende dalle risorse libere nel dispositivo e dal livello di affidabilità richiesto.
Normalmente il numero totale di repliche, compresa la configurazione originale, è un valore dispari, per rendere possibile la votazione a maggioranza dei bit dei frame copiati.
E’ importante evidenziare che, in generale, la configurazione copiata non genera circuiti operativi.
Solo la configurazione originale concerne un reale circuito operativo, il quale riceve i necessari input (es. dati, clock, reset) e pilota effettivamente le uscite.
In questo caso, la generazione della ridondanza di configurazione non aumenta il consumo di potenza dinamico del progetto originale.
Essa può tuttavia aumentare il consumo di potenza a riposo, a causa dell’attivazione di risorse addizionali nel dispositivo.
Al termine della generazione della ridondanza di configurazione, lo script di analisi produce una lista di sequenze di frame ridondanti e di sequenze di frame relative a porzioni di configurazione vuote dell’FPGA.
Queste informazioni possono essere utilizzate da scrubber dedicati per rilevare e correggere eventuali errori di configurazione mediante votazione a maggioranza o confronto con il valore di default.
È importante osservare che in altre forme di realizzazione dell’invenzione il diagramma di flusso qui proposto può essere modificato per copiare sottoinsiemi di ciascun frame, ad esempio i bit compresi in intervalli specifici (es. i bit da 0 a 31, i bit da 45 a 62, il bit 66, i bit da 1000 a 1005, e così via). In questo caso si utilizzerà il frame riletto al passo 108 prima della copia. I bit compresi nei sottoinsiemi specificati saranno impostati al valore che essi hanno all’indirizzo SRC e gli altri bit saranno lasciati inalterati. Il frame così modificato viene poi scritto all’indirizzo DST. In questo caso è possibile utilizzare come frame destinatari per la memorizzazione della configurazione ridondante sia frame vuoti sia frame programmati, a condizione che almeno i bit da sovrascrivere non siano utilizzati dal progetto 32.
È importante osservare che in altre forme di realizzazione di questa invenzione lo stesso diagramma di flusso di Figura 6 può essere implementato elaborando la sequenza di frame copiando insiemi di frame anziché singoli frame. In altre parole, la sequenza di frame può essere partizionata in insiemi di frame invece che in frame. Ogni insieme può comprendere una pluralità di frame, e ogni insieme può essere copiato secondo il flusso mostrato in Figura 6, dove SRC e DST sono in questo caso gli indirizzi di frame sorgente e destinatario iniziali di ciascun insieme. La sequenza può di per se stessa essere considerata un insieme di frame, cosicché il flusso mostrato in Figura 6 potrebbe anche essere applicato in un’unica soluzione all’intera sequenza.
È importante osservare che in altre forme di realizzazione dell’invenzione il controllore 20 può essere implementato nello stesso dispositivo FPGA configurando opportunamente una parte delle sue risorse programmabili.
Altre forme di realizzazione potrebbero far uso della CAP interna presente nella maggior parte dei dispositivi moderni.
Ulteriori forme di realizzazione potrebbero sfruttare convertitori analogico-digitale (ADC) incorporati nell’FPGA per monitorare tensioni esterne (si veda, ad esempio, la Figura 7).
Se accoppiato con i resistori in derivazione esterni R1, R2, R3, R4, un modulo ADC interno può essere sfruttato con profitto per monitorare la caduta di tensione sui resistori ( ΔV1, ΔV2, ΔV3, ΔV4) attraverso i segnali 58.
Siccome le resistenze di R1, R2, R3, R4 sono note, il controllore 20 può determinare le correnti assorbite dai domini di potenza dell’FPGA I1, I2, I3, I4 mediante la legge di Ohm.
È importante osservare che, nella soluzione qui resa nota, le ridondanze di logica e di configurazione sono completamente disaccoppiate.
Per migliorare l’affidabilità logica si possono adottare, parallelamente a questo approccio, tecniche come la Triple Modular Redundancy (TMR), ma esse non sono necessarie per l’esecuzione dello scrubbing della configurazione.
Le tecniche di scrubbing basate su TMR-based Frame-Level Redundancy (TFLR), come quelle descritte nella pubblicazione scientifica J. Tonfat, F. L. Kastensmidt, P. Rech, R. Reis, and H. M. Quinn, “Analyzing the Effectiveness of a Frame-Level Redundancy Scrubbing Technique for SRAM-based FPGAs”, IEEE Trans. Nucl. Sci., vol. 62, no. 6, pp. 3080-3087, Dec. 2015, offrono alcuni benefici relativamente alla ridondanza logica, ma questa soluzione TFLR richiede l’individuazione di tre sottoinsiemi identici del dispositivo FPGA per ospitare tre volte lo stesso layout. Un simile requisito potrebbe non essere soddisfatto da progetti che occupino un’elevata percentuale di risorse del dispositivo.
Inoltre questa soluzione TFLR introduce consumo di potenza addizionale a causa del funzionamento delle repliche.
Occorre evidenziare che la corrente totale It assorbita da un FPGA configurato può essere suddivisa in due contributi:
1. la corrente a riposo relativa al dispositivo stesso e indicata con Iq, che non dipende dalle risorse utilizzate; e 2. la corrente relativa alle risorse logiche utilizzate, indicata con Ir, cosicché It = Iq + Ir.
La Tabella 2 mostra la corrente media assorbita nel dominio di potenza principale (alimentatore a 1,0V) da un FPGA Xilinx® 7K70T configurato con un progetto di riferimento.
La corrente misurata all’accensione è Iq, quella dopo la configurazione con il bitstream iniziale del progetto di riferimento è Ic, e quella dopo la replicazione dei frame, eseguita con il metodo reso noto in questa descrizione, è If.
Le correnti relative alle risorse configurate dal bitstream iniziale e al progetto replicato sono quindi Ir(c,f)=I(c,f)-Iq.
L’incremento relativo del consumo di potenza per triplicare i frame di progetto è del 60%
Tabella 2:
Corrente media assorbita da un FPGA Xilinx® 7K70T nel dominio di potenza principale.
Con un approccio TFLR, trascurando la logica di votazione e assumendo che ogni replica presenti lo stesso consumo di potenza, si avrebbe una crescita di potenza del 200%
Dato che la tecnica proposta non richiede che i frame ridondanti siano associati alla logica operativa, la penalità di consumo di potenza è significativamente inferiore.
La soluzione proposta in questo documento supera l’arte nota sotto molteplici aspetti.
Essa descrive un’innovativa tecnica di generazione di ridondanza per lo scrubbing della configurazione degli FPGA.
Essa comporta un aumento trascurabile del consumo di potenza rispetto all’arte nota. Infatti, per progetti di riferimento selezionati la penalità di consumo di potenza dovuta alla generazione di frame ridondanti può non superare il 60%, mentre può raggiungere il 200% con le tecniche TFLR.
La tecnica descritta non richiede la generazione di layout ridondanti e quindi non necessita di individuare sottoinsiemi identici del dispositivo FPGA per ospitarli. La tecnica è quindi applicabile a una più ampia varietà di progetti rispetto alla tecnica TFLR secondo l’arte nota.
La soluzione proposta consente al progettista di evitare l’uso di strumenti di layout di terze parti e di semplificare il flusso di progetto, il che non è possibile con la tecnica TFLR secondo l’arte nota.
Nell’approccio proposto la ridondanza di configurazione e la ridondanza modulare sono completamente disaccoppiate, evitando quindi il consumo di potenza associato a moduli ridondanti.
La soluzione proposta è applicabile a numerosi dispositivi e famiglie FPGA, tra cui i dispositivi di ultima generazione, a condizione che essi offrano un’interfaccia per accedere alla configurazione.
Se accoppiata a scrubber dedicati, questa soluzione permette di correggere errori di bit singoli o multipli e rende possibile una riduzione dell’incremento del consumo di potenza causato dall’accumulo di errori di configurazione.
Inoltre questo metodo è compatibile per progetto con la ridondanza n-modulare (anche con n diverso da 3) e può essere esteso durante il funzionamento, se necessario, per cambiare il numero di copie ridondanti e la relativa logica di votazione.
La configurazione ridondante può essere corretta periodicamente durante il funzionamento votando i frame di configurazione come descritto in R. Giordano et al., “Redundant-Configuration Scrubbing of SRAM-based FPGAs”, IEEE Trans. Nucl. Sci. vol. 64, no. 9, Sept. 2017. doi: 10.1109/TNS.2017.2730960.
Infatti, il documento citato mostra come sfruttare la ridondanza di configurazione per correggere errori di bit singoli e multipli, permettendo di contenere l’aumento del consumo di potenza dovuto all’accumulo di errori di configurazione.
Alcune delle possibili varianti sono state descritte sopra, ma è chiaro al tecnico del ramo che, nell’attuazione pratica, esistono anche altre forme di realizzazione, con diversi elementi che possono essere sostituiti da altri tecnicamente equivalenti. La presente invenzione non è dunque limitata agli esempi illustrativi descritti, ma è suscettibile di varie modifiche, perfezionamenti, sostituzioni di parti e di elementi equivalenti senza comportare scostamenti dall’idea inventiva di base, come specificato nelle seguenti rivendicazioni.

Claims (14)

  1. RIVENDICAZIONI 1) Metodo per generare una configurazione ridondante in un dispositivo FPGA, comprendente i passi di: - analizzare la configurazione relativa a un determinato progetto da configurare, o già configurato, nel dispositivo FPGA, allo scopo di identificare porzioni di memoria di configurazione programmate e vuote, - configurare il dispositivo FPGA per implementare detto progetto, - misurare il consumo di potenza del dispositivo FPGA configurato, - copiare la configurazione da almeno alcuni sottoinsiemi della porzione programmata a sottoinsiemi della porzione vuota, - (a) verificare la configurazione riletta da detti sottoinsiemi della porzione vuota confrontandola con i dati di configurazione letti da detti sottoinsiemi della porzione programmata, - (b) verificare se dopo la copia la funzionalità del progetto è ancora corretta, - (c) misurare il consumo di potenza del dispositivo FPGA e verificare se la variazione di consumo di potenza del dispositivo FPGA dopo la copia è accettabile secondo criteri predefiniti, se i passi di verifica (a), (b) e (c) hanno tutti esito positivo, la configurazione ridondante è stata generata correttamente, e se i passi di verifica (a), (b) e (c) non hanno tutti esito positivo, il metodo riparte dall’inizio scegliendo altri sottoinsiemi della porzione vuota del dispositivo FPGA per ospitare i dati di configurazione da detti sottoinsiemi della porzione programmata.
  2. 2) Metodo secondo la rivendicazione 1, in cui detto metodo comprende il passo di predisporre: - un controllore di replicazione (20), - un FPGA (30) collegato a un alimentatore (40) che fornisce le tensioni di alimentazione necessarie per il corretto funzionamento dell’FPGA (30), in cui l’FPGA (30) comprende: - un progetto (32), e - una Configuration Access Port (CAP) (34).
  3. 3) Metodo secondo la rivendicazione 2, in cui, per ogni frame di ogni sequenza di frame programmati identificati analizzando la configurazione relativa al progetto (32), il controllore di replicazione (20) accede, per mezzo di segnali (52), alla Configuration Access Port (CAP) (34) per copiare la configurazione da un indirizzo di frame sorgente (SRC) a un indirizzo di frame destinatario (DST).
  4. 4) Metodo secondo la rivendicazione 2, in cui, per ogni frame di ogni sequenza di frame programmati identificati analizzando la configurazione relativa al progetto (32), il controllore di replicazione (20) accede, per mezzo di segnali (52), alla Configuration Access Port (CAP) (34) per copiare un sottoinsieme di un frame di configurazione da un indirizzo di frame sorgente (SRC) a un indirizzo di frame destinatario (DST).
  5. 5) Metodo secondo la rivendicazione 3 o 4, in cui, per ogni sequenza di frame programmati identificati analizzando la configurazione relativa al progetto (32), il controllore di replicazione (20) accede, per mezzo di segnali (52), alla Configuration Access Port (CAP) (34) per copiare una porzione della sequenza costituita da una pluralità di frame che inizia da un indirizzo di frame sorgente (SRC) a una pluralità omologa di frame che inizia da un indirizzo di frame destinatario (DST).
  6. 6) Metodo secondo la rivendicazione 3 o 4 o 5, comprendente i passi di: - dopo la copia, rileggere i dati di configurazione, per mezzo del controllore di replicazione (20), dalla Configuration Access Port (CAP) (34), e - confrontare i dati di configurazione con i dati che il controllore di replicazione (20) ha tentato di scrivere, e - verificare se vi è corrispondenza: in caso affermativo il passo di verifica (a) ha esito positivo, altrimenti il passo di verifica (a) ha esito negativo.
  7. 7) Metodo secondo una qualsiasi delle rivendicazioni precedenti, comprendente i passi di: - misurare le correnti assorbite dall’FPGA sui suoi domini di potenza prima (Ii(SRC)) e dopo (I’i(SRC)) la copia, dove i=1,..,N e N è il numero di domini di potenza dell’FPGA, - valutare le differenze di corrente assorbita |Ii(SRC)-I’i(SRC)|, e - confrontare le differenze di corrente assorbita con valori di soglia predefiniti (ΔI<th>i(SRC)) in cui il passo di verifica (c) ha esito positivo se |Ii(SRC)-I’i(SRC)| < ΔI<th>i(SRC) (1) per i=1,..,N.
  8. 8) Metodo secondo la rivendicazione 7, in cui detti valori di soglia predefiniti (ΔI<th>i) sono calcolati in funzione dell’indirizzo di frame sorgente (SRC).
  9. 9) Metodo secondo la rivendicazione 8, comprendente: - tener conto dell’andamento delle correnti nei domini di potenza dopo la copia (Ii(f)) e l’andamento delle correnti (I<0>i(f)) durante la configurazione iniziale del progetto (32), dove f=0,..,SRC varia fra tutti gli indirizzi di frame sorgente copiati, - considerare l’andamento delle correnti come vettori dello spazio delle sequenze l<2>, in cui il passo di verifica (c) ha esito positivo se ||O(Ii(f),�I<0>i(f))||<2 >< Ki (2) per i=1,..,N, dove N è il numero di domini di potenza compresi nell’FPGA considerato, Ki sono N numeri reali, O è un operatore dello spazio l<2 >⊗ l<2>, il simbolo ⊗ denota il prodotto tensoriale, �� ||O(Ii(f),�I<0>i(f))|| è la norma del vettore O(Ii(f),�I<0>i(f)) nello spazio l<2 >⊗ l<2>.
  10. 10) Metodo secondo una qualsiasi delle rivendicazioni precedenti da 2 a 9, in cui il passo di verifica (b) viene eseguito confrontando i segnali di uscita reali (50) del progetto (32) con quelli attesi, e verificando che il processo di generazione di ridondanza non abbia corrotto la funzionalità del progetto (32).
  11. 11) Metodo secondo una qualsiasi delle rivendicazioni precedenti da 2 a 10, in cui il passo di verifica (b) viene eseguito per mezzo di un self-test integrato, ossia un meccanismo che consente al progetto (32) di controllare la propria funzionalità e di emettere in uscita un segnale di test superato/fallito verso il controllore di replicazione (20).
  12. 12) Metodo secondo una qualsiasi delle rivendicazioni precedenti, in cui il passo di generazione della sequenza di frame ridondante comprende i passi di: - impostare l’indirizzo di frame sorgente (SRC) sull’indirizzo del frame programmato da copiare e l’indirizzo di frame destinatario (DST) sull’indirizzo di un frame vuoto (104), - misurare la corrente assorbita sui domini di potenza dell’FPGA prima della copia del frame di configurazione Ii(SRC), dove i = 1,..,N, e N indica il numero di domini di potenza compresi nell’FPGA considerato (106), - creare una copia di backup dei dati di configurazione all’indirizzo (DST) e quindi copiare i dati di configurazione dall’indirizzo sorgente (SRC) all’indirizzo destinatario (DST) (108), - rileggere i dati di configurazione scritti all’indirizzo destinatario (DST) (110) durante il passo precedente (108), - confrontare i dati di configurazione riletti durante il passo precedente (110) con i dati di configurazione scritti durante il passo precedente (108) per verificare che la copia sia corretta (112); se la copia è corretta, vengono misurate (114) le correnti assorbite nei domini di potenza dell’FPGA, altrimenti l’indirizzo destinatario (DST) viene cambiato con un altro indirizzo di frame vuoto (118), - verificare se i passi di verifica (b) e (c) hanno esito positivo (116): - in caso negativo (118), il frame all’indirizzo destinatario (DST) viene riportato alla sua configurazione precedente alla copia, l’indirizzo destinatario (DST) viene cambiato con un altro indirizzo di frame vuoto e il metodo ritorna al passo di misurazione (106), - in caso affermativo, si verifica se sono stati elaborati tutti i frame della sequenza, e in caso affermativo il metodo passa alla sequenza di frame successiva, oppure in caso negativo il metodo ritorna all’elaborazione del frame successivo nella sequenza di frame (104).
  13. 13) Metodo secondo una qualsiasi delle rivendicazioni precedenti, in cui la generazione della configurazione ridondante può essere eseguita durante il funzionamento del progetto (32) per cambiare dinamicamente il numero di copie ridondanti di ogni sequenza programmata.
  14. 14) Sistema comprendente: - un FPGA (30) collegato a un alimentatore (40) che fornisce le tensioni di alimentazione necessarie per il corretto funzionamento dell’FPGA (30), in cui l’FPGA (30) comprende: - un controllore di replicazione (20), - un progetto (32), - una Configuration Access Port (CAP) (34), e - un sottosistema per misurare la corrente per ogni dominio di potenza dell’FPGA anche mediante accoppiamento con componenti esterni aggiuntivi, in cui il controllore di replicazione (20) è configurato per eseguire il metodo secondo una qualsiasi delle rivendicazioni precedenti.
IT201800000631A 2018-01-09 2018-01-09 Metodo per generare una configurazione ridondante in FPGA IT201800000631A1 (it)

Priority Applications (3)

Application Number Priority Date Filing Date Title
IT201800000631A IT201800000631A1 (it) 2018-01-09 2018-01-09 Metodo per generare una configurazione ridondante in FPGA
US16/348,810 US11106849B2 (en) 2018-01-09 2018-12-20 Method for generating redundant configuration in FPGAs
PCT/IB2018/060461 WO2019138282A1 (en) 2018-01-09 2018-12-20 Method for generating redundant configuration in fpgas

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT201800000631A IT201800000631A1 (it) 2018-01-09 2018-01-09 Metodo per generare una configurazione ridondante in FPGA

Publications (1)

Publication Number Publication Date
IT201800000631A1 true IT201800000631A1 (it) 2019-07-09

Family

ID=61952815

Family Applications (1)

Application Number Title Priority Date Filing Date
IT201800000631A IT201800000631A1 (it) 2018-01-09 2018-01-09 Metodo per generare una configurazione ridondante in FPGA

Country Status (3)

Country Link
US (1) US11106849B2 (it)
IT (1) IT201800000631A1 (it)
WO (1) WO2019138282A1 (it)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112329368B (zh) * 2020-10-30 2024-04-12 苏州盛科通信股份有限公司 自动调整分割方案的方法、设备和存储介质
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures
CN114185611B (zh) * 2021-11-26 2023-09-12 京微齐力(深圳)科技有限公司 一种待配置器件多列自动复制配置方法及电路
IT202200000833A1 (it) 2022-01-19 2023-07-19 Istituto Naz Fisica Nucleare Metodo di misura della fluenza adronica con un dispositivo Field Programmable Gate Array (FPGA)
CN115859885B (zh) * 2023-02-14 2023-05-09 成都市硅海武林科技有限公司 一种fpga冗余容错方法及fpga芯片

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493862B1 (en) * 2000-07-25 2002-12-10 Xilinx Inc. Method for compressing an FPGA bitsream
US6624654B1 (en) * 2002-05-16 2003-09-23 Xilinx, Inc. Methods for implementing circuits in programmable logic devices to minimize the effects of single event upsets
US7236000B1 (en) * 2005-10-18 2007-06-26 Xilinx, Inc. Method and apparatus for error mitigation of programmable logic device configuration memory
US20070260954A1 (en) * 2006-05-04 2007-11-08 Wong Yuqian C Integrated circuit with low-power built-in self-test logic
US7576557B1 (en) * 2008-03-26 2009-08-18 Xilinx, Inc. Method and apparatus for mitigating one or more event upsets

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6104211A (en) 1998-09-11 2000-08-15 Xilinx, Inc. System for preventing radiation failures in programmable logic devices
US7343579B2 (en) * 2004-11-30 2008-03-11 Physical Sciences Reconfigurable environmentally adaptive computing
US7482954B1 (en) * 2005-02-25 2009-01-27 Xilinx, Inc. Bitstream compression for a programmable device
US8332722B1 (en) * 2010-08-11 2012-12-11 Microelectronics Research and Development Corporation Method and architecture for performing scrubbing of an FPGA's configuration memory
US10229016B2 (en) * 2017-06-01 2019-03-12 The University Of Akron Redundant computer system utilizing comparison diagnostics and voting techniques

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493862B1 (en) * 2000-07-25 2002-12-10 Xilinx Inc. Method for compressing an FPGA bitsream
US6624654B1 (en) * 2002-05-16 2003-09-23 Xilinx, Inc. Methods for implementing circuits in programmable logic devices to minimize the effects of single event upsets
US7236000B1 (en) * 2005-10-18 2007-06-26 Xilinx, Inc. Method and apparatus for error mitigation of programmable logic device configuration memory
US20070260954A1 (en) * 2006-05-04 2007-11-08 Wong Yuqian C Integrated circuit with low-power built-in self-test logic
US7576557B1 (en) * 2008-03-26 2009-08-18 Xilinx, Inc. Method and apparatus for mitigating one or more event upsets

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ANWER JAHANZEB ET AL: "FPGA Redundancy Configurations: An Automated Design Space Exploration", 2014 IEEE INTERNATIONAL PARALLEL & DISTRIBUTED PROCESSING SYMPOSIUM WORKSHOPS, IEEE, 19 May 2014 (2014-05-19), pages 275 - 280, XP032696269, DOI: 10.1109/IPDPSW.2014.37 *
JONATHAN HEINER ET AL: "Fault Tolerant ICAP Controller for High-Reliable Internal Scrubbing", 2008 IEEE AEROSPACE CONFERENCE; 1-8 MARCH 2008; BIG SKY; MT, USA, IEEE, PISCATAWAY, NJ, USA, 1 March 2008 (2008-03-01), pages 1 - 10, XP031256341, ISBN: 978-1-4244-1487-1 *
MARCO LANUZZA ET AL: "A self-hosting configuration management system to mitigate the impact of Radiation-Induced Multi-Bit Upsets in SRAM-based FPGAs", INDUSTRIAL ELECTRONICS (ISIE), 2010 IEEE INTERNATIONAL SYMPOSIUM ON, IEEE, PISCATAWAY, NJ, USA, 4 July 2010 (2010-07-04), pages 1989 - 1994, XP031803118, ISBN: 978-1-4244-6390-9 *

Also Published As

Publication number Publication date
US11106849B2 (en) 2021-08-31
WO2019138282A1 (en) 2019-07-18
US20200265179A1 (en) 2020-08-20

Similar Documents

Publication Publication Date Title
IT201800000631A1 (it) Metodo per generare una configurazione ridondante in FPGA
US7634713B1 (en) Error detection and location circuitry for configuration random-access memory
de Lima Kastensmidt et al. Designing fault-tolerant techniques for SRAM-based FPGAs
Legat et al. SEU recovery mechanism for SRAM-based FPGAs
EP2492917B1 (en) Error detection and correction circuitry
US8694864B1 (en) Parallel processing error detection and location circuitry for configuration random-access memory
US8560927B1 (en) Memory error detection circuitry
TWI434172B (zh) 在積體電路之序列儲存電路內之單一事件擾動錯誤偵測
US7401280B1 (en) Self-verification of configuration memory in programmable logic devices
Giordano et al. Redundant-configuration scrubbing of SRAM-based FPGAs
Brosser et al. Assessing scrubbing techniques for Xilinx SRAM-based FPGAs in space applications
Stoddard et al. High-speed PCAP configuration scrubbing on Zynq-7000 all programmable SoCs
JP5421152B2 (ja) 半導体集積回路
US6968478B1 (en) Method and apparatus for data transfer validation
US20170220416A1 (en) Segmented Error Coding for Block-Based Memory
Fiorin et al. Fault-tolerant network interfaces for networks-on-Chip
Safarulla et al. Design of soft error tolerance technique for FPGA based soft core processors
US7225373B1 (en) Data transfer validation system
Kastil et al. Dependability analysis of fault tolerant systems based on partial dynamic reconfiguration implemented into FPGA
US10998075B2 (en) Built-in self-test for bit-write enabled memory arrays
US11768731B2 (en) System and method for transparent register data error detection and correction via a communication bus
Giordano et al. Configuration self-repair in Xilinx FPGAs
US11281195B2 (en) Integrated circuits with in-field diagnostic and repair capabilities
US10446251B2 (en) Methods and apparatus for detecting defects in memory circuitry
Davis et al. Achieving low-overhead fault tolerance for parallel accelerators with dynamic partial reconfiguration