1. uvm_sequence 属于UVM object ,uvm_sequencer 属于UVM complent, 但是sequence 需要与sequencer通信实现数据传输,因此需要中间媒介。m_sequencer 就是这一媒介,主要目的就是确保sequencer 和 sequence(m_sequencer是uvm_sequencer_base在uvm_sequence_item中申明的句柄)
2.sequence类里有一个uvm_sequencer_base类型m_sequencer指针,当sequence和sequencer关联后,m_sequencer会自动指向该sequencer,但通过m_sequencer不能直接使用seqr里的变量,否则会出现编译错误。只能使用cast强制向子类转换后,才能通过m_sequencer.xxx来访问该seqr内的xxx变量。
UVM引入p_sequencer,可以自动的实现上面所述的cast动作,从而可以在sequence中自由使用关联sequencer内的变量。
原文链接:https://blog.youkuaiyun.com/weixin_46022434/article/details/1058691273.
3. 当平台需要产生多个激励,并且激励之间有协调关系,这个时候就需要使用virutal sequencer 和virtual sequence 协调tb中sequencer 产生协调的激励。
1. 在tc 中的connect phase 链接vittual sequencer 和真实的sequencer
2.在virtual sequencer 中申明真实的sequencer
3.在virtual seq 中使用uvm_do_on()产生激励