A method and system for simulating the execution of a software program on a simulated
hardware system. An instrumented software program is divided into program segments
delineated by tags and is then analyzed for data describing the program segments.
The data is tabulated and indexed in a function data table according to the program
segments. Hardware parameters that at least define a portion of the simulated hardware
system are tabulated in a hardware configuration file. The software program is
executed on a host system, and when a tag is executed, data indexed in the function
data table under the program segment corresponding to the executed tag and hardware
parameters tabulated in the hardware configuration file are used to calculate an
estimated execution time for the program segment corresponding to the executed
tag. The estimated execution time for the program segment is added to a running
total for the overall execution time of the software program. The system includes
a memory for storing software parameters describing program segments of the software
program, and for storing hardware parameters that at least partially define the
simulated hardware system. The system further includes a processor for calculating
an estimated execution time for the software program using the software and hardware parameters.