From LinuxMIPS
Jump to navigationJump to search

Emulators are software that allow to emulate a MIPS processor and eventually other devices, such as timers, serial ports, hard drives.

Open Virtual Platforms (OVP) OVPsim

Open Virtual Platforms (OVP) (http://www.OVPworld.org) includes the freely available simulator OVPsim, a library of models of processors, peripherals and platforms, and APIs which enable users to develop their own models. The models in the library are open source, written in C, and include the MIPS 4K, 24K, 34K, 74K, 1004K, 1074K and M14K cores. These models are created and maintained by Imperas (http://www.imperas.com) and in partnership with MIPS Technologies have been tested and assigned the MIPS-Verified(tm) mark. The OVP site also includes models of ARM, NEC, Power Architecture, Tensilica and OpenCores/openRisc processors. Sample MIPS-based platforms include both bare metal environments and platforms for booting unmodified Linux binary images. These platforms/emulators are available as source or binaries and are fast, free, and easy to use. OVPsim is developed and maintained by Imperas and is very fast (100s of million instructions per second), and built to handle multicore architectures. To download the MIPS OVPsim simulators/emulators visit http://www.OVPworld.org/mips.


emulates ARM, M88K, MIPS, PowerPC, and SuperH processors and machines. The MIPS emulation is fairly complete as it can run NetBSD, OpenBSD, Linux, Ultrix, and Sprite. It emulates several different MIPS ISA I-IV and MIPS32/64 processors. ARC, DECstation, Cobalt, Malta, HPCmips, SGI, and Algorithmic machines are among the currently emulated MIPS machines; however, the best supported of these machines is probably the DECstation 5000/200. The GXemul homepage is at http://gxemul.sourceforge.net/ .


models hardware similar to that of machines sold by Silicon Graphics, Inc. and Digital Equipment Corporation. The key component of such machines is the CPU, and SimOS currently provides models of the MIPS R4000 and R10000 and Digital Alpha processor families. In addition to the CPU, SimOS simulates caches, multiprocessor memory busses, disk drives, ethernet, consoles, and other devices commonly found on these machines. By simulating the hardware typically found on commercial computer platforms, porting existing operating systems to the SimOS environment is easy. IRIX 5.3, 6.4 and Digital UNIX have been ported; an Alpha port of Linux is being worked on. The project, which is hosted at http://simos.stanford.edu, seems to have been active in the 1998-2001 timeframe. Nothing new has been added since then and the overall status of the project is uncertain.

There is a SimBCM BCM1250 simulator based on SimOs. Currently it support two cpus, timer, DUART, genbus, memory controller, dma, ether card and it also support gdb remote debug. It can run CFE and linux 2.6 kernel. The NICAT L4 Pistachio can be run in SimBCM.


Sulima is an instruction set architecture (ISA) simulator, originally designed as a research and teaching tool for internal use by the Distributed Systems Group at the University of New South Wales. The documentation is sparse but refers to the use of gcc-2.95 which indicates a very old project. The Sulima homepage may be found at http://www.ertos.nicta.com.au/software/sulima/.


not to be confused with MipsSim is MIPS Technologies' proprietary MIPS simulator. It actually is more like a family of several MIPS simulators which differ in performance and accuracy allowing the user to choose the right tool for the purpose. Linux supports MIPSsim as a special target platform.


MipsSim (not to be confused with MIPSsim, note the capitalizatoin) is a MIPS emulator for the Topsy educational operating system. It's a fairly simple emulator, written in Java, that emulates a R3000 processor. This project seems to be quite old and inactive (the emulator needs some modifications to compile with recent JDK). The MipsSim homepage http://www.tik.ee.ethz.ch/~gfa/MipsSim.html is now dead; it fortunately has been archived at the internet archive.


SPIM (which is just MIPS spelled in reverse) is an emulator that supports a MIPS32 instruction set (no MIPS64 bit support) with some minor restrictions in available instructions. It works by interpreting MIPS assembler source code and thereby avoids binary "complications". It seems most suitable for learning the basics of MIPS assembly language. SPIM is available from A MIPS32 Simulator by James Larus site in source code and binary executables format for Linux, Windows and Mac OS X (non native, running in X11) . The latest version is 7.5, dated August 2009.


is an R3000 emulator. VMIPS comes with a few standard devices: SPIM-compatible console device, Standard clock device, Halt device and DECstation 5000/200-compatible devices. New VMIPS versions are released infrequently every few years; the latest release 1.4 dates from January 2012 but the author does maintain it and has a mailing list (not too active) for news. VMIPS is written in C++ and is extensible since the object-oriented way in which it is written makes it easy to understand and modify. The VMIPS documentation is well-written. Developing new devices for VMIPS is straightforward. The VMIPS homepage is located at http://www.dgate.org/vmips/.

Virtutech Simics

Virtutech Simics Developer is a commercial product (free for academic use) designed to emulate systems such as Alpha, AMD64, ARM, EM64T, IA-64, MIPS, PowerPC, SPARC-V8 and V9, and x86 CPUs. For MIPS architectute Simics emulates MIPS Malta with 4K or 5K CPU.


was developed by Institute of Computing Technology (ICT) of the Chinese Academy of Sciences and is derived of VMIPS. Like VMIPS it simulates a R3000-based system. SandUPSim's homepage can is located at http://www.ncic.ac.cn/~hpcog/homepage/SandUPSim.


MPS is an R3000 emulator (MIPS I instruction set). English documentation is available. MPS is available at http://mps.sourceforge.net/index.html


Yet Another MIPS Simulator, plus some hardware emulation to run NetBSD. YAMS is available at http://www.niksula.hut.fi/~buenos/yams.html.


X-MAME and X-MESS no longer exist.

MAME is a Multi Arcade Machine Emulator, a program that emulates the hardware (and low-level firmware) of a massive variety of arcade machines. MESS is a Multi Emulator Super System, an emulator for the hardware of many different games consules (e.g. Sega, NES, SNES, etc.)

The official site of the MAME development team : http://www.mamedev.com/ . There is a port to the X/Unix: XMAME.

Among others MAME emultates a MIPS R3000, MIPS-III /IV and Sony PSX CPUs. Emulated systems includes Atari/Midway Phoenix/Seattle /Flagstaff consoles (which based on the R4700/R5000 and Galileo GT-64010), Sony consoles and SGI Indy and Indigo.


MISSE, the MIPS Instruction Set Simulator Environment is available from http://www.abo.fi/~jkniivil/misse.

Cisco 7200 Simulator

is an emulator of a Cisco 7200, 3600 and 3700 routers. The software emulates a R4600 CPU and some of the peripherals of the Cisco routers (Galileo GT64010, DEC Tulip 21140, DEC 21050, ...). This emulator is actively maintained. There is a good deal of emphasis on emulating network devices, as you might expect with a Cisco emulator. The Cisco 7200 Simulator homepage is located at http://www.ipflow.utc.fr/index.php/Cisco_7200_Simulator.


QEMU has its own page.


VirtualMIPS is an emulator of MIPS SoC's and systems, currently only supporting the Ingenic Jz4740.


Miep is work in progress. It is meant to become an SGI Indy emulator.


MARS is MIPS Assembler and Runtime Simulator. It implements a superset of MIPS32 architecture. It is available at http://courses.missouristate.edu/KenVollmar/mars/index.htm.


QtMips is simple single cycle and classical 5-stage pipeline graphic simulator of MIPS architecture intended for basic computer architecture courses. It reads ELF executables, provides simple serial output and peripheral panel. Instruction and data cache visualization and corresponding memory cells highlighting is included. Integer 32-bit user-mode architecture subset is supported. Linux kernel equivalent of write and writev syscalls is included. It is available at https://github.com/cvut/QtMips/.

See also