uvm中利用sequence产生transaction的各种方法

本文详细介绍了UVM中的序列(Sequence)的四种实现方式,包括使用uvm_do、uvm_create/uvm_send、uvm_rand_send以及start_item/finish_item宏的用法。每种方式都阐述了它们的执行流程和特点,展示了如何实例化、随机化和发送transaction到sequencer。此外,还提到了预处理、中间处理和后处理接口增强uvm_do系列宏的功能。

每一个sequence都应该派生自uvm_sequence,并且在定义时指定要产生的transaction。
每一个sequence都有一个body任务,当一个sequence启动之后,会自动执行body中的代码。

第一种:使用宏uvm_do:

class case0_sequence extends uvm_sequence #(my_transaction);
   `uvm_object_utils(case0_sequence)
   my_transaction m_trans;
   function  new(string name= "case0_sequence");
      super.new(name);
   endfunction 
   virtual task body();
      if(starting_phase != null) 
         starting_phase.raise_objection(this);
      repeat (10) begin
         `uvm_do(m_trans)    //`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
      end
      if(starting_phase != null) 
         starting_phase.drop_objection(this);
   endtask
endclass

在上面中,用到了一个uvm_do宏。它的主要作用是:
1.创建一个my_transaction的实例m_trans;
2.将其随机化;
3.最终将其送给sequencer.

第二种:使用宏uvm_create和宏uvm_send

   virtual task body();
      my_transaction     m_tr;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值