98
Triggering Examples
Single-Machine Trigger Examples
To store and time the execution of a subroutine
Most system software of any kind is composed of a hierarchy of
functions and procedures. During integration, testing, and
performance evaluation, you want to look at specific procedures to
verify that they are executing correctly and that the implementation is
efficient. The analyzer lets you do this by triggering on entry to the
address range of the subroutine and counting the elapsed time since
the trigger state.
1Go to the state analyzers Trigger menu.
2Set Count to Time.
3Define a range term, such as Range1, to represent the address
range of the particular subroutine.
You may need to examine the structure of your code to help determine
this. If your subroutine calls are really procedure calls, then there is
likely to be some code at the beginning of the routine that adjusts the
stack for local variable allocation. This will precede the address of the
first statement in the procedure. If your subroutine has no local storage
and is called by a jump or branch, then the first statement will also be
the entry address.
4Under State Sequence Levels, enter the following sequence
specification:
While storing "no state" TRIGGER on "In_Range1" Occurs 1 Else on "no
state" go to level 1
While storing "In_Range1" Then find "Out_Range1" Occurs 1 Else on "no
state" go to level 2
Store "no state" on "no state" go to leve l 1
NOTE: For processors that prefetch instructions or have pipelined architectures, you
may want to add part or all of the depth of the pipeline to the start address for
In_Range1 to ensure that the analyzer does not trigger on a prefetched but
unexecuted state.