可能损坏FPGA的VHDL


22

我在某处读到错误的VHDL代码会导致FPGA损坏。

甚至有可能用VHDL代码损坏FPGA吗?什么样的情况会导致这种情况?最坏的情况是什么?


2
我能想到的唯一情形是一种设计,其中有很多FF被计时,以加热FPGA。
克劳迪奥·阿维·查米

好吧,它可以并入设计不良的电路中,如果编程不正确,它将在燃烧的物体周围流过一些电流。
尤金(Eugene Sh)。

3
最坏的情况可能是fpga用于机器学习并创建破坏世界和宇宙的流氓AI。更严重的是,如果您在连接到计算机的fpga中使用未经检查的代码,则可能会感染该计算机。另外,如果用于控制大功率设备,则可以烧毁建筑物。
satibel

Answers:


25

除了@Anonymous的答案,还有一些可以构建的设计可能会损坏FPGA的结构。

对于初学者,如果您构建一个非常庞大的设计,其中包含大量寄存器(例如,FPGA的70%),所有寄存器的时钟频率都接近FPGA的最大频率,则可能会严重加热硅。没有足够的冷却,可能会导致物理损坏。我们损失了1万3千美元的FPGA,因为由于开发套件的散热系统太差而使其过热。

另一个更简单的情况是组合循环。例如,如果实例化三个环在一起的非门,并禁用或忽略关于这种结构的合成器警告,则可能形成对FPGA非常不利的东西。在此示例中,您将制作一个多GHz振荡器,该振荡器可能会在很小的区域内产生大量热量,这可能会损坏ALM和周围的逻辑。


1
有时将组合循环建议为真随机数生成器。我没有使用环形振荡器的经验,但是我怀疑只有三个门会对您造成任何伤害。但是,将其输出驱动到许多门可能会造成危害。
Andreas

7
thx我有2-3个板子现在没用了,因为它们上的spartan 6存在设计错误。我会尝试一下:P
AntoineLev '17

也可以加载一个阻止加载其他位流的位流,或者至少使其很难执行。
弗拉基米尔·克拉韦罗(Fladimir Cravero)

8

在这种情况下,代码不是正确的词。尽管Verilog或VHDL看起来像程序,但编译器的输出是一种配置,该配置被加载到FPGA芯片中并在其中形成电子电路。

我想到两种类型:

  • 物理损坏:例如,几个FPGA引脚连接在一起(或连接到另一个设备),并同时开始输出不同的逻辑电压。电流-可能是过大的电流-最终会损坏栅极;
  • 逻辑损坏:电路可能无法正确处理闪存芯片或配置设备,并破坏其中的数据映像,最终整个设备会发生故障。

4
物理损坏的主题可能是OP报价的来源。作为软件开发人员,有人告诉我一个普遍的规则,即“软件”不应对设备造成物理伤害,而“固件”可能会造成损坏,例如将两个潜水员彼此连接。
科特·阿蒙-恢复莫妮卡

2
@CortAmmon“例如将两个潜水器彼此连接”-这是一个空气软管交叉连接开关吗?
user253751'17

1
@immibis你抓到我了!实际规则是“在伙伴呼吸时,不要依赖伙伴头部中的软件/ squishyware软件,而要始终牢牢掌握您的调节器。” ;-)
Cort Ammon-恢复莫妮卡

3

如果任何其他驱动它们的刚度足够大,则将一组输入引脚错误地配置为输出可能会这样做。

我不知道在IO bank由过高的电压(例如3.3V电源和1.8V IO标准,或输入的反方向)供电时,为LVDS或LVCMOS标准之一配置一些引脚是否可行它?

显然,通过做一些愚蠢的事情(例如实例化许多环形振荡器),可能会出现热问题。


作为设计约束的I / O标准仅用于时序计算。如果I / O bank是3.3 V bank,并且由3.3V供电,那么如果您选择1.8 V标准,则不会发生任何事情。
Paebbels

@Paebbels,不确定使用的是哪个工具,但是通常在设置I / O标准时,它会控制该I / O位置的电压。如果将FPGA输入引脚的电压设置为比外部设备驱动该引脚的电压低得多的电压,则该FPGA输入可能会损坏。
恰诺

@钢琴不正确。引脚电压取决于I / O bank电压,而不取决于约束。
Paebbels

1

可以在运行时使用新的(部分)比特流来重新配置FPGA。通常,此流是从外部源加载的,但是您也可以在FPGA中自行创建(例如,通过嵌入式软核CPU)。使用这样的解决方案(例如,动态重定位子设计)并不能像厂商工具那样提供所有的一致性检查。因此,如果算法被破坏,则可以在FPGA中启用虚假路径晶体管并将其烧毁。

您还可以为PLL或收发器之类的FPGA原语选择错误的操作模式。

动态重新配置就像软件中的自修改代码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.