Can you actually break an FPGA by programming it wrong?Protecting fpga / ram against mistakesHow is ASIC design different from FPGA HDL synthesis?Open Source verilog synthesizerTransferring data from FPGA to PC (new to FPGAs)FPGA - Data transfer via EthernetFPGA input pin internal floatingUse ancient Altera MAX II board in modern environmentConfigure (upload bitstream) to MAX10 without Altera tools using LinuxAre there CPLD / FPGA toolchains and workflows that bypass vendor IDEs?Systemverilog code reuse, minimizing reuse error, and FPGA internal resource optimization
Could human civilization live 150 years in a nuclear-powered aircraft carrier colony without resorting to mass killing/ cannibalism?
Chords behaving as a melody
Could the Q destroy the universe?
One folder having two different locations on Ubuntu 18.04
Why do changes to /etc/hosts take effect immediately?
Find first and last non-zero column in each row of a pandas dataframe
Can Aziraphale and Crowley actually become native?
Losing queen and then winning the game
Why were the first airplanes "backwards"?
How did researchers find articles before the Internet and the computer era?
How can a valley surrounded by mountains be fertile and rainy?
Do the 26 richest billionaires own as much wealth as the poorest 3.8 billion people?
Should fiction mention song names and iPods?
If two black hole event horizons overlap (touch) can they ever separate again?
Step into the Octagram
Can a function nowhere continuous have a connected graph?
What does grep -v "grep" mean and do?
Can two or more lightbeams (from a laser for example) have visible interference when they cross in mid-air*?
Details of video memory access arbitration in Space Invaders
Why do I need two parameters in an HTTP parameter pollution attack?
Why would anyone even use a Portkey?
Is there a canon reason why Klingon and Romulan vessels are so similar in shape?
I'm reinstalling my Linux desktop, how do I keep SSH logins working?
Integral from infinity to infinity
Can you actually break an FPGA by programming it wrong?
Protecting fpga / ram against mistakesHow is ASIC design different from FPGA HDL synthesis?Open Source verilog synthesizerTransferring data from FPGA to PC (new to FPGAs)FPGA - Data transfer via EthernetFPGA input pin internal floatingUse ancient Altera MAX II board in modern environmentConfigure (upload bitstream) to MAX10 without Altera tools using LinuxAre there CPLD / FPGA toolchains and workflows that bypass vendor IDEs?Systemverilog code reuse, minimizing reuse error, and FPGA internal resource optimization
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
$begingroup$
Can you actually break an FPGA by programming it incorrectly?
I'm a software guy really. It's no secret that if your software is wrong, you could destroy all sorts of important data, and perhaps even crash the whole machine. But it's really difficult to physically damage a computer just by programming it.
(There are endless rumous of a Halt-And-Catch-Fire instruction, or being able to reflash the system firmware to brick the motherboard, or programming incorrect values into the graphics card to fry your monitor. But these all seem to be exactly that: rumours. And all about long-obsolete hardware. It seems really, really hard to break modern computer equipment with bad programming.)
With an FPGA, you are (at least nominally) wiring individual circuits together. It seems completely plausible that physical damage might occur in case of a mistake.
For example, you could write some VHDL requesting that two outputs get tied together. If they output different logic levels, I imagine that would probably fry something. (I would hope that your synthesis tool would scream at you to not do this... but I don't know if such tools actually implement that level of error checking.)
It also seems quite possible to accidentally pick the wrong model of FPGA in the synthesis tool, and thus ending up trying to program your chip with a bitstream intended for some totally different model. I don't know what that would do, but I suspect it would be "bad".
For that matter, you could definitely connect the FPGA chip to the rest of the circuit incorrectly. E.g., if you mess up the pin numbers, you might end up with the board trying to drive an I/O pin that the FPGA itself is also trying to drive. Do the I/O pins typically have any "protection" against such a mistake? Or will the chip just fry?
fpga
$endgroup$
add a comment |
$begingroup$
Can you actually break an FPGA by programming it incorrectly?
I'm a software guy really. It's no secret that if your software is wrong, you could destroy all sorts of important data, and perhaps even crash the whole machine. But it's really difficult to physically damage a computer just by programming it.
(There are endless rumous of a Halt-And-Catch-Fire instruction, or being able to reflash the system firmware to brick the motherboard, or programming incorrect values into the graphics card to fry your monitor. But these all seem to be exactly that: rumours. And all about long-obsolete hardware. It seems really, really hard to break modern computer equipment with bad programming.)
With an FPGA, you are (at least nominally) wiring individual circuits together. It seems completely plausible that physical damage might occur in case of a mistake.
For example, you could write some VHDL requesting that two outputs get tied together. If they output different logic levels, I imagine that would probably fry something. (I would hope that your synthesis tool would scream at you to not do this... but I don't know if such tools actually implement that level of error checking.)
It also seems quite possible to accidentally pick the wrong model of FPGA in the synthesis tool, and thus ending up trying to program your chip with a bitstream intended for some totally different model. I don't know what that would do, but I suspect it would be "bad".
For that matter, you could definitely connect the FPGA chip to the rest of the circuit incorrectly. E.g., if you mess up the pin numbers, you might end up with the board trying to drive an I/O pin that the FPGA itself is also trying to drive. Do the I/O pins typically have any "protection" against such a mistake? Or will the chip just fry?
fpga
$endgroup$
add a comment |
$begingroup$
Can you actually break an FPGA by programming it incorrectly?
I'm a software guy really. It's no secret that if your software is wrong, you could destroy all sorts of important data, and perhaps even crash the whole machine. But it's really difficult to physically damage a computer just by programming it.
(There are endless rumous of a Halt-And-Catch-Fire instruction, or being able to reflash the system firmware to brick the motherboard, or programming incorrect values into the graphics card to fry your monitor. But these all seem to be exactly that: rumours. And all about long-obsolete hardware. It seems really, really hard to break modern computer equipment with bad programming.)
With an FPGA, you are (at least nominally) wiring individual circuits together. It seems completely plausible that physical damage might occur in case of a mistake.
For example, you could write some VHDL requesting that two outputs get tied together. If they output different logic levels, I imagine that would probably fry something. (I would hope that your synthesis tool would scream at you to not do this... but I don't know if such tools actually implement that level of error checking.)
It also seems quite possible to accidentally pick the wrong model of FPGA in the synthesis tool, and thus ending up trying to program your chip with a bitstream intended for some totally different model. I don't know what that would do, but I suspect it would be "bad".
For that matter, you could definitely connect the FPGA chip to the rest of the circuit incorrectly. E.g., if you mess up the pin numbers, you might end up with the board trying to drive an I/O pin that the FPGA itself is also trying to drive. Do the I/O pins typically have any "protection" against such a mistake? Or will the chip just fry?
fpga
$endgroup$
Can you actually break an FPGA by programming it incorrectly?
I'm a software guy really. It's no secret that if your software is wrong, you could destroy all sorts of important data, and perhaps even crash the whole machine. But it's really difficult to physically damage a computer just by programming it.
(There are endless rumous of a Halt-And-Catch-Fire instruction, or being able to reflash the system firmware to brick the motherboard, or programming incorrect values into the graphics card to fry your monitor. But these all seem to be exactly that: rumours. And all about long-obsolete hardware. It seems really, really hard to break modern computer equipment with bad programming.)
With an FPGA, you are (at least nominally) wiring individual circuits together. It seems completely plausible that physical damage might occur in case of a mistake.
For example, you could write some VHDL requesting that two outputs get tied together. If they output different logic levels, I imagine that would probably fry something. (I would hope that your synthesis tool would scream at you to not do this... but I don't know if such tools actually implement that level of error checking.)
It also seems quite possible to accidentally pick the wrong model of FPGA in the synthesis tool, and thus ending up trying to program your chip with a bitstream intended for some totally different model. I don't know what that would do, but I suspect it would be "bad".
For that matter, you could definitely connect the FPGA chip to the rest of the circuit incorrectly. E.g., if you mess up the pin numbers, you might end up with the board trying to drive an I/O pin that the FPGA itself is also trying to drive. Do the I/O pins typically have any "protection" against such a mistake? Or will the chip just fry?
fpga
fpga
asked 8 hours ago
MathematicalOrchidMathematicalOrchid
6991 gold badge7 silver badges13 bronze badges
6991 gold badge7 silver badges13 bronze badges
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
$begingroup$
It also seems quite possible to accidentally pick the wrong model of FPGA in the synthesis tool, and thus ending up trying to program your chip with a bitstream intended for some totally different model.
Typically the programming software will query the part being programmed for its part number, and refuse to program in a bitstream meant for a different model of FPGA.
The part itself will also generally refuse to start up if programmed with a bitstream that isn't exactly the correct length (and it's very uncommon for bitstreams for different chips to be the same length).
you could definitely connect the FPGA chip to the rest of the circuit incorrectly. E.g., if you mess up the pin numbers, you might end up with the board trying to drive an I/O pin that the FPGA itself is also trying to drive.
This is the most likely way to damage an FPGA with wrong programming.
Another way could be to program a very resource intensive design and run it at a high frequency (so that a high power is consumed), and then run it on an FPGA without an adequate heat sink.
Do the I/O pins typically have any "protection" against such a mistake? Or will the chip just fry?
Output pins will "often" survive a short circuit condition for a few seconds or even minutes. But nothing is guaranteed.
$endgroup$
$begingroup$
Interesting. Is it usual for FPGAs to need active cooling? Oh, I suppose that's an entire question in its own right. (And I guess the answer depends on many things — such as whether you bought a £15 or a £15,000 FPGA!)
$endgroup$
– MathematicalOrchid
7 hours ago
1
$begingroup$
@MathematicalOrchid, Not necessarily active cooling, but heatsinks and forced air are pretty common. The FPGA vendors usually provide a very complex spreadsheet to help determine (based on the part, the design, the clock frequency, etc) how big a heat sink and how big a fan are needed.
$endgroup$
– The Photon
7 hours ago
add a comment |
$begingroup$
With a few noted exceptions, tools don't generally give you access to the actual silicon primitives, so it's hard for an end-user engineer to load an electrically invalid design* into an SRAM-based FPGA, except perhaps by inadvertently discovering a tool bug.
Flash based FPGAs might conceivably have their re-programmability damaged by certain invalid loads. OTP FPGAs implicitly are "damaged" by even a valid configuration load, as it can never be changed.
Ultimately what comes closest to what you are seeming to ask, and to your HCF example, would be a configuration which produced intolerable thermal stress. Power consumption is quite directly driven by clock rate and volume * activity of utilized logic, so if you can trick the tools into uselessly toggling most of the flip flops on the chip at maximum clock (there are ways...) then you can produce a pretty effective heater that would exceed most cooling systems for ordinary usage. Then it's just a question if something protectively shuts it down before it cooks. And of course there are power estimation models in the tools, which are likely reasonably predictive if you're not lying to them about the clock signal provided.
(* There is one interesting class of not-a-bug electrical issue you can cause by lying to the tools, that is not necessarily physically destructive, but still surprising. If you feed a clock different than you said you would or simply unstable, you can violate address setup timing on the synchronous block RAM cells, and do something along the lines of shorting them and corrupting their contents - so you can for example see the contents of something designated a ROM in the design actually change at runtime just by trying to read it with a bad clock. But I don't believe this is physically destructive)
$endgroup$
add a comment |
$begingroup$
The most likely thing is violating the current rating on GPIO's by driving a pin that is already being driven. Some FPGA's have settable current limits or changeable output drivers, so this can either help/hurt you if you don't get your port map done right. You should be double checking your port list anyway before programming as mistakes like swapping pins can take hours to resolve, it's best to get ahead of the mistakes and know exactly what the firmware was intended to do. (unless you like the thrill of finding an error)
HDL's by themselves usually don't let you connect two output's to the same wire and will stop synthesizing and make you fix your mistake if you do have code that does that.
One place that could cause problems is bi-directional ports, but you should have current limiting resistors on those.
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("schematics", function ()
StackExchange.schematics.init();
);
, "cicuitlab");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "135"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f445323%2fcan-you-actually-break-an-fpga-by-programming-it-wrong%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
It also seems quite possible to accidentally pick the wrong model of FPGA in the synthesis tool, and thus ending up trying to program your chip with a bitstream intended for some totally different model.
Typically the programming software will query the part being programmed for its part number, and refuse to program in a bitstream meant for a different model of FPGA.
The part itself will also generally refuse to start up if programmed with a bitstream that isn't exactly the correct length (and it's very uncommon for bitstreams for different chips to be the same length).
you could definitely connect the FPGA chip to the rest of the circuit incorrectly. E.g., if you mess up the pin numbers, you might end up with the board trying to drive an I/O pin that the FPGA itself is also trying to drive.
This is the most likely way to damage an FPGA with wrong programming.
Another way could be to program a very resource intensive design and run it at a high frequency (so that a high power is consumed), and then run it on an FPGA without an adequate heat sink.
Do the I/O pins typically have any "protection" against such a mistake? Or will the chip just fry?
Output pins will "often" survive a short circuit condition for a few seconds or even minutes. But nothing is guaranteed.
$endgroup$
$begingroup$
Interesting. Is it usual for FPGAs to need active cooling? Oh, I suppose that's an entire question in its own right. (And I guess the answer depends on many things — such as whether you bought a £15 or a £15,000 FPGA!)
$endgroup$
– MathematicalOrchid
7 hours ago
1
$begingroup$
@MathematicalOrchid, Not necessarily active cooling, but heatsinks and forced air are pretty common. The FPGA vendors usually provide a very complex spreadsheet to help determine (based on the part, the design, the clock frequency, etc) how big a heat sink and how big a fan are needed.
$endgroup$
– The Photon
7 hours ago
add a comment |
$begingroup$
It also seems quite possible to accidentally pick the wrong model of FPGA in the synthesis tool, and thus ending up trying to program your chip with a bitstream intended for some totally different model.
Typically the programming software will query the part being programmed for its part number, and refuse to program in a bitstream meant for a different model of FPGA.
The part itself will also generally refuse to start up if programmed with a bitstream that isn't exactly the correct length (and it's very uncommon for bitstreams for different chips to be the same length).
you could definitely connect the FPGA chip to the rest of the circuit incorrectly. E.g., if you mess up the pin numbers, you might end up with the board trying to drive an I/O pin that the FPGA itself is also trying to drive.
This is the most likely way to damage an FPGA with wrong programming.
Another way could be to program a very resource intensive design and run it at a high frequency (so that a high power is consumed), and then run it on an FPGA without an adequate heat sink.
Do the I/O pins typically have any "protection" against such a mistake? Or will the chip just fry?
Output pins will "often" survive a short circuit condition for a few seconds or even minutes. But nothing is guaranteed.
$endgroup$
$begingroup$
Interesting. Is it usual for FPGAs to need active cooling? Oh, I suppose that's an entire question in its own right. (And I guess the answer depends on many things — such as whether you bought a £15 or a £15,000 FPGA!)
$endgroup$
– MathematicalOrchid
7 hours ago
1
$begingroup$
@MathematicalOrchid, Not necessarily active cooling, but heatsinks and forced air are pretty common. The FPGA vendors usually provide a very complex spreadsheet to help determine (based on the part, the design, the clock frequency, etc) how big a heat sink and how big a fan are needed.
$endgroup$
– The Photon
7 hours ago
add a comment |
$begingroup$
It also seems quite possible to accidentally pick the wrong model of FPGA in the synthesis tool, and thus ending up trying to program your chip with a bitstream intended for some totally different model.
Typically the programming software will query the part being programmed for its part number, and refuse to program in a bitstream meant for a different model of FPGA.
The part itself will also generally refuse to start up if programmed with a bitstream that isn't exactly the correct length (and it's very uncommon for bitstreams for different chips to be the same length).
you could definitely connect the FPGA chip to the rest of the circuit incorrectly. E.g., if you mess up the pin numbers, you might end up with the board trying to drive an I/O pin that the FPGA itself is also trying to drive.
This is the most likely way to damage an FPGA with wrong programming.
Another way could be to program a very resource intensive design and run it at a high frequency (so that a high power is consumed), and then run it on an FPGA without an adequate heat sink.
Do the I/O pins typically have any "protection" against such a mistake? Or will the chip just fry?
Output pins will "often" survive a short circuit condition for a few seconds or even minutes. But nothing is guaranteed.
$endgroup$
It also seems quite possible to accidentally pick the wrong model of FPGA in the synthesis tool, and thus ending up trying to program your chip with a bitstream intended for some totally different model.
Typically the programming software will query the part being programmed for its part number, and refuse to program in a bitstream meant for a different model of FPGA.
The part itself will also generally refuse to start up if programmed with a bitstream that isn't exactly the correct length (and it's very uncommon for bitstreams for different chips to be the same length).
you could definitely connect the FPGA chip to the rest of the circuit incorrectly. E.g., if you mess up the pin numbers, you might end up with the board trying to drive an I/O pin that the FPGA itself is also trying to drive.
This is the most likely way to damage an FPGA with wrong programming.
Another way could be to program a very resource intensive design and run it at a high frequency (so that a high power is consumed), and then run it on an FPGA without an adequate heat sink.
Do the I/O pins typically have any "protection" against such a mistake? Or will the chip just fry?
Output pins will "often" survive a short circuit condition for a few seconds or even minutes. But nothing is guaranteed.
edited 8 hours ago
answered 8 hours ago
The PhotonThe Photon
90.3k3 gold badges105 silver badges210 bronze badges
90.3k3 gold badges105 silver badges210 bronze badges
$begingroup$
Interesting. Is it usual for FPGAs to need active cooling? Oh, I suppose that's an entire question in its own right. (And I guess the answer depends on many things — such as whether you bought a £15 or a £15,000 FPGA!)
$endgroup$
– MathematicalOrchid
7 hours ago
1
$begingroup$
@MathematicalOrchid, Not necessarily active cooling, but heatsinks and forced air are pretty common. The FPGA vendors usually provide a very complex spreadsheet to help determine (based on the part, the design, the clock frequency, etc) how big a heat sink and how big a fan are needed.
$endgroup$
– The Photon
7 hours ago
add a comment |
$begingroup$
Interesting. Is it usual for FPGAs to need active cooling? Oh, I suppose that's an entire question in its own right. (And I guess the answer depends on many things — such as whether you bought a £15 or a £15,000 FPGA!)
$endgroup$
– MathematicalOrchid
7 hours ago
1
$begingroup$
@MathematicalOrchid, Not necessarily active cooling, but heatsinks and forced air are pretty common. The FPGA vendors usually provide a very complex spreadsheet to help determine (based on the part, the design, the clock frequency, etc) how big a heat sink and how big a fan are needed.
$endgroup$
– The Photon
7 hours ago
$begingroup$
Interesting. Is it usual for FPGAs to need active cooling? Oh, I suppose that's an entire question in its own right. (And I guess the answer depends on many things — such as whether you bought a £15 or a £15,000 FPGA!)
$endgroup$
– MathematicalOrchid
7 hours ago
$begingroup$
Interesting. Is it usual for FPGAs to need active cooling? Oh, I suppose that's an entire question in its own right. (And I guess the answer depends on many things — such as whether you bought a £15 or a £15,000 FPGA!)
$endgroup$
– MathematicalOrchid
7 hours ago
1
1
$begingroup$
@MathematicalOrchid, Not necessarily active cooling, but heatsinks and forced air are pretty common. The FPGA vendors usually provide a very complex spreadsheet to help determine (based on the part, the design, the clock frequency, etc) how big a heat sink and how big a fan are needed.
$endgroup$
– The Photon
7 hours ago
$begingroup$
@MathematicalOrchid, Not necessarily active cooling, but heatsinks and forced air are pretty common. The FPGA vendors usually provide a very complex spreadsheet to help determine (based on the part, the design, the clock frequency, etc) how big a heat sink and how big a fan are needed.
$endgroup$
– The Photon
7 hours ago
add a comment |
$begingroup$
With a few noted exceptions, tools don't generally give you access to the actual silicon primitives, so it's hard for an end-user engineer to load an electrically invalid design* into an SRAM-based FPGA, except perhaps by inadvertently discovering a tool bug.
Flash based FPGAs might conceivably have their re-programmability damaged by certain invalid loads. OTP FPGAs implicitly are "damaged" by even a valid configuration load, as it can never be changed.
Ultimately what comes closest to what you are seeming to ask, and to your HCF example, would be a configuration which produced intolerable thermal stress. Power consumption is quite directly driven by clock rate and volume * activity of utilized logic, so if you can trick the tools into uselessly toggling most of the flip flops on the chip at maximum clock (there are ways...) then you can produce a pretty effective heater that would exceed most cooling systems for ordinary usage. Then it's just a question if something protectively shuts it down before it cooks. And of course there are power estimation models in the tools, which are likely reasonably predictive if you're not lying to them about the clock signal provided.
(* There is one interesting class of not-a-bug electrical issue you can cause by lying to the tools, that is not necessarily physically destructive, but still surprising. If you feed a clock different than you said you would or simply unstable, you can violate address setup timing on the synchronous block RAM cells, and do something along the lines of shorting them and corrupting their contents - so you can for example see the contents of something designated a ROM in the design actually change at runtime just by trying to read it with a bad clock. But I don't believe this is physically destructive)
$endgroup$
add a comment |
$begingroup$
With a few noted exceptions, tools don't generally give you access to the actual silicon primitives, so it's hard for an end-user engineer to load an electrically invalid design* into an SRAM-based FPGA, except perhaps by inadvertently discovering a tool bug.
Flash based FPGAs might conceivably have their re-programmability damaged by certain invalid loads. OTP FPGAs implicitly are "damaged" by even a valid configuration load, as it can never be changed.
Ultimately what comes closest to what you are seeming to ask, and to your HCF example, would be a configuration which produced intolerable thermal stress. Power consumption is quite directly driven by clock rate and volume * activity of utilized logic, so if you can trick the tools into uselessly toggling most of the flip flops on the chip at maximum clock (there are ways...) then you can produce a pretty effective heater that would exceed most cooling systems for ordinary usage. Then it's just a question if something protectively shuts it down before it cooks. And of course there are power estimation models in the tools, which are likely reasonably predictive if you're not lying to them about the clock signal provided.
(* There is one interesting class of not-a-bug electrical issue you can cause by lying to the tools, that is not necessarily physically destructive, but still surprising. If you feed a clock different than you said you would or simply unstable, you can violate address setup timing on the synchronous block RAM cells, and do something along the lines of shorting them and corrupting their contents - so you can for example see the contents of something designated a ROM in the design actually change at runtime just by trying to read it with a bad clock. But I don't believe this is physically destructive)
$endgroup$
add a comment |
$begingroup$
With a few noted exceptions, tools don't generally give you access to the actual silicon primitives, so it's hard for an end-user engineer to load an electrically invalid design* into an SRAM-based FPGA, except perhaps by inadvertently discovering a tool bug.
Flash based FPGAs might conceivably have their re-programmability damaged by certain invalid loads. OTP FPGAs implicitly are "damaged" by even a valid configuration load, as it can never be changed.
Ultimately what comes closest to what you are seeming to ask, and to your HCF example, would be a configuration which produced intolerable thermal stress. Power consumption is quite directly driven by clock rate and volume * activity of utilized logic, so if you can trick the tools into uselessly toggling most of the flip flops on the chip at maximum clock (there are ways...) then you can produce a pretty effective heater that would exceed most cooling systems for ordinary usage. Then it's just a question if something protectively shuts it down before it cooks. And of course there are power estimation models in the tools, which are likely reasonably predictive if you're not lying to them about the clock signal provided.
(* There is one interesting class of not-a-bug electrical issue you can cause by lying to the tools, that is not necessarily physically destructive, but still surprising. If you feed a clock different than you said you would or simply unstable, you can violate address setup timing on the synchronous block RAM cells, and do something along the lines of shorting them and corrupting their contents - so you can for example see the contents of something designated a ROM in the design actually change at runtime just by trying to read it with a bad clock. But I don't believe this is physically destructive)
$endgroup$
With a few noted exceptions, tools don't generally give you access to the actual silicon primitives, so it's hard for an end-user engineer to load an electrically invalid design* into an SRAM-based FPGA, except perhaps by inadvertently discovering a tool bug.
Flash based FPGAs might conceivably have their re-programmability damaged by certain invalid loads. OTP FPGAs implicitly are "damaged" by even a valid configuration load, as it can never be changed.
Ultimately what comes closest to what you are seeming to ask, and to your HCF example, would be a configuration which produced intolerable thermal stress. Power consumption is quite directly driven by clock rate and volume * activity of utilized logic, so if you can trick the tools into uselessly toggling most of the flip flops on the chip at maximum clock (there are ways...) then you can produce a pretty effective heater that would exceed most cooling systems for ordinary usage. Then it's just a question if something protectively shuts it down before it cooks. And of course there are power estimation models in the tools, which are likely reasonably predictive if you're not lying to them about the clock signal provided.
(* There is one interesting class of not-a-bug electrical issue you can cause by lying to the tools, that is not necessarily physically destructive, but still surprising. If you feed a clock different than you said you would or simply unstable, you can violate address setup timing on the synchronous block RAM cells, and do something along the lines of shorting them and corrupting their contents - so you can for example see the contents of something designated a ROM in the design actually change at runtime just by trying to read it with a bad clock. But I don't believe this is physically destructive)
answered 8 hours ago
Chris StrattonChris Stratton
24.4k2 gold badges30 silver badges68 bronze badges
24.4k2 gold badges30 silver badges68 bronze badges
add a comment |
add a comment |
$begingroup$
The most likely thing is violating the current rating on GPIO's by driving a pin that is already being driven. Some FPGA's have settable current limits or changeable output drivers, so this can either help/hurt you if you don't get your port map done right. You should be double checking your port list anyway before programming as mistakes like swapping pins can take hours to resolve, it's best to get ahead of the mistakes and know exactly what the firmware was intended to do. (unless you like the thrill of finding an error)
HDL's by themselves usually don't let you connect two output's to the same wire and will stop synthesizing and make you fix your mistake if you do have code that does that.
One place that could cause problems is bi-directional ports, but you should have current limiting resistors on those.
$endgroup$
add a comment |
$begingroup$
The most likely thing is violating the current rating on GPIO's by driving a pin that is already being driven. Some FPGA's have settable current limits or changeable output drivers, so this can either help/hurt you if you don't get your port map done right. You should be double checking your port list anyway before programming as mistakes like swapping pins can take hours to resolve, it's best to get ahead of the mistakes and know exactly what the firmware was intended to do. (unless you like the thrill of finding an error)
HDL's by themselves usually don't let you connect two output's to the same wire and will stop synthesizing and make you fix your mistake if you do have code that does that.
One place that could cause problems is bi-directional ports, but you should have current limiting resistors on those.
$endgroup$
add a comment |
$begingroup$
The most likely thing is violating the current rating on GPIO's by driving a pin that is already being driven. Some FPGA's have settable current limits or changeable output drivers, so this can either help/hurt you if you don't get your port map done right. You should be double checking your port list anyway before programming as mistakes like swapping pins can take hours to resolve, it's best to get ahead of the mistakes and know exactly what the firmware was intended to do. (unless you like the thrill of finding an error)
HDL's by themselves usually don't let you connect two output's to the same wire and will stop synthesizing and make you fix your mistake if you do have code that does that.
One place that could cause problems is bi-directional ports, but you should have current limiting resistors on those.
$endgroup$
The most likely thing is violating the current rating on GPIO's by driving a pin that is already being driven. Some FPGA's have settable current limits or changeable output drivers, so this can either help/hurt you if you don't get your port map done right. You should be double checking your port list anyway before programming as mistakes like swapping pins can take hours to resolve, it's best to get ahead of the mistakes and know exactly what the firmware was intended to do. (unless you like the thrill of finding an error)
HDL's by themselves usually don't let you connect two output's to the same wire and will stop synthesizing and make you fix your mistake if you do have code that does that.
One place that could cause problems is bi-directional ports, but you should have current limiting resistors on those.
answered 8 hours ago
laptop2dlaptop2d
32.9k12 gold badges39 silver badges99 bronze badges
32.9k12 gold badges39 silver badges99 bronze badges
add a comment |
add a comment |
Thanks for contributing an answer to Electrical Engineering Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f445323%2fcan-you-actually-break-an-fpga-by-programming-it-wrong%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown