1. 调试功能概览
flowchart LR
A[配置调试] --> A1[命令行跟踪]
A --> A2[组件配置打印]
A --> A3[资源库转储]
B[工厂调试] --> B1[类型注册追踪]
C[阶段调试] --> C1[相位跟踪]
D[异议调试] --> D1[对象跟踪]
E[TLM调试] --> E1[连接拓扑分析]
F[通用调试] --> F1[组件层次]
F --> F2[消息控制]
2. 核心调试功能详解
2.1 配置调试
| 调试方法 |
命令行参数 |
使用场景 |
| 配置数据库跟踪 |
+UVM_CONFIG_DB_TRACE |
追踪set/get操作 |
| 组件配置打印 |
print_config() |
查看组件配置信息 |
| 资源库转储 |
uvm_config_db::dump() |
显示当前资源配置 |
代码示例:
1 2 3 4 5 6 7 8
| function void my_env::end_of_elaboration_phase(uvm_phase phase); super.end_of_elaboration_phase(phase); print_config(1, 1); endfunction
uvm_config_db #(int)::dump();
|
2.2 工厂调试
1 2 3 4 5 6 7 8 9
| uvm_factory::get().print();
|
2.3 阶段跟踪
启用方式:
输出示例:
1 2
| [PH/TRC/STRT] Phase 'build' Starting [PH/TRC/DONE] Phase 'build' Completed
|
2.4 异议跟踪
启用方式:
输出示例:
1 2
| [OBJTN_TRC] Object uvm_test_top raised 1 objection [OBJTN_TRC] Object uvm_top added 1 objection
|
2.5 TLM连接分析
1 2 3 4 5 6 7
| m_driver.seq_item_port.debug_connected_to(); m_sequencer.seq_item_export.debug_provided_to();
|
3. 通用调试工具
3.1 组件层次结构
1 2 3 4 5 6 7
| uvm_top.print_topology();
|
3.2 消息控制
| 控制方式 |
命令行参数 |
作用范围 |
| 全局详细度设置 |
+UVM_VERBOSITY=UVM_DEBUG |
全环境 |
| 组件级详细度设置 |
+uvm_set_verbosity |
指定组件 |
4. 调试功能对比表
| 功能类别 |
跟踪方法 |
最佳使用阶段 |
输出类型 |
| 配置跟踪 |
print_config() |
end_of_elaboration |
结构信息 |
| 工厂状态 |
factory.print() |
connect_phase |
注册类型列表 |
| 相位跟踪 |
+UVM_PHASE_TRACE |
全程 |
阶段状态变更 |
| TLM连接 |
debug_connected_to() |
end_of_elaboration |
端口连接拓扑 |
5. 调试流程最佳实践
sequenceDiagram
participant Test
participant Env
participant Config
participant Factory
Test->>Config: set虚拟接口
Config->>Env: 传递配置
Env->>Factory: 创建组件
Factory-->>Env: 返回实例
Env->>Test: 完成构建
Note right of Test: print_topology()查看结构
提示:结合使用+UVM_CONFIG_DB_TRACE和print_topology()可快速定位配置传递问题