UVM中 sequence中的starting_phase

目录

1 两种sequence中的starting_phase赋值方法

2 UVM1.1和UVM1.2版本中starting_phase赋值的注意事项


1 两种sequence中的starting_phase赋值方法

       在UVM中,由于driver以及monitor中main_phase常常是一个死循环,故常常将仿真验证平台的进程控制放在sequence中。 在sequence中可以使用starting_phase来控制验证平台的关闭。那怎么为sequence中的starting_phase赋值呢?

有两种方式为starting_phase赋值。

1:在test_case中的main_phase()中,手动为sequence中的starting_phase赋值。
例如:seq.start(env.i_agt.sqr);

class my_case0 extends base_test;
   function new(string name = "my_case0", uvm_component parent = null);
      super.new(name,parent);
   endfunction 
   `uvm_component_utils(my_case0)
   virtual task main_phase(uvm_phase phase);
       sequence0 seq0;
       sequence1 seq1;
       seq0 = new("seq0");
       seq0.starting_phase = phase; //手动为seq0中的starting_phase赋值
       seq1 = new("seq1");
       seq1.starting_phase = phase;
       fork
          seq0.start(env.i_agt.sqr);
          seq1.start(env.i_agt.sqr);
       join
    endtask
endclass

2:将此sequence作为sequencer的某动态运行phase的default_phase时,starting_phase不为null。

function void my_case0::build_phase(uvm_phase phase);
   super.build_phase(phase);
   //采用default_sequence启动seq时,seq的starting_phase不为null
   uvm_config_db#(uvm_object_wrapper)::set(this,                           
                                           "env.i_agt.sqr.main_phase",     
                                           "default_sequence",             
                                           case0_sequence::type_id::get());
endfunction

2 UVM1.1和UVM1.2版本中starting_phase赋值的注意事项

  • 在uvm1.1中采用default_sequence中会自动给starting_phase进行赋值;
  • 但是uvm1.2不建议使用default_sequence,这样不会给starting_phase。所以在uvm1.2中,即使使用了default_sequence,sequence中starting_phase仍然为null。
  • 建议采用start手动启动sequence,手动给starting_phase赋值,既然保证UVM版本的兼容性,也能增加代码的灵活性。
  • 8
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小wang的IC自习室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值