I am a bit confused the way sequence and sequencers interact in UVM.
- does sequence hold sequencer object variable
- if 1) is true, when is the object variable assigned with sequencer object variable
- does a sequencer call a sequence or vice versa
Can anyone explain how this communication between sequencer and sequence happens?
In reply to verif_learner:
This chapter of the UVM Cookbook explains everything about sequence/sequencer/driver interaction.
In reply to cgales:
In reply to verif_learner:
This chapter of the UVM Cookbook explains everything about sequence/sequencer/driver interaction.
Thanks a lot. Probably, not a very related question but I would like to get comments.
There is a code chunk - apb_write_seq.start(env.m_apb_agent.m_sequencer);
A code like above means that the sequence that is starting its sub-sequence has to know the testbench hierarchy (env.m_apb_agent.m_sequencer). So, when the same environment is re-used in a top level environment (sort of vertical re-use) then would these sequences that have hard coded these sequencer paths need to be re-coded?
In reply to verif_learner:
The code that you referred to should be part of a test, which is not considered reusable. You can reuse the environment as part of vertical reuse, and you can reuse the apb_write_seq as well, but the new test will need to know the hierarchy of the sequencer, as you pointed out.
In reply to cgales:
In reply to verif_learner:
The code that you referred to should be part of a test, which is not considered reusable. You can reuse the environment as part of vertical reuse, and you can reuse the apb_write_seq as well, but the new test will need to know the hierarchy of the sequencer, as you pointed out.
Right. I looked at the rest of the code. Test alone know the actual hierarchy. Rest of the sequence hierarchies are passing around the sequencer object variables