Advertisement

Blog

Bridging the Great Divide

No, I'm not talking about brokering an agreement between Democrats and Republicans in the United States. The title of this article refers to something of far greater significance to this community, namely the historical divide that exists between hardware and software developers.

(Source: neiljs, Soča valley, Slovenia, Uploadedby Sporti, CC-BY-2.0, via Wikimedia Commons)

(Source: neiljs, Soča valley, Slovenia, Uploaded
by Sporti, CC-BY-2.0, via Wikimedia Commons)

Unfortunately, an us-versus-them mentality has developed separating those who write code and those who design the electronics that execute it. Given the symbiotic relationship between the two groups, this antagonism may seem odd to outsiders. To anyone who has ever been caught in the finger-pointing crossfire when the cause of an equipment failure is still an open question, the division into opposing hardware and software camps is a familiar scenario.

Many programmers are able to work at a level of abstraction that allows them to be indifferent to the finer points of the underlying electronics, as long as it has the speed and capacity they need. Likewise, many hardware designers can focus on achieving lower power and higher speeds without much concern for the high-level functions their chips or subsystems enable.

There is a sizable group of engineers who work much closer to the hardware-software boundary, however. These folks are often found working at the cutting edge of system performance or on tightly constrained applications. In such environments, the debate over performing functions in hardware or software still matters, with the answer changing over time in many cases.

Even though it's been many years since I last held a scope probe or a soldering iron, I have always considered myself a hardware guy. I persisted with this self-image as I followed my interest in digital signal processing from building special-purpose processors to studying the mathematics behind the algorithms. While I spent most of my time writing software to test and validate operations on computer-generated signals, I felt justified in my claim to affinity for hardware over software by the knowledge that any real-world application would require a hardware implementation. Today, of course, the implementation is more likely to utilize a programmable DSP chip than specially designed hardware.

In other areas as well, modern electronics manufacturing and EDA tools have made the work of electronic design look a lot more like programming. Whether you're designing at the chip or board level, your design is probably expressed as a set of instructions for a software-driven manufacturing process.

And then we have FPGAs — field-programmable gate arrays — taking over for ASICs in many applications. Does the inclusion of the word “programmable” in the acronym make anyone who works with FPGAs a programmer? Does it matter?

Instead of a sharp distinction between hardware and software functions, a truer picture of electronics is a hardware/software continuum with a rather indistinct boundary that tends to drift back and forth. Those who work in electronic design may come from one end of the spectrum or the other, but they must meet in the middle to find common cause and produce a functioning system.

Say, maybe this would be a good idea for Washington, too.

This article was originally published on EDN.

5 comments on “Bridging the Great Divide

  1. Daniel
    November 13, 2013

    “Instead of a sharp distinction between hardware and software functions, a truer picture of electronics is a hardware/software continuum with a rather indistinct boundary that tends to drift back and forth.”

    Barry, you are right. I never feel any distinction between a software and hardware engineer. Moreover, now a day's the gap between these two are narrowed because of the hardware implementation using software languages. A product ecco system consists of both hardware and software parts, which are close tightly coupled to perform the functionality. In that respect both peoples are doing great jobs for a common cause.

  2. prabhakar_deosthali
    November 15, 2013

    As far as my experience as a embedded software professional is concerned , it is the software which has to provide workarounds ( or filling the gaps ) for all those hardware bugs which cannot be corrected once the circuit is committed to silicon.

    So it is not a divide but a co-existence I would say.

    In one of the instances of hardware design blunder,  the designer had forgotten to implement the processor stack in a multi-core Soc design and it was a tough time for us , the software professionals to make the applications work without any interrupt processing .

     

  3. Hailey Lynne McKeefry
    November 16, 2013

    @Jacob, and i suspect that hardware and software are going to continue to get even closer together moving forward.

  4. itguyphil
    November 16, 2013

    Most definitely. The evolution of System on a Chip (SOC) is getting more & more prevalent. It makes development & support cycles easier as both are integrated.

  5. Daniel
    November 18, 2013

    “i suspect that hardware and software are going to continue to get even closer together moving forward.”

    Hailey, No doubt about that.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.