Traditionally, firmware was defined as software that resided in ROM. So, my question is, what do you call FPGA code? Is "firmware" appropriate?
Is FPGA code called firmware?
This discussion explores the appropriate terminology for FPGA configuration code, specifically whether the term "firmware" is technically accurate or misleading. While many participants agree that "firmware" is a common industry shorthand, others argue it incorrectly implies a sequential instruction-based execution model rather than a structural hardware description.
The consensus favors terms that distinguish FPGA development from traditional software, with "gateware" and "configuration file" emerging as popular alternatives. The thread highlights that while the delivery method (ROM/Flash) often dictates the label in corporate environments, the underlying design paradigm remains fundamentally different from software.
- The term 'gateware' is widely recommended to emphasize that FPGA code describes hardware structures rather than sequential software instructions.
- Traditionalists define firmware as microcode or software executed from ROM, making it distinct from the bitstream that configures FPGA logic gates.
- Corporate terminology often labels FPGA bitstreams as 'firmware' simply because they are stored in non-volatile memory or handled by embedded teams.
- The transition from high-level languages like C to netlists via synthesis complicates the distinction between software programming and hardware design.
- Using specific terms like 'configuration file' can help avoid legal or contractual confusion in projects where 'firmware' is explicitly prohibited.
Marko schrieb:> Traditionally, firmware was defined as software that resided in ROM. > So, my question is, what do you call FPGA code? Is "firmware" > appropriate?Why not? Regards Falk
On Mon, 20 Feb 2006 19:47:16 +0100, Falk Brunner <Falk.Brunner@gmx.de> wrote:>Marko schrieb: >> Traditionally, firmware was defined as software that resided in ROM. >> So, my question is, what do you call FPGA code? Is "firmware" >> appropriate? > >Why not?Are you answering my question with a question? Seriously, I just want to know what other people call it. It seems incorrect to refer to FPGA code by the same name used for ROMable S/W. At my previous job, we just called it "FPGA Code". At my new job, it's called "firmware".
The difference is execution versus synthesis. Firmware is indeed embedded and dedicated code, but the code is executed. FPGA code is written in a _description_ language, is then interpreted, synthesized, and ultimately produces hardware. So, I see it fit to refer to the FPGA, when it is configured, as hardware, and to the code itself as a description language. Julian
Marko schrieb:>>Why not? > > Are you answering my question with a question? > Seriously, I just want to know what other people call it. It seems > incorrect to refer to FPGA code by the same name used for ROMable S/W. > At my previous job, we just called it "FPGA Code". At my new job, > it's called "firmware".I don't see the big problem there. There are hundreds of synonyms floating around. "FPGA-Code" is more or less the same as "Firmware". There is no official definition or standard, also no defacto standard. So call it whatever you like it as long as it's in sync with the people you are talking to. Regards Falk
Julian Kain schrieb:> The difference is execution versus synthesis. Firmware is indeed > embedded and dedicated code, but the code is executed. FPGA code is > written in a _description_ language, is then interpreted, synthesized, > and ultimately produces hardware.VHDL may "produce" hardware when doing ASIC design. In an FPGA not a single bit is "produced", all is fixed. Only the connections between the bits are set, so all that is done in an FPGA is configuration. Surprisingly this process is called configuration for quite a long time ;-)> So, I see it fit to refer to the FPGA, when it is configured, as > hardware, and to the code itself as a description language.What code? The source code (VHDL/Verilog/whatever) or the final bitstream? The same distinction applies to microprocessor "Firmware", where you have the source code and the compiled binary. Hmm, the more I write and think about it (where it should be better the other way around ;-) FPGA and microprocessor bitstreams are becomming more and more similar "Firmware". Regards Falk
On Mon, 20 Feb 2006 11:32:38 -0800, Marko <cantsay@comcast.net> wrote:>On Mon, 20 Feb 2006 19:47:16 +0100, Falk Brunner <Falk.Brunner@gmx.de> >wrote: > >>Marko schrieb: >>> Traditionally, firmware was defined as software that resided in ROM. >>> So, my question is, what do you call FPGA code? Is "firmware" >>> appropriate? >> >>Why not? > >Are you answering my question with a question? > >Seriously, I just want to know what other people call it. It seems >incorrect to refer to FPGA code by the same name used for ROMable S/W. >At my previous job, we just called it "FPGA Code". At my new job, >it's called "firmware".At one previous place of employment, we called it Roland C. Higgenbottom the Third. We figured we could charge extra by making it sound more dignified than it actually was. Bob Perlman Cambrian Design Works
On Mon, 20 Feb 2006 21:01:52 +0100, Falk Brunner <Falk.Brunner@gmx.de> wrote:>Julian Kain schrieb: >> The difference is execution versus synthesis. Firmware is indeed >> embedded and dedicated code, but the code is executed. FPGA code is >> written in a _description_ language, is then interpreted, synthesized, >> and ultimately produces hardware. > >VHDL may "produce" hardware when doing ASIC design.So what do you call a gate array or structured asic ? What does VHDL do when it generates files for one of these processes ? (for the uninitiated gate-arrays or structured asics in general have all their base layers produced already and several metals are used configure the manufactured general purpose gates to what you want and provide the connectivity). By the same token when you take a bit file generated for an FPGA and use it to produce a hard-copy device (a structured asic specifically generated for a certain FPGA family) does the VHDL suddenly realize that it has produced hardware ? What does this say for laser trim or metal only ECO ? Also is an Intel or AMD processor really hardware as they have micro-code which can be downloaded by BIOS which can be used to fix quite a bit of "issues" with the processor.> In an FPGA not a single bit is "produced", all is fixed.So the function of each LUT and how they are all connected are fixed and the VHDL doesn't produce anything ? What does it do then ? If in my standard cell design, I have memory based FSMs the function of which can be changed by updating the contents of such, does my asic become software ? What about external pins which can change the behaviour of combinational FSMs ? I think the issue is a lot less clean-cut then is suggested here.
Marko wrote:> Traditionally, firmware was defined as software that resided in ROM. > So, my question is, what do you call FPGA code? Is "firmware" > appropriate?Dunno if it's appropriate, but I see it called that in many places. "FPGA configuration file" is probably best, but that makes managers' eyes cross. Call it "firmware" and it sounds safely familiar. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Posting from Google? See http://cfaj.freeshell.org/google/
One should check out the source of the term "firmware". I suspect that most of you weren't around in the early 70's when the term was invented (at least not in the professional sense). Firmware was invented with the advent of microcoded computers. Microcode is "software", but a different kind of software than most of us were familiar with. And, usually, it wasn't something that the user could change (with a very few exceptions). So they came up with "firmware", meaning it was programmed into read-only memories (ROM). Eventually, anything programmed into ROM, EPROM, EEPROM, etc. became known as firmware. But it was, still, instructions that were fed to an instruction execution unit, one at a time sequentially. FPGA code is logic, not programmable instructions (spare me comments on the Micro-Blaze and its ilk). Personally, I would like to see a different term beause non-FPGA people will think that you are talking about a general purpose programmable computer. How about "coreware"?. Don't like it? Then invent your own. Tom





