\contentsline {chapter}{\numberline {1}Introduction}{6}
\contentsline {section}{\numberline {1.1}Current Development Strategies}{6}
\contentsline {subsection}{\numberline {1.1.1}Laboratory-based Target Environment}{6}
\contentsline {subsection}{\numberline {1.1.2}Workstation-based Target Environment}{7}
\contentsline {subsection}{\numberline {1.1.3}Workstation-based Cross-environment}{8}
\contentsline {subsection}{\numberline {1.1.4}The Workstation-based Simulated Environment}{9}
\contentsline {chapter}{\numberline {2}SOTEST}{12}
\contentsline {section}{\numberline {2.1}80186 Engine}{12}
\contentsline {section}{\numberline {2.2}Symbolic Debugger}{13}
\contentsline {section}{\numberline {2.3}SOTL Interpreter}{13}
\contentsline {section}{\numberline {2.4}Interactions between the 80186 Engine and SOTL}{13}
\contentsline {section}{\numberline {2.5}Scheduling}{15}
\contentsline {subsection}{\numberline {2.5.1}Scheduling Rules}{15}
\contentsline {subsection}{\numberline {2.5.2}Motivations for Scheduling Rules}{17}
\contentsline {subsubsection}{Breakpoints}{17}
\contentsline {subsubsection}{Control-C Interrupts}{18}
\contentsline {chapter}{\numberline {3}Using SOTL}{19}
\contentsline {section}{\numberline {3.1}Writing Hardware Simulators}{19}
\contentsline {chapter}{\numberline {4}SOTEST Implementation}{25}
\contentsline {section}{\numberline {4.1}Event Dispatching}{25}
\contentsline {subsection}{\numberline {4.1.1}Breakpoint Events}{25}
\contentsline {subsection}{\numberline {4.1.2}Memory Read and Write Events}{26}
\contentsline {subsection}{\numberline {4.1.3}Port Read and Write Events}{27}
\contentsline {subsection}{\numberline {4.1.4}Conclusions}{27}
\contentsline {section}{\numberline {4.2}Idle Trapping}{27}
\contentsline {chapter}{\numberline {5}Conclusions}{29}
\contentsline {chapter}{\numberline {A}SOTEST Reference Manual}{30}
\contentsline {section}{\numberline {A.1}SOTEST Structure}{30}
\contentsline {section}{\numberline {A.2}Threads and Scheduling}{31}
\contentsline {section}{\numberline {A.3}SOTL Types}{32}
\contentsline {subsection}{\numberline {A.3.1}Primitive Types}{32}
\contentsline {subsection}{\numberline {A.3.2}Aggregate Types}{34}
\contentsline {subsection}{\numberline {A.3.3}Booleans}{34}
\contentsline {section}{\numberline {A.4}SOTL Identifiers}{34}
\contentsline {section}{\numberline {A.5}SOTL Patterns}{35}
\contentsline {section}{\numberline {A.6}SOTL Expressions}{37}
\contentsline {subsection}{\numberline {A.6.1}SOTL Operators}{37}
\contentsline {section}{\numberline {A.7}SOTL Statements}{41}
\contentsline {section}{\numberline {A.8}SOTL Command Operators}{42}
\contentsline {section}{\numberline {A.9}Events, Event Specifications, Event Predicates}{68}
\contentsline {subsection}{\numberline {A.9.1}Event Types}{69}
\contentsline {subsection}{\numberline {A.9.2}Event Specifications}{71}
\contentsline {subsection}{\numberline {A.9.3}Event Specification Constructors}{72}
\contentsline {subsection}{\numberline {A.9.4}Event Predicates}{74}
\contentsline {section}{\numberline {A.10}UNIX System Calls}{76}
