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

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

日志

OVM Cookbook学习记录(12)

已有 2161 次阅读| 2010-7-8 11:41 |个人分类:SystemVerilog

世界杯精彩,占用了我一定时间。不过计划总要按部就班贯彻执行。Cookbook还是要继续学习!

这段时间,将Cookbook全部看完了,不过,源代码分析没有完成,还需要花一点时间。特别是第9章,书中讲述内容很少,但是源代码的复杂度确实最高。需要考验我的耐心和认真程度。

        先谈谈08-06(很奇怪为什么没有08-07,直接从08-06跳到08-08,后面再讲08-08),这个例子的架构如下:

        左边看,标准的sequencer结构,使用了层次化的sequence方式,在hfpb_seq_rand_rw中调用了另外两个sequence, 分别是hfpb_seq_read_operand和hfpb_write_operand.  而在hfpb_seq_read_operand中,又调用了hfpb_seq_read_word;在hfpb_seq_write_operand中,又调用了hfpb_seq_write_word. 一共是3层调用。
       这种层次化调用在TLM设计中显得非常清晰简洁,将复杂的问题大而化小。有一个很重要的技术被使用到,那就是lock()/unlock(), 当需要连续发送一批sequence的时候,需要采用这个技术。让我联想到USB协议中,一般HOST需要发送两个packet. 这时候就需要使用lock()/unlock()来完成。
      第二个收获是driver的设计,将sequence_item_pull_port转化成基于ovm_transaction的ovm_transport_port/ovm_slave_port.  这里利用了ovm_seq_item的父类是ovm_transaction, 他们之间有共同的数据结构。所以hfpb_seq_item中通过函数实现了hfpb_seq_item和hfpb_transaction的数据交换功能,分别是函数copy_tr()和clone_tr().
      最后就是标准的sequencer simulation. 通过config,做了250此random的memory读写。

点赞

发表评论 评论 (1 个评论)

回复 leoleo103 2012-11-19 11:06
你好,我刚开始学习ovm,想知道ovm cookbook书上的源代码在什么地方有下载。书上说是在www.mentor.com上下,范围太广了,我并没有找到。

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 1

    好友
  • 1

    获赞
  • 14

    评论
  • 747

    访问数
关闭

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

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

GMT+8, 2024-4-25 20:59 , Processed in 0.020650 second(s), 8 queries , Gzip On, Redis On.

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