UVM(六)

UVM callback
如何改变driver的行为?
(1)使用UVM的factory机制和override机制实现(过多的扩展可能会引起继承关系层次出现混乱,应该从哪个类进行扩展?)
在这里插入图片描述
call back(回调)

  • function or task(回调函数)

  • 在一个对象中使用,在另一个对象中定义
    在这里插入图片描述
    如何使用UVM callback
    1、将UVM callback 方法内嵌入组件中
    2、创建一个最基本的callback基类(virtual class)
    3、从上一步创建的类中扩展出所需的callback类(子类对callback基类进行重载)
    4、在顶层实例化并注册callback对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
UVM Advanced sequence
在这里插入图片描述

  • 其他sequence可以向sequence library注册
  • 可根据配置产生并执行已经在内部注册过的sequence
  • 具有多种内嵌的选择sequence算法
  • 支持用户自定义sequence算法

在这里插入图片描述
向UVM sequence library 永久注册sequence
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
临时添加sequence到UVM sequence library
(在实际的testcase 中根据实际需求添加sequence到sequence library中)
在这里插入图片描述
在一个单独的sequence library实例中添加sequence
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同样可以使用配置类的方法:
在这里插入图片描述
virtual sequence(virtual sequencer)
在这里插入图片描述
在这里插入图片描述
1、创建virtual sequencer的句柄
在这里插入图片描述
2、创建virtual sequence
在这里插入图片描述
在这里插入图片描述
3、在env中实例化virtual sequencer,并建立关联关系
在这里插入图片描述
4、testcase中启动virtual sequence
在这里插入图片描述
在这里插入图片描述
UVM寄存器抽象级(RAL)
在这里插入图片描述
register model 对DUT中的寄存器和存储器进行建模,这样可以在env实例化一个register model,scoreboard通过register model对寄存器和存储器访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
寄存器模型的构成:
1、register model
在这里插入图片描述
2、adapter
在这里插入图片描述
在这里插入图片描述
如何将寄存器模型嵌入测试平台中:
1、为DUT创建寄存器模型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后将整体封装至reg_model中
在这里插入图片描述
2、创建转换器adapter
在这里插入图片描述
在这里插入图片描述
3、在env中实例化reference model和adapter
在这里插入图片描述
在这里插入图片描述
5、在需要进行寄存器读写的地方使用API访问寄存器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RAL的另一种形式,通过monitor返回DUT的值
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章