What is the downside of implementing interrupt service routine in a component?

In reply to manon:

I’m not sure I can answer your question directly but I can give you some thoughts to consider.

Your two proposals are not mutually exclusive. Either way you need to have a process that gets blocked waiting for something to happen. It’s created by the run_phase of a component, or a fork/join_none in a sequence. An either can be triggered by uvm_event or an analysis port.

If you do a search for “UVM interrupt service routine” you should get pointers to many conference papers and other posts that many contain more ideas.