随机化 item :在获取到 sequencer 的授权后,对 item 做随机化; 完成发送 item :随机化后,调用finish_item( )任务。但这是一个阻塞的任务,不会立即执行结束。需要等待 driver 的 item_done() 返回,才执行结束,完成握手; AI检测代码解析 class transaction extends uvm_sequence_item; rand int data; `uvm_ob...
driver中的seq_item_port.item_done(),实际调用的是uvm_sequencer中的item_done函数。sequence通过wait_for_item_done和sequencer的item_done握手,通过成员变量m_wait_for_item_sequence/transaction_id判断。每个sequence, sequence中的每个transaction其ID都是唯一的。 如果item_done()传入rsp,调用put_response函数,与...
③激励发送的流程:seq中使用`uvm_do产生trans并交给sqr->driver取走返回item_done信号->`uvm_do 执行完毕 ④除get_next_item之外,还可以使用try_next_item。 get_next_item:是阻塞的,它会一直等到有新的transaction才会返回; try_next_item:非阻塞,它尝试询问sequencer是否有新的transaction,如果有,则得到此transa...
3.random seq_item ,然后send_request把seq_item 发给sqr.这个过程不消耗仿真时间,然后seq进入wait_for_item_done()的阻塞性等待状态,直到获取drv的response。 sqr的REQ FIFO会把seq_item转给drv。 drv使用get_next_item 非阻塞的获取seq_item.转成virtual interface时序 4. drv返回response(item_done)给sqr; sq...
如果总线要返回response数据,应当在adapter中使能provides_response = 1;如果总线不支持返回RSP(如没有调用put_response(RSP)或item_done(RSP) ),则不能使能,否则adapter会致使验证环境挂起; 寄存器的操作,无论是读操作还是写操作,都要经历调用reg2bus(),继而发起总线事务,在完成事务发回反馈后调用bus2reg(),将总...
※ function void item_done(input RSP rsp_arg=null): 用来通知sequence当前的sequence item已经消化完毕,可以选择性的传递RSP参数,返回状态值。※ task wait_for_sequence(): 等待当前的sequence直到产生下一个有效的item。此任务往往和try_next_item一起使用。※ function bit has_do_available(): 如果当前的...
一旦执行完成,将调用seq_item_port.item_done()来发信号通知定序器,并依次返回序列,表明事务已被执行。 虚拟序列及相关序列 序列可以具有其他序列的句柄;毕竟,序列只是一个具有数据成员的类对象,以及一个将作为线程运行的任务body()。 虚拟序列是一种序列,它可能不会生成序列项,而是在其他音序器上启动序列。这是...
get()也是一个阻塞调用,同样用于从sequencer FIFO获取sequence item。但是在使用get()时,由于get()方法隐式完成了握手,因此无需显式调用item_done()。 40、driver中带和不带有参数的item_done()调用有什么区别? item_done()方法是driver中的一种非阻塞方法,用于在get_next_item()或try_next_item()成功之后与...
seq_item_port.item_done(rsp);// end response的数量问题 通常来说,一个transaction对应一个response,但是事实上,UVM也支持一个transaction对应多个response的情况,在这种情况 下,在sequence中需要多次调用get_response,而在driver中,需要多次调用put_response: ...
1.driver做get_next_item 2.要做start_item 然后选择对应的item,选择前做randomize 39行req.clone()返回的是句柄是uvm_object,为此需要转换 finish_item等到item_done的时候再release 当seq挂载到sqr上是,自身的body()将自动执行,挂载并不意味这随机化seq ...