`uvm_send(m_trans):处理完毕后使用uvm_send宏发送出去 uvm_rand_send系列宏 uvm_rand_send宏与uvm_send宏类似,唯一的区别是它会对transaction进行随机化’ uvm_rand_send系列宏及uvm_send系列宏的意义主要在于,如果一个transaction占用的内存比较大,那么很可能希望前后两次发送的transaction都使用同一块内存,只是其...
`uvm_do_with`的语法如下: ``` ``` 其中,`transaction`是要生成的事务对象,`attribute = value`是事务对象的属性和值。这些属性和值可以控制所生成事务的各个方面。 下面,我们逐个了解`uvm_do_with`的属性和值的用法。 1. `sequence_item.attribute = value`:这个属性用于控制事务对象的成员属性的取值。
其中之一就是uvm_do_with命令。本文将简要介绍uvm_do_with的用法。 uvm_do_with命令提供了在覆盖元件中执行代码的能力。它以一种通用的方式提供按照指定顺序执行功能的功能。 uvm_do_with命令实际上是一个循环,它可以对多个对象进行遍历,并在每个对象上执行指定的功能。它可以遍历父类中定义的所有属性,并在遍历...
uvm_do_on_pri等在此基础上加上各关键词的功能,与uvm_do_pri与uvm_do之间的关系类似,因此uvm_do系列的宏本质上都是uvm_do_on_pri_with的特殊形式。 除了使用uvm_do宏自动产生,随机化并发送transaction之外,还可以通过uvm_create宏与uvm_send宏来实现这个过程。uvm_create宏的作用是实例化transaction,当一个tra...
使用uvm_do和uvm_do_with宏时产生的transaction为默认优先级,即-1,可以通过uvm_do_pri及uvm_do_pri_with来改变其优先级。uvm_do_pri(uvm_do_pri_with同理)第二个参数为优先级,用户可以自由指定任意大于-1的整数,数字越大,优先级越高。sequencer的仲裁算法有很多种:...
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_send系列宏。和uvm_do相比更灵活。
第三个参数默认值是-1,会使得该sequence如果有parent_sequence会继承其优先级值,如果它是顶层sequence,则其优先级会被自动设置为100,用户也可以自己指定优先级数值;第四个参数建议使用默认值,这样body() 函数预定义的回调函数,uvm_sequence::pre_body()和uvm_sequence::post_body()两个方法会在uvm_sequence::...
(1)嵌套的sequence:在一个sequence的body中,除了可以使用uvm_do宏产生transaction外,该可以启动其他的sequence,直接在新的sequence的body中调用定义好的sequence。 (2)uvm_do, uvm_send, uvm_rand_send, uvm_create宏,其第一个参数除了可以是transaction的指针外,还可以是sequence的指针。start_item & finish_item...
第四个参数建议使用默认值, 这样的话 uvm_ sequence::pre _ body()和 uvm_sequence::post_ body()两个方***在 uvm_sequence::body()的前后执行。 在上面的例子中,child_seq 被嵌套到 top_seq 中, 继而在挂载时需要指定 parent_sequence; 而在 test 一层调用 top_seq 时, 由于它是 root sequence, ...
第一种时利用uvm_do系列宏 在一个sequence的body中,除了可以使用uvm_do宏产生transaction外,还可以启动其它sequence,这就是嵌套sequence。 uvm_do系列宏有uvm_do/uvm_do_pri/uvm_do_with/uvm_do_pri_with/u