Testbench/Factory(从Factory Coding Convention 2: Constructor Defaults开始)

上一篇 / 下一篇  2018-09-19 15:11:39

         Factory Coding Convention 2: Constructor Defaults

      uvm_component和uvm_object构造函数是virtual methods,这意味着用户必须遵循其原型模板。为了在build phase期间支持延迟构造,factory构造函数应该包含构造函数参数的默认值。这允许使用默认值在factory内部构建factory注册类,然后将类属性重新分配给通过uvm_component_registry包装类的create method传递的参数。 components and objects的默认值不同:

        // For a component:
        class my_component extends uvm_component;

        function new(string name = "my_component", uvm_component parent = null);
             super.new(name, parent);
        endfunction

        // For an object
        class my_item extends uvm_sequence_item;

        function new(string name = "my_item");
             super.new(name);
        endfunction

        Factory Coding Convention 3: Component and Object creation

       使用uvm_component_registry的create method在build phase期间创建测试平台组件。首先构造该类,然后在正确分配名称和父参数后,将指针指向该类的指针到其测试平台中的声明句柄。对于components来说,构建过程是自上而下的,它允许更高层次的组件和配置来控制实际构建的内容。
        根据需要创建object类,同样使用create method。
        以下代码片段说明了如何完成此操作:

        class env extends uvm_env;

        my_component m_my_component;
        my_param_component #(.ADDR_WIDTH(32), .DATA_WIDTH(32)) m_my_p_component;

        // Constructor & registration macro left out

        // Component and Parameterized Component create examples
        function void build_phase( uvm_phase phase );
              m_my_component = my_component::type_id::create("m_my_component", this);
               m_my_p_component = my_param_component #(32, 32)::type_id::create("m_my_p_component", this);
        endfunction: build

        task run_phase( uvm_phase phase );
             my_seq test_seq;
             my_param_seq #(.ADDR_WIDTH(32), .DATA_WIDTH(32)) p_test_seq;

             // Object and parameterised ojbect create examples
             test_seq = my_seq::type_id::create("test_seq");
             p_test_seq = my_param_seq #(32,32)::type_id::create("p_test_seq");
             //....
         endtask: run【应该是笔误:应为"endtask: run_phase"】


TAG:

 

评分:0

我来说两句

显示全部

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

日历

« 2018-10-22  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 11597
  • 日志数: 48
  • 建立时间: 2018-09-03
  • 更新时间: 2018-10-12

RSS订阅

Open Toolbar
博聚网