- 08 Oct 2007
X32: A 32-bit FPGA Softcore and Tool Chain
Originally, processor design has always been in the hands of large companies. This is due to the complex design trade-offs and high investments required to turn designs in actual chips. Nowadays, the advent of Hardware Description Languages (HDLs) and Field Programmable Gate Arrays (FPGAs) allow every student or hobbyist to turn his desk into a (digital) hardware manufacturing site. This has promoted the research to a new approach to processor design: the top-down approach. Originally, processor design starts with the design of an Instruction Set Architecture (ISA), from which both a compiler back-end and a microprocessor are designed. The top-down approach reverses this design path, and starts at the programming language itself. From the programming language, the ISA is extracted and implemented in a processor, without
caring too much about the underlying hardware technology. The main advantage of the top-down approach is short design path, as no ISA or compiler back-end have to be developed. The drawback is the processor performance, which is not optimized to the technology, and thus not optimal.
In this thesis, the top-down approach is used to develop the X32 softcore. The X32 is designed around the intermediate language of the LCC ANSI C Compiler (the stack based LCC Bytecode language). Using the X32 softcore, the top-down approach is analyzed in terms of costs, reliability and performance. Due to the short design path of the top-down approach, the first version of the X32 and its compiler toolchain was developed within five months, requiring only a third to a tenth of the code used in softcores with similar featuresets. Due to the fact the X32 was completely designed from the specifications of the C programming language, the C support and reliability of the X32 and its toolchain are proven to be very good. The performance of the X32 in comparison with softcores and microcontrollers based on the old (but still widely used) 8051 ISA, and the ISA of the predecessor of the X32: the 6502, proves to be very good, due to the great compatibility between the X32 softcore and the C programming language. A current speedup of the X32 over the 6502 and 8051 of a factor 10 is proven, and a speedup of a factor 20 is proven to be feasible. When comparing the X32 to the advanced Pentium 4 ASIC, it is found that the Pentium 4 outperforms the X32 with a factor 20 when running at the same clockspeed, and can ultimately be reduced to a factor 13. The higher performance achieved by the Pentium 4 is off course caused by the fact that the Pentium 4 is completely designed for performance, and because the design of the X32 is far from optimal in terms of performance due to the chosen design approach and stack based implementation.