function uvm_sequencer_base get_sequencer(); return m_sequencer; endfunction 返回了m_sequencer,它是个啥呢,看sequence_item的定义:(属于sequence_item类) 原来这是个sequencer_base类。我们可以这么理解,我们在通过sequence_item来构造子弹的时候,系统帮我们实现声明了一把可以用的枪,这个枪就是sequencer_base,...
p_sequencer.p_rm.gb_ins_invert.read(status,value,UVM_FRONTDOOR); p_sequencer.p_rm.bb_ins.depth.write(status,value,UVM_FRONTDOOR); 封装原有API, 编写一个根据传入reg/field的string name来进行访问的函数,调用如下: p_sequencer.p_rm.get_reg_value(value,"invert"); p_sequencer.p_rm.set_reg...
在调用put_response前需要调用set_id_info函数,其将sequence发送的transaction id等相关信息复制到rsp内,以让sequencer知道将response返回给其哪个sequence(一个sequencer内可以有几个sequence)。 注意:get_response和put_response一一对应,当sequencer启动get_response后就会阻塞进程,直到response_queue被放入新的记录,即driver...
在下次调用get_next_item 之前,item_done 被调用,sequencer认为driver已得到transaction,会把这个transaction删除。握手机制。 7.sequence中的uvm_do 什么时候返回呢?uvm_do产生一个transaction 后交给sequencer,driver区总这个transaction后,uvm_do不会立刻返回执行下一次uvm_do宏,一直等待,直到driver返回item_done 信号。
seq.start(sequencer); phase.drop_objection(this)//sequence的隐式启动//该方法可以在sequence中使用starting_phase提起和撤销objectionuvm_config_db#(uvm_object_wrapper)::set(this,"env.i_agt.sqr.main_phase","default_sequence", case0_sequence::get_type());//在my_sequence中的body任务中virtualtask...
对于uvm_sequence::get_response(RSP)和uvm_driver::item_done(RSP)这种成对的操作,是可选的而不是必须的,即用户可以选择uvm_driver不返回response item,同时sequence也无需获取response item。 在高层的环境中,应该在connect phase中完成driver到sequencer的TLM端口连接,比如在例码中drv.seq_item_port.connect(sqr...
3. Sequence、sequencer、driver之间的通信sequence通过ID信息标识item来源,确保item发送的准确性。4. config_db在sequence中的使用sequence中可以通过get_full_name获取组件路径,用于动态获取或设置config_db中的参数。5. Response机制sequence机制提供response机制,driver通过get_response获取sequence的反馈,set...
数据传送采用的是get模式而不是put模式。如果是put模式,那么应该是sequence将数据put至driver,而如果是get模式,那么应该是driver从sequencer获取item。 选择get模式的原因: ① 如果是get模式,当item从sequence产生,穿过sequencer到达driver时,我们就可以结束该传输。如果是put模式,则必须是sequencer将item传送至driver,同时...
sequence和sequencer之间传递的是transaction,实际上component之间也是transaction级别的通信,叫做TLM (transaction level model)最常见的就是monitor中uvm_analysis_port通过uvm_tlm_analysis_fifo连接到reference model或scoreboard中的uvm_blocking_get_port。这样可以确保transaction能够传递给目的组件。
1、driver&sequencer: driver同sequencer之间的TLM通信采取了get模式,即由driver发起请求,从sequencer一端获得item,再由sequencer将其传递至driver。 1、由于driver是请求发起端,所以在driver一侧例化了下面的两种端口: uvm_seq_item_pull_port#(REP, RSP)seq_item_port ...