基于硬件仿真加速器的AFDX端系统测试方法研究
2020-06-11阎芳李翔徐双平刘正清
文/阎芳 李翔 徐双平 刘正清
(1.中国民航大学 天津市民用航空器适航与维修重点实验室 天津市 300300)
(2.中国民航大学 民航航空器适航审定技术重点实验室 天津市 300300 3.中国民航大学 适航学院 天津市 300300)
当前,面对SoC 芯片,硬件仿真及加速器的使用愈发广泛,其在大型复杂设计的验证工作中扮演着极为重要的角色。随着机载SoC 设计的复杂度越来越高,因此对机载SoC 的验证带来了巨大的挑战[1]。传统的机载SoC 功能验证是通过软件仿真工具(Simulator,如Questasim 或VCS 等)在计算机操作系统平台上来实现对以硬件描述语言(HDL)形式描述的机载SoC 设计的功能验证[2],借助纯软件仿真器的方法,其验证周期非常长。硬件仿真加速器是将以HDL形式描述的SoC设计转换成真实的硬件电路来进行功能验证,通过以真正的硬件电路运行来替代用仿真工具软件运行的方式实现测试向量仿真加速的需求。
近年来,SoC 设计采用硬件加速或仿真器方法已经成为解决SoC 验证难度的重要技术手段[3]。功能验证是SoC 设计中最为重要的部分, SoC 设计人员越来越重视功能验证的完善性,并不断探索新的验证方法和采用先进的功能验证手段[4]。伴随集成电路制造工艺技术的飞速发展,SoC 设计的规模和复杂度也急剧提升。因而要对SoC 设计在软件平台上进行完善的功能测试也变得越来越困难。通过人工编写的测试向量难以保证验证的完整性,并且通过运行仿真工具软件来对大量的测试向量进行功能验证的周期非常长。采用FPGA 原型验证方法来说[5],测试管脚数量有限,测试需求的增加导致测试管脚被不断添加,综合及布局布线过程反复迭代,验证周期不断变长。使用新的验证工具来更好的进行错误定位和修正后验证成为了保证机载SoC 按时完成验证任务的关键。
1 AFDX端系统简介
航空电子全双工交换式以太网(AFDX)以其高实时、高可靠和低延时的特点成为目前较先进的机载航空总线网络[6],目前已成功应用在国产大飞机C919 上。本文所要验证的设计是AFDX 端系统,AFDX 网络的组成部件包括航空专用物理层链路,端系统和交换机。其中端系统负责向网络中的其他组件发送或接收上层应用产生的数据包,包括了用户数据包和网络自身的管理数据包。AFDX端系统集成了PCIe2.0 接口、发送控制和接收模块、介质访问控制层(MAC)模块、rgmii 接口等模块。AFDX 端系统整体的架构如图1 所示,上层数据通过PCIe 总线与端系统的PCIe 接口模块进行数据传输,发送控制模块对数据帧进行排队,调度发送至MAC 模块中,经由RGMII 接口模块传输至物理层,同时物理层过来的数据帧经由MAC 模块处理后发送到接收控制模块,对数据帧进行顺序性检查后通过PCIe 接口模块发送至上层应用。
图1:AFDX 端系统整体框图
2 硬件仿真加速器
SoC 设计具有规模大、管脚多、内部信号多、逻辑关系复杂等特点,因此对SoC 的验证需要花费大量的时间。当今SoC 设计中近70%的时间是用来进行验证,而验证中最为重要的就是功能验证。特别是对于SoC,一般都内嵌有处理器,除了硬件验证带来的挑战外,软件验证也成为SoC 设计最为重要的一环。因而,SoC 设计者一方面希望能采取更好的方式来有效的加速大量用户测试向量的仿真过程;另一方面则期待能在昂贵的芯片流片过程之前,就能在芯片真实的工作环境中去运行芯片设计,进行最真实的功能模拟。硬件仿真器则正是在用户的这些需求之下所发展出来的一种芯片设计的功能验证手段。
Mentor Graphics 公司的veloce2 硬件仿真加速器是一款业界最快的硬件仿真器。其工作模式主要分为三种:在线仿真(In-Circuit Emulation,ICE)模式、虚拟实验室(VirtualLAB)模式和基于事务加速(Transaction Based Acceleration,TBX)模式。在ICE 模式下,以硬件电路形式存在的SoC 设计能够与真实的工作环境相连,从而实现了在真实的工作环境中运行SoC 设计,进行最真实的功能模拟。在VirtualLAB 模式下,可以使用Mentor Graphics 公司提供的VirtuaLAB 的虚拟设备,这些是外设的事务级模型,可以以更高的灵活性和与物理外设相同的准确性来验证设计。在TBX 模式下,将验证代码中可综合的部分与待测设计加载到硬件仿真加速器上运行,将不可综合的验证代码在服务器上运行,通过以真正的硬件电路运行来替代用仿真工具软件运行用户设计的方式,可以大大缩短测试向量仿真的时间。
3 TBX模式的仿真实现
图2:Veloce2 操作流程
图3:基于TBX 模式的测试平台
采用图2 的操作流程,将源代码或设计网表输入后,在分析(ANALYZE)和RTL 设计编译(RTLC)阶段,可同时对Verilog和SystemVerilog语言进行语法检查;在Veloce综合(VELSYN)阶段,按照设计的时钟等约束将输入设计转换为Veloce 原语库,执行芯片划分与全系统布局布线;生成逻辑板上单块芯片的网表;在Veloce芯片编译(VELCC)阶段,在每块芯片内进行布局布线;在Veloce全局调度(VELGS)阶段,对设计进行时序分析,产生硬件仿真器所需的时序信息文件;在软件状态重现模型生成(SSRMODELGEN)阶段,为每一块芯片生成状态可重现的数据;在可视化数据库生成(RIIGEN)阶段,结合前一阶段,为生成仿真波形产生相关数据。
在TBX 模式中,采用SystemVerilog 搭建的层次化测试平台中,将待测设计和测试平台分为HDL 侧顶层和HVL 侧顶层,HDL 侧顶层是将待测设计与低层次的监视器,响应器和可综合的驱动器加载到硬件仿真器中运行,HVL 侧是将高层次的生成器和检查器在主机PC 上运行。如图3 所示,根据不同的测试案例,生成器产生相应的测试激励,并发送至驱动器中,与传统的生成器不同的地方在于,跟时序相关的如时钟信号和复位信号等需要在驱动器中生成,生成器只负责数据生成。驱动器负责将数据包传输至待测设计和监视器中,监视器收集到的数据与待测数据输出的数据在检查器中的参考模型中进行对比,来完成功能验证。在待测设计的接口处插入SVA 断言,结合主机上回传的波形,有助于在测试中出错时能够快速的定位出错误位置,并且缩短了回归测试的时间。
通过在测试平台和DUT 之间建立事务级的通信来加速仿真环境,将HDL 侧和HVL 侧代码完成编译和综合后下载到硬件仿真器和主机上进行运行,成功提高了测试的速度。在TBX 模式下,使用纯软件仿真的测试案例用时5h,而使用硬件仿真加速器只需要运行1min 便可完成测试,相比传统的纯软件仿真提高了300 倍的测试效率。并在主机上可以任意添加需要查看的信号,增强了设计的可观测性,提高了功能验证的效率。
4 结束语
随着机载SoC 复杂度的不断增加,集成了大量IP 核和微处理器的SoC 设计给验证工作带来了挑战,如果借助传统的纯软件仿真器的方法,其验证周期会非常漫长。本文通过将AFDX 端系统SoC设计加载到硬件仿真加速器上运行,在HDL 侧以真正的硬件电路运行来替代用仿真工具软件运行SoC 设计的方式,可以大大提高测试向量的仿真速度,并且可以将主要模块信号波形上传到在HVL侧主机上,增强了测试的可观测性,可以快速的定位出错误的信号,提高了验证效率,对机载SoC 设计的功能验证提供了参考。