注册 登录
ET创芯网澳门十大网上博彩公司(EETOP) 返回首页

路科验证的个人空间 http://blog.eetop.cn/?1561828 [收藏] [复制] [分享] [RSS]

日志

SV及UVM高级话题篇之四:OVM到UVM的移植(续3)

已有 333 次阅读2018-6-29 19:04 |个人分类:验证系统思想|系统分类:芯片设计

sequencer的变化

类似地,`ovm_sequencer_utils宏也已经废止,需要将其替换为`ovm_component_utils,调整前后的代码如下:

调整前:

class my_sequencer extends ovm_sequencer #(my_seq_item);

  `ovm_sequencer_utils(my_sequencer)

  `ovm_update_sequence_lib_and_item(my_seq_item)

调整后:

class my_sequencer extends ovm_sequencer #(my_seq_item);

  `ovm_component_utils(my_sequencer)


环境的变化

在上面提到了,跟sequencer相关的'count'和'default_sequence'用法也已经废止,这一点用户需要额外注意。

调整前:

class my_env extends ovm_env;

  set_config_int("*.i_sequencer", "count", 0);

  set_config_string("*.i_sequencer","default_sequence","my_seq");

调整后:

class my_env extends ovm_env;


test执行root sequence的变化

既然已经移除了'count'和'defualt_sequence'用法,用户则不再需要关心默认的序列如何指定。而伴随着这一特性的改变,在顶层test中,我们不再依赖于default_sequence来指定root sequence,而可以通过sequence自带的方法start来实现sequence挂载到sequencer上。

调整前:

class tc_test_seq extends my_test_base_seq;

...


class my_test extends ovm_test;

  virtual function void build();

    super.build();

    set_config_string("top_env.i_top_sequencer",

      "default_sequence", "tc_test_seq");


调整后:

class tc_test_seq extends my_test_base_seq;

...

class my_test extends ovm_test;

  tc_test_seq test_seq;

  virtual task run();

  super.run();

    test_seq = tc_test_seq::type_id::create("test_seq");

    test_seq.start(top_env.i_top_sequencer);


在介绍完了OVM到UVM的迁移之后,如果读者现在有完整的OVM环境且有需要向UVM迁移的计划,那么可以考虑通过上面详细的步骤和建议完成迁移。如果受限制与项目的人力、节点和技术等多个因素,无法完成短时间的迁移,但又不能避免OVM与UVM之间的混合仿真,那么请关注我们下一节《OVM与UVM的混合仿真》。


谢谢你对路科验证的关注,也欢迎你分享和转发真正的技术价值,你的支持是我们保持前行的动力。




评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|ET创芯网 ( 京ICP备:10050787号 京公网安备:110105001212 )

GMT+8, 2019-4-22 01:06 , Processed in 0.026585 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部
博评网