基于Cadence CHI和IVD VIP的多核SOC 系统数据一致性验证
基于Cadence CHI和IVD VIP的多核SOC
系统数据一致性验证
范君健,晁张虎,杨庆娜,刘 琪,朱 红,单建旗
(1. 天津飞腾信息技术有限公司,天津 ;2 Cadence,广东 深圳)
摘 要:在多核的SOC系统中,不同的处理器核对内存空间和设备空间进行着大量的数据读写操作,维护Cache一致性面临严峻挑战。集中于控制流方面的验证环境搭建已非常复杂,而包含数据正确性检查的验证由于控制流程复杂、数据量大等问题而更加困难。针对这一问题,本文基于Cadence公司提供CHI VIP、AXI VIP和IVD VIP,实现多核环境下的系统级数据一致性验证。本文搭建的验证平台中采用CHI VIP通过笔者开发的CHI协议转换桥发出访存请求,使用AXI VIP收集到达主存的数据,由IVD VIP对CHI端口的请求数据与AXI端口的访存数据进行实时分析比对,实现在较高抽象层次上的激励产生和响应检查。该验证平台能够在子系统级及系统级进行数据一致性验证,具有验证环境搭建快速和功能点覆盖完备的优点。
关键词:cache一致性;子系统级验证;VIP;模块化验证
中图分类号: TN409 文献标识码:A
中文引文格式:
英文引文格式:
Multi-core SoC based on Cadence CHI and IVD VIP
system data coherence verification
Fan Junjian,Chao Zhanghu,Yang Qingna,Liu Qi,Zhu Hong,Shan Jianqi
(1. Tianjin Phytium Technology Co., Ltd., Tianjin , China; 2. Cadence, Shenzhen , China)
Abstract: In a multi-core SoC system, different processor cores perform a large amount of data read and write operations on memory space and device space. maintaining Cache coherence is facing severe challenges. The verification environment focused on the control flow has been very complicated, and the verification including data correctness check is more difficult due to the complicated control process and large amount of data. In response to this problem, this paper is based on Cadence p CHI VIP, AXI VIP and IVD VIP to achieve system-level data coherence verification in a multi-core environment. In this paper, CHI VIP is used to issue a memory access request through the CHI protocol conversion bridge developed by the author, and AXI VIP is used to collect data that arrives in the main memory, real-time analysis and comparison of the request data of the CHI port and the access data of the AXI port by the IVD VIP. realize stimulus generation and response inspection at a higher level of abstraction. The verification platform can perform data consistency verification at the subsystem level and system level, and has the advantages of rapid verification environment construction and complete coverage of function points.
Keywords: cache coherence;Subsystem verification;VIP;Modular verification
0. 引言
Cache(高速缓冲存储器)是存在于处理器核与主存之间的存储器,在多核的处理器系统当中,当多个Cache包含同一块数据时,如果其中任意一个Cache修改了该数据块而没有通知其他的Cache,就会产生数据不一致的情况[1]。Cache一致性就是维护多个Cache数据的一致性,Cache一致性协议是多核处理器系统的核心,因此Cache一致性的验证是一项非常重要的工作。
现阶段,Cache一致性的验证一般采用软件模拟的形式,但随着协议复杂性的增加,验证中需要覆盖的状态与路径成几何倍数增加。同时,访存数据在经过片上互联网络写入主存时要经过较长的路径,需要对流经网络的数据正确性进行检查,验证环境的复杂程度越来越高。在验证环境搭建与验证覆盖率收集方面,验证人员往往需要投入大量的精力,导致Cache一致性验证周期耗时较长。
1. 验证环境结构
为缩短验证周期,提高验证的覆盖率,本文基于Cadence公司提供的VIP(Verification IP,验证IP)搭建多核SOC系统数据一致性验证环境,采用UVM[2](Universal Verification Methodology,通用验证方法学)方式实现,具有良好的可重用性,便于其他项目的继承与扩展。
由于所使用的VIP为标准CHI协议接口,而在待验证SOC芯片中采用一套自主设计的片上互联协议,因此在验证环境搭建时需要加入一个协议转换桥,以实现CHI协议与自定义互联协议的相互转换。验证系统整体结构如图1所示。
图1 NOC验证系统结构
CHI VIP可以实现对CHI协议中RN(Request Node)节点、HN(Home Node)节点以及SN(Slave Node)节点的验证,如图1中,DUT(Design Under Test,待验证设计)为NOC(Network On Chip,片上互联网络),作为一致性协议中的HN节点,验证环境中使用CHI VIP配置生成Active RN节点向DUT发送请求激励报文,模拟处理器芯片中的L2C。DUT向下连接MCU(Memory Control Unit,内存控制器)的接口为标准AXI4接口,连接作为Passive Slave的AXI VIP以收集写入主存的具体数据。IVD VIP将CHI VIP中PassiveHn收集的L2C(VIP Active RN节点)的CHI报文作为DUT的输入内容,将AXI VIP收集的访存读写数据作为DUT的输出内容,对输入输出相关联的报文进行比对,以验证数据在经过DUT后的正确性。同时,IVD对DUT在一致性维护中的Snoop行为进行监测,进一步确保系统的数据一致性。
多核SOC系统的片上互联网络具备良好的扩展能力,以满足多样化的功能需求。在分层验证过程中,经常需要围绕片上互联网络构建各种规模子系统验证环境,以加快验证进度。因此,在搭建验证环境时,同样需要考虑良好的可扩展与可配置性,可以根据不同的验证规模配置为不同的RN/HN节点数,并且可以与其他模块的验证环境进行整合。使用VIP搭建的验证环境具有良好的可配置性,可以根据实际需求调整验证环境行为,以满足自定义互联协议的验证需求。
2. 验证实施流程
根据上述验证系统的整体结构,在搭建验证环境前首先开发CHI协议转换桥,以实现VIP与具体DUT的兼容;然后采用CHI VIP搭建CC(Cache Coherence)子系统验证环境,并参照具体设计规范调整VIP,确保VIP正确模拟RNF节点功能,处理一致性协议相关事务;最后接入AXI VIP与IVD VIP,配置地址映射关系与IVD比对策略,收集访存数据并进行数据一致性验证。
2.1 CHI协议转换桥
为确保CHI VIP能够应用于非CHI片上互联协议的验证环境中,需解决自定义互联协议报文与CHI报文的转换。为此,本文开发了CHI协议转换桥。
协议转换桥主要功能包括:各个通道的信用控制及相关信号的转换、标准CHI报文与自定义互联协议报文中各个域段的匹配、数据报文的拆解与合并、Snoop操作的事务ID重分配等。
CHI协议转换桥的开发使得VIP在非CHI协议片上互联网络的Cache一致性验证的使用成为可能,极大的提高了标准协议VIP对自定义协议设计的兼容性,对验证自定义互联网络有着很大帮助。
2.2 CC子系统验证
在进行系统级数据一致性验证前,首先对DUT的cache一致性事务流进行验证,确保CHI协议转换桥和DUT对协议的处理流程正确。搭建CC子系统验证环境时需重点考虑验证环境的可配置性,以应对各种规模的验证需求。CHI VIP中ActiveRn与PassiveHn均采用数组的形式实现,通过宏定义控制环境中例化的RN/HN节点个数。在接口连接方面,由于不同设计规模存在不同的硬件层次结构,VIP与DUT连接的接口通过Python脚本生成,减少人为错误的引入,加快验证环境搭建速度。
CC子系统验证环境结构如图2所示,为更加充分的验证全芯片真实的访存操作场景,验证环境中除使用CHI VIP模拟L2C(RN-F节点)向DUT发送一致性请求外,还加入一个成熟的验证组件模拟I/O设备(RN-I节点)的DMA访存操作。
图2 CC子系统验证环境结构
在UVM验证环境搭建过程中,如果希望将多个不同部件的环境进行融合,以实现更高层次的子系统级验证,需要对各个环境中的ENV、TEST顶层甚至激励的编写进行调整。在多个环境的融合过程中往往会引入额外的问题,延长调试时间,不利于各个验证环境的分离及模块化组合。鉴于UVM验证环境中并未限制uvm_top下的叶子节点个数,可将VIP验证环境的TEST顶层与DMA验证环境的TEST顶层均通过factory机制指定其父节点为uvm_top,以此来减少对验证环境的不必要调整,将各模块已有环境直接组合为子系统验证环境,如图3所示。
图3 CC子系统验证环境双顶层结构
建立双顶层结构后,为保证各模块原有验证环境可继续独立运行,通过添加宏开关DMA_AXI_RUN来控制各环境是独立运行抑或是在子系统环境中运行。通过添加+UVM_DMA_TESTNAME来指定DMA验证环境需要运行的测试激励。
验证环境搭建完成后,按照验证计划以覆盖率为驱动逐步推进验证工作。为尽快达成验证覆盖率目标,这里采用VIP提供的CHI协议覆盖率模型,其良好的完备性对于整个验证工作的推进有着重要的指导作用,验证的具体实施流程如图4所示。
图4 CC子系统验证流程图
验证环境调试正常后,验证工作将主要集中于测试激励的开发。由于验证规模的不同,测试激励的编写也不尽相同。特别是随机压力测试激励,均采用参数化的形式进行,在配置为不同的RN/HN节点时不需要修改测试激励。激励开发采用基本测试激励、随机压力测试激励、定向测试激励的思路进行。其中基本测试激励包括各类型请求的生成及合法Cache状态构造;随机压力测试包括请求类型随机、地址随机等;定向测试激励在收集覆盖率之后进行,主要针对尚未覆盖的场景及特定功能进行定向测试。
2.3 IVD数据一致性验证
在CC子系统验证环境搭建完成并且基本测试激励通过后,着手搭建基于IVD VIP的子系统级数据一致性验证环境。IVD VIP在进行数据一致性比对时需要明确数据流的输入与输出方向,当ActiveRn的访存数据经CHI VIP的PassiveHn接入IVD后,IVD VIP通过配置的映射方式监测访问MCU的AXI接口数据,判断输入数据与流经DUT的输出数据是否一致,并在仿真结束后检查所有读写请求是否均已完成数据比对,IVD可以监控多个输入输出端口,可以实现子系统的数据一致性检查。加入IVD后的验证环境结构如图5所示。
图5 子系统数据一致性验证环境结构
在基于IVD的验证环境搭建过程中,由于DUT中自主设计的片上互联协议与标准AMBA协议存在差异,因此需要对IVD的行为进行调整,使其与真实设计的行为相吻合。主要的调整包含以下几个方面:
(1)Snoop行为调整。DUT作为HN节点,向RN节点发送Snoop请求操作,但其具体行为与标准CHI协议存在差异,首先DUT不会进行Snoop的广播,只对存在副本的RN节点发送Snoop请求;其次,根据待验证SOC芯片中真实L2C与NOC的设计实现,某些Snoop操作行为与标准CHI协议不同。基于上述差异,需要使能IVD当中的SnoopFliter与SnoopToInitMaster等功能,调整IVD VIP对Snoop操作的检查,使其可以与DUT行为相匹配。
(2)Cache状态调整。首先在待验证SOC芯片当中不支持某些cache状态,在进行随机测试时需要对其进行屏蔽。另外由于上述Snoop操作修改带来的cache状态变换需要使用UVM中的callback函数对事务包进行修改。例如ReadShared在触发Snoop操作时,按照CHI协议应为SnpShared,当监听UC态时会将其修改为SC态,而在DUT的真实行为中ReadShared触发SnpCleanShared,其监听RN节点UC态时并不会修改为SC态,造成IVD报错。通过调用callback函数对上述场景进行判断,将监听的UC态修改为SC态以保证DUT的正常运行。
(3)添加地址映射。IVD在进行数据比对时默认通过事务ID判断输入数据及相对应的输出数据,然后对其正确性进行检查。但在DUT当中输入的CHI报文与输出的AXI报文两者的ID之间并无关系,而两者的地址信息存在确定规则的映射关系,因此需要调用IVD当中地址映射函数,明确输入地址与输出地址的关系,以便工具可以正确匹配输入与输出数据包,完成数据一致性检查。
在进行数据一致性验证中,由于加入了真实MCU的RTL代码,其在进行正常数据读写前需要较长时间的初始化。为缩短每次仿真运行时间,使用仿真工具的save/restart[3]功能,在初始化结束后保存仿真状态,恢复该状态后可加载新的测试激励继续进行一致性相关功能点验证。这样即可省略后续测试时漫长的初始化过程极大地缩短验证时间,提高验证效率。其原理如图6所示。在UVM验证环境中,由于不同phase的调动时间不同,可以在configure_phase完成初始化后保存仿真状态,之后通过更换不同的测试激励实现仿真的再次启动。
(a) Save/Restart实施原理
(b)UVM环境中实现save/Restart功能
图6 采用Save/Restart实现仿真保存与再次运行
3. 验证成果
采用CHI与IVD VIP搭建验证环境,相较于完全由验证人员自己开发的BFM(Bus function model)及验证环境,有以下几个突出的优点:
(1)可以极大的缩短验证环境的开发时间,提升验证效率。一个验证环境若从零开始搭建到功能逐步完善,往往需要数月的时间,而在采用VIP后,时间大幅缩短,使得工程师能够专注于DUT<span style="font-fa