5.8.3. 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 EVP. 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.14, 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 EVP and SystemC. On the next activation of the bridge the signal can be set with the thread context of the EVP.

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


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

Copyright © 2007-2009 ARM Limited. All rights reserved.ARM DUI 0370H