UVM平台启动和结束

        UVM中通过objection机制来控制验证平台的关闭。在每个phase中,UVM会检查是否有objection被提起(raise_objection),如果有,那么等待这个objection被撤销(drop_objection)后停止仿真;如果没有,则马上结束当前phase。raise_objection语句必须在第一个消耗仿真时间的语句之前,如$display语句是不消耗仿真时间的,这些语句可以放在raise_objection之前,但是类似@(posedge top.clk)等语句是要消耗仿真时间的。当所有的phase都执行完毕后,就会调用$finish来将整个验证平台关掉。

        采用run_test来启动UVM验证平台:

加参数run_test启动uvm验证平台

        run_test语句会创建一个my_case0的实例,并会自动调用my_ case0的main_phase。仔细观察run_test语句,会发现传递给它的是一个字符串。UVM会根据这个字符串创建了其所代表类的一个实例(前提是这个类进行宏注册过了)。在UVM验证平台中,只要一个类使用uvm_component_utils注册且此类被实例化了,那么这个类的main_phase就会被自动调用,所以在driver中,最重要的就是实现main_phase。

        UVM也提供对不加参数的run_test的支持:

不加参数run_test启动uvm验证平台

        在这种情况下,UVM会利用UVM_TESTNAME从命令行中寻找测试用例的名字,创建它的实例并运行,如下所示的代码也可以启动my_case0:

        整个UVM验证平台启动及执行的流程如图所示:

测试用例启动及执行流程

        启动后,整棵UVM树的结构如图所示。

完整的UVM树

        uvm_top是一个全局变量,它是uvm_root的一个实例(而且也是唯一的一个实例),而uvm_root派生自uvm_component,所以uvm_top本质上是一个uvm_component,它是树的根。uvm_test_top的parent是uvm_top,而uvm_top的parent则是null。uvm_root的存在可以保证整个验证平台中只有一棵树,所有结点都是uvm_top的子节点。

 

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷公子的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值