验证知识之在module里面get class里面的set参数

1、在env里面set对应的指针

class a_env extends uvm_env;
    a_cfg    cfg;
    `uvm_component_utils_begin(a_env )

    `uvm_component_utils_end
    function new(string name="a_en",uvm_parent parent= null);
        super.new(name,parent);
    endfunction
    function void build_phase(uvm_phase phase);
        super.build_phase(phase);
        cfg = new("cfg");
        void'(cfg.randomize());
        uvm_config_db#(a_cfg)::set(this,"*","cfg",cfg);
    endfunction
endclass

2、在module里面get对应的指针

module();
    a_cfg cfg;
    initial begin
        if(!uvm_config_db#(a_cfg)::get(uvm_root::get(),"uvm_test_top.env.","cfg",cfg))
            $display("failXXXX");
    end
endmodule

注意:在env后面必须有一个".",应该module没有component hierarchy结构,在component结构里面get,自动会通配*号。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以,你可以在UVM中使用`uvm_reg`和`uvm_reg_block`类来访问RTL信号的值。`uvm_reg`表示单个寄存器,`uvm_reg_block`表示一组相关的寄存器。以下是一个使用`uvm_reg`和`uvm_reg_block`读取RTL信号的值的例子: ```systemverilog //定义一个寄存器模型 class my_reg_model extends uvm_reg_block; //定义一个寄存器 uvm_reg my_reg; //构造函数 function new(string name = "my_reg_model", uvm_component parent=null); super.new(name, parent); my_reg = uvm_reg::type_id::create("my_reg", 32, UVM_NO_COVERAGE, null, null); my_reg.configure(this, null, 0, 32'h0, UVM_NO_CHECK); my_reg.build(); endfunction //重载run_phase task run_phase(uvm_phase phase); uvm_status_e status; bit [31:0] value; //读取寄存器的值 status = my_reg.read(value, UVM_FRONTDOOR); if(status == UVM_IS_OK) begin $display("my_reg value is %h", value); end else begin $display("read my_reg failed"); end endtask endclass //测试例子 module tb_top; my_reg_model reg_model; initial begin uvm_config_db#(virtual my_reg_model)::set(null, "*", "reg_model", reg_model); run_test(); end task run_test(); run_phase(phase); endtask endmodule ``` 在这个例子中,我们定义了一个名为`my_reg_model`的寄存器模型,并在其中定义了一个名为`my_reg`的寄存器。在`run_phase`任务中,我们使用`my_reg.read`方法读取了`my_reg`寄存器的值,并将其保存在`value`变量中。最后,我们使用`$display`函数输出了读取到的值。 需要注意的是,这个例子中的`my_reg`寄存器是我们自己定义的,需要根据实际情况修改。同时,我们也需要将`my_reg_model`寄存器模型的实例传递给测试环境中的其他组件,以便它们可以使用这个寄存器模型来读取寄存器的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NobleGasex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值