Connections to DUT Interfaces(从BusFunctionalModels开始)

上一篇 / 下一篇  2018-09-28 14:39:08

        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上在线下载源代码示例)。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2019-01-11  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 19138
  • 日志数: 75
  • 建立时间: 2018-09-03
  • 更新时间: 2018-12-29

RSS订阅

Open Toolbar