Hello,
The error may be occurring when you call the b_transport method, which is responsible for receiving and handling the interrupt inside the processor.
So, you must ensure that you have the correct address (or reference) for the corresponding ac_tlm2_intr_port component.
Please also check if the <proc>.H has the init code in the constructor: intr_port_hnd(*this,&wake), intr_port("intr_port", intr_port_hnd) (this code must be generated automatically)
and ensure that you have implemented the method "handle" inside of your model.
The general steps to use interruption are:
If X is the initiator of an interruption, then it needs to know somehow the address Y of the tlm2_intr_port of the processor.
X:
Y->b_transport (...)
Proc: (general code)
tlm2_intr_port::b_transport(...)
{
handler.handle (data_p,addr);
}
There is a macro inside the <proc>_ih_bhv_macros.H that convert "handle" to "ac_behavior" and you need to implement this method in
Proc: (model code),
<proc>_intr_handlers.cpp
ac_behavior(...)
{
...
}
In your particular case, the method handle needs to write the corresponding value in the interruption register and notify an event (wake) to "turn-on" the processor.
intr_reg.write(value);
wake->notify(sc_core::SC_ZERO_TIME);
Liana