Estendere la temperatura operativa degli Fpga

Xilinx apertura_WEB

La durata di qualsiasi dispositivo elettronico dipende dalle sue temperature operative. A temperature elevate, il dispositivo invecchia più rapidamente e il suo tempo di vita si riduce. Tuttavia alcune applicazioni richiedono che l’elettronica operi al di là della temperatura massima di giunzione del dispositivo definita da specifica. Un esempio che proviene dal settore petrolifero illustra il problema e i modi per risolverlo. Un cliente ha chiesto al nostro team in Aphesa di progettare una fotocamera ad alte temperature destinata a operare all’interno dei pozzi petroliferi. Il dispositivo richiedeva un Fpga di dimensioni relativamente grandi e aveva requisiti di temperatura di almeno 125°C, pari alla temperatura operativa massima del sistema. In qualità di società di consulenza che sviluppa fotocamere su misura e relativa elettronica dedicata, incluso il codice Fpga e il software embedded, abbiamo esperienza sul funzionamento dei dispositivi alle alte temperature. Ma in questo progetto dovevamo fare di più. Il prodotto è una fotocamera doppia a colori per pozzi petroliferi, progettata per applicazioni nel campo dell’ispezione dei pozzi petroliferi, che esegue l’elaborazione delle immagini, la ricostruzione dei colori e le operazioni di comunicazione. Il sistema è dotato di memoria, di driver Led e di una funzionalità di elaborazione delle immagini con un intervallo dinamico elevato. Per questo progetto abbiamo scelto di usare il dispositivo XA6SLX45 di Xilinx (Spartan6 LX45 di classe automotive) per via del suo intervallo esteso di temperature, della sua robustezza, del package di piccole dimensioni, della presenza di una memoria interna di grandi dimensioni e di un grande numero di celle logiche. Il progetto in questione era molto critico e allo stesso tempo molto stimolante.


La variazione di temperatura

I dispositivi elettronici sono in genere specificati con la relativa temperatura massima di giunzione. Purtroppo, ciò che interessa ai progettisti è la temperatura ambiente. La differenza fra la temperatura ambiente e quella di giunzione dipenderà dalla capacità del package di trasferire calore e del sistema di raffreddamento di dissipare questo calore al di fuori dell’alloggiamento. La resistenza termica è una proprietà del calore e una misura di quanto un determinato materiale resiste al flusso di calore. A causa di essa, la temperatura interna ed esterna di un componente saranno diverse, determinando un flusso di calore, proprio nello stesso modo in cui la tensione a ciascun capo di un resistore non è la stessa a causa del flusso di corrente. Con una differenza di temperatura di 20°C fra l’interno e l’esterno di un corpo, un dispositivo con una temperatura di giunzione massima di 125°C di può operare in un ambiente con una temperatura massima di 105°C. La resistenza termica è espressa in gradi per watt; per 1W di calore da dissipare, la differenza di temperatura fra l’interno e l’esterno sarà uguale alla resistenza termica. L’energia dissipata come calore dipende dal dispositivo, dal circuito, dalla frequenza del clock e dal codice che gira sul dispositivo. La differenza di temperature fra l’interno e l’esterno del dispositivo e il suo ambiente dipende di conseguenza dal dispositivo, dal codice e dagli schematici.

Soluzioni di raffreddamento

In gran parte dei progetti in cui è richiesto il raffreddamento, i progettisti ricorrono al raffreddamento passivo o attivo. Le soluzioni di raffreddamento attivo forzano un flusso d’aria al fine di agevolare il rinnovo dell’aria fredda che assorbe il calore sopra il dispositivo. La capacità dell’aria di assorbire il calore dipende dalla differenza di temperatura fra l’aria e il dispositivo e dalla pressione dell’aria. Altre soluzioni includono il raffreddamento liquido, in cui un liquido, in genere l’acqua, sostituisce l’aria offrendo maggiore efficienza. La capacità di una massa di aria o di fluido di assorbire il calore è data dall’equazione dell’assorbimento del calore. Un approccio che i progettisti spesso usano è il raffreddamento termoelettrico, in cui l’effetto Peltier - una differenza di temperature creata applicando una tensione fra due elettrodi connessi a un campione di materiale semiconduttore - è usato per raffreddare un lato di una piastra riscaldando l’altra. Sebbene questo fenomeno aiuti a rimuovere il calore dal dispositivo, il raffreddamento Peltier presenta un grosso svantaggio: richiede una potenza esterna significativa. Nel nostro caso, il flusso d’aria non costituiva una soluzione perché la quantità d’aria nell’alloggiamento è limitata e l’aria rende uniforme la temperatura in tempi rapidi. Neanche il raffreddamento ad acqua era possibile, per via della distanza dell’apparecchio da una sorgente d’acqua. Perciò per noi l’effetto Peltier era l’unica opzione di raffreddamento. Dato che la temperatura ambiente è fissa (non possiamo riscaldare una grande quantità di fluido, per un’entità di massa molto grande), il raffreddatore termoelettrico ridurrà la temperatura effettiva dell’elettronica. Purtroppo, dato che occorre una corrente elevata per i dispositivi di raffreddamento e che viene usato un conduttore molto lungo per connettere la superficie all’apparecchio, solo una corrente limitata è effettivamente disponibile per il raffreddamento e di conseguenza si ottiene solo un piccolo calo di temperatura. Inoltre, il nostro dispositivo è una fotocamera e la qualità delle immagini diminuisce esponenzialmente con la temperatura. Di conseguenza, abbiamo dovuto ottimizzare le nostre strategie di raffreddamento per raffreddare il più possibile i sensori d’immagine e non gli altri dispositivi come Fpga, memorie, driver per Led o circuiti di alimentazione. Dato che il raffreddamento degli Fpga era impossibile a causa della scelta di limitare le celle Peltier di raffreddamento solo sui sensori di immagine, la nostra unica opzione era quella di ridurre la temperatura di picco all’interno dell’Fpga.

I punti caldi e l’aumento delle temperature

Esistono tre fonti di consumo di potenza in un dispositivo digitale: dinamica, statica e per effetto Joule. Il consumo di potenza dinamica è la potenza richiesta per caricare e scaricare le capacità distribuite quando un gate commuta; è proporzionale alla velocità del clock e alla capacità totale. Il consumo di potenza statica è una funzione del tipo di dispositivo, della tensione interna e della tecnologia. La potenza può essere consumata dall’unità centrale o dagli I/O. Quando il calore è generato in un punto nello spazio, si distribuirà intorno e produrrà un riscaldamento dell’area circostante. Se questa non costituisce una sorgente di calore, allora il calore si diffonderà e l’aumento di temperatura sarà limitato. In ultima analisi, la temperatura diverrà uniforme nell’intero dispositivo a patto di attendere per un tempo sufficiente. Se l’area circostante è costituita da altre sorgenti di calore, allora ci sarà un aumento netto delle temperature, dal momento che ciascuna sorgente apporterà calore all’altra. Se molte sorgenti di calore sono raggruppate in un’area piccola, allora la temperatura di quell’area aumenterà di più che altrove, generando un punto caldo. Essendo la temperatura di giunzione di un dispositivo limitata, di fatto la temperatura del punto più caldo non dovrebbe superare la temperatura massima di giunzione. Conoscendo il consumo di potenza di un dispositivo e la temperatura del package, tutto ciò che possiamo stimare è la temperatura media della giunzione. L’ultima sorgente di calore è legata al flusso di corrente all’interno dei conduttori, che produce l’effetto Joule.

Quando si supera la temperatura massima

Con l’aumentare delle temperature operative, il tempo di vita di un dispositivo diminuisce e il componente invecchiea più rapidamente. Alcuni processi di invecchiamento, come l’elettromigrazione e la corrosione, si verificano solo alle temperature più alte. L’elettromigrazione ha luogo in presenza di umidità e di un campo elettrico, quando gli atomi di un conduttore si spostano in forma ionica dalla loro posizione originaria per riposizionarsi altrove, lasciando dietro di sé un vuoto. Quest’ultimo ridurrà l’ampiezza effettiva del conduttore in quel punto e produrrà un aumento del campo elettrico locale, inducendo così l’elettromigrazione. Questa reazione a catena produrrà una rottura dove gli atomi si sono allontanati o un cortocircuito dove gli atomi si sono riposizionati. Alcuni strati di molecole di acqua potrebbero essere sufficienti per scatenare il processo di ionizzazione del metallo e per innescare l’elettromigrazione. Il fenomeno aumenta con la temperatura. La corrosione è prodotta dall’umidità e dalla presenza di un gas corrosivo. I materiali semiconduttori sono incapsulati nei propri package protettivi. Tali package in genere assorbono l’umidità ma sono realizzati in materiali che non producono soluzioni ioniche corrosive. La corrosione interessa la piedinatura e i fili di saldatura. Le sostanze corrosive più importanti sono il fosforo presente nello strato di passivazione del silicio e alcuni contaminanti lasciati dal processo di fabbricazione del silicio o dal processo di realizzazione del package. Il contatto con la pelle umana e con altre sostanze chimiche durante il trasporto, la saldatura e l’assemblaggio sono altre fonti potenziali di contaminazione prodotta da atomi corrosivi. Quando materiali dissimili vengono connessi fra loro, il materiale meno nobile si corroderà rispetto a quello più nobile. Questo tipo di corrosione è un’ulteriore causa del degrado nel tempo. Quando la temperatura di giunzione viene superata, il tempo di vita dei dispositivi non è più garantito e può risultare drasticamente ridotto. Se la temperatura continua a salire, il dispositivo si guasterà immediatamente. Le prestazioni di un dispositivo dipendono anche dalla velocità. I dispositivi tendono ad essere più lenti alle alte temperature e di conseguenza la velocità massima del clock si riduce. Il motivo per cui l’Fpga Spartan6 XA (di classe automotive) è limitato a 125°C è per via dei requisiti minimi sul tempo di vita e sulle prestazioni garantite in termini di frequenza. Altri motivi includono le perdite delle celle Ram e, di conseguenza, gli errori sui bit.

Diverse soluzioni possibili

Per superare queste criticità abbiamo messo a punto diverse soluzioni: una delle decisioni più importanti è stata quella di scegliere le dimensioni più adatte del dispositivo. I dispositivi di dimensioni maggiori sono caratterizzati da un consumo di potenza statica più elevato, ma consentono una distribuzione migliore del calore all’interno del dispositivo, evitando così i punti caldi. I dispositivi qualificati per applicazioni automotive sono caratterizzati da un tempo di vita lungo alle alte temperature e ammettono un tempo di vita più breve rispetto alle applicazioni industriali. Abbiamo valutato il codice nei dispositivi LX25 ed LX45 della serie XA e misurato il consumo di potenza totale e la temperatura interna del dispositivo. Talvolta risulta accettabile una temperatura media del dispositivo più alta se la temperatura di picco è inferiore. Abbiamo anche valutato il tempo di vita in test d’invecchiamento accelerati. La scelta di progetto successiva è stata di porre un limite all’uso del dispositivo. Al fine di ridurre il calore dissipato, abbiamo evitato di usare tutta la logica programmabile e la memoria a disposizione. Le parti inutilizzate del dispositivo consumano potenza di tipo statica ma non dinamica. Abbiamo anche effettuato il clock gating. Dato che la potenza dinamica dipende dalla velocità del clock, possiamo usare il clock gating per eliminare il consumo di potenza dinamica dei blocchi che non sono in uso. Se l’albero del clock non commuta, il consumo di potenza in quella parte del dispositivo risulta ridotto. Abbiamo anche ridotto il numero degli I/O in uso. In seguito, usando alcuni I/O come le masse virtuali, abbiamo ridotto la distanza percorsa dalla corrente all’interno del dispositivo e abbiamo diminuito l’effetto Joule nella distribuzione dell’alimentazione. Le masse virtuali inoltre aiutano a condurre calore nel piano di massa. Siccome non volevamo usare tutti gli I/O e le celle logiche, abbiamo scelto di distribuire il progetto su due Fpga.
Ciò significa che il calore è dissipato in due zone separate. Abbiamo anche usato più piani di massa. Questa tecnica aiuta a trasferire il calore dalle aree più calde a quelle più fredde ed inoltre fornisce ulteriore capacità termica. È importante progettare i piani termici per assicurare l’affidabilità della scheda contro la delaminazione durante i cicli di temperatura. Un altro passaggio importante è stato l’ottimizzazione del codice per ridurre la velocità del clock. La riduzione della velocità del clock diminuisce il consumo di potenza, e in più consente al dispositivo di operare a temperature più alte. Per migliorare il progetto, abbiamo assicurato che i componenti fossero essiccati prima dell’assemblaggio finale e applicato un rivestimento protettivo per respingere l’umidità. Abbiamo anche fatto uso di un processo d’invecchiamento accelerato in produzione per pre-invecchiare il dispositivo e scartare i componenti che sembravano invecchiare più rapidamente. Un altro aspetto importante per la progettazione è stato l’uso di uno schema di controllo ciclico della ridondanza e di altri algoritmi di individuazione e di correzione degli errori. Abbiamo usato queste tecniche in diversi punti all’interno del progetto al fine di recuperare gli errori sui bit nelle celle di memoria o nella comunicazione. Anche le macchine a stati vengono ripristinate se finiscono in uno stato non utilizzato. L’uso del Power Estimator di Xilinx è stato un buon primo passo nell’esecuzione del nostro progetto. La Vivado Design Suite è dotata di tool per la stima dei consumi. Tuttavia la misura del consumo di potenza sui dispositivi reali e i confronti fra le versioni del codice si sono dimostrati la prassi migliore e più accurata.

Pubblica i tuoi commenti