For a very long time I have been troubled by the idea of working on a custom processor design. The idea does not stem from a necessity. I do not have a use case in mind that will need a custom processor. The hard processors that I have access too are good enough for most things I do.
For some reason, in my mind, the ability to make custom processors has been anchored as a benchmark for being a good system engineer. A lot of the skills sets I have been picking up are indeed building blocks used in processor design. Maybe the pieces of the jigsaw puzzle are there and all I have to do is put them together or maybe it is at its core, a skill issue.
Picking an Architecture
A RISC (Reduced Instruction Set Computer) seems like a good choice. By its very definition, it simplifies the architecture by reducing the instruction set. It has a lot of great resources and a very active user base. Any build I do here will probably map very well to the work being done in the real world,more relevence, more impressions, more feedback?
Another option would be taking the first processor (the intel 4004) or something of similar complexity. Probably an easier hurdle to tackle.
Starting Simple
Doing the easier things first might help me build up the momentum to tackle the difficult ones later. I will be looking into 4004. (note: maybe add a new post just about 4004)
The first commercial microprocessor and CPU on a single chip, released in November 1971. It was a 4-bit processor developed for a Japanese calculator company, Busicom, but Intel repurchased the rights to the design.
When targeting an FPGA fabric ,the design flow should probably look like:
- Define architecture including registers, ALU, program counter, and control logic
- Write RTL
- Simulate and verify modules.
- Mapping memory and I/O using FPGA BRAM and maybe other peripherals
- Synthesize RTL to FPGA logic (Note: which board?)
- Perform timing analysis and optimize for the target FPGA
- Place and route the design on FPGA fabric (Note: A brancing post about auto vs custom PnR?)
- Program the FPGA and test the CPU with sample programs
4004 was most frequently used in calculators. That was the market that the Japanese company Busicom was trying to target. Using the softcore processor as a simple calculator would probably make sense.
To ASIC or not to ASIC (Note: Branching post?)
If the design has to be target an ASIC then the flow will probably look like:
- Use SRAM/ROM for memory instead of FPGA BRAM
- Synthesize to standard cells, not FPGA logic
- Place and route involves physical layout on silicon
- Look into power, area, and timing more carefully
- See if the DV steps are different, the post silicon test are out of the scope anyway.

Leave a Reply