Virtual sequence 和test 启动的关系

本文探讨了UVM基本结构中的Sequence启动,包括Sequence的启动机制、Objection机制、默认启动方式以及Virtual Sequence的使用。重点讲述了在sequence中如何使用raise/drop_objection()来控制仿真流程,以及如何通过virtual sequence管理不同sequence的执行顺序。同时,介绍了如何通过run_test()和UVM_TESTNAME参数来动态选择要执行的sequence。
摘要由CSDN通过智能技术生成

这是一个UVM的基本结构问题。

sequecne的启动

先理解一个sequence 的启动机制吧。白书第二章有讲解。
对于一个sequence,在环境中的任意一处实际调用sequence.start就可以启动啦。
但是一般会在前后加上raise/drop_objection().

objection机制

这就是,objection机制了,在程序进入到某一个phase时,UVM会收集这个phase 所有的objection,并且实时监测是否objection被drop,一旦所有objection都被drop,则当前phase会关闭。
这一机制的用途是,当你在环境中某一个phase添加一些耗费时间的代码时,一定要rasie/drop_objsection.,不然这些耗时操作会被略去。
所以,一般只有会在sequence中用raise与drop,因为一般只有他们会有些耗时操作。
偶尔在driver或者monitor中要用的话就也要注意啦。

default 方式启动

除了手动使用start方式启动sequence外,更加常见的是default sequence方式启动,default方式也有两种,可见P165(区别在于creat sequence的地方不同罢了)

uvm_config_db#(uvm_object_warapper)::set(this,
                                        
好的,假设您在使用SystemVerilog中的UVM框架。要将UVM环境中实例化的agent发送到virtual sequence,您需要遵循以下步骤: 1. 在您的UVM环境中,为每个agent实例化一个句柄。 2. 在您的virtual sequence中,通过这些句柄来访问agent。 3. 在virtual sequence中,通过这些句柄来调用agent中的任务和函数。 以下是一个示例代码片段,用于将UVM环境中实例化的agent发送到virtual sequence中: ```systemverilog class my_virtual_sequence extends uvm_sequence_item; my_agent agent1; my_agent agent2; `uvm_object_utils(my_virtual_sequence) function new(string name = ""); super.new(name); endfunction function void pre_execute(); agent1 = env.agent1; agent2 = env.agent2; endfunction virtual task body(); my_sequence_item item; agent1.my_task(); item = agent2.my_function(); // ... do something with item ... finish_item(item); endtask endclass ``` 在上面的代码中,我们首先为每个agent实例化了一个句柄(即`agent1`和`agent2`)。在`pre_execute()`函数中,我们使用`env`句柄来访问UVM环境中实例化的agent。然后,在`body()`任务中,我们使用这些句柄来调用agent中的任务和函数(即`my_task()`和`my_function()`)。注意,在virtual sequence中,我们必须使用`finish_item()`函数来完成当前的sequence item。 请注意,virtual sequence不是UVM的标准组件,而是一种用户自定义的sequence实现方式。因此,在使用virtual sequence时,需要手动调用`run_test()`函数来启动测试,并手动创建一个test component来管理测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值