摘 要: 随着片上网络(Network-on-Chip,NoC)技术的发展,片上网络系统的测试成为不可或缺的一部分。NoC系统的测试主要包括路由器、资源节点、互连线等的测试。传统的测试技术由于检测过程复杂、耗时、费用高、故障检测率低,不能满足高效测试的需求。针对NoC故障检测技术的需求,以Visual Studio为开发平台,采用重用资源节点与边界扫描相结合的技术,设计基于VC++的边界扫描测试系统。设计主要由计算机软件控制系统与数据转化模块组成,可完成对NoC系统的故障检测,该系统具有人机界面友好、功能全面、操作简便的优点,在NoC系统上进行测试,取得了预期效果。
关键词: 片上网络;故障检测;数据转换通信模块;VC++
0 引言
片上网络(Network-on-Chip,NoC)是一种全新的片上通信方法,其显著改善了传统总线式系统的性能,被认为是未来集成工艺发展的必然方向[1]。NoC通信结构包括资源节点、路由节点和通信链路;它们连成网状结构,并在通道中传递消息。但是随着NoC技术研究与应用,出现了许多新的问题:(1)随着NoC结构的日益复杂,交换电路与接口电路逐渐增多,电路面积也逐渐增大[2];(2)集成电路设计和工艺进入深亚微米级,最小线宽和连线间距大幅度缩小,相邻连线间的电容、电感耦合对高速信号的传输产生了巨大影响[3];(3)资源节点的种类日益增多,资源节点电路的故障呈现多样化,传统单一故障检测不再适用。
面对如此多可能存在的故障,对NoC系统的故障检测显得尤为重要。目前对资源节点的测试多以SRAM为主,对于其他类型的资源节点鲜有研究。
本文围绕NoC系统常用器件进行故障检测并进行软件设计,在只增加少量硬件电路的条件下,实现NoC系统的故障测试。
1 NoC系统测试模型
本设计中NoC系统采用2D-Mesh通信架构[4],每个路由器都进行封装具有边界扫描功能。资源节点主要包括:数字I/O口、组合电路、模拟放大电路、频率计、支持1149.1协议的D触发器和支持1500协议的软核。
为完成对NoC系统的控制与测试,设计包括数据转换通信模块与测试软件两部分,系统总体结构如图1所示。
(1)数据转换通信模块完成数据协议的转换工作,负责测试软件与NoC系统通信工作。
(2)测试软件完成对NoC系统的控制与检测功能,能够在主界面中显示每个资源节点的工作状态和故障信息,并且定位故障位置。
2 数据转换通信模块
本模块采用AT89S52作为主控制芯片。利用FT245RL实现与测试软件的USB通信。USB接口电路如图2所示。
AT89S52与NoC系统通信采用并行传输的方式,使用25针串口作为通信接口。由于供电电压不同,需在信号传输前进行电平转化。
发送时序如图3所示,当AT89S52有数据需要发送时,将SLROBE置0,并将数据送到DB端口,等待NoC系统反馈信号ACKING,当收到反馈信号后,将SLROBE置1,此时完成第一个数据发送,然后即可发送第二个数据,直至所有数据发送完成。经过测试,利用DB25端口可以将数据有效、高速地传输。
3 软件系统设计
本软件在Visual Studio 2012平台下开发,使用C++语言完成程序的编写。微软公司发布的VC软件是面向对象的程序设计语言,它可以非常容易地处理各种数据,而且还可以利用各种ActiveX控件十分方便地开发出基于计算机通信的程序[5]。
3.1测试软件模块
根据软件模块化设计思想,按功能将系统软件分为USB自动搜寻模块、测试矢量加载显示模块、数据分析模块、资源故障定位模块、路由器及其互连线故障显示模块、资源节点工作模块,如图4所示。
(1)人机交互界面
人机交互界面提供用户的基本操作、各子模块的控制功能。当某指定任务被选择后,与之相应的程序将被执行。从该界面,用户能够直观地查看所有模块的故障信息和正常工作下的数据结果。
(2)USB自动搜寻模块
USB自动搜寻模块的作用是自动搜寻插入的数据转换模块的硬件设备。如果该硬件设备正常插入,则可以进行下一步操作;若没有检测到该设备,则提示用户插入设备。当用户插入设备完成后,可在主界面的菜单栏“USB端口”项对该硬件端口进行打开或关闭操作。
(3)测试矢量加载显示模块
测试矢量是本系统进行测试的关键数据,当程序执行时,可以自动加载测试矢量,并可以在用户选择测试操作后在测试矢量窗口显示测试矢量信息。若用户对测试矢量进行了修改,则可以直接在菜单栏下的“测试矢量”进行加载,然后测试,无需重新启动程序。
(4)数据分析模块
数据分析模块主要完成数据的接收和发送操作,并检测收到的数据是否符合规范,若数据不符合则直接丢弃;如果数据正确则进行下一步处理。首先根据数据类型调用不同的处理子程序;其次得到资源节点编号,然后根据资源节点编号调用不同的处理算法;最后将数据提交给下一模块。
(5)资源故障定位模块、路由器及其互连线故障显示模块
故障定位模块主要根据数据分析模块处理后的数据确定资源节点、路由器、路由器互连线是否存在故障,如果无故障则提示测试成功,若存在故障则提示测试失败,并在窗口相应位置显示错误器件。
路由器故障模块用来根据NoC系统内部的自测方式完成路由器测试后的结果显示数据信息,该模块可以显示故障路由标号、测试时间等信息。
路由器互连线故障模块用来显示对路由器互连线进行边界扫描后的测试结果,可以显示故障路由器标号和故障链路标号信息。
(6)资源节点工作模块
在主界面中共有8个资源节点的操作界面,供用户在正常模式下对资源节点进行操作,并将资源节点结果显示在界面中。
3.2 测试软件工作流程
整个测试软件系统的工作流程如图5所示。
最终的软件界面设计如图6所示。
软件安装完毕后,用户就可在测试程序主界面进行相应的功能选择。在测试模式下,测试程序运行过程中,当测试结果为正常,弹出“Test ok”提示对话框,若测试失败则弹出“Test Sorry”对话框,并显示故障信息。当用户选择正常工作模式时,能够将测试软件数据发送到NoC系统,并显示结果。
4 测试结果与数据
当用户选择正常工作模式时,能够将测试软件数据发送到NoC系统,并显示结果。经测试,本设计可测试的NoC系统故障如表1所示。系统能够检测的故障包括了基本电路中的常见故障。
5 结论
本文主要研究基于边界扫描的NoC系统的软件设计与实现。系统采用模块化设计思想,对软件进行了模块设计,使它具有很强的通用性和可扩展性,系统操作简便,测试项目齐全。
本测试程序在实验室自主研发的NoC系统进行测试取得了良好的效果,能够正确检测到系统中存在的故障,覆盖率达到100%。实验表明,该软件具有较高的准确性和实用价值。
参考文献
[1] BENINI L. Networks on chips: a new SoC paradigm[J]. IEEE Computer, 2002,36(1):70-78.
[2] 王强,沙斐.平行双线串扰的分析[J].电子测量与仪器学报,2008,22(6):75-77.
[3] 刘毅,杨银堂.一种面向片上网络的多时钟路由器设计[J].西安电子科技大学学报(自然科学版),2011,38(2):146-150.
[4] 许川佩,孙义军,吴玉龙.基于ARM和FPGA的资源网络接口驱动设计与实现[J].微型机与应用,2013,32(13):83-86.
[5] HORTON L.Visual_C++2010入门经典[M].苏正泉,李文娟,译.北京:清华大学出版社,2010.