test与启动流程
返回知识网络总入口 · 平台与对象
核心结论
run_test 选择并创建 test,test 组合环境、设置配置与替换策略,并启动场景。新 test 通常复用相同 env。
关键机制
- top module 连接静态 DUT/interface,在 run_test 前设置 vif。
- +UVM_TESTNAME 选择已注册且进入编译范围的 test,实例通常叫 uvm_test_top。
- build 创建环境和配置,connect 连接 TLM,运行阶段 start sequence。
- 场景拥有者持有 objection,直到激励与检查均完成。
小例子或流程
// test的main_phase片段
my_sequence seq;
phase.raise_objection(this);
seq = my_sequence::type_id::create("seq");
seq.start(env.agt.sqr);
wait (env.scb.all_done); // 平台自行实现的完成标志
phase.drop_objection(this);易错点
- 建树与连接依赖 phase,不是在选择 test 名字时一并完成。
- start 返回不等于 scoreboard 排空。
- 为完成条件设置独立 timeout,避免无限等待。
关联知识
- UVM方法学与平台全貌:test 将平台角色组织成可执行场景。
- phase:run_test 创建 test,phase 组织后续运行。
- objection:test 通常能统一判断激励与检查完成。
- sequence与sequencer:test 显式或配置默认 sequence 启动场景。
- factory注册_创建与override:test 在创建目标前设置替换策略。