| |
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也依然有信心跟上芯片进化的步伐。
您可以在手机移动端同步关注订阅号“路科验证”。
如需转载请联系路科验证,并注明出处“路科验证”。