ee_king的个人空间 https://blog.eetop.cn/1494617 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Connections to DUT Interfaces(从BusFunctionalModels开始)

已有 626 次阅读| 2018-9-28 14:39 |系统分类:芯片设计

        BusFunctionalModels

      Bus Functional Models for DUT communication

       有时,DUT连接不是直接连接到DUT的端口,而是通过BFM间接进行。如下图所示,通常BFM将具有生成DUT transactions的tasks。

       【此处需一幅图】

       BFM有几种不同的“版本”:

       Verilog Module BFM - Can be modified

       如果BFM是Verilog模块,则此类连接的首选是将BFM修改为interface。然后可以与BFM建立标准虚拟接口连接,并且测试平台transactors可以直接访问BFM trasaction tasks。

       Verilog Module BFM - Can not be modified

       Verilog BFM可能由于多种原因而无法修改。它可能有一个模块实例,在这种情况下它不能更改为interface。或者它根本无法编辑。在这种情况下,引入了包装模块。包装器模块包含BFM实例,DUT和接口实例,如下图所示。

       【此处需一幅图】

        该接口充当BFM到testbench事务处理器的“代理”(即此接口处于TB和BFM的中间环节)。例如,为了执行wishbone总线写入事务,驱动程序将调用接口中的write task,该接口又将调用BFM中的write task。 请参见下图。

        【此处需一幅图】

        包装器模块的示例代码如下:

        module wb_bus_wrapper #(int WB_ID = 0);
        ...

               // WISHBONE BFM instance
               wishbone_bus_syscon_bfm wb_bfm();

               // WISHBONE 0, slave 0: 000000 - 0fffff
               wb_slave_mem #(mem_slave_size) wb_s_0 (...);

               // MAC 0
               eth_top mac_0(...);

               // Interface
               interface wishbone_bus_bfm_if #(int ID = WB_ID)
                   (input bit clk);
                   // Methods
                   //WRITE 1 or more write cycles
                   task wb_write_cycle(wb_txn req_txn, bit [2:0] m_id);
                        wb_bfm.wb_write_cycle(req_txn, m_id);
                   endtask
                   // other tasks not shown
                   ...
               endinterface

               // Interface instance
               wishbone_bus_bfm_if #(WB_ID) wb_bus_bfm_if(.clk(wb_bfm.clk));

               initial
                  //set interface in config space
                  uvm_config_db #(virtual wishbone_bus_bfm_if)::set(null, "uvm_test_top",
                                                                                                      $sformatf("WB_BFM_IF_%0d",WB_ID), wb_bus_bfm_if);

       endmodule

       (在http://verificationacademy.com/uvm-ovm上在线下载源代码示例)。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-18 22:40 , Processed in 0.028551 second(s), 18 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部