1.uvm_do 封装了一系列接口,封装越多,灵活性越差。所以增加了三个接口:pre_do,mid_do 与post_do 任务。 2.pre_do 是start_item 返回前执行的组后一行代码,之后才对transaction 随机化。 3.mid_do 位于finish_item最开始;post_do位于finish_item 最后一行。大致顺序: 4.示例: 1)pre_do 有一个参数,表...
了解了uvm_do宏实现的细节之后,为了增加uvm_do系列宏的灵活度,UVM提供了三个接口:pre_do,mid_do与post_do。 pre_do是一个任务,在start_item中被调用,是start_item返回前执行的最后一行代码,在它执行完成后才开始对transaction进行随机化。pre_do有一个1bit参数,用于表明uvm_do是对一个transaction还是一个sequen...
这个是启动sequence最基本的方法,通常我们只会显式的把sequence对应的sequencer作为第一个参数进行传递调用,后面三个参数都使用缺省值,除非我们需要用到parent_sequence,甚至其中的pre_do/mid_do/post_do方法,或者说在同一个sequencer上同时启动多个存在优先级关系的sequence,再或者我们需要手动的关闭对应sequence中的pre_...
//| this.pre_do(0) (task) //| this.mid_do(sub_seq) (func) //| sub_seq.body() (task) //| this.post_do(sub_seq) (func) //| sub_seq.post_start() (task)//
pre_do、mid_do与post_do sequence进阶应用 嵌套的sequence 一个sequence内启动另外一个sequence,这就是嵌套的sequence 43 cseq = new("cseq"); 44 cseq.start(m_sequencer); 45 lseq = new("lseq"); 46 lseq.start(m_sequencer); uvm_do系列宏中,其第一个参数除了可以是transaction的指针外,还可以是...
4)uvm_do系列宏其实是将上面四个步骤封装在这个宏中。 5)start_item(tr, 100)和finish_item(tr, 100)可以指定transaction的优先级,默认的优先级是-1。 第五种:使用pre_do/mid_do/post_do uvm_do宏封装了从transaction实例化到发送的一系列操作。封装的越多,则其灵活性就越差。为了增加uvm_do系列宏的功能...
mid_do和post_do因为参数是基类对象,函数重载里可能需要做$cast. 6.4sequence进阶应用 p.- . I I 前面提至U了 uvm_do 系列宏既可以用在uvm_sequence_item 上也可以用于 uvm_sequenee,所以 sequenee可以嵌 套。 sequenee中可以有rand成员,并且可以把 rand成员和transaction的rand成员约束起来。 通过上面的约束...
对于pre_do()、mid_do()、post_do()而言,子 一级的sequence/item在被发送过程中会间接调用parent sequence的pre_do()等方法。 • 正是通过几个sequence/item宏来打天下的方式,用户可以通过'uvm_ do/'uvm _do_ with 来发送sequence或item。这种不区分对象是sequence还是 item的方式, 带来了不少便捷,但容易...
第一部分:uvm_do_on_with概述 -引言uvm_do_on_with的作用和意义,解释其在验证中的重要性。 第二部分:uvm_do_on_with的基本用法 -构造函数:明确定义uvm_do_on_with的基本属性和参数 - start函数:开始uvm_do_on_with的执行 - wait函数:等待一定条件满足后继续执行 - post_do函数:uvm_do中执行完do_on_...
40、do 系列 macro 类似start_item 和 finish_item 上述 macro 的实际实现函数 我觉得我们代码里应该不会用这两个函数。task pre_do(bit is_item)function void mid_do(uvm_sequence_item this_item)function void post_do(uvm_sequence_item this_item)注意上述 task/function 的参数。 mid_do 和 post_do...