news 2026/1/23 6:06:02

10-2 phase:run_test UVM测试平台层次结构与Phase执行顺序解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10-2 phase:run_test UVM测试平台层次结构与Phase执行顺序解析

10-1 phase:basic UVM测试平台层次结构与Phase执行顺序解析

这个案例和上一篇10-1基本类似,可以跳过,区别是这个案例少了上篇很奇怪的AA类的中间层

文章目录

  • ✅ 区别总结:代码1 与 代码2 的核心差异
  • UVM Phase执行顺序的准确解析:组件层次结构对执行顺序的影响
    • 一、核心问题:组件层次结构如何影响UVM Phase执行顺序
    • 二、关键代码差异:中间组件AA的有无
      • 代码1(包含多余中间组件AA):
      • 代码2(直接使用A组件,无多余中间层次):
    • 三、组件层次结构对比
      • 代码1的层次结构(包含AA中间组件):
      • 代码2的层次结构(直接使用A组件):
    • 四、执行顺序对比
      • 代码1的`build_phase`执行顺序(自底向上):
      • 代码2的`build_phase`执行顺序(自底向上):
    • 五、仿真日志对比
      • 代码1的build_phase日志:
      • 代码2的build_phase日志:
    • 六、关键分析:为什么这个差异很重要?
      • 1. UVM核心机制:自底向上执行顺序
      • 2. 日志输出顺序与执行顺序的混淆
      • 3. 为什么代码1中的AA是多余的?
    • 七、UVM最佳实践:组件层次结构设计
      • ✅ 正确做法(代码2风格):
      • ❌ 错误做法(代码1风格):
    • 八、UVM设计哲学:为什么需要自底向上执行?
      • 代码1的错误示例(如果在AA中访问a):
    • 九、UVM Phase执行顺序的权威验证
    • 十、结论:组件层次结构是UVM设计的核心
    • 十一、UVM最佳实践建议
      • ✅ 正确设计组件层次结构
      • ❌ 错误设计(避免)
    • 十二、总结

基于上一篇代码小修一下,这里将上一篇代码简称为1,修改后为2
module top;import uvm_pkg::*;//Create a topology// top// | |// u1(A) u2(A)// | | | |// b1(B) d1(D) b1(B) d1(D)//No run phaseclassDextends uvm_component;functionnew(string name,uvm_component parent);super.new(name,parent);endfunction functionvoidbuild_phase(uvm_phase phase);$display("%0t: %0s: build",$time,get_full_name());endfunction functionvoidend_of_elaboration_phase(uvm_phase phase);$display("%0t: %0s: end_of_elaboration",$time,get_full_name());endfunction functionvoidstart_of_simulation_phase(uvm_phase phase);$display("%0t: %0s: start_of_simulation",$time,get_full_name());endfunction functionvoidextract_phase(uvm_phase phase);$display("%0t: %0s: extract",$time,get_full_name());endfunction functionvoidcheck_phase(uvm_phase phase);$display("%0t: %0s: check",$time,get_full_name());endfunction functionvoidreport_phase(uvm_phase phase);$display("%0t: %0s: report",$time,get_full_name());endfunction endclass//Has run phaseclassBextends uvm_component;rand logic[7:0]delay;functionnew(string name,uvm_component parent);super.new(name,parent);endfunction functionvoidbuild_phase(uvm_phase phase);$display("%0t: %0s: build",$time,get_full_name());endfunction functionvoidend_of_elaboration_phase(uvm_phase phase);$display("%0t: %0s: end_of_elaboration",$time,get_full_name());endfunction functionvoidstart_of_simulation_phase(uvm_phase phase);$display("%0t: %0s: start_of_simulation",$time,get_full_name());endfunction functionvoidextract_phase(uvm_phase phase);$display("%0t: %0s: extract",$time,get_full_name());endfunction functionvoidcheck_phase(uvm_phase phase);$display("%0t: %0s: check",
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/21 10:50:21

【入门级-数据结构-3、特殊树:完全二叉树的定义与基本性质】

一、完全二叉树的严格定义 完全二叉树(Complete Binary Tree)是二叉树中极具规律性的特殊结构。 完全二叉树需满足两个核心条件: 除最后一层外,每一层的节点数都达到最大值(即第k层有2^(k-1)个节点,k≥1&am…

作者头像 李华
网站建设 2026/1/22 2:56:37

python用openpyxl操作excel-读取或创建excel文件

python用openpyxl操作excel-读取或创建excel1,读取 excel 文件返回 workbook 对象def excel_read(file_path):""" 读取Excel文件返回workbook对象 """if not os.path.exists(file_path):logger.error(f文件{file_path}不存在)return …

作者头像 李华
网站建设 2026/1/21 23:52:42

刷题日记day5(二分+前缀和)

题目描述 蒟蒻的第五篇博客希望大家支持 1314聪明的质检员 P1314 [NOIP 2011 提高组] 聪明的质监员 题目描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有 nnn 个矿石,从 111 到 nnn 逐一编号,每个矿石都有自己的重…

作者头像 李华
网站建设 2026/1/22 11:13:33

005-AES:采招网

本文来做一个标准AES案例:采招网 找加密参数 这里有一个响应是密文,今天来解密响应内容: 找解密位置 试过hook,直接pass掉,因为鼠标一移动到页面上就会断下来,可以试试再加些条件来判断(类似条…

作者头像 李华
网站建设 2026/1/22 14:22:55

基于python+django的在线考试系统(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦传统线下考试组织繁琐、阅卷效率低、成绩统计不便的痛点,设计并开发基于PythonDjango的在线考试系统。系统以Python作为核心开发语言,依托Django框架搭建高效稳定的后端服务架构,负责处理多角色权限管控、题库管理、试卷生…

作者头像 李华
网站建设 2026/1/23 5:21:12

C语言一维与二维数组名详解:从本质理解到高手应用

在C语言中,数组名看似简单,却是许多初学者容易混淆的重点和难点。理解数组名的本质,是掌握C语言数组编程的关键一步。数组是C语言中最基础且重要的数据结构之一,而数组名作为数组的标识符,其背后隐藏的语义和特性对于初…

作者头像 李华