Re: relative complexity of hardware and software (was: pick 'n' place machines (was: OT 0805 resistor noise))
- From: "Walter Harley" <walterh@xxxxxxxxxxxxxxxxxxxx>
- Date: Fri, 9 Sep 2005 10:51:48 -0700
"John Larkin" <jjlarkin@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:2a83i1l2lgqk5tvaits5o8acob6rfo41v9@xxxxxxxxxx
> Except that huge, complex, synchronously-clocked hardware logic
> systems seldom have bugs. But most software has bugs. The design
> methodologies are distinct: in hardware logic, the current system
> state is unambiguous, and combinational logic based on the current
> state sets up the next state, which is implemented, across the entire
> chip, at the next clock. People get into trouble whan they break that
> paradigm. In software, the execution point is local, but wanders all
> over the place in often unpredictable paths, and in a multitasking
> system (ie, most systems nowadays) there is seldom any decent
> mechanism for coordinating tasks.
Interesting observation.
But are you saying that the transitions in hardware logic systems are
conceived and described as system-wide (what the software world would call
"global variables")? Surely that's not true in a large system; as you said
earlier, things are broken into functional blocks, "Multipliers, adders,
fifos, PID controllers, ..."
Seems to me that as soon as you have a system consisting of smaller
components that themselves embody some complexity, but that are described in
a simplified form, the opportunity for bugs arise. For instance, one might
thing of a block as an "adder" but in fact it can overflow and wrap, a
condition that would only be obvious in hindsight.
Similarly I would think that the same opportunities for multithreading bugs
that exist in software, also exist in hardware. (Put it this way: I'm sure
I could write a threading bug in hardware if I tried.)
Perhaps the differences have more to do with how concisely small functional
blocks can be fully described (in software, even something as basic as a
scrolling listbox is hard to fully specify concisely enough to be useful to
a programmer), and with the number of layers of functional composition (>10
for even a simple desktop app, versus I imagine many fewer for a hardware
logic system)?
I don't design hardware logic so I'm just guessing. (I do design software,
so I'm all too familiar with the processes that lead to bugs on that side.)
.
- Follow-Ups:
- References:
- Re: OT 0805 resistor noise
- From: SioL
- Re: OT 0805 resistor noise
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Walter Harley
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Walter Harley
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Walter Harley
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Winfield Hill
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Walter Harley
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: OT 0805 resistor noise
- Prev by Date: exporting schematic for latex and changing paper size in geda
- Next by Date: Re: Good FET Probe Circuit Diagram?
- Previous by thread: Re: pick 'n' place machines (was: OT 0805 resistor noise)
- Next by thread: Re: relative complexity of hardware and software (was: pick 'n' place machines
- Index(es):
Relevant Pages
|