Simplescalar is legacy research software. It's not a good idea to use it for new projects, PhD work or taught courses. However, it has been used quite widely in the past. It remains important enough to still receive occasional maintainance updates.

Unfortunately, these only include the two simulation targets supported by Simplescalar version 3.0, namely PISA and Alpha. Though maintenance release 3.0e will compile on current Linux systems (as shown in this video) it does not have ARM support. ARM support only featured in a pre-release of version 4.0, placed on the web more than a decade ago, and never updated. (It also appears within version 2.0 of Sim-panalyzer.) This old software does not compile on current Linux systems, and has not done so for many years.

This web page used to provide a collection of patches to fix the compilation problems in Simplescalar/ARM, as released here. Those patches are still here, but they don't fix all the problems any more, and furthermore I do not believe that patching the old code is a wise strategy. Every new release of GCC or glibc appears to break something different. Effective maintenance means testing the Simplescalar/ARM software on every sort of Linux system that anyone might wish to use. It is no longer feasible to keep everything up to date.

The required version of gcc appears to be 3.2. The required glibc is similarly historical. These are not available in recent Linux distributions. The newer equivalents are not entirely compatible.

Users of Simplescalar/ARM should be aware that they are dealing with seriously old software. They should really move to something contemporary such as gem5, which is living software, under active development, and with a large community of developers and users. With Simplescalar, you are essentially on your own. Neither of the two primary authors will have time to help you or answer questions. They are working on other things. So are most of the people who used Simplescalar, including myself. User, beware.

Simplescalar/ARM VirtualBox Appliance

My recommendation is to use Simplescalar/ARM and its tools only with historical Linux software, dating back to around the release date (2000-2002). Users have had success with Ubuntu 6.06 and Slackware 8.1.

I now provide a VirtualBox appliance containing Slackware 8.1 plus Simplescalar/ARM, the cross compilers, and sim-panalyzer. This is available for download:

Simplescalar ARM Legacy Tools.ova (341 megabytes)

You can import this into VirtualBox. After booting up, log in as root (password 1234). You can then use various tools, including:

  • arm-linux-gcc (compiler)
  • sim-outorder
  • sim-panalyzer
  • sim-uop

It is possible to take binaries out of this appliance and use them on newer Linux systems (though not vice versa). You can use the built-in web server or SSH server to transfer files.

The cross-compiler toolchains and Simplescalar/ARM are installed in /opt where the source code is also archived. The tools are automatically added to the PATH. You can use "which" to discover where a particular tool is stored on disk.

In order to use the appliance you will need to be comfortable with using Linux at the command line. But that is a pre-requisite for using Simplescalar, and probably almost any research simulator.

Patches for Simplescalar-ARM 0.2

These aren't enough to get everything working, but they are at least a starting point. The bug fix patches are already included in the VirtualBox appliance.

  • "Undefined reference to `errno'" patch


    This patch fixes the problem with errno during linking, which causes messages such as eval.c:907: undefined reference to `errno' to appear. errno used to be a static variable, but on modern systems it has been redefined as a macro in order to avoid problems with multithreading.

  • LFM-SFM microcode bug patch


    There's a bug in the implementation of the microcode for LFM and SFM in Simplesim-ARM 0.2. The bug shows up when LFM or SFM is used to write two or more registers in predecrement mode with writeback, provided that a microcoded simulator is used (e.g. sim-uop). This patch corrects the bug.

  • Memory corruption (sim-panalyzer)


    I found two (host) memory corrupting bugs in sim-panalyzer, using valgrind. This is the fix for both.

  • Cache writeback fix (sim-panalyzer)


    Cache writebacks caused memory corruption.