【UVM 参数化的VIP】- Usage

之前介绍了VIP部分,现在来看怎么用,之前的传送门:

【UVM 参数化的VIP】- Agent_dajiao_zi的博客-CSDN博客

【UVM 参数化的VIP】- Driver_dajiao_zi的博客-CSDN博客

【UVM 参数化的VIP】- Monitor & Sequencer_dajiao_zi的博客-CSDN博客

【UVM 参数化的VIP】- config & seq_item_dajiao_zi的博客-CSDN博客

 首先是seq_item都需要继承至base的seq_item:
 其他两个CHANEL的seq_item也是类似,需要extend comm_xx_item.这里省略。

class my_seq_item extend comm_seq_item;
        //register to factory
        rand my_req_seq_item m_req;
        rand my_resp_seq_item m_resp;
        //function new
        virtual function void field_assign();
            //override the function
            //for user 
        endfunction

endclass

然后是agent的例化。

class my_env extends uvm_env;
    //register
    comm_agent #(my_seq_item,my_req_seq_item,my_resp_seq_item) my_agent;
    comm_config  my_config;
    //function new
    function build_phase(uvm_phase phase);
        my_agent = comm_agent #(my_seq_item,my_req_seq_item,my_resp_seq_item)::type_id::creat("my_agent",this);
    endfunction
    //connect phase
endclass

然后是seq的使用方式,需要主要指定p_sequencer的时候需要传入自己的seq_item。

class my_seq extends uvm_sequence #(my_seq_item);
    `uvm_object_utils(my_seq)
    `uvm_declare_p_sequncer(comm_sequencer #(my_seq_item,my_req_seq_item,my_resp_seq_item))
    //function new
    task body();
        use_response_handler(1);
        for(int i=0;i<send_pkt_num;i++) begin
            `uvm_creat(req);
            //rand seq_item
            `uvm_send(req);
        end
    endtask
endclass

到这所有使用的关键点都有提到了,最后总结一下这套vip带来的好处以及和普通vip的区别:

        1.思想当然也是vip的思想,只是一般vip的seq_item和protocol都是统一的,或者说是完全一模一样的,像AMBA vip,笔者介绍的这套比较适合用在大量使用同一套自定义的protocol的地方,不同的module,类似的protocol,类似的transaction.

        2. 最明显的好处就是充当普通vip的角色,以免不同的user都自己写一套。

完结,后面打算重新开一个专栏,总结一下笔者工作期间遇到的一些典型场景,主要介绍tb的处理方式和用到或者看到的好的方式方法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值