目录

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便不再保持同步.

《UVM实战卷Ⅰ》学习笔记 第五章 UVM验证平台的运行相关推荐

  1. 《UVM实战》学习笔记——第四章 UVM中的TLM1.0通信

    文章目录 前言 一.TLM1.0 1.TLM的定义 2.数据流:数据流动的方向 3.控制流:动作发起者initiator.动作接收者target 4.各种端口的连接 5.transport 6.non ...

  2. Programming Entity Framework-dbContext 学习笔记第五章

    ### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...

  3. 《Go语言圣经》学习笔记 第五章函数

    <Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...

  4. Python3《机器学习实战》学习笔记(五):朴素贝叶斯实战篇之新浪新闻分类

    转载请注明作者和出处:http://blog.csdn.net/c406495762 Github代码获取:https://github.com/Jack-Cherish/Machine-Learni ...

  5. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第五章:中级控件

    第 5 章 中级控件 本章介绍App开发常见的几类中级控件的用法,主要包括:如何定制几种简单的图形.如何使用几种选择按钮.如何高效地输入文本.如何利用对话框获取交互信息等,然后结合本章所学的知识,演示 ...

  6. 《Android深度探究HAL与驱动开发》学习笔记----第五章

    第五章 搭建S3C6410开发板的测试环境 开发板是开发和学习嵌入式技术的主要硬件设备. 主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器 ...

  7. muduo学习笔记 - 第五章 高效的多线程日志

    第五章 高效的多线程日志 日志有两种意思: 诊断日志 交易日志 本章讲的是前一种日志,文本的供人阅读的日志,通常用于故障诊断和追踪,也可用于性能分析. 日志通常要记录: 收到的每条消息的id(关键字段 ...

  8. javascript高级程序设计 学习笔记 第五章 上

      第五章   引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScri ...

  9. css层叠样式表基础学习笔记--第五章 文本属性

    第五章 文本属性 5-01 字间距 5-02 行高 5-03 首行缩进 5-04 水平排列方式 5-05 垂直对齐方式 5-06 文本修饰 5-07 文本阴影 5-08 文本属性重置 5-01 字间距 ...

  10. 程序设计与算法三~C++面向对象程序设计~北大郭炜MOOC学习笔记~第五章:继承与派生(新标准C++程序设计)

    以下内容为笔者手打,望读者珍惜,如有转载还请注明. 第五章 继承与派生 $5.1 继承与派生的概念 $5.1.1 基本概念     在C++中,当定义一个新的类B时,如果发现类B拥有某个已经写好的类A ...

最新文章

  1. python代码变量作业_python - 是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业? - SO中文参考 - www.soinside.com...
  2. Python---进阶---logging---logger
  3. dart系列之:在dart中使用生成器
  4. Docker-容器数据卷
  5. 普通域用户设置共享文件夹
  6. NumPy学习(索引和切片,合并,分割,copy与deep copy)
  7. 几何畸变的类型_第七讲 几何纠正(摄影测量与遥感).pdf
  8. HTML5 — 知识总结篇《IV》【实体字符】
  9. Two Sum(Leetcode001)
  10. splitcontainer控件删除方法
  11. 肿瘤信息学中一些专业词汇整理(不断更新ing)
  12. 爬虫抓图全网最新方法,这一次终于是4k高清美图,只因为我不下载JPG图片!
  13. BlenderProc安装bop_toolkit问题
  14. 4、web(js):js 操作table: insertRow(),deleteRow(),insertCell(),deleteCell()方法
  15. python笛卡尔坐标系_THREE笛卡尔右手坐标系详解
  16. 第三周 Access 课堂总结
  17. [Usaco2010 Hol]cowpol 奶牛政坛
  18. Deep Learning on Graphs: A Survey
  19. 开源免费的WEB应用防火墙
  20. 7723java世界Ol,你不知道的《世界OL》

热门文章

  1. Android 9中实现应用开机自启动(前台服务的方式)
  2. Python学习笔记-系统性能信息模块psutil
  3. java开灯问题_算法入门之开灯问题
  4. 《团队执行力》分享记录
  5. Solr6适配自定义升级版mmseg4j
  6. android微信换行,微信终于支持换行输入了,只需要一个简单的操作-excel自动换行...
  7. mvvm与virtual dom算法的实践——“hoz”
  8. android日历控件!我把所有Android第三方库整理成了PDF,已开源
  9. 校内题目T2691 桶哥的问题——送桶
  10. python实现全网搜索_用Python实现一个大数据搜索引擎