06-26-2007 -- SimIt-ARM 3.0 is released


SimIt-ARM 3.0 is an instruction-set simulator that runs both system-level and user-level ARM programs. It supports two popular simulation styles: interpretation and dynamic-compiled simulation. It is developed for the IA32 Linux platform but may work for other platforms as well. SimIt-ARM is free, open-source software under the GNU General Public License.

SimIt-ARM features:

  • Full system simulation
    SimIt-ARM supports the ARM v5 architecture, including the memory management unit and some fundamental I/O devices. This feature is the primary difference between version 3.0 and previous versions.

  • High simulation speed
    On a Pentium D 2.8GHz desktop, the interpreter runs at above 30MIPS. The dynamic-compiled simulator runs even faster, especially for long simulation tasks or when a multi-core workstation is used.

  • Dynamic-compiled simulation
    A special simulation technique that uses GCC to do run-time binary translation is implemented. Compared to the direct translation approach in QEMU, the GCC-based approach is easier to implement, but at the cost of translation speed. To reduce translation delay, SimIt-ARM distributes translation tasks to other CPUs or workstations via either pthread or socket.

  • Built-in debugger
    The '-d' flag enables a light-weight debugging interface, allowing one to step through a program and to observe register/memory values. A GDB remote interface will be added in the near future.

  • Modular design
    SimIt-ARM is developed in C++. All simulation states are packaged in C++ classes. Therefore it is easy to create multiple simulator objects for modeling multiprocessor targets. It is also easy to extend the simulator by deriving new classes.

Two features in SimIt-ARM 2.x releases are removed from 3.0. First, 3.0 does not include a cycle accurate simulator because it does not support ARM v5 yet. Second, 3.0 does not support floating-point emulation (FPE) instructions in user-level simulation. It is long known that FPE instructions are much slower than software floating-point. Users are recommended to compile programs with a soft-float enabled arm-linux-gcc.

A user's guide can be found here.


Download the latest release and prebuilt Linux kernel images from here. To build a cross-compiler for ARM, follow the instructions at the crosstool page. A soft-float enabled arm-linux-gcc is highly recommended.

Feedback and contributions are welcome.