usb_geek的个人空间 https://blog.eetop.cn/4ic [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

OVM Cookbook学习记录(1)

已有 2421 次阅读| 2010-4-29 08:21 |个人分类:SystemVerilog


        这几天,看来前4章,颇有收获,第四章还有一点没有看完,关于config database的部分。

前3章的example在OVM2.1版本下使用cadence IUS8.20-s20版本,完全可以编译运行,第3章第6个例子书本上没有讲解,不过看source code很容易理解。 

       第四章的第一个例子就编译错误。经过检查,发现cadence IUS不支持直接对queue进行赋值,必须使用push_front()调用,修改了 .\04_OVM_mechanics\utils\traverse.svh文件,将以下语句:
            q  = { node };
            lq = { 0 };
         修改成
            q.push_front( node );
           lq.push_front(0);
        重新编译运行, IUS下就可以正确抛出结果了。

         这几天的收获:
                1. 最关键的class就是ovm_component, 此class已经他的子孙class产生的instances都会自动记录一个hierarchy层次结构,内建一个最top的root, 就是ovm_top. 所有的ovm_component instance都可以追溯到ovm_top.

                2. TLM的思想使用了port和export的概念,利用了组合和继承的方式完成了put_port/put_export; get_port/get_export的连接,第三章的简单实例,对我帮助很大。

        本身,我对systemverilog还不是很熟悉,工作中还是用verilog,但是有过C++的一点点基础,学习他难度并不大,就是需要practise. 之前听说Vera是借鉴java语言,而system verilog是借鉴Vera, 所以systemverilog对OOP的语言扩充更多的是借鉴java. 比如关键字extend, 不能多重继承,使用Interface等,感觉和java几乎一样。不过我对java不是很熟悉,也不用为了学习systemverilog去研究java. 需要了解的是systemverilog中对object的创建,静态变量,和临时变量分别用什么方式区分。后续几天顺便研究一下。

        继续看第四章关于configuration database这部分,暂时没有完全理解他的好处。

点赞

评论 (0 个评论)

facelist

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

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 1

    好友
  • 1

    获赞
  • 14

    评论
  • 747

    访问数
关闭

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

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-29 03:28 , Processed in 0.102891 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部