news 2026/4/18 3:43:24

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

作者头像

张小明

前端开发工程师

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

文章目录

  • 原始代码及log
  • UVM测试平台层次结构与Phase执行顺序解析
    • 🧩 仿真结果图示
  • UVM测试平台层次结构与Phase执行顺序深度解析
    • 🧩 仿真结果图示
    • 🔍 UVM Phase执行顺序核心原理
      • ✅ UVM Phase执行顺序规则
    • 🧪 UVM组件层次结构分析
    • 📊 Phase执行时间线分析
      • 1. build_phase (0ns)
      • 2. end_of_elaboration_phase (0ns)
      • 3. start_of_simulation_phase (0ns)
      • 4. run_phase (关键阶段)
    • ✅ UVM Phase执行顺序核心原则
      • 1. 构建阶段(build_phase):自底向上
      • 2. 运行阶段(run_phase):自顶向下
      • 3. 结束阶段(extract/check/report_phase):自底向上
    • 🔥 本例的关键发现
    • 💡 为什么其他组件的run_phase在500ns前结束?
    • ✅ UVM最佳实践总结
      • ✅ 正确使用UVM Phase
      • ✅ 测试结束协调
      • ✅ 组件层次设计
    • 💬 与UVM官方文档一致
    • ✅ 重要结论
  • 追更
  • build_phase执行顺序与打印顺序
    • ✅ UVM官方文档确认
    • ✅ 仿真结果验证
    • 仿真日志的打印顺序示例
    • UVM测试平台设计规范
    • 💬 为什么UVM设计为build_phase自底向上?

原始代码及log

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",$time,get_full_name());endfunction functionvoidreport_phase(uvm_phase phase);$display("%0t: %0s: report",$time,get_full_name());endfunction taskrun_phase(uvm_phase phase);$display("%0t: %0s: start run phase",$time,get_full_name());#delay;$display("%0t: %0s: end run phase",$time,get_full_name(
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 20:45:25

效率革命:IBM Granite-4.0-H-Small-Base如何重塑企业级AI部署格局

2025年10月,IBM正式发布Granite-4.0-H-Small-Base大语言模型,凭借320亿总参数(其中90亿为活跃参数)的创新混合专家架构,在保证企业级性能的同时将AI部署成本锐减70%,这一突破性进展重新定义了行业对大模型效…

作者头像 李华
网站建设 2026/4/17 4:37:31

53、SQL Server 2008 Management Studio与SharePoint使用指南

SQL Server 2008 Management Studio与SharePoint使用指南 1. SQL Server 2008 Management Studio的使用 SQL Server Management Studio是运行在工作站计算机上的一个组件,可用于管理网络上的任何或所有SQL Server实例。通过工作站计算机的“开始”菜单选择“SQL Server Mana…

作者头像 李华
网站建设 2026/4/16 17:08:53

56、Linux 系统管理:用户账户与网络配置全解析

Linux 系统管理:用户账户与网络配置全解析 1. 用户账户管理 在 Linux 系统中,用户账户管理是网络管理中常见的任务之一。安装 Linux 后首次启动时,安装向导会提示创建一个用户账户,但通常还需要创建更多的账户。 每个 Linux 用户账户关联着以下信息: - 用户名 :用户…

作者头像 李华
网站建设 2026/4/18 1:40:09

55、数据库管理员的职业成长之路

数据库管理员的职业成长之路 在信息技术领域,持续学习和职业发展对于数据库管理员(DBA)来说至关重要。正式的计算机教育虽有帮助,但并非必需,工作中的实践远比学校所学更为重要。我们可以通过结构化的培训课程学习新主题,然后自主维护和拓展技能。掌握新技术后,还需紧跟…

作者头像 李华
网站建设 2026/4/17 8:19:03

57、Oracle数据库管理脚本与术语详解

Oracle数据库管理脚本与术语详解 在数据库管理工作中,脚本是提高效率、实现自动化操作的重要工具。以下将为大家介绍一系列Oracle数据库管理脚本以及相关的术语。 常用脚本介绍 show_dba_rollback_segs.sql sql select segment_name, owner, tablespace_name, initial_e…

作者头像 李华