Forums

Is FPGA code called firmware?

Started by Marko February 20, 2006
Traditionally, firmware was defined as software that resided in ROM.
So, my question is, what do you call FPGA code?  Is "firmware"
appropriate? 
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