`uvm_do(SEQ_OR_ITEM)//1. 根据sequence_item实例,随机化产生数据`uvm_do_with(SEQ_OR_ITEM, CONSTRAINTS)//2. 在随机化数据的基础上,添加约束`uvm_do_pri(SEQ_OR_ITEM, PRIORITY) `uvm_do_pri_with(SEQ_OR_ITEM, PRIORITY, CONSTRAINTS) `uvm_do_on(SEQ_OR_ITEM, SEQR)//3. 随机化同时,显式的...
这个例子中,我们暂时没有使用sequence的宏或者其它用来发送item的宏来表示sequence/item与sequencer之间的传送方法,而是用更直白的方式来描述这种层次关系和包含性。flat_seq自身可以看做是一个更长的数据包,其中数据包的具体内容、长度、地址等信息都包含在flat_seq中,在生成item的过程中,通过将自身的随机变量作为constr...
比如在上面的例子中,flat_seq 类不再操闲心考虑数据内容,只考虑这个数据包的长度、地址等信息, 因为扩充随机数据的责任一般由 item 负责就足够了,使用 flat_seq 的用户不需要考虑多余的数据约束。 Hierarchical Sequence hierarchical sequence 区别于 flat sequence 的地方在于,它可以使用其他 sequence, 当然还有item,...
flat_seq自身可以看做是一个更长的数据包,其中数据包的具体内容、长度、地址等信息都包含在flat_seq中,在生成item的过程中,通过将自身的随机变量作为constraint来限定item的变量随机内容,这是flat sequence的大致处理方法。在上面例码中没有给出例如`uvm_do/`uvm_do_with/`uvm_create等宏是为了让读者首先认清seque...
首先是seq_item_port的内容,一般的用法是这样的,看最后forever块的语句:(属于自定义driver) class jelly_bean_driver extends uvm_driver#(jelly_bean_transaction); `uvm_component_utils(jelly_bean_driver) virtual jelly_bean_if jb_vi; function new(string name, uvm_component parent); ...
上图是红宝书代码执行结果我有疑问的地方,开始在想为啥已经lock了,seq3还传了,原因就是权限最终是给到item的,lock之后10ns才satrt第一个item,所以这个时候lock_sequence是还没有拿到权限的,所以seq3不需要等10ns,他的item就先拿了权限发了。 5.1.3 Sequence层次化 ...
item指的是uvm_sequence_item, Sequence Item具备UVM核心基类所必要的数据操作方法,对于激励的生成和场景控制,是由sequence来编织的,item应该有什么用途的数据成员被定义在item中呢?文章进行了划分。 无论是自驾item,穿过sequencer交通站,通往终点driver,还是坐上sequence的大巴,一路沿途观光,最终跟随导游停靠到风景点driv...
通过继承关系,我们可以看待uvm_sequence_item是扩展自uvm_transaction的。 对于usr来说,想创建自己的transaction一般是从uvm_sequence_item扩展来的,为什么呢?因为 1、The uvm_sequence_item provides a hook to the uvm_sequencer and the functions to build a sequence hierarchy. ...
1.create_item 产生seq_item(factory) 2.wait_for_grant向sqr发出request,和等sqr的grant; sqr返回grant给seq 3.random seq_item ,然后send_request把seq_item 发给sqr.这个过程不消耗仿真时间,然后seq进入wait_for_item_done()的阻塞性等待状态,直到获取drv的response。
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都是唯一的。