uvm_phases
UVM Phase机制详解
1. 概述
UVM Phase机制是验证环境执行流程的核心控制机制,通过预定义的执行阶段确保验证组件的有序初始化和运行。
2. 主要Phase及其作用
2.1 构建阶段 (Build Phases)
graph TD
A[build_phase] --> B[connect_phase]
B --> C[end_of_elaboration_phase]
C --> D[start_of_simulation_phase]
| Phase名称 | 执行顺序 | 主要作用 | 典型操作 |
|---|---|---|---|
build_phase |
1 | 组件层次结构构建 | 创建子组件实例,配置对象分配 |
connect_phase |
2 | 组件间连接建立 | TLM端口连接,analysis端口绑定 |
end_of_elaboration_phase |
3 | 环境最终调整 | 拓扑结构检查,最终配置参数设置 |
start_of_simulation_phase |
4 | 仿真前准备 | 初始激励生成,参考模型初始化 |
2.2 运行阶段 (Run Phases)
graph LR
PR[pre_reset] --> R[reset]
R --> PoR[post_reset]
PoR --> P[pre_configure]
P --> C[configure]
C --> PC[post_configure]
PC --> M[main]
M --> PSh[pre_shutdown]
PSh --> Sh[shutdown]
| 子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)
graph TB
E[extract_phase] --> C[check_phase]
C --> R[report_phase]
R --> F[final_phase]
| Phase名称 | 执行顺序 | 关键作用 | 典型应用场景 |
|---|---|---|---|
extract_phase |
1 | 数据收集与统计 | 覆盖率数据收集,错误计数统计 |
check_phase |
2 | 结果验证与断言 | 最终状态检查,断言总结报告 |
report_phase |
3 | 结果报告生成 | 生成验证报告,输出日志文件 |
final_phase |
4 | 环境清理 | 内存释放,文件句柄关闭 |
4. 执行特性说明
- 自动拓扑执行:Phase按层次结构自顶向下(build)和自底向上(run)执行
- 同步控制机制:使用
phase.raise_objection()/drop_objection()控制执行时间 - 超时保护:内置超时机制防止phase无限期挂起
- 并行执行支持:run_phase及其子phase支持并行执行模式
5. 最佳实践建议
- 在build_phase使用
create_component创建子组件 - 避免在connect_phase进行耗时操作
- 在main phase使用fork-join控制并发激励
- 使用phase跳转机制实现异常处理:
phase.jump(uvm_reset_phase::get());
- 在report_phase使用
uvm_report_server进行总结报告

浙公网安备 33010602011771号