circuitcellar.com
Magazine Support   Digital Library   Products & Services   Suppliers Directory 
 
 





 

Issue 142 May2002
Design Your Own Microprocessor

 


by Jim Turley

SOFTWARE IN, HARDWARE OUT

Celoxica has a hardware-design tool called Handel-C (see Figure 4). It’s a language somewhat similar to Verilog and, you guessed it, C. It’s more like C programming than Verilog modeling. The idea is to let programmers define hardware, even if they don’t really know what they’re doing. In fact, Celoxica considers it an advantage if you don’t have hardware design experience. "Let Handel-C do the job, and you won’t be disappointed," they say.

Figure 4—Celoxica’s Handle-C is similar to C, but instead of producing a program, it creates a circuit design.

 

This concept is certainly appealing. Theoretically you can throw source code written in Handel-C at Celoxica’s compiler and what will emerge is not a program but a hardware description of a circuit that executes that program. It’s a kind of hard-coded processor tuned for exactly the program you gave it. Don’t bother looking under the hood because you don’t want to know what’s there. Dyed-in-the-wool hardware designers might gag at the circuits that Celoxica’s tools produce, but that’s not the point. A hardware engineer didn’t produce it; an automated tool did. A company could theoretically dispense with its hardware engineers entirely and replace them all with C programmers armed with a few copies of Celoxica’s Handel-C compiler. That’s a scary thought.

In a similar vein, Agilent and STMicroelectronics have teamed up to produce a configurable processor with the mellifluous name of ST210. (STMicroelectronics manufactures the chip, so they got to name it.) The ST210 is the first and, so far, the only example of a concept the group called PICO (program in, code out). The idea is to let automated tools make design decisions, rather than relying on engineers or programmers. As embedded systems get more complicated, the reasoning goes that hardware design is no longer intuitive. Humans don’t always know what they want or what’s best. The ST210 is a 250-MHz, eight-way, super-scalar VLIW beast, so it’s a bit beyond the means of most embedded designers for the time being.

Along the same lines is Improv’s Jazz processor. Like ST210, Jazz more or less defines itself based on the program it’s asked to run. In Improv’s case, you define the problem using a complex combination of Java programs and a visual-editing tool. From these, Jazz extracts what parallelism it can find and cobbles together the ideal processor for what you’re trying to accomplish.

What all three of these approaches have in common is that the hardware is fixed. After the automated tool makes up its mind about what the processor should look like, that’s it. From that point on, it’s a fixed piece of hardware just like any other chip.

CHANGING RUN TIMES

Elixent takes the concept one step further. Yes, it has an automated tool that defines the circuitry from a source program, but instead of creating a processor, it creates multiple hardware implementations and switches among them on the fly based on the workload (see Figure 5). Elixent combines the "software in, hardware out" concept of Celoxica with the real-time reconfigurability of an FPGA. The result is a programmable chip that can transmogrify itself for various tasks.

Figure 5—Elixent combines configurable processors with field-programmable logic to create a constantly changing processor. Elixent’s tool switches implementations on the fly based on your workload.

Elixent enters the world of dynamic reconfigurability, or reconfigurable computing (RC). RC seems like a completely reasonable concept: change the hardware on the fly to suit the application. After all, nearly all embedded systems handle different tasks at different times. One moment you’re decompressing audio streams, the next you’re handling an interrupt, and the next you’re accepting user input. It stands to reason that whenever one part of the circuit is working the other parts must be idle. This is often true, but there’s nothing you can do about it. Hardware systems have always been created from a superset of all the functions required over the life of the product, rolled into one.

If RC takes off, that might change. For example, future generations of cell phones may use half the transistors to do 10 times the work. Fewer transistors may be all that’s needed, if none are wasted on functions that aren’t required right now. Transistors would simply be on call; available for whatever was required at the moment.

Programming such a beast would be a whole new challenge. How do you write code for a moving target? According to RC partisans, you don’t. In Elixent’s case, there is no software as we know it. The original program was simply the input function, a way to define what you wanted. The output function was the hardware itself, which has all the program information it needs. Cue Twilight Zone music.