# How do I design my very own ARM based processors?

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?
• The obvious answer is to talk to ARM. – Olin Lathrop Aug 3 '12 at 19:41
• 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. – akohlsmith Aug 3 '12 at 19:46
• I don't understand the downvotes, this is may be a naive question, but definitely legitimate IMO. – Jon L Aug 3 '12 at 20:09
• 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. – Chris Stratton Aug 3 '12 at 21:14
• 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. – RBerteig Aug 3 '12 at 23:22

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 US0.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. • +1. Excellent answer. What I was going to say, but better. – Rocketmagnet Aug 3 '12 at 20:08 • 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. – user3624 Aug 3 '12 at 20:19 • 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? – supercat Aug 3 '12 at 20:23 • @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. – user3624 Aug 3 '12 at 20:33 • @LordLoh you may find these questions useful: electronics.stackexchange.com/questions/28686/… electronics.stackexchange.com/a/7051/638 – W5VO Aug 3 '12 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.) • Thanks :-) I'll try to get my adviser to request some of these. – Lord Loh. Aug 3 '12 at 20:49 • 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. – Sean Houlihane Aug 27 '17 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 at625 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.