VHDL yang dapat merusak FPGA

22

Saya membaca di suatu tempat bahwa kode VHDL yang buruk dapat menyebabkan kerusakan FPGA.

Apakah mungkin untuk merusak FPGA dengan kode VHDL? Kondisi seperti apa yang menyebabkan ini dan apa skenario terburuknya?

AntoineLev
sumber
2
Satu-satunya skenario yang bisa saya pikirkan adalah desain di mana banyak, banyak FF yang clocked untuk memanaskan FPGA.
Claudio Avi Chami
Yah, itu dapat dimasukkan dalam sirkuit yang dirancang dengan buruk, yang akan menjalankan beberapa arus sekitar membakar barang jika tidak diprogram dengan benar.
Eugene Sh.
3
skenario terburuk mungkin adalah bahwa FPGA digunakan untuk pembelajaran mesin dan menciptakan AI jahat yang menghancurkan dunia dan alam semesta. lebih serius, jika Anda menggunakan kode yang tidak dicentang di FPGA yang terhubung ke komputer, itu dapat menginfeksi komputer tersebut. juga jika digunakan untuk mengontrol perangkat daya tinggi, Anda dapat membakar gedung.
satibel

Jawaban:

25

Menambah jawaban @ Anonymous, ada desain yang bisa Anda buat yang dapat merusak jalinan FPGA.

Sebagai permulaan jika Anda membangun desain yang sangat besar yang terdiri dari register dalam jumlah sangat besar (misalnya 70% dari FPGA) yang semuanya sudah mendekati frekuensi maksimum FPGA, dimungkinkan untuk memanaskan silikon secara signifikan. Tanpa pendinginan yang memadai ini dapat menyebabkan kerusakan fisik. Kami kehilangan FPGA $ 13k karena terlalu panas karena dev-kit memiliki sistem pendingin yang mengerikan.

Kasus lain yang lebih sederhana adalah loop kombinasional. Misalnya jika Anda membuat tiga gerbang tidak dirantai bersama dalam sebuah cincin, dan menonaktifkan atau mengabaikan peringatan synthesizer tentang struktur seperti itu, Anda dapat membentuk sesuatu yang sangat buruk untuk FPGA. Dalam contoh ini Anda akan membuat osilator multi-GHz yang dapat menghasilkan banyak panas di area yang sangat kecil, mungkin merusak ALM dan logika sekitarnya.

Tom Carpenter
sumber
1
Loop kombinatorial kadang-kadang disarankan sebagai generator nomor-benar-acak. Saya tidak punya pengalaman dengan osilator dering , tapi saya ragu hanya tiga gerbang yang akan membahayakan. Mengemudi outputnya ke banyak gerbang mungkin akan membahayakan.
Andreas
7
thx saya punya 2-3 papan sekarang tidak berguna karena kesalahan desain dengan spartan 6 pada mereka. Saya akan coba ini: P
AntoineLev
Dimungkinkan juga untuk memuat bitstream yang mencegah memuat bitstream lain, atau setidaknya membuatnya cukup sulit untuk dilakukan.
Vladimir Cravero
8

Kode bukan kata yang tepat dalam konteks ini. Sementara Verilog atau VHDL terlihat seperti program, output dari kompiler adalah konfigurasi yang dimuat ke dalam chip FPGA yang membentuk sirkuit elektronik di dalamnya.

Dua tipe muncul di benak saya:

  • kerusakan fisik: misalnya, beberapa pin FPGA dihubungkan bersama (atau ke perangkat lain) dan mulai mengeluarkan tegangan logis yang berbeda secara bersamaan. Arus mengalir - mungkin arus berlebih - yang pada akhirnya merusak gerbang;
  • kerusakan logis: sirkuit mungkin menangani chip flash, atau konfigurasi perangkat tidak benar, dan merusak data gambar di dalamnya, seluruh perangkat ini akhirnya gagal berfungsi.
Anonim
sumber
4
Topik kerusakan fisik mungkin dari mana kutipan OP berasal. Sebagai pengembang perangkat lunak, saya telah diberi tahu aturan umum bahwa "perangkat lunak" seharusnya tidak dapat melakukan kerusakan fisik pada perangkat sementara "firmware" dapat menyebabkan kerusakan, seperti menghubungkan dua penyelam satu sama lain.
Cort Ammon - Pasang kembali Monica
2
@CortAmmon "seperti menghubungkan dua penyelam satu sama lain" - Apa ini, sakelar penghubung selang udara?
user253751
1
@immibis, Anda menangkap saya! Aturan sebenarnya adalah "jangan mengandalkan perangkat lunak / squishyware di kepala teman Anda saat buddy bernapas, sebaliknya selalu pegang teguh pada regulator Anda." ;-)
Cort Ammon - Pasang kembali Monica
3

Kesalahan konfigurasi blok pin input karena output mungkin melakukannya jika apa pun yang mendorongnya cukup kaku.

Saya tidak tahu apakah mengonfigurasi beberapa pin untuk LVDS atau salah satu standar LVCMOS sementara bank IO ditenagai dari tegangan yang terlalu tinggi (kekuatan 3.3V dengan standar IO 1.8V misalnya, atau sebaliknya pada input) akan melakukan saya t?

Jelas masalah termal dapat terjadi dengan melakukan sesuatu yang konyol seperti membuat banyak, banyak, cincin osilator.

Dan Mills
sumber
Standar I / O yang diberikan sebagai kendala pada desain hanya untuk perhitungan waktu. Jika bank I / O adalah bank 3.3 V dan didukung oleh 3.3V tidak ada yang terjadi jika Anda memilih standar 1,8 V.
Paebbels
@ Paebbels, tidak yakin alat mana yang Anda gunakan tetapi biasanya ketika Anda menetapkan standar I / O itu mengontrol tegangan lokasi I / O itu. Jika pin input FPGA diatur ke tegangan yang jauh lebih rendah daripada apa yang dipacu perangkat eksternal ke pin itu, input FPGA itu bisa rusak.
Ciano
@Ciano itu tidak benar. Tegangan pin tergantung pada tegangan bank I / O bukan pada kendala.
Paebbels
1

FPGA dapat dikonfigurasi ulang saat runtime dengan bitstream (parsial) baru. Biasanya, aliran ini diambil dari sumber eksternal, tetapi Anda juga dapat membuatnya sendiri di FPGA (mis. Oleh CPU softcore tertanam). Menggunakan solusi semacam itu untuk misalnya memindahkan subdesign secara dinamis, tidak memberikan semua pemeriksaan konsistensi seperti yang dilakukan oleh alat vendor. Jadi, jika algoritme Anda rusak, Anda mungkin mengaktifkan transistor jalur palsu dalam FPGA dan membakarnya.

Anda juga dapat memilih mode operasi palsu untuk primitif FPGA seperti PLL atau transceiver.

Konfigurasi ulang dinamis seperti kode modifikasi sendiri dalam perangkat lunak.

Paebbels
sumber