Connections to DUT Interfaces(从Connect/VirtInterfaceConfigPkg开始)

上一篇 / 下一篇  2018-09-27 14:11:28

       Connect/VirtInterfaceConfigPkg

      Setting Virtual Interface Properties in the Tesbench using a Package

       使用config_db API向test class提供虚拟接口信息的替代方法是使用package。建议的方法是使用test parameters package。另一种不推荐但在工业上使用的方法是使用agent package。本文将重点介绍推荐的方法。

       Using the Test Parameters Package 

       这种将实际接口引用分配给测试平台内部的虚拟接口句柄的方法与使用config_db API的推荐方法非常相似。它是相同的,因为test class使用配置对象和配置数据库来分发虚拟接口。它的不同之处在于,package用于将虚拟接口句柄传递给test class,而不是使用config_db API。
       缺点是这种方法是它不能与协议模块一起使用,这意味着这种方法不能轻易支持emulation。
       这种方法一般有4个步骤。
       1.虚拟接口在package中声明。 建议此包是test parameters package。
       2.在包含DUT和接口实例的顶层模块中,对package中的虚拟接口进行分配以指向接口实例【意思是将接口实例分配给package中的虚拟接口】。
       3.Test class从package中获取虚拟接口信息,并将虚拟接口分配到配置对象中,该配置对象分发到通过该特定接口与DUT通信的适当组件(agents, drivers, monitors等)中。
       4.通过虚拟接口实际访问DUT的组件将从提供的配置对象中的虚拟接口设置其虚拟接口属性。
       这里有一个讨论,为什么人们会采用test class的方法来获取信息并将信息分发给agents和事务传输器,而不是让事务传输器或agent直接获取数据。

       【此处需一幅图】

       Declaring Virtual Interface in the Test Parameters Package

       在test parameters package中声明一个虚拟接口指针。

       package test_params_pkg;
             import uvm_pkg::*;

             // WISHBONE bus virtual interface
             virtual wishbone_bus_syscon_if v_wb_bus_if;

             ...

       endpackage

       Assign Virtual Interface in the Test Parameters Package

       在包含DUT和接口实例的顶层模块中,在初始块中进行分配,以将test parameters package中的虚拟接口指向接口实例【意思是把顶层模块中实例化后的接口实例赋给package中的这个虚拟接口】。可以导入或显式引用虚拟接口属性。

       module top_mac;
       ...

              import test_params_pkg::*;
              // WISHBONE interface instance
              // Supports up to 8 masters and up to 8 slaves
              wishbone_bus_syscon_if wb_bus_if();
              ...

              initial begin
                  //set WISHBONE virtual interface in test_params_pkg
                  v_wb_bus_if = wb_bus_if;

                  run_test("test_mac_simple_duplex"); // create and start running test
              end

       endmodule 

       Making the Virtual Interface available in the Testbench

       test class创建一个具有虚拟接口属性的配置对象。然后,它用test parameters package中的虚拟接口来分配此属性。
       然后,test class将配置对象放入配置数据库【即将配置对象类通过config_db传到agent或driver或monitor】,以便为通过该特定接口与DUT通信的特定组件(agents, drivers, monitors等)提供访问。

       class test_mac_simple_duplex extends uvm_test;
       ...

            wb_config wb_config_0; // config object for WISHBONE BUS
            ...

            function void set_wishbone_config_params();
                 //set configuration info
                 wb_config_0 = new();

                 // Set WISHBONE bus virtual interface in config obj to virtual interface in test_params_pkg
                 wb_config_0.v_wb_bus_if = v_wb_bus_if;
                 ...

                 uvm_config_db#(wb_config)::set(this, "*", "wb_config", wb_config_0); // put in config
            endfunction

            function void build_phase(uvm_phase phase);
                 super.build_phase(phase);
                 set_wishbone_config_params();
                 ...
            endfunction : build_phase

       endclass

       Setting Virtual Interface Property in Transactor

       通过虚拟接口实际访问DUT的组件将从提供的配置对象中的虚拟接口属性设置其虚拟接口属性。

       // WISHBONE master driver
       class wb_m_bus_driver extends uvm_driver #(wb_txn, wb_txn);
       ...

            virtual wishbone_bus_syscon_if m_v_wb_bus_if; // Virtual Interface
            wb_config m_config;
            ...
            function void build_phase(uvm_phase phase);
                 super.build_phase(phase);
                 if (!uvm_config_db #(wb_config)::get(this, "", "wb_config", m_config)) // get config object
                     `uvm_fatal("Config Fatal", "Can't get the wb_config")
                 ...
            endfunction : build_phase

            function void connect_phase(uvm_phase phase);
                 super.connect_phase(phase);
                 m_v_wb_bus_if = m_config.v_wb_bus_if; // set local virtual if property
            endfunction : connect_phase
            ...
       endclass

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


TAG:

 

评分:0

我来说两句

显示全部

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

日历

« 2019-01-18  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

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

RSS订阅

Open Toolbar