People   Project   Publications   More Info  
    architecture   programming   performance   VLSI   board   applications   tools  


Software Tools


We have been running all Imagine applications using the cycle-accurate simulator ISim.  The simulator can be supplied with a series of commands either through an interactive interface or from a script file.  The simulator also allows to run applications running on multiple imagines.  

There are four available Imagine programming tools:

IScd (Kernel Scheduler)
A single-phase VLIW scheduler, which is optimized for individual kernels by handling functional unit assignment, communication scheduling between clusters and modulo-software pipelining.  It generates the set of VLIW instructions in the shape of a microcode program (.raw file), which resides in Imagine memory until it is needed, at which point it is loaded onto the on-chip microcode store.  In order to facilitate debugging, the scheduler also generates human-readable .uc files and is used by the simulator. 
IStream (Stream Scheduler)
 The stream scheduler converts StreamC functions into Imagine operations, which are dispatched to Imagine by the host to load input streams, execute kernels and save output streams.  The scheduler generates these operations such the working set has all the resources required in Imagine, available to it.  It determines the allocation of the memory and SRF amongst all the streams and handles large streams using strip-mining or double-buffering.  It determines dependencies between operations and allocates operation issue slots, and performs high-level optimizations like software pipelining.  The Stream Scheduler is profile based; it runs once with a simple allocation of the code on the Imagine simulator and determines a good allocation from the usage information derived from the first run. 
Idebug (Interactive debugger)
This is a functional simulator to debug Imagine applications during development stage. This uses the Visual Studio debugging environment. 
Schedviz (Schedule Visualizer)
This is used for schedule visualization: allows one to monitor how the different Imagine resources are used over time.