I am a MCU digital IC designer. In our MCU design, we used Cortex-M7 to control our system. A random problem occures during my simulation.
The LD file defined the RAM/CODE region(0x2801000~0x28030000), but M7 fetched instruction from 0x2800_fxxx sometimes. The memory from 0x2800_0000 to 0x2800_ffff is reseved,so it is not initiated at the start of simulation. Once M7 fetched instruction from 0x2800_fxxx, R-channel would get 64'hXXXX_XXXX, then M7's behaivor is un-predictable.
We had reviewed our c-code, there is not operation to load from 0x2800_0000 to 0x2800_ffff region. So I wonder why M7 can initiate a instruction-fetch transaction from 0x2800_fxxx.
thanks for your reply. as you mentioned, the root cause is speculative accesses.I tried to configure the region as EXECUTE NEVER with MPU. This problem has not apear agin.