Se i sistemi elettronici devono sostituire i sistemi meccanici in applicazioni automobilistiche come lo sterzo e i freni, i microcontrollori che soprintendono a queste funzioni devono rispettare standard internazionali per la sicurezza funzionale (functional-safety), ovvero gli standard IEC61508 e ISO26262. La norma Iec 61508 definisce quattro livelli di sicurezza o Sil (Safety Integrity Levels); Sil4 è il più elevato, Sil1 il più basso. Raggiungere uno specifico livello Sil significa soddisfare diversi requisiti, tra cui la capacità di prevenire errori sistematici o di riuscire a rilevare e a controllare gli errori hardware sporadici (come ad esempio i guasti transitori indotti da disturbi o particelle). Occorre quindi considerare le modalità di guasto di ciascun componente, oltre al cosidetto “beta-factor” che tiene conto dei guasti di modo comune. Nei microcontrollori, questi ultimi comprendono guasti alla rete di clock, errori di temporizzazione, problemi termici e più in generale guasti che possono manifestarsi qualora, al fine di ottenere il livello richiesto di Sil, si realizzino più canali funzionalmente analoghi (ridondanze). La norma Iso 26262, specifica per le applicazioni automobilistiche, definisce quattro livelli di sicurezza o Asil (Automotive Safety Integrity Levels): il livello Asil A è paragonabile al livello Sil1, mentre il livello Asil C/D è paragonabile al livello Sil3.
Le tecnologie tradizionali
L’approccio normalmente utilizzato nel progettare l’architettura di un sistema per ottenere un livello Sil3 o Asil D è quello di realizzare due Cpu identiche in una configurazione detta lock-step. Per prevenire i guasti sistematici e i guasti di modo comune, la configurazione lock-step richiede l’introduzione di risorse hardware aggiuntive per raggiungere il livello Sil3/Asil D. La realizzazione circuitale di queste funzioni aumenta in maniera significativa sia le dimensioni del chip, sia la quantità di memoria di programma necessaria, producendo quindi un impatto negativo sulle prestazioni del sistema. In un’altra architettura tradizionale (spesso indicata come “concetto VDA E-GAS”) è previsto l’utilizzo di un’unità principale di calcolo e di un’unità di monitoraggio, ad esempio un watchdog o un microcontrollore secondario più semplice. Per rivelare o prevenire i guasti sporadici ed in particolare i guasti transitori, è tipicamente necessario realizzare del software aggiuntivo. In definitiva, entrambe le architetture sono in grado di raggiungere il livello Sil3/AsilD (per il lock-step dual-core) o il livello AsilC (per il “concetto VDA E-GAS”), ma con una certa penalizzazione in termini di costi e prestazioni.
L’approccio faultRobust
Per ridurre il costo dei microcontrollori utilizzabili in sistemi Sil3/AsilD, occorre un approccio più efficace che sia in grado di ridurre la complessità dell’hardware e del software. In risposta a questa esigenza, la tecnologia “faultRobust” (fR) sviluppata da Yogitech (azienda di Pisa con sede anche a Milano) offre ai progettisti di chip una piattaforma per ottimizzare l’hardware dei microcontrollori e le risorse software al fine di garantirne la massima sicurezza ed insieme le massime prestazioni. La tecnologia si basa su un sistema di analisi e di verifica della sicurezza funzionale noto come “fRMethodology”. La fRMethodology, un approccio che si può definire white-box, effettua il partizionamento di un circuito integrato in porzioni elementari (“zone sensibili”) e la probabilità di guasto viene calcolata per ciascuna di queste zone sensibili. Questo metodo prevede anche un flusso completo di analisi delle modalità di guasto, dei loro effetti e delle relative diagnostiche con il quale vengono identificati e specificati i requisiti delle azioni correttive necessarie per garantire la rilevazione dei guasti di ciascuna unità. Con questo approccio è quindi possibile progettare e ottimizzare un “supervisore” per ciascuna delle parti critiche di un circuito integrato. Inoltre, i risultati vengono attentamente verificati tramite tecniche di iniezione di guasti (fault-injection). Yogitech ha già in portafoglio una libreria di prodotti (fRIP) per supervisionare i principali blocchi funzionali in un microcontrollore, mentre Toshiba ha sviluppato dei circuiti diagnostici supplementari per i blocchi più specifici, come ad esempio i timer per il sistema operativo, per i convertitori A/D ecc.
Architettura centralizzata e architettura distribuita
Nell’ambito della sicurezza funzionale, un’architettura “centralizzata” offre una visione limitata dei guasti locali e quindi consente al più un controllo dell’ingresso e delle uscite. Reagisce ai guasti con lentezza e non permette di determinare le vere cause dei guasti. L’architettura lock-step dual-core e anche il “concetto VDA E-GAS” seguono un’architettura per lo più centralizzata. Un’architettura “distribuita” rileva e controlla i guasti a livello locale, ossia segue l’elaborazione dei dati esattamente nel punto in cui essa avviene. Reagisce rapidamente ai guasti ed ha maggiore visibilità delle loro cause. Pertanto, può garantire la correttezza di una funzione meglio di un’architettura centralizzata: in altri termini, è più affidabile. I microcontrollori realizzati con questo secondo tipo di architettura e che inoltre utilizzano l’approccio ottimizzato “faultRobust” consentono di soddisfare i requisiti dei livelli Sil3/AsilD, con minori costi e minori requisiti in termini di memoria di programma rispetto alle architetture tradizionali sopra menzionate.
Diversità funzionale
La vulnerabilità agli errori di modo comune, che ad esempio richiede risorse hardware aggiuntive in un’architettura di tipo lock-step, è un difetto tipico degli approcci tradizionali. Per aggirare questo ostacolo, i blocchi fRIP sono, sia dal punto di vista architetturale che funzionale, diversi dalle unità supervisionate del microcontrollore. Questa diversità garantisce una riduzione intrinseca dei guasti di modo comune, senza la necessità di ulteriori misure a livello hardware o software. Inclusa nella libreria fRIP, la fRCpu svolge il ruolo di supervisione dei guasti al posto della Cpu ridondante usata nell’approccio lock-step. Essa segue lo stesso flusso di istruzioni della Cpu principale. La fRCpu, tuttavia, supervisiona esclusivamente quelle aree e funzioni della Cpu in cui potrebbero verificarsi i guasti. Di conseguenza, la fRCpu ha un costo significativamente ridotto rispetto a quello della Cpu principale. La fRCpu è strettamente accoppiata alla Cpu tramite un’interfaccia dedicata, specificata insieme al costruttore della Cpu. Nel caso del processore Cortex-M3 della Arm, circa 100 linee di segnale, collegate alle parti interne ed esterne della Cpu principale, consentono alla fRCpu di compiere un’analisi approfondita della Cpu senza richiederne modifiche. Ciò aiuta a massimizzare la copertura diagnostica dei guasti e allo stesso tempo di minimizzare il tempo di latenza del rilevamento. La fRCpu inoltre monitora il nucleo esterno della Cpu e confronta i risultati con quelli letti dalla Cpu principale, utilizzando un insieme di circuiti di verifica indipendenti che supervisionano le diverse porte della Cpu. La libreria di fRIP comprende l’fRBUS, che supervisiona il bus del microcontrollore monitorando l’arbitraggio, la decodifica e la trasmissione dei dati, così come richiesto dalle norme, e comprende anche misure per rilevare le cadute di tensione. I blocchi fRIP (e i meccanismi di sicurezza delle periferiche, in questo caso i ThwD di Toshiba) vengono collegati all’interno di un microcontrollore per sistemi safety-critical, utilizzando la tecnologia faultRobust. fRNET raccoglie gli allarmi e le informazioni diagnostiche dai blocchi fRIP e genera un segnale di errore globale a “doppio binario” OK/NOK. fRNET inoltre fornisce un canale per collezionare le informazioni diagnostiche relative ai supervisori dedicati, come quelli inseriti da Toshiba per supervisionare le periferiche del microcontrollore. Tramite la funzione fRNET, i blocchi fRIP forniscono dettagliate informazioni diagnostiche permettendo una sofisticata strategia di gestione degli errori. Questa funzione diagnostica potenziata consente di realizzare architetture a basso costo capaci di funzionare completamente (fail-operational) o con funzionalità ridotta (fail-degraded) nel caso di un guasto transitorio o permanente. A seconda del tipo di errore, il microcontrollore può passare direttamente ad un safe-state, ossia uno stato pre-fissato sicuro, oppure può usare le informazioni diagnostiche per implementare funzioni software di ripristino/riprova. Questa possibilità di riavviare rapidamente e in modo pulito la fRCpu è un vantaggio chiave dell’architettura proposta, ed evita la necessità di effettuare un ripristino totale del sistema come quello necessario per mantenere l’allineamento della tradizionale coppia di Cpu in lock-step. Tutti i supervisori descritti comprendono una funzionalità di selftest incorporata (Built-In Self Test, BIST) che garantisce la piena funzionalità del supervisore stesso e previene quindi i guasti latenti.
Il microcontrollore Toshiba
con la tecnologia faultRobust
Sfruttando la fRMethodology e i blocchi fRIP, certificati da un ente di certificazione tedesco accreditato, Toshiba ha realizzato un microcontrollore Sil3/AsilD utilizzando la Cpu Arm Cortex-M3. Questo microcontrollore, denominato TSB-TC (Target Chip), è stato sviluppato utilizzando un flusso di progetto conforme alla norma IEC61508. Il microcontrollore Toshiba integra la tecnologia faultRobust (applicata ai blocchi Cpu, bus e memoria) e i supervisori dedicati (Toshiba hardware-Diagnostic) per supervisionare i timer del sistema operativo, la rete di clock e le periferiche di conversione A/D. Il supervisore ThwD per i timer rileva, ad esempio, errori nel contatore o nel registro del timer del sistema operativo. Analogamente ad altre funzioni fRIP, i blocchi ThwD comunicano informazioni diagnostiche tramite il blocco fRNET.
Se si considera solo la Cpu, il costo del supervisore per l’Arm Cortex-M3 è appena il +41.7% rispetto al numero di gate del Cortex-M3. Questo dato va confrontato con il +169% dei gate che potrebbero servire per una architettura lock-step comprendente il relativo comparatore e le misure per rilevare o evitare i guasti di modo comune. Se si considera il microcontrollore, questo risparmio di gate contribuisce a sua volta a una riduzione significativa delle dimensioni del dispositivo rispetto all’approccio lock-step (dal 5% al 25% a seconda delle dimensioni della memoria e delle periferiche).
Anche il consumo di potenza si riduce, dal momento che la fRCpu consuma meno del 60% della potenza dell’Arm Cortex-M3. Dato lo stretto accoppiamento tra la Cpu principale e la fRCpu, i controlli software supplementari necessari per impedire che guasti nel supervisore mascherino un guasto nella Cpu richiedono solo 2,3 kbyte di memoria di programma. Questi test vengono completati in 1,5 µs a 100 MHz, con un impatto trascurabile sulle prestazioni del sistema. A causa del basso overhead richiesto per raggiungere il livello di sicurezza Asil D e grazie alla potenziata capacità diagnostica, l’approccio faultRobust può anche essere utilizzato per sviluppare applicazioni capaci di funzionare in caso di guato (fail-operational) o tolleranti ai guasti (fault-tolerant). L’architettura fail-operational è stata dimostrata dal microcontrollore TSB-TC che integra due Cortex-M3 e due fRCpu in un chip di dimensioni ragionevoli e a un costo conveniente. Nuove applicazioni, come lo sterzo e il freno comandati elettronicamente, che richiedono di poter funzionare anche in presenza di un guasto, sono tra i candidati possibili per l’adozione di questa architettura dual-core in cui ciascuna Cpu viene supervisionata da una fRCpu. Toshiba ha identificato dei potenziali mercati di riferimento in applicazioni automobilistiche come il servosterzo elettrico, il controllo di stabilità del veicolo e gli impianti di frenatura, nonché il controllo del motore nei veicoli elettrici.