Trace File

Currently only SPIKE traces are supported. However, as only the PC and encoding is required to generate the trace supporting other formats should be trivial.

After parsing (_spike.parse_spike_log) a doubly-linked-list of all instructions observed in the given application is available (_trace.TRACE) for each processor ID.

digraph DLL { rankdir=LR; node [shape=record]; /* List nodes */ n1 [label="1st Executed"]; n2 [label="2nd Executed"]; n3 [label="3rd Executed"]; n1 -> n2 [label="next"]; n2 -> n3 [label="next"]; n2 -> n1 [label="prev"]; n3 -> n2 [label="prev"]; }

Trace Object

The _trace.Trace class is a linked list element that contains all information regarding the current, previous, and next executed instruction.

By having reference to the previous and next instruction the user can inspect the application for sequences, for example:

  1. A register dependency between a 2 subsequent instructions

  2. The distance between a branch / jump instruction and its destination