UVM sequence机制

简答来说,sequence机制是一个控制和产生事务,并将事务发送给driver的一套机制。

sequence机制是一个过程,需要消耗仿真时间,因此function_phase中是无法使用sequence机制,只能被用在task_phase中,也只有task_phase中需要产生事务。

以testcase中的sequence为例,当sequence收到env中的sequencer的事务请求后,会发送一个新的事务到sequencer中,而sequencer又会传给driver中,driver完成后会发送一个完成信号到sequencer中。同样,sequencer会将完成信号接着传递sequence中,准备下一次的发送,如此循坏,直到所有的事务产生完毕。

使用sequence主要是为了提高平台的可重用性,对于不同的事务可以使用同一个driver驱动。

如何查看sequencer中是否使用sequence机制,看sequencer中是否配置default_sequence指针,或者平台其他组件是否手动实例化sequence并调用它的start()方法。而sequence机制中start()方法主要是使用body()方法,body()方法产生事务items并放在sequencer中(中间会有一个items_fifo过渡),发送后等待driver完成标志。

以如下代码为例:

class my_driver extends uvm_driver # (my_transcation);
...
    virtual task run_phase(uvm_phase phase);
        logic [7:0] temp;
        repeat(15)@(m_vif.driver_cb);
        forever begin
            

            seq_item_port.get_next_item(req);// 请求事务和等待获取事务
            ......
            ......//Driver the DUT
            seq_item_port.item_done();//完成事务后给出的标志
        end
    endtask
endclass

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值