资源描述:
《基于FPGA的软硬件协同仿真加速技术软硬件协同设计.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、基于FPGA的软硬件协同仿真加速技术软硬件协同设计 摘要:在系统设计中,硬件复杂电路设计的调试与仿真工作对于设计者来说十分困难。为了降低仿真复杂度,加快仿真速度,本文提出利用FPGA加速的思想,实现软硬件协同加速仿真。经过实验,相对于纯软件仿真,利用软硬件协同加速仿真技术,仿真速度提高近30倍,大大缩短了仿真时间。 关键词:现场可编程门阵列;软硬件协同仿真;仿真加速 FPGABasedAcceleratorforHardware/SoftwareCo-Simulation JIANGXia-lin,ZH
2、OUJian-yang,YANGYin-tao,LINXiao-li (DepartmentofElectronicEngineering,XiamenUniversity,Xiamen361005) Abstract:Insystemdeign,debuggingforthedesignbecomesincreasinglydifficultanddesignerswantmoreefficientandhigh-performanceverificationanddebuggingsolutions.Ast
3、hedesignbecomeslargerandmorecomplex,thepuresoftwaresimulationsuffersfromthespeedproblem.Inthispaper,wepresentanewdebuggingmethodology:FPGAbasedacceleratorforhardware/softwareco-simulation.Experimentalresultsshowthattheperformancegainisupto30timesoverthepuresoftw
4、aresimulation. Keywords:FPGA;Hardware/SoftwareCo-Simulation;SimulationSpeed-up 1前言 在数字集成电路的设计中,当设计工程师在用硬件描述语言(HDL:HardwareDescriptionLanguage)完成设计之后,需要通过仿真来检验设计是否满足预期的功能。在仿真中,设计工作师需要为设计项目建立一个测试平台,这个测试平台为设计项目提供尽可能完备的测试激励,并提供可供观测的输出响应,根据这些输出响应信息,设计工程师便可以判断设
5、计项目是否满足预期的功能。在进行仿真工程时,设计工程师一般先对各个功能模块进行仿真验证,全部通过后再对整个系统设计进行仿真。当设计工程师在仿真中发现错误,就需要进行仔细调试,找出错误发生的原因并加以修改。 随着系统设计的复杂性不断增加,当设计集成度超过百万门后,设计正确性的验证比设计本身还要费劲,系统仿真的实时性很难满足要求。在针对复杂电路进行软件仿真时,系统的仿真时间往往需要占据大部分的设计时间。我们常常会为了仿真电路的某些功能,而不得不等上几个小时甚至几天。如何提高仿真效率,减少仿真复杂度,缩短仿真时间,将成为系
6、统设计中的关键一环。文献[1],[2]提出利用基于C语言的设计和验证方法来代替传统的基于HDL语言设计的仿真,从而加快仿真速度,但是这种方法只适用设计的早期阶段。为了方便而快速的实现仿真验证,及时得到测试数据,本文提出运用硬件加速的思想[3][4][5],采用硬件仿真平台和软件仿真平台相互通信,即通过主机上运行的仿真软件与硬件平台相结合,实现软硬件协同加速仿真,仿真速度可以提高30倍。 2软硬件协同加速仿真 在传统的设计与验证过程中,设计工程师首先将复杂的系统逐模块的用硬件描述语言表述,待所有模块在仿真器上
7、单独验证通过后,通过模块间整合进行局部和整个设计的仿真,如图1所示。 假设模块Master和模块Slave是整个复杂设计中的一部分。模块Master负责把输入数据进行数据处理,随后把处理后数据发送到下一个模块Slave,Slave模块完成一个功能复杂的算法运算,运算结束后把结果返回到模块Master中,进行下一步操作,设计框图如图2所示。 设计工程师在完成模块Master和模块Slave的HDL设计后,用HDL仿真器软件分别对两个模块进行仿真验证,模块Master的仿真时间花费了五分钟,模块Slave花费了十五分钟
8、,两个模块进行联合仿真花费了二十分钟。如果设计不正确,则要对设计进行重新修改和仿真直到验证通过为止,重复的仿真工作将要花费几天甚至几星期。为了缩短仿真时间,本文提出利用硬件加速的思想,对设计进行软硬件协同加速仿真。模块Master和模块Slave的功能首先分别在软件上仿真验证通过,待模块Slave经综合实现后,把模块Slave下载