news 2026/5/26 4:53:58

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/5/22 7:37:44

天天劈砖休闲小游戏Linux演示教程

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 本站教程、资源皆在单机环境进行,仅供单机研究学习使用。 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 一、获取材料和结果演示 百度网盘链接: https://…

作者头像 李华
网站建设 2026/5/26 4:06:54

普中开发板基于51单片机贪吃蛇游戏设计

基于51单片机贪吃蛇游戏设计( proteus仿真程序设计报告讲解视频) 仿真图proteus8.17(有低版本) 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:P24 1主要功能: 基于51单片机的贪吃蛇游戏设计 1、采用8*8点…

作者头像 李华
网站建设 2026/5/25 9:48:05

《从零入门 Ascend C:手把手实现高性能向量加法自定义算子》

1. 引言:为什么需要 Ascend C?在深度学习模型训练与推理中,标准算子库(如 cuDNN、ACL)虽已高度优化,但面对新型网络结构、特殊数据格式或极致性能需求时,往往力不从心。此时,开发者需…

作者头像 李华
网站建设 2026/5/26 3:40:44

DroidCam零基础入门:5分钟把手机变电脑摄像头

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 制作一个交互式新手引导应用,通过动画演示和简单步骤:1) 如何在手机和电脑上安装DroidCam;2) 基础连接设置图解;3) 常见应用场景展示…

作者头像 李华
网站建设 2026/5/22 12:26:35

电商大促期间如何预防503错误?7个实战方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商高可用性监控系统,功能:1. 实时监控服务器负载 2. 预测流量峰值 3. 自动触发扩缩容 4. 优雅降级策略 5. 503错误预警。当检测到可能引发503的情…

作者头像 李华
网站建设 2026/5/24 19:16:01

Prompt工程能否代替模型训练?

Prompt 工程很强,但替代不了「模型训练」本身。下面我们从底层视角拆开看看:Transformer 在干嘛?Prompt 在干嘛?训练在干嘛?它们的边界到底在哪里?1 LLM的本质 可以把一个大模型抽象成一个条件概率分布&…

作者头像 李华