SOC Design

Saturday, March 19, 2005

Compared to what?

I think Jack Ganssle is one of the smartest guys in the world of embedded development. He’s certainly one of the best writers. Jack’s latest column at www.Embedded.com, titled “Software is Cheap,” reverses something he’s been saying for a long time. Previously, Jack’s often been known to say, “Software is the most expensive thing in the universe.” In his latest column, Jack writes software-development expert Tom DeMarco’s retort to that statement: “Compared with what?”

In this latest column, Jack’s backpedaling on his long-held view. He notes that software is expensive because of its incredible complexity. A standardized microprocessor core running a simple 7-line C program implements a bubble-sort algorithm that would take a substantial amount of hardware to replace. Jack, who tried to design the bubble sorter using only hardware and no CPU, writes:

“In an hour I managed a rough block diagram, one above the chip level (blocks have names like ‘adder’ and ‘16-bit latch’). But the sequencing logic is clearly pretty messy so I've just tossed in a PLD, assuming at some point it wouldn't be too hard to write the appropriate equations. And, yes, perhaps that breaks the no-programmable-logic rule, but to design and debug all that logic using gates in any reasonable amount of time is as unlikely as buck-a-gallon gas.

Translating the rough block diagram to a schematic might take a day. Then there's the time to design and produce a PCB, order and load parts (and change the design to deal with the unexpected but inevitable end-of-life issues), and then of course make the circuit work. We could be talking weeks of effort and a lot of money for the board, parts, and appropriate test equipment.

All this to replace seven little lines of code.”

I thoroughly agree with Jack. You don’t need software to replace simple functions (no one would develop a software-based UART any more, though we once did). However, using code running on processors is the right way to handle complex tasks, on a board or on a chip. Most algorithms start as programs written in C or C++ and then are either compiled for a target embedded processor or hand translated into Verilog or VHDL. Manual translation of complex algorithms increasingly seems like a fool's errand to me.

0 Comments:

Post a Comment

<< Home