广东营销式网站,自己的电脑做网站可以吗,现在网站还用asp做,网易163企业邮箱格式文章目录 镜像值与期望值predication的分类自动预测显示预测 uvm_reg的访问方法寄存器健康检查 镜像值与期望值
寄存器模型中的每一个寄存器#xff0c;都应该有两个值#xff0c;… 文章目录 镜像值与期望值predication的分类自动预测显示预测 uvm_reg的访问方法寄存器健康检查 镜像值与期望值
寄存器模型中的每一个寄存器都应该有两个值一个是镜像值(mirrored value) ,一个是期望值(desired value)
期望值是先利用寄存器模型修改软件对象值而后利用该值更新硬件值;镜像值是表示当前硬件的已知状态值。镜像值往往由模型预测给出即在前门访问时通过观察总线或者在后门访问时通过自动预测等方式来给出镜像值。
predication的分类
UVM提供了两种用来跟踪寄存器值的方式我们将其分为自动预测(auto prediction)和显式预测(explicit) 。
如果用户想使用自动预测的方式还需要调用函数uvm_reg _map::set_auto_predict()。两种预测方式的显著差别在于显式预测对寄存器数值预测更为准确我们可以通过下面对两种模式的分析得出具体原因。
自动预测
如果用户没有在环境中集成独立的predictor而是利用寄存器的操作来自动记录每一次寄存器的读写数值并在后台自动调用predict()方法的话这种方式被称之为自动预测。这种方式简单有效然而需要注意如果出现了其它一些sequence直接在总线层面上对寄存器进行操作跳过寄存器级别的write()/read()操作或者通过其它总线来访问寄存器等这些额外的情况都无法自动得到寄存器的镜像值和预期值。
显示预测
更为可靠的一种方式是在物理总线上通过监视器来捕捉总线事务并将捕捉到的事务传递给外部例化的predictor该predictor由UVM参数化类uvm_reg _predictor例化并集成在顶层环境中。在集成的过程中需要将adapter与map的句柄也一并传递给predicttor一侧,同时将monitor采集的事务通过analysis port接入到predictor—侧。这种集成关系可以使得monitor一旦捕捉到有效事务会发送给predictor再由其利用adapter的桥接方法实现事务信息转换并将转化后的寄存器模型有关信息更新到map中。默认情况下系统将采用显式预测的方式这就要求集成到环境中的总线UVC monitor需要具备捕捉事务的功能和对应的analysis port以便于同predictor连接。 prediction在环境中的使用
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;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)) beginuvm_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)endrgm. build() ;reg2mcdf reg2mcdf_adapter: :type_id: :create(reg2mcdf );mcdf2reg predictor uvm_reg_predictor# (mcdf_bus_trans) : :type_id::create(mcdf2reg _predcitor ,this) ;mcdf2reg predictor.map rgm.map;mcdf2reg predictor.adapter reg2mcdf ;endfunqtionfunction void connect _phase (uvm _phase phase) ;rgm. map.set_sequencer(agent.sequencer,reg2mcdf);agent.monitor.ap. connect(mcdf2reg_predictor.bus_in) ;endfunction
endclassuvm_reg的访问方法 uvm_reg_sequence提供的方法
寄存器健康检查