IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 《UVM实战卷Ⅰ》学习笔记 第五章 UVM验证平台的运行 -> 正文阅读

[游戏开发]《UVM实战卷Ⅰ》学习笔记 第五章 UVM验证平台的运行

目录

5.1?phase机制

1.两种执行顺序和两种类型phase

2.phase的执行顺序(phase核心意义:层次化顺序)

1.同一compoent不同phase的执行顺序

2.归属不同compoent相同phase的执行顺序

3.super.phase有什么作用?

4.phase机制的意义

5.2?objection机制

1.run_time phase和run_phase的objection

2.图5-4的大楼在讲什么?

3.phase的参数列表中(uvm_phase phase)的作用

4.objection放在哪里??

5.set_drain_time的引入

5.3?domain的应用

1.domain是什么?


5.1?phase机制

1.两种执行顺序和两种类型phase

1.两种执行顺序

①不同phase的执行顺序

②归属不同compoent相同phase的执行顺序

2.两种类型phase

①不消耗仿真时间phase:function?phase

②消耗仿真时间phase:task?phase,task phase又分为run_phase和run_time?phase

2.phase的执行顺序(phase核心意义:层次化顺序)

建议理解此处时结合实际的情景,否则容易被绕晕

1.同一compoent不同phase的执行顺序

1.整体function?phase+task?phase,自上而下

eg.图5-1左侧整体自上而下

2.单独task?phase中,run_phase和run_time?phase并行(两者全部完成才退出task?phase,重新进入function?phase),12个run_time?phase顺序运行

eg.结合图5-4来看,run_phase和run_time?phase会同时启动且并行,两者需要全部执行完.而run_time?phase内部12个是顺序运行

2.归属不同compoent相同phase的执行顺序

1.依UVM树parent/child从上到下顺序联系起来的不同comp:

①function phase

a.build_phase--->自上而下依次执行

eg.先build agent?再 build driver

b.其余phase(例如connect_phase)--->自下而上

eg.先连接?driver?再?连接?agent

②task?phase

自下而上启动,同步执行

eg.agent和driver自上而下启动run_phase,但是同步执行

2.在UVM树中同层次的不同comp

①function phase

按实例化指定name的字典顺序>深度优先

eg.两个driver实例化是分别命名为a_drv和b_drv,a_drv先于b_drv执行

? ? ?执行完agent,先执行agent中的drv还是执行和agent同层的scb??执行drv

②task?phase

同步执行

eg.两个driver某一个phase两者都执行完才会去下一个phase,图5-4执行完一层去下一层

3.super.phase有什么作用?

其实就是继承在uvm_compoent中已经定义好的变量/方法,作者建议有的可以写有的可不写,但是我个人建议写上去,以免后续uvm库有更新,自己还要更改代码风格.

4.phase机制的意义

自动生成安全的层次化

建议5.1.8和2.3.4一起加深理解

5.2?objection机制

1.run_time phase和run_phase的objection

1.只要有一个comp中的run_time phase已经raise?objection,其余comp就运行

2.run_phase只要run_time phase raise objection,就会运行

2.图5-4的大楼在讲什么?

本质讲的就是5.1中1和2以及5,2中的1.

1.run_phase和run_time phase并行

2.某一phase只需要拥有该phase的某一com raise objection便会运行,反之不会运行

3.run_phase可依靠run_time phase的objection运行,且先run_time phase后run_phase

3.phase的参数列表中(uvm_phase phase)的作用

参考我之前写的blogUVM phase机制中各个phase function/task 的参数列表(uvm_phase phase)怎么理解?_IC-V的博客-CSDN博客

4.objection放在哪里??

objection放在哪里也就意味着哪里控制着整个UVM平台的运行(可以再结合大楼理解一下).

1.scoreboard(需要改造无线循环,mon和drv便是因此而不发起objection)

2.在sequence中(详见2.4.3中代码2-73),利用uvm_sequence中的staring_phase.

提升一下,放在sequence中,也就意味着sequence和objection紧密连接在一起,类似意思作者在2.4.3引入default_sequence后也提及过.这里体现了UVM的设计哲学,作为验证平台数据流发生器sequence,sequence的启动与结束,也就代表了验证平台运行的启动与结束.

5.set_drain_time的引入

上一个问题已经决定由sequence和objection的联动来决定UVM平台phase的运行,但是从seq到sqr再到drv驱动至dut,同时其余comp也捕捉数据,这中间存在时间差.如果seq产生完数据直接drop,进入下一个phase,有可能其余comp该phase还未正常执行,因此需要给其他comp延时,也就是set_drain_time.

需求是:?保证seq在drop objection?时,全部comp执行完毕.?解决是:增加set_drain_time

5.3?domain的应用

1.domain是什么?

用于组织不同组件的概念

在5.1中我们提到,不同comp的function?phase/run_phase/run_time phase的同步,引入domain,将不同comp置入不同domain,run_time phase便不再保持同步.

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:42:37  更:2021-10-18 17:43:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 0:39:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码