Ho letto da qualche parte che un cattivo codice VHDL può portare a danni FPGA.
È persino possibile danneggiare un FPGA con codice VHDL? Che tipo di condizioni causerebbe questo e quali sono gli scenari peggiori?
Ho letto da qualche parte che un cattivo codice VHDL può portare a danni FPGA.
È persino possibile danneggiare un FPGA con codice VHDL? Che tipo di condizioni causerebbe questo e quali sono gli scenari peggiori?
Risposte:
Aggiungendo alla risposta di @ Anonimo, ci sono progetti che puoi costruire che possono danneggiare il tessuto di un FPGA.
Per i principianti se si costruisce un design molto grande costituito da enormi quantità di registri (ad esempio il 70% dell'FPGA) tutti con clock vicino alla frequenza massima degli FPGA, è possibile riscaldare considerevolmente il silicio. Senza un raffreddamento sufficiente ciò può causare danni fisici. Abbiamo perso un FPGA da $ 13k perché si è surriscaldato a causa del kit di sviluppo con un terribile sistema di raffreddamento.
Un altro caso più semplice possono essere i cicli combinatori. Ad esempio, se si istanziano tre porte non incatenate insieme in un anello e si disabilitano o si ignorano gli avvisi dei sintetizzatori su tale struttura, è possibile formare qualcosa di molto dannoso per un FPGA. In questo esempio creeresti un oscillatore multi-GHz che potrebbe produrre molto calore in un'area molto piccola, probabilmente danneggiando l'ALM e la logica circostante.
Codice non è una parola giusta in questo contesto. Mentre Verilog o VHDL sembrano programmi, l'output del compilatore è una configurazione che viene caricata nel chip FPGA formando un circuito elettronico al suo interno.
Mi vengono in mente due tipi:
La configurazione errata di un blocco di pin di input poiché le uscite potrebbero farlo se qualsiasi altra cosa li sta guidando è abbastanza rigida.
Non so se la configurazione di alcuni pin per LVDS o uno degli standard LVCMOS mentre il banco IO sia alimentato da una tensione eccessivamente alta (potenza 3,3 V con uno standard IO 1,8 ad esempio, o l'opposto su un ingresso) farebbe vero?
Ovviamente i problemi termici possono essere una possibilità facendo qualcosa di stupido come istanziare molti, molti, oscillatori ad anello.
Gli FPGA possono essere riconfigurati in fase di esecuzione con un nuovo bitstream (parziale). Normalmente, questo flusso viene caricato da una fonte esterna, ma è anche possibile crearlo da solo nell'FPGA (ad esempio da una CPU softcore integrata). L'uso di tale soluzione, ad esempio per trasferire in modo dinamico i progetti secondari, non fornisce tutti i controlli di coerenza eseguiti dagli strumenti del fornitore. Quindi, se il tuo algoritmo è rotto, potresti abilitare i transistor di false path in un FPGA e bruciarli.
Potresti anche scegliere false modalità operative per primitive FPGA come PLL o ricetrasmettitori.
La riconfigurazione dinamica è come un codice di auto-modifica nel software.