当前位置: 首页 > news >正文

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",
http://www.cnnetsun.cn/news/52585.html

相关文章:

  • 【入门级-数据结构-3、特殊树:完全二叉树的定义与基本性质】
  • python用openpyxl操作excel-读取或创建excel文件
  • 刷题日记day5(二分+前缀和)
  • 005-AES:采招网
  • 基于python+django的在线考试系统(源码+lw+部署文档+讲解等)
  • C语言一维与二维数组名详解:从本质理解到高手应用
  • 当水印遇见AI:一场像素级的美学修复之旅
  • 软件测试是保障软件质量的关键环节,尤其在当前无法完全依赖形式化方法证明软件正确性的背景下,测试成为发现缺陷最主要、最有效的手段
  • 如何用AI快速生成Flink面试题答案?
  • 10分钟搞定:DeepSeek本地开发环境快速搭建方案
  • 豆包AI手机智能操控的硬核原理
  • CVE-2023-48795漏洞深度解析:原理与影响
  • 深入解析strspn:字符串扫描的精确尺子
  • 纺织AI设计系统:用技术重构创意与效率
  • 用AI辅助开发:weditor的自动化测试新体验
  • vivo真机adb 命令获取手机当前窗口信息
  • 3分钟极速安装!MinGW自动化方案对比
  • Spring Boot依赖冲突:新手必看指南
  • 1小时快速搭建Kiro下载工具原型
  • GitLab本地部署效率革命:比官方文档快3倍的极简方案
  • 智能问数如何让数据分析效率提升10倍
  • Phyfusion在游戏开发中的5个惊艳应用案例
  • 电商网站商品筛选栏的sticky定位实战
  • 零基础学结构体:从概念到实战5个例子
  • 5分钟搭建status_invalid_image_hash检测原型
  • 人工智能应用-机器视觉:车牌识别(1)
  • 5分钟搞定node-sass配置:快速原型开发指南
  • 幽冥大陆(四十九)PHP打造Java的Jar实践——东方仙盟筑基期
  • 从产线到质检,兰亭妙微教你做 “工人愿意用” 的工业 UI
  • 【数学】【微积分】 ① 导数的基础概念与计算法则