UVM学习笔记(三)

电子说

1.2w人已加入

描述

第2章一个简单的UVM验证平台

2.4 UVM的终极大作:sequence

2.4.1 在验证平台中加入sequencer

sequence机制作用:用于产生激励。其分为两部分,一是sequence,二是sequencer。

在定义driver时指明此driver要驱动的transaction的类型,这样定义的好处是可以直接使用uvm_driver中的某些 预先定义好的成员变量 ,如uvm_driver中有成员变量 req ,它的类型就是传递给uvm_driver的参数。由此带来的变化如下:(不需要定义中间变量tr了)

sequence

2.4.2 sequence机制

三者关系:

sequence

每一个sequence都有一个body任务,当一个sequence启动之后,会自动执行body中的代码。body中uvm_do这个宏的作用如下:

  1. 创建一个my_transaction的实例m_trans;
  2. 将其随机化;
  3. 最终将其送给sequencer。

如果不使用uvm_do宏,也可以直接使用start_item与finish_item的方式产生transaction。

sequencer负责协调sequence和driver的请求

  • sequencer和driver之间
    • 将两者连接:drv.seq_item_port.connect(sqr.seq_item_export);
    • 在driver中通过get_next_item任务来得到一个新的req,并且驱动它,驱动完成后调用item_done通知sequencer(完成握手)。
    • sequence
  • sequencer和sequence之间:
    • sequence中的uvm_do宏发送transaction后,会一直等待,直到driver返回item_done信号。
    • 在某个component(如my_sequencer、 my_env)的main_phase中启动这个sequence,即可让sequence向sequencer发送transaction。
    • sequence
    • sequence

get_next_item和try_next_item的比较

  • get_next_item是阻塞的,它会一直等到有新的transaction才会返回;
  • try_next_item则是非阻塞的,它尝试着询问sequencer是否有新的transaction,如果有,则得到此transaction,否则就直接返回。其行为更加接近真实driver的行为

2.4.3 default_sequence的使用

引入default_sequence的原因:

  • 在某个component的build_phase阶段使用config_db与default sequence替代了在某个component的main_phase阶段利用seq.start(i_agt.sqr)启动sequence,将objection与sequence完全联系起来,增加了可移植性。

如何使用default_sequence:

  • 方法一:在某个component(如my_env)的build_phase中设置如下代码
  • sequence
  • 方法二:在top_tb中设置
  • sequence

使用default_sequence时 如何提起和撤销objection

  • 因为在sequencer在启动default_sequence时,uvm_sequence的内置变量starting_phase会自动执行如下内容:
  • sequence
  • 所以可以在sequence中使用借助starting_phase来提起和撤销objection。
  • sequence

2.5 建造测试用例

2.5.1 加入base_test

对my_env进一步封装,添加一些公司个性化内容,举例如下:

  • 在report_phase中根据UVM_ERROR的数量来打印不同的信息。它在main_phase结束之后执行。
  • 设置整个验证平台的超时退出时间
  • 通过config_db设置验证平台中某些参数的值

2.5.2 UVM中测试用例的启动

通过传递参数变量值启动的原因:

  • 保证后加的测试用例不影响已经建好的测试用例

如何使用:

  • 定义不同的base_test,让run_test()使用缺省模式,然后通过在命令中传递参数变量来实现一次编译执行多个用例,如下:
  • +UVM_TEST_NAME=my_case0
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分