I have several questions about how I would design my own ARM-based CPU?

  • How does one start with an ARM license and end up with a package ready to be soldered on to a board?
  • What do I get from ARM (I am sure they have multiple license options to dish out - Architecture License (Qualcomm Snapdragon style) and Core License (TI OMAP style))?
  • What tools do I need to proceed once I have 'that something' from ARM?
  • What do I send to the fab?
  • I believe only certain foundaries are licensed to etch an ARM core on to a silicon wafer. Am I right?
  • As a student, can I afford to do this on an FPGA? How do I get hands on experience for something like this?
  • 11
    \$\begingroup\$ Did you talk to ARM? [Edited by a moderator.] \$\endgroup\$ Commented Aug 3, 2012 at 19:41
  • 3
    \$\begingroup\$ Take a look at opencores.com -- there are lots of various processor cores there in various states of completeness and functionality. As far as obtaining actual ARM core source... as @OlinLathrop says... talk to ARM. \$\endgroup\$
    – akohlsmith
    Commented Aug 3, 2012 at 19:46
  • 8
    \$\begingroup\$ I don't understand the downvotes, this is may be a naive question, but definitely legitimate IMO. \$\endgroup\$
    – Jon L
    Commented Aug 3, 2012 at 20:09
  • 2
    \$\begingroup\$ The problem is that your question is specific to a workflow you will not get to follow. The workflows you can follow - using an original or freely available design in an HDL to target an FPGA - are as different from that as speculation is from fact. \$\endgroup\$ Commented Aug 3, 2012 at 21:14
  • 2
    \$\begingroup\$ The Cortex-M1 core seems to be intended to run in any suitably capable FPGA. The major FPGA vendors have the IP license, and deliver it to the designer as they would any other soft core. I assume not for free, but there are likely programs available specifically for academic use. \$\endgroup\$
    – RBerteig
    Commented Aug 3, 2012 at 23:22

5 Answers 5


Here is how companies do it:

  1. Raise about US$10 million.
  2. Negotiate with ARM to get a license. This will probably cost at least US$1 million.
  3. Get the design files from ARM. It will likely be in some form of VHDL, Verilog, or an "encrypted" netlist.
  4. Design your own chip using a mix of your own logic (for the peripherals) and what ARM gave you. This step will likely require some expensive CAD software and a small team of experts. Expect to spend at least US$5 million and several years.
  5. Get the masks made for the chip itself. If you use any modern semiconductor process then this will run around US$1 million.
  6. Get the chip itself made. Price varies, but should be less than US$0.5 million.
  7. Debug the chip you created, fix the bugs, then go back to Step 5 until you have something that you can sell.

Here is how YOU do it:

  1. Take a graduate level computer architecture course at your local university.
  2. Take more courses in digital logic and whatever else.
  3. Design a CPU from scratch in VHDL or Verilog.
  4. Design another CPU from scratch.
  5. Look at the ARM instruction set and design a compatible CPU.
  6. Make your ARM-Compatible CPU work in an FPGA.
  7. Don't distribute your VHDL/Verilog source code unless you want to be sued.
  8. Use your ARM experience to write a good dissertation for your PhD.
  9. Use your PhD to get a job at ARM, or TI, or whoever. Then repeat the process using the previous 7 steps on how a company does it.

Ok, so this list is a little tongue-in-cheek but it is basically correct. The point is, don't even bother dealing with ARM directly because odds are you don't have the money. And don't do anything that will get you sued by ARM either.

  • 2
    \$\begingroup\$ +1. Excellent answer. What I was going to say, but better. \$\endgroup\$ Commented Aug 3, 2012 at 20:08
  • 2
    \$\begingroup\$ Any good course would include the basic structure of different kinds of CPU's and how they all work. Topics should cover microcode, instruction decode, ALU's, memory access, cache, registers, pipelining, data hazzards, instruction prefetch, etc. \$\endgroup\$
    – user3624
    Commented Aug 3, 2012 at 20:19
  • 4
    \$\begingroup\$ Is there any reason that the ARM's instruction set, in and of itself, would be any more patentable than any of the other CPUs of which clones abound? Certainly there are apt to be some architectural features that are patented, but if one's goal is to design a CPU which will work with existing compilers, would the instruction set itself pose a problem? \$\endgroup\$
    – supercat
    Commented Aug 3, 2012 at 20:23
  • 2
    \$\begingroup\$ @supercat Normally instructions themselves are not very patent-able unless they incorporate some architectural things. MIPS did this with their CPU's, where they patented some instructions that would load/store words that are not word-aligned as well as some stuff to dynamically switch between big and little endian. This was challenged in court when MIPS sued a MIPS clone maker, and MIPS won (back around 2000). But most patents are about architectural issues. You can't make a CPU that is compatible with existing compilers without copying both the architecture and instruction set, sadly. \$\endgroup\$
    – user3624
    Commented Aug 3, 2012 at 20:33
  • 2
    \$\begingroup\$ @LordLoh you may find these questions useful: electronics.stackexchange.com/questions/28686/… electronics.stackexchange.com/a/7051/638 \$\endgroup\$
    – W5VO
    Commented Aug 3, 2012 at 21:08

ARM has a University DesignStart Program. As a student, you can only access basic Cortex-M0 material. But if you are really interested, get your faculty involved and then you can have access to much more design material (Verilog FPGA code, Evaluation IP, Simulations, etc.)

  • 4
    \$\begingroup\$ Thanks :-) I'll try to get my adviser to request some of these. \$\endgroup\$
    – Lord Loh.
    Commented Aug 3, 2012 at 20:49
  • \$\begingroup\$ WFIW, this answer is now outdated, both Cortex-M0 and Cortex-M3 are available, and some parts of the product are open to non-students/institutions. \$\endgroup\$ Commented Aug 27, 2017 at 9:00

Take a look at this ARM core on OpenCores.


The ARM Cortex-M1 (probably the simplest of the ARM processors) is the first ARM processor specifically designed to be implemented as a soft processor in FPGAs. It is optimized for the following FPGA types:

Actel (M1 ProASIC3 and M1 Fusion)
Altera (Cyclone-II, Stratix-III)
Xilinx (Spartan-3, Virtex-5)

ARM itself is making a Cortex-M1 Development Kit for Altera Cyclone III although it is a little pricey at $625 from DigiKey. You do get all of the ARM Cortex-M1 IP though, and a license to do development (plus a free royalty grant for 1000 boards for those going into production, pretty cool).

There may be some options for getting the IP by itself (perhaps they have an academic program, someone else mentioned a university program, but that was for the M0). Then you could buy a development board separately.

Here is some more information about the ARM Cortex-M1 on Altera.

Here's some information about putting a ARM Cortex-M1 on an Actel FPGA.

Meanwhile there is some interest in other versions of the ARM Cortex on FPGA; here is a paper from someone that implemented a ARM Cortex-M0 on a Xilinx FPGA.

  • \$\begingroup\$ If you want to change the design, try making a "proper" 32-bit machine. Currently, the ARM reads 32-bit instruction 8 bits at a time, meaning the PC increments by 4 for each instruction fetch. \$\endgroup\$ Commented Nov 8, 2014 at 2:49

You can now get access to the Cortex-M3 processor (and an extendable AHB/APB subsystem) through ARM's DesignStart program.

The Eval option provides an FPGA target (simulation is supported, with obfuscated RTL of the core, everything else in Verilog). This currently targets the ARM MPS2+ FPGA, with mbed support.

The Pro version (only available to companies/universities who can sign a license) allows manufacture, and includes the processor core in Verilog (this covers both Cortex-M0 and Cortex-M3).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.