基于UVM的总线仲裁模块的验证研究

2021-07-20 07:58:52袁儒明陈迎春汪杨陈绍辉
电子制作 2021年13期
关键词:方法学测试用例控制权

袁儒明,陈迎春,汪杨,陈绍辉

(合肥工业大学,安徽合肥,230009)

0 引言

验证工作起始于设计规格书或者需求书。从架构的设计,行为级的系统建模到RTL建模的设计,甚至到最后的网表设计和后端的详细布局,验证工作贯穿在芯片设计的整个过程中[1]。因此,对硬件电路的仿真和验证就成为了影响项目进度的瓶颈,往往占整个IC开发周期70%左右的时间[2]。

传统的验证语言存在抽象建模能力不足,不易扩展和维护,缺少带约束的随机激励,仿真速度慢等缺点[3],已经远远不能满足当前验证的需要。UVM是Accellera公司于2011年推出的基于systemverilog语言的通用验证方法学,其主体来源为OVM,同时又采纳了Synopsys在VMM中的寄存器解决方案RAL[4]。UVM克服了OVM和VMM各自的缺点,成为目前最主流的验证方法学,指引了验证方法学的发展方向。

本文通过重用验证组件、继承验证场景和重用验证序列,实现了不同模块的功能验证,缩短了验证周期,提高了验证效率。

1 总线仲裁模块

为了解决多个主设备同时竞争总线的控制权的问题,应当采用总线仲裁部件,以某种方式选择一个主设备优先获得总线控制权。只有获得了总线控制权的设备,才能开始传送数据。

本模块采用主设备控制模式,对总线有控制权,信息的传送是由主设备启动的,仲裁框图如图1所示。

图1 总线仲裁框图

工作流程:

(1)主设备发送请求信号;

(2)若多个主设备同时需要使用总线,总线控制器根据仲裁逻辑、判优按一定的优先等级顺序确定可以使用总线的主设备;

(3)获得总线使用权的主设备开始传送数据。

2 UVM验证的重用性

■2.1 通用UVM平台

UVM提供了一系列标准类,如uvm_test、uvm_env、uvm_agent、uvm_driver、 uvm_monitor、uvm_sequence、uvm_sequencer等。UVM方法学将uvm_driver、uvm_monitor、 uvm_sequencer封装成uvm_agent类,这些可配置、可重用的组件(Universal Verification Component,UVC) 作为最重要的可重用组件能够加快验证的实施[5-6]。

在UVM验证平台中,以UVC为基础,把类uvm_driver、uvm_monitor封装成uvm_agent后,在uvm_env中只需要实例化uvm_agent,而不需要再直接实例化uvm_driver和uvm_monitor[7-8],UVM通用平台如图2所示。

图2 UVM通用平台

基于UVM的Factory机制,重载验证平台中的组件,避免重复开发,具有很强的灵活性[9-10]。

■2.2 验证组件的可重用性实现

当对总线仲裁模块和主设备模块进行整体模块的功能验证时,采用验证组件横向的重用性,重用总线仲裁模块的验证组件。横向的可重用性是指验证组件在不同的IP验证中的重用,不同的IP具有相同的总线接口。

本文首先对仲裁模块进行功能验证,并且采用了两个UVC组件。两个UVC组件的结构是一致的,不同的是,UVC1的主要功能是用来发送激励和接收总线仲裁模块输出的数据,UVC2的主要功能是用来模拟总线仲裁模块的功能,DUT模块为dut_dummy.v,即为总线仲裁模块。两个UVC组件的monitor模块收集数据并发送到bus_monitor模块中,bus_monitor把数据发送到scoreboard模块中进行比较。在scoreboard中会校对发送和接收的数据,以及总线的读写模式。总线仲裁模块验证环境如图3所示。

图3 总线仲裁模块的验证环境

本文主设备选用2个UART模块。当对总线仲裁模块和主设备模块进行整体模块的功能验证时,DUT模块为top.v模块,top.v模块包含总线仲裁模块和UART模块。因UART模块为内部数据模块,对IP的接口不产生影响,所以采用验证的横向可重用性,重用UVC1和UVC2组件,整体模块的验证组件重用方式如图4所示。其中,IP1是总线仲裁模块,IP2是top.v模块,在对IP2的验证中,验证环境重用了IP1的UVC1和UVC2组件,实现了验证组件的重用性。

图4 验证重用方式

本文在对整体模块进行功能验证时,重用了图3所示的验证环境uvm_env,同时通过继承uvm_base的方式创建了三个新的base_test类test_2m_4s、test_r8_w8_r4_w4和test_read_modify_write,这三个类分别在每个base_test类中创建新的测试用例,从而实现了验证场景的继承,验证场景的继承方式如图5所示。

图5 验证场景的继承

■2.3 验证序列的可重用性实现

可重用性不仅表现在验证组件的可重用性上,也体现在测试用例的可重用上。在UVM平台中,测试用例的重用方式以验证序列的重用为基础。一般通过三种方式重用验证序列:一是组合重用,二是继承重用,三是模块级测试用例到系统级的重用。组合重用是指通过不同的排列组合规划已有的序列生成新的序列。继承重用是指通过类的继承,重用先前类的属性和方法,继承已有的序列生成新的序列。本文主要使用组合重用和继承重用两种方法。在使用组合重用的过程中,对已经开发完成的读、写操作组合成读后写等新的操作。在使用继承重用的过程中,本文通过添加新的控制属性或者修改已有的约束条件,生成不同的测试用例,测试用例如表1所示。

表1 仲裁模块测试用例列表

3 验证结果分析

■3.1 总线仲裁模块的验证结果分析

总线仲裁模块主要验证多个主设备同时竞争总线的控制权,本文选用两个UART模块挂载到总线仲裁模块上。总线仲裁模块验证结果显示,master和slave选择0位的设备优先获得总线的控制权,读模式打印的结果是READ,写模式打印的结果是WRITE,读写的数据是data。如图6和图7所示,设备0获得优先的总线控制权,然后对数据进行读写,写出的数据比读出的数据少1。

图6 读模式

图7 写模式

■3.2 覆盖率结果分析

通过添加不同的激励,不断的提高验证的完备性,验证覆盖率结果如图8所示。其中,语句覆盖率达到100%,行覆盖率达到100%,翻转覆盖率达到100%。

图8 覆盖率报告

通过UVM报告可以看出,scoreboard对实际数据和预取数据进行对比,分别实现读写对比,scoreboard数据对比如图9所示。

图9 scoreboard数据对比

4 结束语

UVM方法学吸收主流方法学的优点,不仅功能强大,而且架构清晰,在可重用性等方面具有很大的优势,使得验证难度被有效分解,缩短了流程,加快了验证的实施。本文基于UVM环境,对验证组件进行重用,快速的完成了总线仲裁模块功能验证,以及整体模块的验证工作,验证效率得到大幅提升,在实际应用中具有很高的利用价值。

猜你喜欢
方法学测试用例控制权
全球首个氢燃料电池汽车碳减排方法学获批
上海节能(2023年5期)2023-05-29 09:13:40
大型学术著作《药理研究方法学》出版发行
神农科技集团正式接收广誉远控制权
今日农业(2021年19期)2022-01-12 06:16:44
基于SmartUnit的安全通信系统单元测试用例自动生成
FF陷控制权争夺漩涡
汽车观察(2018年10期)2018-11-06 07:05:06
基于混合遗传算法的回归测试用例集最小化研究
上市公司控制权争夺中独立董事的义务——以万华之争为例
追踪方法学在院前急救护理安全管理中的应用
基于依赖结构的测试用例优先级技术
人降钙素原定量检测方法学评价