目录
在Systemverilog搭建的平台中,还记得每个组件都需要有个task run();吗,该方法用于启动仿真,同时由test控制仿真的结束。而UVM提供了一套仿真运行规范,所有由UVM搭建的testbench都要在该规范下运行仿真。
主要介绍整个UVM框架的构建过程和testbench仿真过程
1. run_test(“my_test”);
UVM框架的产生和运行,全部从testbench中的一句run_test("my_test");开始,那么这一句子程序内部到底发生了什么呢?,这是本文的主要内容。
run_test("my_test");中的"my_test"是用户uvm_test扩展来的自定义test。
当然也可以写成run_test("");在仿真时在transcript写道+UVM_TESTNAME =my_test指定要运行的test
例如在questasim的transcript写vsim -novopt work.tb -classdebug +UVM_TESTNAME=my_test,等价于run_test(my_test);
1.1. uvm_test_top的例化
第一件事很简单,UVM树的树根——uvm_root类对象uvm_to
本文深入探讨了UVM的phase机制,从`run_test`开始,详细介绍了UVM测试平台的构建过程,包括uvm_test_top的例化、9大phase(如build_phase、connect_phase、run_phase)及其执行顺序。特别强调了run_phase中的objection机制,它是控制仿真结束的关键,并通过示例解释了如何在sequence中使用objection机制。此外,还分析了run_phase中组件的运行方式以及如何避免数据丢失问题。
订阅专栏 解锁全文
4715

被折叠的 条评论
为什么被折叠?



