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

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

日志

当我们谈论SystemVerilog-2012的时候在谈什么?(下)

已有 2047 次阅读| 2016-7-9 17:50 |个人分类:验证系统思想

III.                 UVM中的接口类

本文中所讨论的,所有Systemverilog-2012标准引入的新特性,都是用于编写验证环境的。使用这些新特性,可以有效的减少代码量,并且提高验证环境的稳定性。或许,多重继承(multipleinheritance)是这些新特性里最吸引人们的,它可以增强验证平台的功能,提高效率。这一章,将重点讨论使用使用多重继承的接口类,是如何在UVM中使用的。


同一验证方法学UVM(Universal Verification Methodology)依靠参数化的接口,在继承验证IP和环境的时候,提供as muchcompile-time type safety as possible。最常用的参数化,是指定通过接口传递的传输数据的类型。例如sequence/sequencer/ driver的参数化。


驱动器(Driver)和序列发生器(Sequencer)是通过uvm_seq_item_port接口进行通信。                             


需要注意的是,我们扩展uvm_driver类,使之包含用户定义的功能,用来准确的指出driver,是如何通过调用seq_item_port.get_next_item()接收到的sequence item,并且将其转化为pin-level行为传输给DUT的。通常并不需要扩展uvm_sequencer,因为它默认的功能足以满足绝大多数情况的应用。


sequence本身通过start_item()/finish_item()(或者get_response())函数同driver进行通信,每一个函数都依赖于REQ参数的类型。当driver调用

Item返回的是参数化的REQ。这样允许driver的写操作根据请求传输的类型,就能知道应该调用哪个方法来获取信息。Item同时约束了driver,只能同sequence传输特定的item类型,或者将其扩展。当然,这也意味着,sequence只能产生一种指定类型的item。


由于driver可以处理一个扩展类的sequence item,所以可以创建两个sequence,其中一个用以产生扩展类的item,然后在sequencer上并行的运行,他们可以交错的传输给driver。


SystemVerilog-2012标准进入了接口类的概念,它可以在UVM sequence中非常灵活的使用。一个接口类可以包含很多纯虚方法,类型声明和参数声明,用来定义一组能够在多重类中共享的通用的行为,并且他们之间不需要相互派生。


Driver能够以interface类的方式被参数化,定义了如何从接收到的sequenceitem中解析有效信息。


需要注意的是,driver内部并没有变化。它任然使用get_addr()和get_data()方法来解析传输的地址和数据。这样允许我们使用一个sequence产生任意item类型,只要使用期望的interface实现。


同driver一样,sequence也可以使用接口类进行参数化。


如果产生的item的结构类似,则可以通过从相同的抽象类中扩展item1和item2,构建相同的基础pattern。这需要driver、sequencer和sequence使用相同的抽象基类进行参数化。


虽然使用interface类可以简化UVM中内部组件的实例化,但是这并不是必须的。特别是在TLM interface中创建相似功能的时候,使用interface类可以减少对连同wrapper一起使用的一些宏的需求。虽然到目前为止,并不是所有的仿真软件都支持interface类,而且它的改善也更多的是在审美上而不是功能上,但这并不是AccelleraVIP-TSC和UVM标准委员会现在开发的。


IV.              可综合的增强

在这边文章中,所有列出来的增强特性对于验证平台都是非常有用的。下面列出的增强特新是可以综合的,这意味着它们对硬件设计是有益处的。

  • 用户定义的net

  • 网表中的通用的、缺省类型链接

  • Var在for循环中的变量声明

  • 参数化的task和function

  • 参数化的用户自定义类型

  • 省略默认类型的参数化类型定义

  • `begin_keywords 1800-2012

需要注意的是,这里并没有为SystemVerilog设立官方的可综合语言子集。在本文攥写的时候,还没有商业的综合供应商支持上面列出的结构。所以,这些结构描述的电路的综合实现,只能在将来由综合供应商提供了。


V.           总结

硬件设计和验证语需要同硬件工程项目一同进化,而SystemVerilog-2012标准是一次重大的升级。31项针对设计和验证的新功能,连同对之前版本的大量修正,被加入了SystemVerilog-2012标准。

在这篇文章攥写的时候,SystemVerilog-2012标准已经完成了,IEEE投票和批准流程已经开始。最终SystemVerilog-2012标准的通过会在2012年晚些时候。很多EDA工具厂商已经开始在产品中加入这些新的功能。

SystemVerilog-2012中的加入的新功能,主要目的是为了让设计和验证更高效。这种高效,主要是通过为复杂设计提供建模方法,以及使用更加精确和简洁的验证代码实现的。其中一些增强还能够提高工具软件的运行效率。

IEEE 1800 SystemVerilog标准委员会非常注重保持对前代标准的兼容,对已有的SystemVerilog代码产生最小的影响。

IEEE 1800 SystemVerilog标准委员会前瞻性地将SystemVerilog同项目工程一起不断改进。尽管芯片的设计越来越复杂,SystemVerilog也依然有信心跟上芯片进化的步伐。


您可以在手机移动端同步关注订阅号“路科验证”。

如需转载请联系路科验证,并注明出处“路科验证”。


2012-DVCon_SystemVerilog-2012_paper.pdf(80.5 KB)


点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

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

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

GMT+8, 2024-4-19 01:03 , Processed in 0.015221 second(s), 11 queries , Gzip On, Redis On.

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