1)uvm_do_with 宏是uvm_do 系列宏的一个,用于在随机时约束某些字段的约束。 2)不同的case就是:1)要有不同的sequence 约束,设置到default_sequence。2)不同的参数配置。 4.top_tb 如下: initial begin run_test(); end 1. 2. 3. UVM从命令行寻找 +UVM_TESTNAME=xxxx(my_case1) 寻找测试用例名字。
42endfunction 在case1_sequence中出现了uvm_do_with宏,它是uvm_do系列宏中的一个,用于在随机化时提供对某些字段的约束。 要启动my_case0,需要在top_tb中更改run_test的参数: initialbegin run_test("my_case0"); end 而要启动my_case1,也需要更改: initialbegin run_test("my_case1"); end 当my_cas...
**使用形式: ** UVM中提供了多个宏,uvm_do,uvm_do_with,`uvm_do_on_with等,但最终都是调用了uvm_do_on_pri_with宏。uvm_do_on_pri_with宏第一个参数可以传入sequence,也可以传入transaction。 uvm_do_on宏第一参数是sequence。uvm_do_on_pri_with宏中调用宏uvm_create_on。 create_item通过工厂模式创...
`uvm_do_with(req, { req.addr == 16'h0124; req.data == 16'h0666; } ) endtask : body endclass : simple_seq_do_with 如果约束条件只是用来将发送数据设置为特定的值,可以用用户定义的任务来代替宏。 class simple_seq_do_with extends uvm_sequence #(simple_item); task do_rw(int addr, i...
uvm_do 或 uvm_do_with 宏时,产生的 transaction 优先级是默认的优先级(即1)。可通过 uvm_do_pri 及uvm_do_pri_with 改变所产生的 transaction 的优先级 uvm_do_pri 与 uvm_do_pri_with 的第二个参数是优先级,其数值必须是一个大于等于-1的整数。数字越大优先级越高 ...
1. 引言我们在sequence中往driver发包时,最常用的方法就是使用uvm_do()系列宏,偶尔会使用方法start_item()和finish_item()的组合,极个别场景下会 使用`uvm_create()和`uvm_send()宏,极极个别场景下还会看到cre…
第一种时利用uvm_do系列宏 在一个sequence的body中,除了可以使用uvm_do宏产生transaction外,还可以启动其它sequence,这就是嵌套sequence。 uvm_do系列宏有uvm_do/uvm_do_pri/uvm_do_with/uvm_do_pri_with/uvm_do_on/uvm_do_on_pri/uvm_do_on_with/uvm_do_on_pri_with ...
之后再通过`uvm_do_on或者`uvm_do_with将seq发送给相对应的sqr,如: 代码语言:javascript 复制 `uvm_do_on(fish_clk_seq,p_sequencer.fish_clk_sqr);`uvm_do_on(fish_rst_seq,p_sequencer.fish_rst_sqr);`uvm_do_on(fish_data_seq,p_sequencer.fish_data_sqr); ...
`uvm_do_with(req,rd_en==1); endtask taskpost_body();// drop objection if started as a root sequenceif(starting_phase!= null) starting_phase.drop_objection(this); endtaskendclass AI代码助手复制代码 在uvm_sequence中有一个starting_phase成员,它是uvm_phase类型。如果我们通过设置run phase的def...
48 `uvm_do_with(m_trans, {m_trans.pload.size < 500;}) 49 `uvm_info("sequence1", "send one transaction", UVM_MEDIUM) 50 end 6:除了使用lock操作获取sequencer的使用权外,还可以使用grab()操作,grab操作和lock操作类似,只是lock操作被放在仲裁队列的最后面,而grab放在队列的最前面,但要注意,这两...