ic验证笔记-20天挑战day20

1.寄存器模型的常规方法

每一个寄存器的field都有两个值,一个是镜像值(mirrored value),一个是期望值(desired value)

镜像值可能域硬件实际值(actual value)不一致。mirrored value与desired value是寄存器模型的属性,而actual value对应着硬件的真实数值。

uvm提供了两种用来跟踪寄存器值的方式:

自动预测:uvm_reg_map::set_auto_predict()

显式预测(explicit):环境中独立的predictor

//显式预测

class mcdf_bus_env extends uvm_env;

mcdf_bus_agent agent;

        mcdf_rgm rgm;

        reg2mcdf_adapter reg2mcdf;

        uvm_reg_predictor #(mcdf_bus_trans) mcdf2reg_predictor; //predictor只需要定义类型

        `uvm_component_utils(mcdf_bus_env)

        ...

        function void build_phase(uvm_phase phase);

                agent = mcdf_bus_agent::type_id::create("agent", this);

                if(!uvm_config_db#(mcdf_rgm)::get(this, " ", "rgm", rgm)) begin

                        `uvm_info("GETRGM", "no top-down RGM handle is assigned", UVM_LOW)

                        rgm = mcdf_rgm::type_id::create("rgm", this);

                        `uvm_info("NEWRGM", " created rgm instance locally", UVM_LOW)

                end

                rgm.build();

                 reg2mcdf = reg2mcdf_adapter::type_id:: create("reg2mcdf");

                mcdf2reg_predictor = 

                        uvm_reg_predictor#(mcdf_bus_trans)::type_id::create("mcdf2reg_predictor", this);

                mcdf2reg_predictor.map = rgm.map;

                mcdf2reg_predictor.adapter = reg2mcdf;

      endfunction

     function void connect_phase(uvm_phase phase);

             rgm.map.set_sequencer(agent.sequencer, reg2mcdf);

               agent.monitor.ap.connect(mcdf2reg_predictor.bus_in);

        endfunction

endclass

通过desired的值来更新硬件的actual的值

read() 读寄存器,读回硬件实际值

write() 修改硬件实际值

peek() 后门方式读取硬件实际值

poke() 后门方式修改硬件实际值

mirror() 读回硬件实际值,更新或检查镜像值

update() 如果期望值/镜像值不同于实际值,则修改硬件实际值

reset() 复位 block/register/filed的期望值和镜像值

get_reset() 获取register/field的复位值

get() 获取register/field的期望值

set() 修改register/field的期望值

对于前门访问的read()和write(),在总线事务完成时ÿ

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值