1. 概述

UVM Phase机制是验证环境执行流程的核心控制机制,通过预定义的执行阶段确保验证组件的有序初始化和运行。

2. 主要Phase及其作用

2.1 构建阶段 (Build Phases)

flowchart TD
    S([开始]) --> A[build_phase]
    A --> B[connect_phase]
    B --> C[end_of_elaboration_phase]
    C --> D[start_of_simulation_phase]
    D --> E([结束])
Phase名称 执行顺序 主要作用 典型操作
build_phase 1 组件层次结构构建 创建子组件实例,配置对象分配
connect_phase 2 组件间连接建立 TLM端口连接,analysis端口绑定
end_of_elaboration_phase 3 环境最终调整 拓扑结构检查,最终配置参数设置
start_of_simulation_phase 4 仿真前准备 初始激励生成,参考模型初始化

2.2 运行阶段 (Run Phases)

flowchart TD
    S([开始]) --> A[pre_reset]
    A --> B[reset]
    B --> C[post_reset]
    C --> D[pre_configure]
    D --> E[configure]
    E --> F[post_configure]
    F --> G[main]
    G --> H[pre_shutdown]
    H --> I[shutdown]
    I --> J([结束])
子Phase名称 执行顺序 场景说明 典型操作
pre_reset 1 复位信号生效前准备 时钟信号启动,电源稳定模拟
reset 2 复位操作执行 复位信号驱动,寄存器复位值设置
post_reset 3 复位后稳定阶段 复位解除时序控制,状态机初始化
pre_configure 4 配置寄存器前准备 配置空间初始化,DUT模式设置
configure 5 寄存器配置阶段 写配置寄存器,模式寄存器设置
post_configure 6 配置后验证准备 配置回读校验,功能模式使能
main 7 主要测试场景执行 测试用例执行,功能覆盖率收集
pre_shutdown 8 结束测试前处理 最后事务完成检测,超时保护机制
shutdown 9 测试结束操作 关闭时钟信号,电源下电模拟

3. 后处理阶段 (Post-Run Phases)

flowchart TD
    S([开始]) --> A[extract_phase]
    A --> B[check_phase]
    B --> C[report_phase]
    C --> D[final_phase]
    D --> E([结束])
Phase名称 执行顺序 关键作用 典型应用场景
extract_phase 1 数据收集与统计 覆盖率数据收集,错误计数统计
check_phase 2 结果验证与断言 最终状态检查,断言总结报告
report_phase 3 结果报告生成 生成验证报告,输出日志文件
final_phase 4 环境清理 内存释放,文件句柄关闭

4. 执行特性说明

  1. 自动拓扑执行:Phase按层次结构自顶向下(build)和自底向上(run)执行
  2. 同步控制机制:使用phase.raise_objection()/drop_objection()控制执行时间
  3. 超时保护:内置超时机制防止phase无限期挂起
  4. 并行执行支持:run_phase及其子phase支持并行执行模式

5. 最佳实践建议

  1. 在build_phase使用create_component创建子组件
  2. 避免在connect_phase进行耗时操作
  3. 在main phase使用fork-join控制并发激励
  4. 使用phase跳转机制实现异常处理:
    1
    phase.jump(uvm_reset_phase::get()); 
  5. 在report_phase使用uvm_report_server进行总结报告