Open Source CPUs

I recently blogged about Open Source Hardware, lets take a look a bit more at the FPGA/ASIC kind of projects.

Any project big enough will require a CPU to control the rest of the hardware and maybe just run some user software. So we need an open source CPU ! That is to say, the code of a processor in a common HDL language (VHDL, verilog) with an open source licence.

A quick search on the internet and we have plenty of soft-processor, some open source, some not:

So how do we compare all that ?

There is an interesting article on the subject on 1-code technologies: Soft CPU Cores for FPGA. It compares the cpu in terms of features and size (in FPGA cells).
(As too often on the internet it’s lacking a publication date so it’s hard to know how recent the information is.)

So I’m planning to review several CPU and publish my results.


Let’s define some review guideline:

Important Items

  1. Licence: Anything that’s not open source compliant will stop the review early.
  2. Activity/Stability: A project must have active developers and at least a stable/proven version of the CPU. Otherwise as a user you become your own support, which is not comfortable.
  3. Compiler availability: mainstream Gcc would be the best. In any case good quality compiler is required otherwise the CPU is just useless, I like writing assembly sometime, but this should not be the only language available.

Categories

I can see several main categories of CPU with probably different selection criteria. They manly correspond to growing processing power.

  1. The tiny micro-controller. This category include CPU like 8051 or the AVR or PIC cores. CPU that can be used to build micro-controllers, USB device with no complex computation and so on.
  2. The embedded CPU. This category include CPU like ARM7(tdmi), powerful cpu but not that fast and really optimized for the power consumption. These are the kind CPU that where used to build featured phones, PDA, portable gaming device (I know today you would not build those anymore, look for the next category). The target of this category is for specific device that need more computation power than the tiny micro-controller’s category.
  3. The portable CPU. In this category you should find CPU with enough power to run a full linux or *BSD distribution. This can be used to build smartphones, internet tablets/netbooks, or network appliance (small servers, home routers…).
  4. The high end CPU. Well I’m more interested in embedded, but still, this is the category for OpenSparc, so it had to exist ;) So here you’ll find all the heavy stuff probably power hungry and with lots of CPU cores, all you need to build computer from desktop to mainframes ;)

A summary of all studied CPU will be available here: Open Cpu Study Summary. This will be updated after each CPU review. All reviews will be filed under the category Open Source CPU so you can find them easily.