FPGARelated.com
Forums

Is FPGA code called firmware?

Started by Marko February 20, 2006
On Mon, 27 Jan 2020 10:28:39 -0800, ritchiew wrote:

> On Monday, February 20, 2006 at 1:50:15 PM UTC-8, James Morrison wrote: >> On Mon, 2006-02-20 at 10:18 -0800, 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?
The FPGA manufacturers call it the "configuration", but I don't think firmware is very wrong when talking to less-technical folks. Jon
On Wednesday, January 29, 2020 at 3:07:11 PM UTC-5, Jon Elson wrote:
> On Mon, 27 Jan 2020 10:28:39 -0800, ritchiew wrote: > > > On Monday, February 20, 2006 at 1:50:15 PM UTC-8, James Morrison wrote: > >> On Mon, 2006-02-20 at 10:18 -0800, 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? > The FPGA manufacturers call it the "configuration", but I don't think > firmware is very wrong when talking to less-technical folks. > > Jon
I think "configuration" would be equivalent to the machine code that is produced by a standard compiler for CPUs. The OP is asking what to call the source code. In PCs and other typical computers it is "software". In embedded applications it is "firmware", mainly because it is loaded into a write only memory (or write mostly). So what name to use for programming that is for configuring hardware? I think I'm in favor of "hardware"... oh, what, that's already used... lol Firmware is as good as any term. I'm ok with calling it software. -- Rick C. - Get 1,000 miles of free Supercharging - Tesla referral code - https://ts.la/richard11209
In article <7d2a4342-3444-435c-a73b-9e130834212f@googlegroups.com>,
Rick C  <gnuarm.deletethisbit@gmail.com> wrote:
> >Firmware is as good as any term. I'm ok with calling it software.
"Firmware" is one of those terms that has a very specific meaning in a very specific context. And means exactly what it is intended to mean. But as soon as the context changes... So does the definition. Which makes the term practically useless as a general use technical description. Sure for the general public, (or anything above a level 2 manager), "Firmware" might as well mean "The magic smoke which makes my device do things when I turn it on". Usually one thinks of it as applying to "embedded" electronic devices - which is another fuzzy definition in itself. Here, "Embedded" usually means any device that's not a personal computer sitting on one's desk. But even that's up for argument... Regards, Mark
On Wednesday, January 29, 2020 at 7:28:18 PM UTC-5, gtwrek wrote:
> In article <7d2a4342-3444-435c-a73b-9e130834212f@googlegroups.com>, > Rick C <gnuarm.deletethisbit@gmail.com> wrote: > > > >Firmware is as good as any term. I'm ok with calling it software. > > "Firmware" is one of those terms that has a very specific meaning in a > very specific context. And means exactly what it is intended to mean. > But as soon as the context changes... So does the definition. > > Which makes the term practically useless as a general use technical > description. Sure for the general public, (or anything above a level 2 > manager), "Firmware" might as well mean "The magic smoke which makes my > device do things when I turn it on". Usually one thinks of it as > applying to "embedded" electronic devices - which is another fuzzy > definition in itself. Here, "Embedded" usually means any device that's > not a personal computer sitting on one's desk. But even that's up > for argument...
So what is that very specific meaning of "firmware"??? I've not come across it. Every source I check has a different wording and meaning. Wikipedia - In computing, firmware[a] is a specific class of computer software that provides the low-level control for the device's specific hardware. Google - permanent software programmed into a read-only memory. techterms.com - Firmware is a software program or set of instructions programmed on a hardware device. It provides the necessary instructions for how the device communicates with the other computer hardware. lifewire.com - Firmware is software that's embedded in a piece of hardware So each one is different enough that the included classes vary hugely! What is yours? -- Rick C. + Get 1,000 miles of free Supercharging + Tesla referral code - https://ts.la/richard11209
Jon Elson <elson@pico-systems.com> wrote:
> On Mon, 27 Jan 2020 10:28:39 -0800, ritchiew wrote: > > > On Monday, February 20, 2006 at 1:50:15 PM UTC-8, James Morrison wrote: > >> On Mon, 2006-02-20 at 10:18 -0800, 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? > The FPGA manufacturers call it the "configuration", but I don't think > firmware is very wrong when talking to less-technical folks.
I'm uncomfortable with the use of 'firmware', because FPGAs frequently have some kind of processors on them, either soft cores or hard cores like the ARM on a Zynq. Those cores run a software stack - either bare metal, some RTOS or maybe Linux. There's quite a difference between the software running on these cores and the hardware design programmed into the FPGA. Typically when one refers to an embedded product 'firmware' is referring to software for a processor. If you advertise for FPGA firmware engineers you might expect software people to apply for the job, for instance. Another term used for the hardware is 'bitstream' - not very descriptive, although it does imply the hardware-blockbox overtones to it. If you're talking in general terms about the lump of data loaded from flash on boot, used to make the product usable, without any distinction of whether it's hardware or software, then maybe firmware works slightly better. Theo
On Wednesday, January 29, 2020 at 8:07:01 PM UTC-5, Theo wrote:
> Jon Elson <elson@pico-systems.com> wrote: > > On Mon, 27 Jan 2020 10:28:39 -0800, ritchiew wrote: > > > > > On Monday, February 20, 2006 at 1:50:15 PM UTC-8, James Morrison wrote: > > >> On Mon, 2006-02-20 at 10:18 -0800, 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? > > The FPGA manufacturers call it the "configuration", but I don't think > > firmware is very wrong when talking to less-technical folks. > > I'm uncomfortable with the use of 'firmware', because FPGAs frequently have > some kind of processors on them, either soft cores or hard cores like the > ARM on a Zynq. Those cores run a software stack - either bare metal, some > RTOS or maybe Linux. There's quite a difference between the software > running on these cores and the hardware design programmed into the FPGA. > Typically when one refers to an embedded product 'firmware' is referring to > software for a processor. If you advertise for FPGA firmware engineers you > might expect software people to apply for the job, for instance. > > Another term used for the hardware is 'bitstream' - not very descriptive, > although it does imply the hardware-blockbox overtones to it. > > If you're talking in general terms about the lump of data loaded from flash > on boot, used to make the product usable, without any distinction of whether > it's hardware or software, then maybe firmware works slightly better. > > Theo
I guess my interest is in a label for the program as written in the language, the HDL. I don't call that a bitstream. The bitstream is what gets loaded into the FPGA. I write software or firmware. I've never gotten used to the term "gateware" but it would be fine if that is what ends up being accepted ultimately. Rather than to say, this term means this and that term means that, I would ask what the purpose of using those terms would be? What distinction is being made? -- Rick C. -- Get 1,000 miles of free Supercharging -- Tesla referral code - https://ts.la/richard11209
On 30/01/2020 01:29, Rick C wrote:
> On Wednesday, January 29, 2020 at 8:07:01 PM UTC-5, Theo wrote: >> Jon Elson <elson@pico-systems.com> wrote: >>> On Mon, 27 Jan 2020 10:28:39 -0800, ritchiew wrote: >>> >>>> On Monday, February 20, 2006 at 1:50:15 PM UTC-8, James Morrison wrote: >>>>> On Mon, 2006-02-20 at 10:18 -0800, 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? >>> The FPGA manufacturers call it the "configuration", but I don't think >>> firmware is very wrong when talking to less-technical folks. >> >> I'm uncomfortable with the use of 'firmware', because FPGAs frequently have >> some kind of processors on them, either soft cores or hard cores like the >> ARM on a Zynq. Those cores run a software stack - either bare metal, some >> RTOS or maybe Linux. There's quite a difference between the software >> running on these cores and the hardware design programmed into the FPGA. >> Typically when one refers to an embedded product 'firmware' is referring to >> software for a processor. If you advertise for FPGA firmware engineers you >> might expect software people to apply for the job, for instance. >> >> Another term used for the hardware is 'bitstream' - not very descriptive, >> although it does imply the hardware-blockbox overtones to it. >> >> If you're talking in general terms about the lump of data loaded from flash >> on boot, used to make the product usable, without any distinction of whether >> it's hardware or software, then maybe firmware works slightly better. >> >> Theo > > I guess my interest is in a label for the program as written in the language, the HDL. I don't call that a bitstream. The bitstream is what gets loaded into the FPGA. I write software or firmware. I've never gotten used to the term "gateware" but it would be fine if that is what ends up being accepted ultimately.
Interesting question. You write a hardware description language so what you produce must be the "Hardware description"... I personally am quite happy to call the HDL source code an "Program" or an "hdl program". A "program" really is just a list of instructions. Just as "g-code" is a programming language used to control a 3-d printer or milling. machine, VHDL is a programming language that is used to "program" a "logic synthesisers" which generates the bitstream.
> > Rather than to say, this term means this and that term means that, I would ask what the purpose of using those terms would be? What distinction is being made? >
Generally we use the term "firmware" to refer to code that is in some way an intrinsic part of the hardware, without which it won't function. Dave
On Thursday, January 30, 2020 at 4:31:29 AM UTC-5, David Wade wrote:
> On 30/01/2020 01:29, Rick C wrote: > > On Wednesday, January 29, 2020 at 8:07:01 PM UTC-5, Theo wrote: > >> > >> If you're talking in general terms about the lump of data loaded from =
flash
> >> on boot, used to make the product usable, without any distinction of w=
hether
> >> it's hardware or software, then maybe firmware works slightly better. > >> > >> Theo > >=20 > > I guess my interest is in a label for the program as written in the lan=
guage, the HDL. I don't call that a bitstream. The bitstream is what gets= loaded into the FPGA. I write software or firmware. I've never gotten us= ed to the term "gateware" but it would be fine if that is what ends up bein= g accepted ultimately.
>=20 > Interesting question. You write a hardware description language so what=
=20
> you produce must be the "Hardware description"...
The source code is indeed a hardware description. =20
> I personally am quite happy to call the HDL source code an "Program" or=
=20
> an "hdl program". >=20 > A "program" really is just a list of instructions. Just as "g-code" is a=
=20
> programming language used to control a 3-d printer or milling. machine,=
=20
> VHDL is a programming language that is used to "program" a "logic=20 > synthesisers" which generates the bitstream. >=20 >=20 > >=20 > > Rather than to say, this term means this and that term means that, I wo=
uld ask what the purpose of using those terms would be? What distinction i= s being made?
> >=20 >=20 > Generally we use the term "firmware" to refer to code that is in some=20 > way an intrinsic part of the hardware, without which it won't function.
My PC won't function without software. So what is really different? Origi= nally it had to do with the fact that firmware resided in ROM or EPROM whic= h could only be programmed by means other than just loading it into RAM. = =20 Now with Flash memory being rewritable in the system, there is much less di= stinction and in many systems the Flash acts more like a hard drive with th= e program being executed from RAM. Raspberry Pi devices are like that. Ev= erything about developing code for a rPi is like developing code for a PC, = but in the end it is an embedded system. =20 So what would be the purpose of calling this firmware... or any other devic= e?=20 --=20 Rick C. -+ Get 1,000 miles of free Supercharging -+ Tesla referral code - https://ts.la/richard11209
In article <6b78649f-b7f1-42d8-bb78-c1431b762072@googlegroups.com>,
Rick C  <gnuarm.deletethisbit@gmail.com> wrote:
>On Wednesday, January 29, 2020 at 7:28:18 PM UTC-5, gtwrek wrote: >> In article <7d2a4342-3444-435c-a73b-9e130834212f@googlegroups.com>, >> Rick C <gnuarm.deletethisbit@gmail.com> wrote: >> > >> >Firmware is as good as any term. I'm ok with calling it software. >> >> "Firmware" is one of those terms that has a very specific meaning in a >> very specific context. And means exactly what it is intended to mean. >> But as soon as the context changes... So does the definition. >> >> Which makes the term practically useless as a general use technical >> description. Sure for the general public, (or anything above a level 2 >> manager), "Firmware" might as well mean "The magic smoke which makes my >> device do things when I turn it on". Usually one thinks of it as >> applying to "embedded" electronic devices - which is another fuzzy >> definition in itself. Here, "Embedded" usually means any device that's >> not a personal computer sitting on one's desk. But even that's up >> for argument... > >So what is that very specific meaning of "firmware"??? I've not come across it. Every source I check has a different wording and meaning. > >Wikipedia - In computing, firmware[a] is a specific class of computer software that provides the low-level control for the device's specific hardware. > >Google - permanent software programmed into a read-only memory. > >techterms.com - Firmware is a software program or set of instructions programmed on a hardware device. It provides the necessary instructions for how the device communicates with the other computer hardware. > >lifewire.com - Firmware is software that's embedded in a piece of hardware > >So each one is different enough that the included classes vary hugely! > >What is yours?
That's my point. My definition entirely depends on context. So much so that as a general term "firmware" is next to useless in a general technical forum... Regards, Mark
In article <r0u7pd$i5k$1@dont-email.me>,
David Wade  <g4ugm@dave.invalid> wrote:
>Interesting question. You write a hardware description language so what >you produce must be the "Hardware description"... > >I personally am quite happy to call the HDL source code an "Program" or >an "hdl program". > >A "program" really is just a list of instructions. Just as "g-code" is a >programming language used to control a 3-d printer or milling. machine, >VHDL is a programming language that is used to "program" a "logic >synthesisers" which generates the bitstream.
Not trying to dig or start a flame here... But when I hear someone describe Verilog or VHDL as a "program", I'm almost certain to (prejudge) that such individual is a newbie, or inexperienced at FPGA design. Thinking of traditional "programs" or "list of instructions" when designing an FPGA is certainly the wrong mindset. FPGA vendors would love to think that there new wonderful C like "High level languages" are just super programs that make things run fast on an FPGA. But they're nothing of the sort. One "designs" with an HDL akin to how one designs with a schematic. Comparing to instruction based CPU's just doesn't fit, which is (in my mind) what "programs" traditionally do. My 2cents. Regards, Mark