MGSA has developed an Integrated Test Environment (ITE) capable of executing multiple instances of independent
Operational Flight Programs (OFP) specifically targeting the Mil-Std-1750A processor within a PC based Microsoft
Windows operating system. This capability creates an environment which synchronizes the execution of each
OFP and exactly replicates the operations and performance of the actual Line Replaceable Unit (LRU) hardware.
Options are provided to the user for observation of OFP performance including register values, memory viewing,
breakpoints, and single stepping while maintaining operation synchronicity across all applications executing
within the IDE.
This ITE was developed for the Self-Contained Navigation System (SCNS) applicable to a number of C-130
airframes and utilizes an Instruction Set Simulation (ISS) for the operations of the 1750A processing. Although
this ITE was developed specifically for the 1750A processors of the SCNS system, it can be easily modified to
support any LRU hardware which is supported by ISS software.
The methodology used was developed in the Math Sciences Department of Clemson University from research
in the area of discrete (or event sequenced) simulation. This research was directed by Dr. Robert E. Haymond
and one of the graduate students, Dr G. Thomas Mertens, is now a systems engineer with MGSA. The methodology
involves classifying events as either natural (predictable events, capable of being scheduled) or unnatural (events
that can only be detected at the time they occur). A standard set of data structures and control structures was
devised for scheduling and executing this combination of event types. The IDE Executive processing and the
components it sequences are an implementation of these techniques.
The SCNS Integrated Test Environment (ITE) provides a complete test and debug capability for both
of the SCNS OFPs and runs on an ordinary desktop PC. The SCNS ITE makes use of a 1750 instruction set
simulator (ISS) tailored to the SCNS processors. This ISS executes the same binary image that runs in the
real processors and executes the OFP many times faster than the real hardware. The speed of the ISS makes it
possible to run, in real-time, up to 5 instances of the ISS along with all the necessary components required to
stimulate and instrument the OFPs.
These other components include:
The SCNS_Exec starts the other components (except for DEsim) and controls the execution sequence of FLTsim,
LRUsim and CPUexec. The instances of DEsim are started by SCNSforms and both the DEsims and SCNSforms run
asynchronously with the other components.
FLTsim and LRUsim are run at 50 millisecond intervals to simulate the aircraft and LRU states. CPUexec is
then run to simulate 50 milliseconds of processor execution by properly sequencing the execution of AIUsim, HWsim
and the multiple instances of the ISS.
The ISS simulates the execution of instructions by modifying the registers and memory of the simulated CPU
according to the instructions executed. When the ISS encounters an IO instruction (XIO) that requires interaction
with external devices is halts execution and returns the XIO code to CPUexec. CPUexec examines the XIO code
and invokes either AIUsim (1553 XIO) or HWsim (all others) to perform the required action.
The AIUsim transfers data between CPUs and between CPUs and LRUs as determined by a bus command list from the
CPU that is acting as Bus Controller (BC). These data transfers may result in interrupts for the sending and/or
receiving CPU. The AIUsim maintains a schedule of these interrupts and provides CPUexec with the time of the next
interrupt it needs to generate and the CPU to receive the interrupt.
The HWsim transfers data between the CPUs and other LRUs using a variety of interface types. Some of these
transfers generate interrupts and HWsim also maintains a schedule of interrupts and provides CPUexec with the time
and CPU of the next interrupt it needs to generate.
Each instance of the ISS maintains a clock representing simulated time. The clock is updated after each
instruction is executed, according to the type of instruction. One of the most basic requirements for an accurate
simulation of multiple CPUs is that when data is transferred between CPUs both CPUs must be at the same simulated
time. The sequencing of the execution of the ISSs, AIUsim and HWsim to accomplish this and to generate interrupts
at the appropriate time is the function of CPUexec.
Examples of the natural updates in this simulation are the generation of interrupts and the synchronizing
of one CPU’s time with another in preparation for a data transfer. An example of an unnatural update would
be one of the ISSs encountering an XIO for an external device.
In its basic operating cycle CPUexec determines the time of the next scheduled event and the CPU the event
if for. It then invokes the ISS for that CPU with a target time equal to the time of the event. The ISS then executes
instructions until it reaches the target time or encounters an XIO for an external device. If it reaches the target
time CPUexec invokes the component that scheduled the event (AIUsim or HWsim) and the action associated with the
event (such as an interrupt) is executed. If an external XIO is encountered then either AIUsim or HWsim is invoked
to perform the IO and schedule any resulting events. This process is repeated until 50 milliseconds have been simulated
and control is returned to SCNS_Exec.
CPUexec also has logic to provide for single stepping a CPU and for recognizing that a breakpoint has been
encountered. In these cases control is returned to SCNS_Exec before the 50 millisecond cycle is complete. While
halted (or while running), the user has complete visibility to the memory and registers of all the CPUs. When the
user commands execution to continue, control is returned to CPUexec and the 50 millisecond cycle is completed. It
is important to note that these pauses in execution do not affect the end result of the test. The instructions of
the multiple OFPs are executed in precisely the same manner whether they are halted or not. This is drastically
different from a test bed that uses real CPUs, where halting a processor will inevitably change the result of the test.
The ITE described here was built for the C-130 SCNS aircraft, but this IDE architecture is applicable to any
system where an ISS is available or can be developed.