快速硬件调试系统的研究与设计

2022-03-24 09:09:29 | 浏览次数:

北方工业大学 江雪颖

电子科技大学 杨 洺 廖永波

北方工业大学 鞠家欣 王 宇 王彦虎

【摘要】本项目将研究系统芯片软硬件协同验证/测试平台,提出系统的验证策略,从系统性角度对测试系统芯片的方法和原理进行研究。

【关键词】系统芯片;DUT;软硬件协同

1.软/硬件侧DUT端口值交换原理

软件仿真是根据一定的算法规则进行的,当硬件加速器加入到这个仿真过程中后,硬件加速器必须遵循该规则才能保证整个仿真系统正常运行。这就需要对软硬件之间的同步机理进行研究。软硬件之间的同步过程基本遵循以下原则:仿真开始后,软件仿真器将探测软件侧的DUT模块的输入端口是否有值发生变化。如果变化,则调用VPI函数[1-2],将输入端口的值传输到硬件侧FPGA中的实际DUT逻辑电路的输入寄存器缓存,并触发DUT时钟进行输出逻辑值的计算。当FPGA侧完成计算后,软件仿真器通过OCB总线将输出值读从硬件侧读回来,并设置仿真器中DUT模块的相应输出驱动值,从而利用FPGA来完成相同的仿真计算任务。

2.单DUT同步研究

软件仿真器和硬件加速器的同步发生在DUT的输入端口有值发生变化之时。首先讨论用户的设计完全在软件仿真器中仿真的情况。此时软件仿真器将根据设计的结构和此时的输入端口值,来计算并得到该模块此时的输出端口值,并且在仿真器中更新相应的输出端口值,以驱动后续电路。该过程如图1所示。DUT的端口数据计算经过了3个过程,分别由图中的1、2、3标识。1过程为CPU将DUT的输入端口值从内存的数据结构中读出到CPU内部。2过程为CPU根据DUT的逻辑结构进行值的计算和传播,并得到该仿真时刻DUT的输出端口值。3过程为CPU将输出端口值写回到设计在内存中的数据结构的相应位置。

硬件加速平台的引入,实际是利用硬件加速器的并行逻辑计算能力来辅助CPU来完成逻辑值的计算工作。图2所示为硬件加速平台中数据的传播过程。该数据流向与图1所示极为相似,也分为3个过程。1过程为CPU将DUT的输出端口值从内存相应数据结构中读出,并通过OCB总线写入到FPGA中实际DUT模块逻辑的输入驱动寄存器。2过程为FPGA利用综合得到的DUT实际逻辑电路和输入端口值进行值的计算和传播,以得到当前仿真时刻DUT的输出端口值。3过程为CPU通过OCB总线将FPGA计算得到的DUT的输出端口值读出,并写入到设计的数据结构在内存中的相应位置。

3.SOC仿效系统验证

3.1 验证实例建立

硬件加速平台的主要工作是对用户设计编译和分析,根据用户的配置信息将设计分拆成软件侧部分和硬件侧部分。然后第三方的软件仿真器和FPGA就可以分别读取软硬件侧的设计,进行协同仿真。为了验证该平台是否可以正确的编译用户的设计和进行协同仿真,用一个带RAM仿真模型的OpenRisc1200的最小系统来作为验证实例[3-7]。

如图3所示,OpenRisc通过总线连接到一个双口RAM。这个双口RAM是一个RTL的仿真模型,通过Verilog的$readmem函数读取要执行的程序的机器码。仿真开始时,OpenRisc1200通过指令总线从RAM里面读取程序指令,进行相关计算。而计算中产生的临时数据和最终结果则通过数据总线写回到RAM仿真模型中。

本例将利用OpenRisc1200运行一个计算PI的程序,并且将计算结果通过数据总线写到RAM的仿真模型中。该RAM将探测到写入的数据,并且将数据通过Verilog的$display函数打印到软件仿真器的控制台上。

3.2 验证结果协同仿真

在配置的最后一步,编译程序将打印出所有的配置信息。用户可以在开始协同仿真之前对硬件加速平台的配置信息做一次检查。如果有错误的配置,将可以返回进行修改。如图4所示。

如果检查完毕确认没有问题,用户可以点击CoSim自动开始协同仿真。或者点击Finish输出参数文件和软硬件侧代码,而不自动调用综合和仿真程序。

在OpenRisc1200上运行了一个计算PI的程序,该程序被编译成机器码后[8-10],在仿真0时刻,通过Verilog的$readmem函数在软件侧被RAM仿真模型读取。仿真开时后,OpenRisc1200从RAM中读取指令,进行相应的计算和数据的暂存操作。计算结束后,OpenRisc1200将计算得到的PI的每一位,通过数据总线写入到RAM仿真模型的指定位置。RAM仿真模型将探测这些位置的总线写操作,并通过Verilog的$display函数将写入的值打印到软件仿真器的控制台上。可以通过观测写入到RAM这些位置的值是否正确,来验证硬件加速平台的可靠性。设定计算结果精确到PI小数点后10位后停止仿真。仿真结果如图5所示。

如图5所示,PI的各个位全部由Open-Risc1200正确的计算出来,可以说明硬件加速平台的编译软件正确的将OpenRisc1200和RAM仿真模型进行了划分,而软件仿真器和FPGA的同步机制也保证了协同仿真的正确进行,即FPGA中的OpenRisc1200对软件仿真器中的RAM仿真模型进行了正确的读写,而FPGA中的总线控制器和软件仿真器中RAM的总线接口电路也完全同步正确。

参考文献

[1]Saifhashemi,A.;Pedram,H.Verilog HDL,powered by PLI:a suitable framework for describing and modeling asynchronous circuits at all levels of abstraction.2003:330-333.

[2]VPI User Guide and Reference.Cadence Design Systems.March 2003.

[3]倪继利,陈曦,李挥.CPU源代码分析与芯片设计及Linux移植[M].电子工业出版社,2007年4月.

[4]Damjan L.OpenRISC 1200 IP Core Specification.OpenCores Group.2001.

[5]WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores.OpenCores Group.2002.

[6]OpenRISC 30 Architecture Manual.OpenCores Group.2006.

[7]Basic Custom OpenRISC System Hardware Tutorial.Altera Corporation.2003.

[8]Executable and Linkable Format(ELF)Specification.Tool Interface Standards.1999.

[9]Richard M.S.Using the GNU Compiler Collection.USA,GNU Press.2003.

[10]John R.L.Linkers & Loaders.USA.Morgan Kaufmann Publishers.2000.

注:本文得到“北京市大学生科学研究与创业行动计划”项目资助,在此表示感谢!

推荐访问: 调试 快速 硬件 研究 设计