\chapter{Conclusions}

SOTEST has proven to be a very useful tool for developing software for
complex embedded systems.  With a rather modest investment in writing
coarse-grained hardware simulators in the SOTEST language (SOTL), the
user gains control over every aspect of the environment in which the
software runs.  External hardware modules that were once opaque and
difficult to control are replaced by models which are transparent and
easy to manipulate.  Timing-critical regions of code that were once
impossible to single-step can be run at any speed.  SOTEST provides a
software development model which is independent of host or target CPU
architecture, although the current implementation is limited to
debugging 80186 programs on UNIX-like machines.  

The key to SOTEST's success is the integration of a coarse-grained
hardware modeling language and a microprocessor interpreter.  By
simulating at the granularity of an assembly-language instruction,
rather than sub-clock-cycle granularity employed by traditional
hardware simulators, it becomes practical to use the simulator to test
and debug the software rather than the hardware itself.  SOTEST
represents a significant advance in embedded system development
technology.

