- 示例与验证
- 可运行示例
可运行示例
从已观察到的现象选择实验,比较旧写法与改法。环境为 VCS W-2024.09-SP2-8,seed=1;所有运行器使用独立目录。
首次运行:准备工具、解包并跑通一个示例 · 下载最小 TB、运行器和预期结果
检查实际 SoC 代码用迁移扫描器;本页的运行器用于包内最小 TB。按任务选择运行器,见工具包脚本分工。
推荐先看
字段比较漏检 · run 提前结束 · backdoor 编解码失效
按问题选择示例
| 要解决的问题 | 改法与简单示例 |
|---|---|
| 事务开始/结束事件改用 get_event_pool() | 查看修改前后 |
| 自定义 factory 子类需要补充虚方法 | 查看修改前后 |
| copy(null) 现在计为错误;普通 copy 调用可保留 | 查看修改前后 |
| 禁用自动字段配置:旧开关改为组件方法 | 查看修改前后 |
| 自定义 coreservice:新增虚方法与初始化时机 | 查看修改前后 |
| pack 位流格式改变:检查外部接收端与历史数据 | 查看修改前后 |
| uvm_packer 状态存取 API 重命名与签名变更 | 查看修改前后 |
| 删除无效的打印宽度配置,使用 printer 访问器 | 查看修改前后 |
| 打印整数时显式传位宽,避免把 UVM_HEX 当宽度 | 查看修改前后 |
| 自定义比较:检查类型设置和不匹配消息数量 | 查看修改前后 |
| uvm_printer emit() 必须配 flush(),新增 UVM/PRINT/NO_FLUSH 检查 | 查看修改前后 |
| 旧数组录制上限失效:显式控制记录项数 | 查看修改前后 |
| event 回调改用 uvm_callbacks 注册和删除 | 查看修改前后 |
| 旧 test_done 不再保持 run 存活 | 查看修改前后 |
| 通过 get_objection() 获取 task phase 的 objection | 查看修改前后 |
| uvm_event#(T) trigger 默认数据机制:新增 set/get_default_data,reset 清数据 | 查看修改前后 |
| 旧全局配置、timeout 和 stop 函数需要改写 | 查看修改前后 |
| 删除:reporting 类中的 deprecated 方法 | 查看修改前后 |
| uvm_resource#(T) 自管理接口 set() / set_override() / get_by_name() / get_by_type() 被删除 | 查看修改前后 |
| 字符串 default_sequence 不再启动激励 | 查看修改前后 |
| 不要直接 new sequence/sequencer 抽象基类 | 查看修改前后 |
| 自定义 sequence 仲裁函数改用 int 签名 | 查看修改前后 |
| 响应队列溢出默认不报错,需要显式开启 | 查看修改前后 |
| sequence.kill() 清理仲裁请求、锁与路由,保留已排队响应 | 查看修改前后 |
| get_local_map/get_default_map 移除 caller 调试形参(含 Xcheck_accessX) | 查看修改前后 |
| uvm_reg_backdoor 变为抽象类;wait_for_change 由 local 变 public | 查看修改前后 |
| 后门访问告警:not contained within map 'Backdoor' | 查看修改前后 |
| uvm_reg_address_config 与 get_registers_filtered_by_address 移除(UVM_REG_ENABLE_ADDRESS_EXCLUSION 扩展终止) | 查看修改前后 |
| 后门编解码可能失效:同时检查硬件值与读回值 | 查看修改前后 |
| 私有 reg-bank 覆盖率改为构造时声明 | 查看修改前后 |
| uvm_tlm_fifo::flush() 不再向 get_ap 广播,VCS 两项队列实测存在残留(S9) | 查看修改前后 |
| 派生 TLM FIFO 的字段自动配置默认停止 | 查看修改前后 |
| TLM2 socket 基类全部改为 virtual class | 查看修改前后 |
| port.get_connected_to / get_provided_to 返回容器改为 port 句柄 | 查看修改前后 |
| uvm_field_* automation:显式启用需要的字段操作 | 查看修改前后 |
| 工厂创建的对象需要带 name 参数的构造函数 | 查看修改前后 |
| uvm_do* 动作宏:约束、sequencer 与优先级的迁移 | 查看修改前后 |
| 旧 sequence 注册宏改为 object/component 注册 | 查看修改前后 |