Using XSIM¶
In this section, we have a series of examples which show some ways of using XSIM to gain a greater insight into how programs run on XCORE devices.
Which tile is my code running on?¶
Build and execute the example in Targeting multiple tiles:
$ xcc -target=XCORE-200-EXPLORER mapfile.xc main.c
$ xrun --io a.xe
Hello from tile 0
Hello from tile 1
How can we convince ourselves that the output was generated by code running on
the specified tiles? We can use xsim -t
to determine which tile the
system calls were generated by. Here we use grep to simplify and
reduce the trace output by capturing 1 line before each of the relevant output
lines:
$ xsim -t a.xe | grep -B 1 "Hello from"
tile[0]@0- -SI A-.----00040264 (_DoSyscall + 0) : nop @11057
Hello from tile 0
tile[1]@0- -SI A-.----00040234 (_DoSyscall + 0) : nop @11061
Hello from tile 1
This shows that the system calls were generated by the expected tiles.
Using XScope during simulation¶
You can use XScope when running code on the simulator. It isn’t faster than the non-Xscope approach, but it allows debug of any XScope-related issues.
Build the example in Using XSCOPE for fast “printf debugging”. Execute the application using the
xsim --xscope
option as follows:
$ xsim --xscope "-offline xscope.vcd" a.xe
Tile 0: Result 0
Tile 1: Iteration 0 Accumulation: 0
Tile 1: Iteration 1 Accumulation: 1
Tile 1: Iteration 2 Accumulation: 3
Tile 1: Iteration 3 Accumulation: 6
Tile 1: Iteration 4 Accumulation: 10
Tile 1: Iteration 5 Accumulation: 15
Tile 1: Iteration 6 Accumulation: 21
Tile 1: Iteration 7 Accumulation: 28
Tile 1: Iteration 8 Accumulation: 36
Tile 1: Iteration 9 Accumulation: 45
Tile 0: Result 45
XScope trace output will be placed in xscope.vcd
.