原标题:验证平台自动化篇之二:UVM Framework
一个UVM使用者,从新手到精通大致会经历三年的时间,而在经过这三年之后,verifier会有倦怠期。除了不可避免地在80%以上工作处于重复性劳动或者称之为没有创新的劳动以外,剩下的那一点可以用来成长的时间也往往被日常的项目事务所切分地很凌乱。在跟这些有经验的UVM验证工程师沟通的过程中,我们会了解到他们被哪些大致的事情所困扰:
对于新的设计,需要构建新的验证平台,这往往需要两周甚至更多的时间。其实,环境的调试还要消耗很多的精力,这对于新人来讲尤甚。
对于原有的验证环境,如果设计更新了,譬如接口的更新,需要在原有环境的基础上进行扩展和复用原有的sequence/test。
如果项目组中有新人,他们还需要帮助他们快速搭建环境。对于一个快公司(fast company),人员的快速流动下,有经验的工程师在培养新人上面就会面临越来越多的传帮带任务。
在验证的后期,需要对验证环境代码进行回顾检视(review),看代码的风格、文档还有测试场景。
上面的这些困惑,确实耗时耗力,而工程师们在有限的资源下,又没有更好的办法。但如果这个时候,有一款合适的验证平台自动化工具可以帮助工程师们完成这些任务,想必工程师的日常业务开销比重会很快地从80%降下来:
根据设计的接口、数据协议和验证需求来给出一个快速构建好的验证环境和连接
有自动生成好的激励完成数据传输
有更高层的transaction分析可以从仿真器中观察
生成好的平台可以在项目之间和模块到系统级别完成复用
提供覆盖率的管理
同时支持随机验证和直接验证
拥有这样一款验证平台自动化工具无疑是很具有吸引力的,而MentorGraphics公司推出的UVM Framework无疑是这样一款“走心”的工具。这款工具的背景,或者说是如果使用者想产生最大验证产出的前提是,verifier所在的公司是它们的客户,不但是simulator QuestaSim的客户,同时也是他们的验证VIP(QVIP)的用户。MentorGraphics提供覆盖全面的VIP系列,譬如常见的AMBA系列、PCIe、USB、DDR等VIP,在公司拥有了这些VIP的前提下,那要恭喜你,首先你们拥有了这张“门票”,可以进一步来使用UVM Framework这款工具。
读到这里,也许你们没有使用QuestaSim而是其它的仿真器,也许你们仅仅使用了QuestaSim而没有购买它家的商业VIP,但路桑介绍这款工具是为了能够帮助读者理清一款优秀的验证平台自动化工具需要解决什么最终目的、利用哪些现有的资源、而最终可行的工具开发计划是什么。在这个理念下,我们在下一节中会带领大家理解路桑开发的验证平台自动化工具Pangu(盘古)。
首先来看一看,MentorGraphics所需要解决的问题和拥有的资源有哪些:
UVM Framework工具需要帮助用户最快地建立一个验证平台,即完成标准的验证框架自动化。
这款工具需要整合已有的QVIP的配置工具,即QVIP configurator,该工具可以快速集成VIP的验证环境。
这款工具也可以在生成了结构化的环境之后,利用结构化的用户自定义激励和QVIP的标准激励,配合Infact工具,实现可移植复用的激励。
在上面的这些要求下,已有的资源是QVIP configurator工具和Infact工具。而新的工具UVM Framework则可以通过一致化的框架,来给出一个中心化的解决方案。
关于上面提到的QVIP configurator工具和Infact工具,用户可以登录到MentorGraphics官网,下载这两种工具的说明或者观看它们的入门视频。从下面的这张图中可以看到,这款工具最终可以有效地降低三个难度:
UVM的使用难度(从构建环境层面)
VIP的使用难度(从VIP的集成和应用层面)
激励的不完整性(从VIP常规意义下的不完整覆盖激励层面)
为了更好地理解这一款工具,或者说是完整的解决方案,即通过UVM Framwork、QVIP configuration来实现testbench自动化,同时利用Infact实现测试的可移植性和更充分的覆盖率,我们给出一个例子,来说明这个方案的。
例如有一个模块block_c,它需要验证环境提供一些输入和输出接口,同时伴随着其它组件的生成,这些需要自动生成的部分包括:
自定义接口:cpb_in、cpb_out和mem_out。
标准接口:axi4_master_0、axi_master_1、pcie_ep、axi4_slave和apb3_config_master。
自定义的predictor和scoreboard:blk_c_pred、cpb_sb、mem_sb、axi4_slave_sb和apb3_cfg_sb。
顶层的环境:集成自定义接口、标准接口、predictor和scoreboard。
顶层testbench:各个接口组件的interface同DUT的连接。
接下来看看UVM Framework这款工具是如何整合资源的。首先,它可以作为用户自定义接口(custom interface)的代码生成器,创建好上面的自定义接口组件。下面的例码是使用这款工具时分别用来创建接口组件的Python脚本文件和生成的文件:
接下来,需要利用Questa VIP Configurator工具来生成集成多个VIP组件的环境 。由于该工具支持GUI模式,用户可以很方便地在工具中选择需要的VIP类型、设定配置选项与DUT的连接关系,通过配置最终可以生成一个顶层环境为qvip_agents的环境,这个环境将稍微作为子环境被集成到更上层的环境中。
在顶层环境的集成过程中,需要通过UVM Framework来创建、例化和集成predictor和scoreboad,同时也包括集成之前的自定义接口组件和标准接口组件子环境,该集成的脚本代码如下:
在顶层环境和各个组件都通过脚本完成之后,我们还需要完成顶层测试平台的物理接口连接,而这一步骤也可以通过UVM Framework实现。
所以,上面的例码演示了Questa的两个工具UVM Framework和QVIP Configurator在互相配合的基础上,最终实现了快速创建一个验证环境的目标。而生成的testbench结构采用的还是“双TB”的方式,将硬件信号驱动层hdl_top与软件信号驱动层hvl_top剥离开,实现了将来跨平台(simulator和emulator)运行的可能性。关于跨平台运行的TB建立方式,我们将会在后面的一章《跨平台移植复用》中详细介绍。
另外,UVM Framework还能够配置Questa inFact工具实现可跨平台复用的激励和更容易快速收敛的激励形式。更多关于跨平台激励复用的介绍,我们会在后面的《跨平台移植复用》中解释其理念。在这一节中,我们需要清楚的是,正是由于Questa VIP的较为统一的sequence/item类,再配合inFact工具,这使得帮助用户可以更快地创建系统级的激励、更快达到接口协议的覆盖率,而不再受限制于使用者无法掌握VIP的使用、测试代码在检视起来可读性差(无法在系统级去理解)、无法更方便地协调控制各个接口以及无法很好地去移植,譬如从底层移植到系统层,或者从simulator移植到emulator等。
最后,我们再来回顾一下MentorGraphics提出的验证平台自动化的解决方案:
通过QVIP Configurator实现标准化商业VIP的快速集成。
通过UVM Framework实现自定义组件、顶层环境和测试平台的集成连接。
通过inFact工具实现测试场景的系统级介入、实现更好地移植性、操作性和可读性。
可以锁,正是UVM Framework这样一款工具实现了环境自动化、以及测试平台和激励层面的移植性,这非常符合当下验证面临的挑战和需求。也正由于这样一款工具,将原有的工具资源整合起来,实现了效率的最大化。那么这样一款工具对于UVM的初级用户和高级用户分别带来了什么价值呢?
对于初级用户而言,它的优势在于:
节省创建验证平台的时间
降低由于经验不足致使验证平台不成熟而给项目带来的风险
对于整个验证团队和项目而言是可以得到迅速回报的选择
对于高级用户而言,它的优势在于:
节省创建验证平台的时间
实现更大的产出,即搭建平台的时间节省下来投入到创建测试场景中去
由于inFact工具的帮助使得接口协议的验证可以更充分、更快达到覆盖率
用户要掌握上面的工具,在实际使用中,只需要掌握基本的Python语法,更多的需要实现了解DUT的接口、数据流和环境的目标结构,在有了这些要求之后,就可以利用UVM Framework和Python脚本快速地生成环境了。所以,MentorGraphics给出的测试平台自动化解决方案是完整的,这具体表现在了:
实现各个组件、顶层环境的集成和连接(需要UVM Framework和QVIP Configurator)。
激励场景的快速创建(需要inFact工具)。
实现更好地调试环境和系统层的数据流检查(QuestaSim UVM-Aware Debug特性)
在掌握了上面提到的工具和验证平台自动化完整方案的设计理念之后,我们将在下一节就路桑团队自开发的Pangu进行介绍。希望读者可以在了解了Pangu之后,也能够结合自己所在公司的实际要求,在合适的时间点,开发出符合公司需要的这样一款工具,实现验证效率的提高。
谢谢你对路科验证的关注,也欢迎你分享和转发真正的技术价值,你的支持是我们保持前行的动力。返回搜狐,查看更多
责任编辑: