[uvm]参数化类--例子

//基于【uvm实战】ch4.3.3 写的小测试

  • 参数化类的继承
  • 参数化类的override 覆盖

[uvm] 参数化类的继承


`ifndef MY_ENV__SV
`define MY_ENV__SV

class my_env extends uvm_env;

   `uvm_component_utils(my_env)
   my_agent   i_agt;
   my_agent   o_agt;
   my_model   mdl;
  // base_scoreboard scb;
   base_scoreboard#(my_transaction) scb;  //重点
 //  base_scoreboard#(uvm_sequence_item) scb;
   
   uvm_tlm_analysis_fifo #(my_transaction) agt_scb_fifo;
   uvm_tlm_analysis_fifo #(my_transaction) agt_mdl_fifo;
   uvm_tlm_analysis_fifo #(my_transaction) mdl_scb_fifo;
   
   function new(string name = "my_env", uvm_component parent);
      super.new(name, parent);
   endfunction

   virtual function void build_phase(uvm_phase phase);
      super.build_phase(phase);
      i_agt = my_agent::type_id::create("i_agt", this);
      o_agt = my_agent::type_id::create("o_agt", this);
      i_agt.is_active = UVM_ACTIVE;
      o_agt.is_active = UVM_PASSIVE;
      mdl = my_model::type_id::create("mdl", this);
      base_scoreboard#(my_transaction)::type_id::set_type_override(my_scoreboard#(my_transaction)::get_type());//重点
    // set_inst_override("scb","base_scoreboard#(my_transaction)","my_scoreboard$#(my_transaction)"); 
  //  factory.set_inst_override_by_type(base_scoreboard#(my_transaction)::get_type(),my_scoreboard#(my_transaction)::get_type(),"*");

      scb = base_scoreboard#(my_transaction)::type_id::create("scb",this); //重点
     `uvm_info("my_env",scb.get_type_name(),UVM_LOW)
      agt_scb_fifo = new("agt_scb_fifo", this);
      agt_mdl_fifo = new(
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值