AAPSIM: Implementing a LLVM based simulator

An Altruistic Processor (AAP) is an open hardware 16-bit architecture for deeply embedded applications running on small FPGA devices. It is somewhat configurable, with a minimum of 4 16-bit general registers, at least one word-addressed code space of up to 16Mword and at least one byte addressed data space of up to 64kbyte.

A key part of any implementation of an embedded toolchain is a simulator of the architecture, both such that user written code can be run and so the compiler's implementation itself can be verified. As part of AAP, we have implemented a simulator based on LLVM MC that both runs standalone and as part of a gdb/lldbserver.

In this talk I will discuss the design and my experiences of using LLVM as the host for a simulator.