Why build phase is not available in UVM_Sequence?

I wanted to understand exact reason why we did not have build_phase method defined in uvm_sequence?

Please help me to understand this…

Thanks in advance…

In reply to TransVerif:

It’s hard to answer this kind of question other than to say that the UVM was/is designed by committee.

All of the phases before the run_phase are only there for classes derived from uvm_component. These are the structural testbench components that exist for the entire test. The build_ and connect_ phases ensure that communication between these components are established correctly.
A side benefit of the build_phase is the ability to move everything out of the component’s constructor to the build_phase. This gives you more flexibility when extending your components because now you can completely override the build_phase, whereas you must always call the base class constructor before calling the extended constructor.

Sequences are constructed throughout the running of your test, past the time of the build_phase. The UVM could have added a build_phase specifically for sequences and sequence_items to get the benefit of the constructor override back, but they didn’t.

In reply to dave_59:
In my eyes this question has an easy answer. Thhe build_phase is only used for all testbench components/parts of yor class-based testbench. The uvmsequence is a Special dynamic object, it is a transient object. Transient objects are created at any time and disappear after they were consumed.
All components are constructed at run-time Zero and exist until the end of the simulation

i have a one more way to see to this ,
for the sequence’s and sequence items, we dont need a build_phase because , we inherently do that , by calling the start_item(item)/seq.start(seq’er)call this actually form/create or you can say build the sequences/sequence_item and then send across at runtime… and based on runtime we can decide the item configurations

In reply to ecrahuljain:

What you are saying is wrong and I did not this. A sequence does not belong to the class-based testbench part which is constructed at runtime zero. Sequences will be created at any time.
With start(item) you are starting the generaion process of a sequence item.
But prior to this you have to construct a sequence object.
I’m recommending you listen to one of the UVM Videos Mentor is providing.

thanks for recommendation. , maybe i was not clear what i meant. i was trying to say
“With start(item) you are starting the generation process of a sequence item.”

i am trying to say that at runtime only we are sending the sequence item. i agree that we have to have a object creation before starting the child sequence. we call the seq.start (parent sequnce) that creates the child sequence object and that starts the seq_item. all happen in runtime.

In reply to ecrahuljain:

Only if you are using a push_sequencer you are sending the sequence item. In all other cases you are retrieving the sequence item in the Driver using get or get_next_item.