Home | Development Tools | Screenshots | The Team
 
icISE:

Design & software implementation of a microcode-level architecture simulator

  
The purpose of this project has been to develop an emulator for a computer architecture which can be configured at the microinstruction level. This emulator, clearISE, allows any number of specific architecture implementations to be run on a single abstract 'hardware' called icISE. To achieve this goal we designed a microcode description language (MDL) which defines the precise functionality desired by the programmer in terms of the micro-instructions implemented by the icISE 'hardware'.
 

icISE Software Components

The software components that make up the project are as follows:

  • The clearISE emulator, an GUI X application for Linux written in C++.
  • ISEcube, a simple example microcode description for a stored program computer.
  • ANRA, a configurable assembler.
  • A number of simple ISEcube binary programs.
      

clearISE - an object-orientated approach

clearISE is an object-orientated application, developed in C++.  The primary objects are:

  • a microcode language parser to convert to the human readable microcode description language into a more compact format.
  • a microcode interpreter to 'run' the microcode.
  • an emulation system which provides access to the simulated icISE hardware. 
  • a graphical user interface to enable the user to interact with the emulator.

 
A powerful GUI

clearISE contains a powerful graphical user interface with a range of features:
  • view the state of the icISE registers and memory as a program runs.
  • "poke" values into both registers and memory.
  • the data flow between source and destination is "lit up" after each microinstruction.
  • adjust the simulation speed during execution.
  • define breakpoints on read and/or write access to memory.
  • use the instruction viewer to see the previous and next microinstructions, together with the values of registers that have been altered.

For further details, please view the clearISE screenshots.

  
Primary Application

This project is primarily envisaged as being a useful teaching tool to accompany a computer architecture course with a significant emphasis on machine instruction sets and micro-instructions. clearISE's design is inherently flexible and allows the emulator to be used in a variety of different ways.

If a user's particular interest lies in assembly language programming then they can choose to load a pre-created MDL file (such as ISEcube) and then write and run binary programs for it. clearISE can be configured to update the graphical display once every machine instruction so the user can use the program easily without needing any knowledge of the lower level microcode implementation.

If, however, a user is more interested in how machine instructions are constructed at the microcode level they can choose to develop their own MDL file and then test it using clearISE. In this case clearISE can be configured to update the graphical display at the end of every micro-instruction. There are a number of debugging tools within the emulator designed specifically to facilitate easy MDL development.

Perhaps most interestingly, clearISE does not have to be used to emulate a stored-program computer at all. We have produced a simple MDL file which turns icISE into a 'factorial machine' to demonstrate this particular concept.