我们在sequence中往driver发包时,最常用的方法就是使用uvm_do()系列宏,偶尔会使用方法start_item()和finish_item()的组合,极个别场景下会 使用`uvm_create()和`uvm_send()宏,极极个别场景下还会看到create_item()方法的使用,这些宏和方法有什么区别,各自使用场景有什么局限和注意事项,他们分别定义在了UVM源代码...
virtual sequence是一个包含和执行多个子sequence的容器,virtual sequencer是包含其他sequencer的容器以使得virtual sequence中的每个子sequence都能在相应的sequencer上获得执行。 67、uvm_do和uvm_send有什么区别?uvm_do自动地创建、随机化 和 发送 新的对象 `uvm_send用于发送已经完成创建和随机化之后的对象 68、我们可...
uvm_do_on(SEQ_OR_ITEM, SEQR)uvm_do_on_pri(SEQ_OR_ITEM, SEQR, PRIORITY) uvm_do_on_with(SEQ_OR_ITEM, SEQR, CONSTRAINTS)uvm_do_on_pri_with(SEQ_OR_ITEM, SEQR, PRIORITY, CONSTRAINTS) 2. uvm_create及uvm_send系列宏 如果需要在sequence中灵活可控的产生及发送transaction,可以uvm_create及uvm_...
1.除了uvm_do 产生transaction,还可以使用uvm_create 与uvm_send 产生: 1)uvm_create 作用是例化transaction。可以做更灵活的处理。 2.可以不用uvm_create 宏,直接调用new 进行例化: 3.uvm_send_pri:
第三种:`uvm_do系列宏启动 代码语言:javascript 复制 `uvm_do(SEQ_OR_ITEM)o`uvm_do_pri(SEQ_OR_ITEM,PRIORITY)`uvm_do_with(SEQ_OR_ITEM, CONSTRAINTS)`uvm_do_pri_with(SEQ_OR_ITEM,PRIORITY,CONSTRAINTS)`uvm_do_on(SEQ_OR_ITEM, SEQR)`uvm_do_on_pri(SEQ_OR_ITEM,SEQR,PRIORITY)`uvm_do_on...
每个sequence中都有个叫body的task,当sequence被启动时会自动调用这个task。通过`uvm_do宏来产生transaction。更灵活的方式是先后使用`uvm_create()和`uvm_send()实现这一功能,并在两者间控制transaction的各个field。只有当消耗仿真时间的driver调用了item_done()后一次transaction的发送才算结束。
第四种:uvm_create和uvm_send classcase0_sequenceextendsuvm_sequence#(fish_transaction) ...taskcase0_sequence::body() `uvm_create(f_trans) ...//对transaction做处理`uvm_send(f_trans)endtask uvm_create宏的作用就是实例化transaction,实例化之后,可以对其做更多的处理,处理完毕再使用`uvm_send宏发送...
6.1 sequence基础 6.2 sequence的仲裁机制 (1)通过 uvm_do_pri 和 uvm_do_pri_with 改变所产生的transaction的优...
uvm_do系列宏:实例化transaction+将transaction交给sequencer(对应start_item与finish_item任务) uvm_create宏:实例化transaction,可用new代替 uvm_send宏:将transaction交给sequencer(对应start_item与finish_item任务) uvm_rand_send系列宏:对transaction进行随机化+将transaction交给sequencer(对应start_item与finish_item任务...
每个sequence中都有个叫body的task,当sequence被启动时会自动调用这个task。通过`uvm_do宏来产生transaction。更灵活的方式是先后使用`uvm_create()和`uvm_send()实现这一功能,并在两者间控制transaction的各个field。只有当消耗仿真时间的driver调用了item_done()后一次transaction的发送才算结束。