Can I get a uvm_component to generate sequences? For example, let’s say that I have a uvm_component with an analysis_imp listening to a monitor. When the monitor writes into its analysis_port my uvm_component executes its implementation, in that implementation I want to create a sequence and send it on a sequencer (I would want this to be extended to different sequencers by means of using a virtual sequencer).
By the moment I’ve tried using `uvm_do_on_with but it didn’t work the uvm_component is not a uvm_sequence. I was wondering if anyone had the same problem and knows how to overcome it.
In reply to Marc43:
To clarify your requirement: you want to transmit data from the monitor to the sequence. Right?
Yes. What I really want is to have a module UVC acting as a control agent and an interface UVC that would be the slave. The control agent must be able to create new sequences depending on the observed responses (yes, from the monitor).
Whether it is a uvm_driver or not (said uvm_component in the post), I need to create sequences depending on the DUT responses. I don’t want this logic in the UVC Interface but in the UVC Module. How can I use the driver or the component to create sequences and send them to a sequencer?
In reply to Marc43:
It is useless to think about a solution you are thinking of. uvm_components and uvm_seq_item/uvm_sequences have different behavior.
But what you can do is to transfer along with an event data from a source to a destination. The source might be a monitor (uvm_component) and the destination a sequence (uvm_sequence).
I ican give you a code example doing exactly this. Please share your email address with me. Send a request to christoph@christoph-suehnel.de.