Un guasto di natura elettronica in un sistema safety-critical può causare danni di notevole entità e, nel caso peggiore, la perdita di vita umane. Gli FPGA si propongono come una soluzione versatile ed estremamente affidabile nei casi in cui l’uptime (ovvero il tempo di corretto funzionamento) di un sistema rappresenti la principale priorità e i componenti discreti necessari non risultano più disponibili.
I sistemi safety-critical (ovvero chiamati ad assicurare un funzionamento corretto per evitare rischi alle persone) non devono guastarsi. In caso contrario, le conseguenze potrebbero essere molto gravi. Come nel caso della disastrosa collisione tra due treni che si è verificata nel 2008 a Chatsworth (California), dove due treni si sono scontrati frontalmente su una tratta a binario unico. Uno dei casi più recenti si è verificato in Arizona ed è stato causato da un veicolo a guida autonoma di Uber che, a causa di un malfunzionamento, non si è arrestato e ha investito e ucciso un pedone. Il dispositivo per radioterapia Therac-25, utilizzato negli anni ‘80 da parecchie cliniche negli Stati Uniti e in Canada, è un esempio di quello che può accadere nel caso di guasto di un sistema destinato ad applicazioni medicali. A causa di un malfunzionamento provocato dal software, a numerosi pazienti sono stati somministrate dosi massicce di radiazioni con conseguenze a volte fatali. Anche i sistemi safety critical più “tradizionali”, come i semafori o i sistemi di sicurezza e controllo di stabilimenti di produzione e centrali elettriche industriali possono causare danni immani nel caso di malfunzionamento dell’elettronica preposta al loro controllo.
Requisiti molto severi per i componenti elettronici
Per proteggere le vite umane ed evitare disastri ambientali, è indispensabile evitare a tutti i costi guasti dei sistemi safety-critical. Ne consegue che i requisiti per tutti i componenti utilizzati risultano particolarmente severi. In funzione della particolare applicazione considerata, questi sistemi devono anche operare in ambienti gravosi, in alcuni casi essere progettati in modo ridondante ed essere in grado di fornire una risposta in un periodo di tempo prefissato (comportamento deterministico) per assicurare una risposta affidabile al verificarsi di un evento pericoloso. Per questo motivo, il funzionamento di un sistema safety-critical deve essere monitorato in modo che risulti sempre in grado di rispondere in maniera adeguata in presenza di deviazioni delle misure, dati incoerenti o altre effetti negativi. Nella peggiore delle ipotesi, i componenti safety-critical devono anche assicurare che il sistema si guasti sempre in una modalità sicura (in modo da minimizzare i rischi). Di norma, tuttavia, la maggior parte dei componenti discreti disponibili sul mercato non supporta le funzioni di monitoraggio richieste. Tuttavia, esse sono spesso di vitale importante, ad esempio per garantire la conformità con determinati standard di sicurezza cui devono ottemperare i sistemi elettronici. Comunque, anche nel caso in cui è previsto tale tipo di supporto, i progetti di lungo periodo devono affrontare le problematiche legate alla disponibilità dei componenti al fine di evitare elevati costi di aggiornamento. Problematiche di questo tipo sono caratteristiche di alcuni comparti, come ad esempio quello ferroviario, dove i componenti vengono utilizzati per parecchi decenni. Una soluzione a questo problema prevede la mappatura a livello software delle funzioni safety critical. Un approccio di questo tipo permette di risolvere il problema dell’obsolescenza in quanto la migrazione del software su un nuovo hardware risulta un’operazione non particolarmente complessa. Questa non può comunque essere considerata una panacea per tutte le applicazioni. Se da un lato risulta molto complesso assicurare la sicurezza di un codice sorgente di ampie dimensioni, dall’altro garantire un comportamento deterministico è un compito tutt’altro che banale, in quanto richiede l’esecuzione di un collaudo esaustivo della soluzione, sia della componente hardware sia di quella software, per valutare le sue caratteristiche real-time. Per tutte le ragioni appena esposte, di sviluppatori di sistemi safety-critical stanno focalizzando la loro attenzione sui dispositivi FPGA.
FPGA e sicurezza funzionale
Grazie al loro progetto funzionale, gli FPGA (Field Programmable Gate Array) risultano particolarmente adatti a soddisfare i requisiti sopra menzionati. Corredati di tutte le funzionalità necessarie, essi rivestono un ruolo importante come componenti elettronici destinati ai sistemi industriali di tipo safety-critical. Grazie agli FPGA, ad esempio, è possibile adattare le funzioni di sicurezza in modo da soddisfare i requisiti specifici di un determinato settore industriale, assicurando anche la conformità con i relativi standard di sicurezza. Un vantaggio determinante è senza dubbio rappresentato dalla struttura flessibile degli FPGA: poiché essi sono costituiti da parecchie unità funzionali, o blocchi base IP, che possono essere combinati in modo da soddisfare i requisiti imposti, non è necessario ogni volta sviluppare soluzioni a partire da zero. Questi blocchi base IP sono stati utilizzati per le schede della serie K (K1, K2 and K7) al fine, ad esempio, di espandere ulteriormente la famiglia menTCS con l’aggiunta di nuove schede. Nel caso un FPGA faccia parte di un’unità di maggiori dimensioni, una scheda processore, una scheda carrier con computer o modulo di espansione), le modifiche funzionali richieste per soddisfare le esigenze specifiche di un’applicazione o garantire la conformità ai livelli di sicurezza richiesti possono essere realizzate all’interno dell’FPGA senza dover riprogettare l’intera scheda. Un tale livello di flessibilità permette di adattare una singola soluzione hardware in modo da consentirne l’uso in un’ampia gamma di applicazioni.
Sicurezza funzionale “by design”
Oltre a ciò, gli FPGA assicurano notevoli vantaggi, in termini di riduzione sia dei costi sia dei tempi, durante lo sviluppo di sistemi safety critical. Utilizzando i tool disponibili, gli sviluppatori di schede di sistema possono verificare il comportamento in presenza di errori di un FPGA. Per esempio è possibile simulare anche errori molto complessi nell’ambiente di sviluppo dell’FPGA e quindi modificare il sistema in modo che si comporti nella maniera desiderata al verificarsi di un errore. Oltre a simulare il comportamento in presenza di errori, i tool di sviluppo possono anche essere utilizzati per verificare il corretto funzionamento del progetto basato su FPGA. A questo scopo, i produttori della scheda possono fornire agli OEM tutto il materiale di riferimento e la documentazione necessari per la certificazione nei vari settori industriali, in modo da semplificare il lavoro degli OEM stessi nelle fasi di implementazione e certificazione delle loro soluzioni.
Funzioni di monitoraggio e intervalli di temperature estesi
Un ulteriore vantaggio legato all’impiego di componenti FPGA è rappresentato dal fatto che il produttore della scheda può integrare le funzioni di controllo e monitoraggio essenziali per garantire la conformità dei sistemi safety-critical ai requisiti imposti. Mentre la misura della temperatura o il monitoraggio dei componenti sono requisiti comuni dei vari standard relativi ai sistemi elettronici safety-critical, la funzionalità fornita non è sempre identica. Le schede di sistema basate su FPGA per applicazioni safety-critical, ad esempio, sono solitamente approvate per l’uso in un intervallo di temperatura compreso tra -40 e +85°C. Produttori come MEN Mikro Elektronik mettono a disposizione soluzioni complete certificate con FPGA integrati destinate all’uso anche a temperature estreme, compreso cioè tra -55 e +125 °C. Se la logica di monitoraggio della scheda può essere adattata in modo flessibile attraverso un FPGA, è possibile ridurre gli oneri di ingegnerizzazione per gli sviluppatori della scheda. Ciò si traduce in un evidente vantaggio in termini di costi per i clienti OEM.
Ridondanza con funzionalità di voting aggiuntiva
Le influenza ambientali in condizioni particolarmente gravosi, come ad esempio gli effetti dei raggi cosmici sull’elettronica dei velivoli, può provocare errori nella memoria e compromettere il funzionamento dell’intero sistema di sicurezza. Utilizzando gli FPGA è possibile è possibile creare parecchi componenti ridondanti, identici dal punto di vista funzionale, con funzionalità di voting (arbitraggio). Nel caso uno di questi componenti ridondanti restituisca un valore non corretto, provocato ad esempio dai raggi cosmici, esso viene “scavalcato” dagli altri componenti che funzionano correttamente che sfruttano la funzione di “voting”. Questa ridondanza funzionale può essere implementata in modo relativamente semplice all’interno di un singolo FPGA formato da blocchi IP funzionalmente identici mediante la semplice copiatura dei componenti nel tool di sviluppo appropriato. Naturalmente è anche possibile eseguire l’istradamento (routing) di parecchi FPGA in modo ridondante. In questo caso, la logica IP dell’FPGA originale può anche essere trasferita ai componenti FPGA ridondanti senza particolari oneri. Ciò consente al sistema di intercettare anche guasti dell’FPGA relativi all’hardware.
Elaborazione deterministica del segnale
I sistemi safety-critical dipendono dall’elaborazione deterministica, sensibile al tempo, dei segnali in quanto l’elaborazione real-time riveste un ruolo essenziale in tutte le più diffuse applicazioni critiche dal punto di vista della sicurezza. Un’elaborazione dei segnali di tipo non deterministico può avere conseguente anche fatali. Gli FPGA sono intrinsecamente circuiti deterministici. Ogni processo di I/O ha il proprio circuito dedicato nell’FPGA per cui il suo percorso temporale è definito in modo preciso. Grazie alla struttura parallela degli FPGA, processi in competizione tra di loro, che potrebbero nel caso peggiore ostacolarsi a vicenda, possono essere eliminati direttamente in fase di progetto (by-design). I tempi di risposta di sistemi di questo tipo sono quindi prevedibili in modo accurato e deterministici, anche in presenza di frequenze elevate, come nel caso del monitoraggio della coerenza dei segnali di bus da campo, Ethernet e PCIe utile per rilevare errori di trasmissione che potrebbero indurre i sistemi safety-critical a prendere decisioni errate.
Disponibilità funzionale sul lungo termine
L’utilizzo di FPGA garantisce un ulteriore vantaggio: poiché le loro funzionalità sono basate sul software, essi rappresentano la soluzione ideale per progetti di lungo termine. Molti dei componenti elettronici che vengono prodotti attualmente diventano obsoleti dopo un periodo massimo di 10 anni. Questo problema è molto sentito, ad esempio, nel settore ferroviario, dove I sistemi spesso restano in servizio per parecchi decenni. Poiché le funzionalità di un FPGA sono implementate prevalentemente via software, è possibile effettuare il porting su un FPGA più recente nel caso il dispositivo utilizzato non sia più disponibile. Per questo motivo i clienti OEM che utilizzano schede di elaborazione embedded con logica di sicurezza basata su FPGA non devono affrontare le problematiche legate all’obsolescenza: il produttore della scheda potrà fornire un dispositivo logico embedded identico dal punto di vista funzionale per periodi di tempo molto lunghi, anche nel caso in cui l’FPGA utilizzata in nel progetto originale non sia più disponibile. Per questo motivo è utile prendere in considerazione l’opportunità di impiegare dispositivi FPGA per la realizzazione di sistemi di elaborazione embedded safety-critical – da CPU standard e moduli di espansione a sistemi personalizzati – al fine di soddisfare i requisiti di sicurezza imposti dai livelli SIL più elevati richiesti dalle applicazioni nei settori ferroviari, dell’avionica, medicale e industriale.