news 2026/4/27 23:42:02

UVM-phase中的object机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVM-phase中的object机制

在class uvm_phase extends uvm_object中

1. 类的作用和结构

这个类是uvm_phase,它管理测试平台中阶段的 objection 机制。UVM 使用 objection 机制来控制仿真的执行时间,防止测试提前结束。

核心成员:

systemverilog

uvm_objection phase_done; // 阶段的 objection 对象

2. 核心方法详解

2.1raise_objection方法

systemverilog

function void uvm_phase::raise_objection (uvm_object obj, string description="", int count=1); if (phase_done != null) phase_done.raise_objection(obj, description, count); else m_report_null_objection(obj, description, count, "raise"); endfunction

功能:提起 objection,表示阶段还需要继续执行

  • 参数

    • obj:提起 objection 的对象(通常是 uvm_component)

    • description:描述信息(用于调试)

    • count:提起的数量(默认1)

  • 作用:增加 objection 计数器,阻止阶段过早结束

2.2drop_objection方法

systemverilog

function void uvm_phase::drop_objection (uvm_object obj, string description="", int count=1); if (phase_done != null) phase_done.drop_objection(obj, description, count); else m_report_null_objection(obj, description, count, "drop"); endfunction

功能:放下 objection,表示对象不再需要阶段继续执行

  • 参数:同raise_objection

  • 作用:减少 objection 计数器,当所有 objection 都放下时,阶段可以结束

2.3get_objection_count方法

systemverilog

function int uvm_phase::get_objection_count (uvm_object obj=null); if (phase_done != null) return phase_done.get_objection_count(obj); else begin m_report_null_objection(obj, "", 0, "get_objection_count"); return 0; end endfunction

功能:获取 objection 计数

  • 参数obj(可选)- 指定对象,如果为 null 则获取总计数

  • 返回值:当前阶段活跃的 objection 数量

2.4get_objection方法

systemverilog

function uvm_objection get_objection(); return this.phase_done; endfunction

功能:获取 phase_done objection 对象的句柄

3. 错误处理机制

所有方法都包含空指针检查:

systemverilog

if (phase_done != null) // 正常操作 else m_report_null_objection(...); // 报告错误

phase_done未初始化时,调用m_report_null_objection报告错误。

4. UVM Phase 执行流程示例

systemverilog

class my_test extends uvm_test; task run_phase(uvm_phase phase); phase.raise_objection(this, "Starting test"); // 执行测试活动 #100; phase.drop_objection(this, "Test completed"); endtask endclass

5. 关键特点

  1. 代理模式uvm_phase将 objection 操作委托给phase_doneuvm_objection实例)

  2. 空安全:所有方法都检查phase_done是否有效

  3. 灵活性:支持多个对象同时管理 objection

  4. 调试支持:通过 description 参数提供调试信息

6. 实际应用场景

这种设计允许:

  • 并行执行:多个组件可以独立控制 objection

  • 精确控制:可以精确控制仿真何时结束

  • 错误检测:及时报告配置错误(如未初始化的 objection)

这个机制是 UVM 仿真控制的核心,确保测试平台只在所有必要活动完成后才结束仿真。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 3:13:43

FeignRequestInterceptor 原理详解

FeignRequestInterceptor是 OpenFeign 的请求拦截器机制,其工作原理如下:1. 核心设计模式责任链模式:Feign 通过拦截器链在请求发送前和接收后执行自定义逻辑。// 拦截器接口定义 public interface RequestInterceptor {void apply(RequestTe…

作者头像 李华
网站建设 2026/4/27 23:40:38

AI 写论文哪个软件最好?虎贲等考 AI 凭 “学术闭环” 登顶首选

毕业季的论文攻坚战,“AI 写论文哪个软件最好” 成了学子圈的终极拷问。有的软件文献引用虚拟无据,有的 AI 痕迹明显被导师打回,有的功能碎片化需反复切换工具 —— 真正靠谱的 AI 写作软件,不仅要 “写得快”,更要 “…

作者头像 李华
网站建设 2026/4/26 9:05:57

网络安全技术核心框架:一文理清从原理到实践的知识体系

1.网络安全的概念 网络安全的定义 ISO对网络安全的定义:网络系统的软件、硬件以及系统中存储和传输的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,网络系统连续可靠正常地运行,网络服务不中断。 网络安全的属…

作者头像 李华
网站建设 2026/4/25 16:54:12

Aurix TC387 Can配置记录

一、MCMCAN介绍fSYN is supplied from fMCANH and fASYN is supplied from fMCAN from CCU. fSYN is used as the clock source for Register and RAM interface,fASYN is used to generate the nominal and fast CAN FD baudrates. It is recommended to use fASYN as 80, 40,…

作者头像 李华
网站建设 2026/4/19 20:45:23

原理:XinServer 是如何实现开箱即用的后端服务的?

原理:XinServer 是如何实现开箱即用的后端服务的? 不知道你有没有过这种经历:产品经理或者客户拿着一个原型图过来,说“咱们这个App/小程序/管理后台,下个月能上线吗?”你一看,好家伙&#xff0…

作者头像 李华
网站建设 2026/4/27 17:56:56

前端:VUE2

vue官网:https://cn.vuejs.org/服务端渲染 服务器浏览器服务器浏览器#mermaid-svg-7LrgJWuVc08jOSgy{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@key…

作者头像 李华