During the Nios® II application development and debug, you might notice a reset command in assembly code view like this "call 0x0". This reset came from a memory getting corrupted. This corruption came from writing to a read-only peripheral, or reading from unknown address.
So, what will happen to this wrong transaction? it get routed to the "default" slave. The default slave is defined as
1- Peripheral with the largest address span.
2- Peripheral that was selected as the default slave in Qsys.
If you are not defining the default slave, the memory peripheral will be the default slave.
To avoid this unexpected reset command, do the following things:
1- Don't write to read only peripherals.
2- Define a default Qsys Slave peripheral to receive all unassigned transactions. -- there should be default slave peripheral that would capture the address of the invalid transaction it received.
3- Use AXI timoute bridge or AXI default slave