UVM(二)

UVM库(在类库中使用继承和封装)

  • TLM(TLM是组件之间通信的标准)
  • structural Elements(不同方法学的通用类:组件、信息系统、仿真阶段等等)
  • methodology(用户实现平台重用的主要接口,用户可以在不改变代码的情况下更改平台配置、替换平台组件、更换不同的激励甚至仿真行为)

在这里插入图片描述
UVM package 包含三个主要的类:

  • uvm_component(构建UVM testbench 层次结构最基本的类)
  • uvm_object(作为UVM的一种数据结构,可作为配置对象来配置测试平台)
  • uvm_transaction(用来产生激励和收集响应)

在这里插入图片描述
在这里插入图片描述
UVM结构树:
在这里插入图片描述
在这里插入图片描述
实际的UVM结构树:
在这里插入图片描述
构建的原因:
(1)为config机制提供搜索路径
(2)为override机制提供搜索路径
(3)是phase自动执行的需要

UVM phase
在这里插入图片描述
在执行过程中左右过程是并行执行的

为什么需要phase?
从验证平台的构建,到配置,到连接,再到运行,最后停止需要有一定的先后顺序。
(1)将创建对象的语句打包放入build_phase()中执行
(2)将组件之间的连接打包放入connect_phase()中执行//即保证build phase先于connect phase执行即可
在这里插入图片描述
在这里插入图片描述
其中分为task phase(消耗时间) &function phase(不消耗时间)黄色为task_phase,橙色为function_phase

注意:
(1)只有当所有的component的同名phase都执行完毕,才会执行下一个phase
(2)同名phase在不同的component中的执行顺序
(3)run phase 与12个run-time phase的关系
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动UVM平台会自动启动phase

uvm objection

  • 控制task phase 的运行和终止
  • 同步各个components同名的task phase

(在task phase中调用raise_objection()和drop_objection(),task phase其他需要执行的语句放在这两个方法之间)

注意:

  • objection对于task phase才有意义
  • 在执行消耗仿真时间语句之前raise_objection()
  • 在task phase结束时drop_objection()
  • 建议每一个task phase都raise,drop一次

在这里插入图片描述
但是在log文件中并未找到reset_phase中打印的语句
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
尽管在monitor.sv中没有raise和drop函数,但通过log文件显示仍执行了reset task,这是由于在drive.sv中有相同的reset task,从而执行task

在这里插入图片描述
在这里插入图片描述
将仿真时间延后至monitor的reset task,会出现没有reset task的执行
在这里插入图片描述

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