UVM_PREDICT_DIRECT的一大特点就是不会涉及到任何DUT中寄存器值的操作,仅仅操作的是寄存器模型中的值。 UVM_PREDICT_READ(UVM_PREDICT_WRITE)则会在指定map的address上发起相应的读(写)行为来获取对应的值以更新m_mirrored和m_desired,当然这里也可以指定访问方式是UVM_BACKDOOR,这两种方式都涉及到访问DUT。 4、pre...
5)第三个有如下: read/peek 和write/poke 对DUT完成读写后,也会调用此函数,它们的参数是UVM_PREDICT_READ和UVM_PREDICT_WRITE。 5.要实现在参考模型中更新寄存器模型而不影响DUT 的值,要使用UVM_PREDICT_DIRECT: 1)predict 操作会更新镜像值和期望值。 6.仿真完成后可以检查DUT 和寄存器模型中的counter 是否一...
read/peek和write/poke操作在对DUT完成读写后,也会调用此函数,只是它们给出的参数是UVM_PREDICT_READ和UVM_PREDICT_WRITE。要实现在参考模型中更新寄存器模型而又不影响DUT的值,需要使用UVM_PREDICT_DIRECT,即默认值: 在测试用例中,仿真完成后可以检查DUT中counter的值是否与寄存器模型中的counter值一致: 二、寄存器模...
其中第一个参数表示要预测的值, 第二个参数是byte_en, 默认-1的意思是全部有效, 第三个参数是预测的类型, 第四个参数是后门访问或者是前门访问。要实现在参考模型中更新寄存器模型而又不影响DUT的值, 第三个参数需要使用UVM_PREDICT_DIRECT ,第三个参数预测类型有如下几种可以选择 UVM_PREDICT_DIRECT :Predicted...
参数为UVM_PREDICT_DIRECT时:人为更新期望值和镜像值,不更新DUT中寄存器 引入reg_predictor 引入reg_predictor的原因:配置寄存器的总线存在多个master时,可能存在不通过寄存器模型访问总线来配置DUT中寄存器的情况,这时寄存器模型 就不能检查到 DUT中寄存器的变化,所以需要引入reg_predictor,通过monitor检测总线,将采集到的tr...
参数为UVM_PREDICT_DIRECT时:人为更新期望值和镜像值,不更新DUT中寄存器 引入reg_predictor 引入reg_predictor的原因:配置寄存器的总线存在多个master时,可能存在不通过寄存器模型访问总线来配置DUT中寄存器的情况,这时寄存器模型 就不能检查到 DUT中寄存器的变化,所以需要引入reg_predictor,通过monitor检测总线,将采集到的tr...
uvm_predict_e kind = UVM_PREDICT_DIRECT, uvm_path_e path = UVM_FRONTDOOR, uvm_reg_map map = null, string fname = "", int lineno = 0 ) 更新模型中的镜像值。新的镜像值通过value参数传入。 当在DUT中实现一个计数器的时候,模型中的计数器是静止的。如果想在模型中得到DUT的技术值,这就需要...
针对UVM_DIRECT_PREDICT,也是一般验证中常用的predict,无论reg的access为甚么类型,都能够直接修改value,m_desired和m_mirrored成为我们期望predict的值。predict函数相当于将寄存器的值改成用户期望的值,但不会立刻与DUT进行比较,只有在mirror,或者read操作的时候才会将DUT中读出来的值与相应的mirror或者desire值进行比较,...
为了实现在参考模型中更新寄存器模型而不影响DUT的值,可以使用UVM_PREDICT_DIRECT。predict操作会更新镜像值和期望值。 当然可以,以下是两个使用UVM中mirror操作的例子: 1.在仿真中不断调用mirror,使寄存器模型的值和DUT的值一样: 复制代码 class my_test extends uvm_test; my_dut dut; my_reg_model model; `...
实例丰富,步步清晰引导读者掌握UVM的精髓和实用技巧。 本书脱胎于网络上广为流传的《UVM1.1应用指南及源码分析》,内容愈加炉火纯青。 内容简介: 作者简介: 张强,资深验证工程师,毕业于浙江大学超大规模集成电路研究所,研究方向为模拟及数模混合集成电路,主要从事模拟电源管理芯片、运算放大器及应用于高性能CPU的SRAM的研...