5.3vseq&vsqr-vseq的构建与启动

1.vseq的构建

1.1 vseq_base

(1) 由于所有的virtual sequence都需要访问定义于virtual sequencer中的sub-sequencer句柄. 所以virtual sequence需要使用`uvm_declare_p_sequencer宏.

(2) 由于每一个virtual sequence都需要执行这些步骤,所以推荐将这部分代码放到virtual sequence base class内.

(3) vseq_base示例

1.2 基于vseq_base创建vseq

 

1.3 vseq示例1-vseq内使用uvm_do宏启动其他seq

1.4 vseq示例2-vseq内使用start task启动其他seq

(1) 用start启动sequence的优势是可以向其中传递一些值;

 

 

 

1.5 vseq示例3-vseq内启动其他 vseq

2.vseq的启动

(1) 一般来讲, virtual sequence会使用start方法启动.

`uvm_do_on宏不能在test组建中直接调用,只能在派生的sequence中调用. `uvm_do_on宏所需的方法create_item(), start_item()和finish_item()都不能在uvm_test以及其他UVM component中调用.

注:使用start方法启动vseq时,可以为start方法传递null参数,或者传递vsqr;

(2) 常见的好方法是创建一个test_base类,在其中声明一些公用的方法,然后在其派生的test类中启动sequence.

在派生的类中定义了run_phase, 在run_phase中创建一个virtual sequencer,并调用raise_objection()和drop_objection()方法,在其中使用start()方法开启virtual sequence.

(3) 示例

 

 

 

 

 

posted on 2021-10-17 12:08  知北游。。  阅读(730)  评论(0编辑  收藏  举报

导航