不良なVHDLコードがFPGAの損傷につながる可能性があることをどこかで読みました。
VHDLコードでFPGAを損傷することさえ可能ですか?どのような条件がこれを引き起こし、最悪のシナリオは何ですか?
不良なVHDLコードがFPGAの損傷につながる可能性があることをどこかで読みました。
VHDLコードでFPGAを損傷することさえ可能ですか?どのような条件がこれを引き起こし、最悪のシナリオは何ですか?
回答:
@Anonymousの答えに加えて、FPGAのファブリックを損傷する可能性のある設計を作成できます。
手始めに、すべてがFPGAの最大周波数近くでクロックされる膨大な量のレジスタ(FPGAの70%など)で構成される非常に大きなデザインを構築する場合、シリコンをかなり加熱することができます。十分に冷却しないと、物理的な損傷を引き起こす可能性があります。開発キットにひどい冷却システムがあるため過熱したため、$ 13k FPGAを失いました。
もう1つの単純なケースは、組み合わせループです。たとえば、リングにつながれた3つのゲートをインスタンス化し、そのような構造に関するシンセサイザーの警告を無効または無視した場合、FPGAにとって非常に悪いものを形成できます。この例では、非常に狭い領域で大量の熱を発生させる可能性のあるマルチGHz発振器を作成し、ALMおよび周囲のロジックに損傷を与える可能性があります。
この文脈では、コードは正しい言葉ではありません。VerilogまたはVHDLはプログラムのように見えますが、コンパイラの出力は、FPGAチップにロードされる構成であり、FPGAチップ内で電子回路を形成します。
2つのタイプが思い浮かびます。
入力ピンのブロックを誤って設定すると、それを駆動しているものが十分に硬い場合に出力がそれを行う可能性があります。
IOバンクに過度に高い電圧(たとえば、1.8V IO規格の3.3V電力、または入力の反対)から電力が供給されているときに、LVDSまたはLVCMOS規格のいずれかのピンを設定するとどうなるかわかりませんそれ?
明らかに、多くのリングオシレーターをインスタンス化するような愚かなことを行うことで、熱の問題が発生する可能性があります。
FPGAは、新しい(部分)ビットストリームを使用して実行時に再構成できます。通常、このストリームは外部ソースからロードされますが、FPGAで自分で作成することもできます(組み込みソフトコアCPUなど)。たとえば、サブデザインを動的に再配置するためにこのようなソリューションを使用しても、ベンダーツールで行われるような一貫性チェックのすべてが提供されるわけではありません。そのため、アルゴリズムが破損している場合、FPGAでフォールスパストランジスタを有効にして焼き付ける可能性があります。
また、PLLやトランシーバーなどのFPGAプリミティブに対して偽動作モードを選択することもできます。
動的再構成は、ソフトウェアの自己修正コードに似ています。