My Links
Other Links


In the AAO TCS project we made very effective use of extremely detailed hardware simulation. As a result, this has been used in subsequent AAO software projects. The idea is to make it possible to develop software in the absence of the hardware (either because it isn't built yet, or because it's too hard to get access to it for software development and testing). To do this, we build very detailed hardware simulators in software, working at the level of the very low-level hardware interfaces.

We try to move the point at which you ask 'am I simulating?' as far down in the code as possible. Ideally, we want this to be at a lower level than any of the code we are writing for the system in question. Assuming we aren't actually writing drivers for a given project, one possibility would be to replace the drivers used by simulated versions that re-direct all driver calls to a separate simulation task. This would mean that multiple tasks would all get a consistent view of the simulated hardware, since they would all be working with the one simulator task.

In practice, we don't quite do this, but we put very thin wrappers around the drivers and get the same effect with a little more flexibility.

An AAO-written sub-system called XWing handles all the housekeeping for this.

XWing has a user manual, which can be found here, and this explains the philosophy in more detail.

The latest version of XWing can be found here. A talk on simulation at AAO is to be given at the 2010 SPIE conference at San Diego, and I'll put a link to that talk as soon as the conference is over.