The Mill simulator is a pico-second accurate execution model for all Mill members. It models the bare machine at power-up; the simulated program is presented as a ROM image as a BIOS would be on a physical machine. The program being simulated can alter the simulated clock rate by accessing the simulated PLLs of the simulated hardware, just as a physical program could on physical hardware; thus the simulation is at the pico-second level rather than the cycle level.
During simulation execution, the simulated program can use outcalls to communicate with the host simulator, and the host simulator can use backcalls to communicate with the program being simulated. Outcalls appear to be normal machine function calls to the simulation, while backcalls appear to be spontaneous function calls to the simulation, similar to interrupts except for not routing through handler invocation.
The simulator uses a text-based user interface with commands identical to or extending the command interface of the GDB debugger. There is extensive on-line help as part of the command interface.
The tool chain creates a custom simulation program from each program to be simulated; there is not a single simulator that takes a program as a file. The generated simulation has pre-processed the program instructions into direct calls on the simulated functional units; this removed the need of parsing the instruction binary from simulator execution, dramatically speeding up simulation. The binary code is still in simulated memory, so the program can still interact with its code; the preparse is an optimization of the common case.