Hi,
In my test bench I am using uvm_event for ISR.
I am triggering uvm_event in monitor when there is an interrupt and In sequence I am using wait_ptrigger_data() and when event is triggered ISR is started to clear the interrupt.
There is 5 different type of interrupt and for each type of interrupt different ISR sequence should be started.
In some cases 5 different interrupt comes at the same edge of clk but the wait_trigger_data() task only collecting one of the event and clearing that type of interrupt only.
How to collect 5 event at the same time?
Please provide some suggestion to implememnt ISR also.
I implement ISRs as a sequence which will send a sequence item to the associated driver telling it to wait for an interrupt. The driver will send a response when the interrupt happens. When the response is received, the ISR sequence will determine which interrupt happened and handle it appropriately. When handled, another sequence item will be sent which can then send back a response for the next interrupt.
There is nothing wrong with waiting for a signal in a driver. It’s the same as driving a transaction into the DUT and waiting for the DUT to respond.