5.8.4. Calling wait() in the middle of a transaction

If wait() is called in a middle of a transaction for externally triggered signals, it is not guaranteed that signals/transactions are always generated within the SC_THREAD context of the EVS. If a signal is triggered by an external event, such the WFI signal in the Cortex-A9, calling wait() in the behavior implementation of a peripheral that responds to this signal causes a runtime error. In Figure 5.17, Peripheral 1 issues a signal that causes the wfi signal on the core to be set. The Core, directly responding to this signal change in its behavior (not buffered) generates a signal change on its wfi port with the context of SC_THREAD #1.

If it is required that the peripheral really issues a wait() in reaction to a signal that is changing, it must be buffered in the bridge between the EVS and SystemC. On the next activation of the bridge the signal can be set with the thread context of the EVS.

Figure 5.17. Calling wait() in the middle of a transaction

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


Note

The exported platform runs in temporal decoupled mode using a time quantum. Therefore targets (for example, Peripheral 2 in Figure 5.17) do not call wait().

Copyright © 2007-2010 ARM Limited. All rights reserved.ARM DUI 0370K
Non-ConfidentialID110210