技术中心
 
 

基于FPGA的软硬件协同仿真加速技术

   日期:2014-04-15    
核心提示:在系统设计中,硬件复杂电路设计的调试与仿真工作对于设计者来说十分困难。为了降低仿真复杂度,加快仿真速度,本文提出利用FPGA加速的思想,实现软硬件协同加速仿真。经过实验,相对于纯软件仿真,利用软硬件协同加速仿真技术,仿真速度提高近30倍,大大缩短了仿真时间。

1 前言

在数字集成电路的设计中,当设计工程师在用硬件描述语言(HDL:Hardware Description Language)完成设计之后,需要通过仿真来检验设计是否满足预期的功能。在仿真中,设计工作师需要为设计项目建立一个测试平台,这个测试平台为设计项目提供尽可能完备的测试激励,并提供可供观测的输出响应,根据这些输出响应信息,设计工程师便可以判断设计项目是否满足预期的功能。在进行仿真工程时,设计工程师一般先对各个功能模块进行仿真验证,全部通过后再对整个系统设计进行仿真。当设计工程师在仿真中发现错误,就需要进行仔细调试,找出错误发生的原因并加以修改。

随着系统设计的复杂性不断增加,当设计集成度超过百万门后,设计正确性的验证比设计本身还要费劲,系统仿真的实时性很难满足要求。在针对复杂电路进行软件仿真时,系统的仿真时间往往需要占据大部分的设计时间。我们常常会为了仿真电路的某些功能,而不得不等上几个小时甚至几天。如何提高仿真效率,减少仿真复杂度,缩短仿真时间,将成为系统设计中的关键一环.利用基于C语言的设计和验证方法来代替传统的基于HDL语言设计的仿真,从而加快仿真速度,但是这种方法只适用设计的早期阶段。为了方便而快速的实现仿真验证,及时得到测试数据,本文提出运用硬件加速的思想,采用硬件仿真平台和软件仿真平台相互通信,即通过主机上运行的仿真软件与硬件平台相结合,实现软硬件协同加速仿真,仿真速度可以提高30倍。

2 软硬件协同加速仿真

在传统的设计与验证过程中,设计工程师首先将复杂的系统逐模块的用硬件描述语言表述,待所有模块在仿真器上单独验证通过后,通过模块间整合进行局部和整个设计的仿真,如图1所示。

 

设计验证属性

 

图1 设计验证进程

假设模块Master和模块Slave是整个复杂设计中的一部分。模块Master负责把输入数据进行数据处理,随后把处理后数据发送到下一个模块 Slave,Slave模块完成一个功能复杂的算法运算,运算结束后把结果返回到模块Master中,进行下一步操作,设计框图如图2所示。

 

设计例子图

 

图2 设计例子框图

设计工程师在完成模块Master和模块Slave的HDL设计后,用HDL 仿真器软件分别对两个模块进行仿真验证,模块Master的仿真时间花费了五分钟,模块Slave花费了十五分钟,两个模块进行联合仿真花费了二十分钟。如果设计不正确,则要对设计进行重新修改和仿真直到验证通过为止,重复的仿真工作将要花费几天甚至几星期。为了缩短仿真时间,本文提出利用硬件加速的思想,对设计进行软硬件协同加速仿真。模块Master和模块Slave的功能首先分别在软件上仿真验证通过,待模块Slave经综合实现后,把模块 Slave下载到硬件中,模块Master仍然运行在软件上,通过HDL仿真工具提供的外部接口实现软硬件间的数据交互,进行模块Slave和模块 Master的联合仿真验证,一旦仿真通过,把模块Master和模块Slave都放入硬件中进行加速仿真验证,这时两个模块的联合仿真时间将大大缩短。

 

加速仿真

 

图3加速仿真

本文描述的加速仿真技术实现框图如图3所示。DUT(Design Under Test)由可综合的Verilog HDL语言设计完成。DUT综合实现后,下载到现场可编程门阵列(FPGA:Field Programmable Gate Array)中进行加速仿真验证。运行在HDL 仿真器上的测试文件TestBench给DUT发送测试激励并响应输出信息,FPGA与HDL仿真器间的信息交换由仿真器提供的Verilog 编程语言接口(PLI:Programming Language Interface)来实现。Verilog PLI为Verilog代码调用C语言编写的函数提供了一种机制,它提供了C语言动态链接程序与仿真器的接口,可以实现C语言和Verilog语言的协同仿真。由于C语言在过程控制方面比Verilog语言有优势,可以用C程序来产生测试激励和读取信号的值。以Windows平台为例,用户通过运用C语言和Verilog PLI编写接口函数,编译代码并生成动态链接库(DLL:Dynamic Link Library),然后在由Verilog语言编写的TestBench中调用这些函数。在执行TestBench文件进行仿真时,TestBench中的C函数一旦链接成功,C函数将详细信息传递给HDL仿真器,执行C函数就可以像仿真Verilog代码一样进行仿真。这样,设计工程师利用 Verilog PLI接口创建自己的系统调用任务和系统函数,就可以通过C语言编程对DUT进行辅助仿真,达到Verilog语法所不能实现的功能。

3 仿真实例

 

平台框图

 

图4 软硬件协同加速仿真平台框图

软硬件协同加速仿真平台框图如图4所示。我们使用的主机配置为2.66GHz Intel Core2处理器和2GB内存。软件平台HDL仿真器运行于主机上,完成对仿真过程的控制和检测。HDL仿真器采用Mentor Graphics子公司Model Tech公司出品的ModelSim软件,它全面支持VHDL和Verilog语言的IEEE标准,可以实现VHDL、Verilog以及VHDL- Verilog混合设计的仿真,还能够与C语言一起实现对HDL设计文件实现协同仿真。同时,相对于大多数的HDL仿真软件来说,ModelSim在仿真速度上也有明显优势,并且它支持众多的FPGA厂家库,是设计工程师做FPGA设计的RTL级和门级电路仿真的首选。

硬件平台主要以FPGA为核心,采用了一片Xilinx公司推出的Virtex-5 XC5VSX95T-FF1136 芯片,它内部有丰富的逻辑资源,包括14720片Slices,8784Kb的BlockRam,640片DSP 48E Slices,16个GTP 收发器,640个可配置 I/O 管脚。此外,该芯片内嵌了一个PCI-express Endpoint Block 硬核。Xilinx公司提供的IP核endpoint Block Plus for PCIe解决方案适用于 Virtex-5 SXT FPGA架构,该IP核例化了Virtex-5 SXT器件中内嵌的Virtex-5 Integrated Block for PCI Express,为实现单片可配置PCI-express总线解决方案提供了可能。PCI-express总线作为下一代高性能I/O互联技术和标准的局域I/O总线,将广泛应用于未来各种计算机平台。

在实验中,我们选用Xilinx公司的IP核FFT(Fast Fourier Transform)v6.0[8]模块作为DUT,该FFT核配置成Pipelined Streaming I/O的方式,它可以实现对任意间隔或者连续数据帧的处理。FFT模块在ModelSim软件上运行的仿真结果波形如图5所示。

 

IFFT模块仿真

 

图5 IFFT模块仿真波形

我们分别对DUT进行纯软件仿真和软硬件协同加速仿真测试,实验结果如图6所示。仿真结果与主机配置、设计的复杂度以及仿真时钟周期数有关。

 

实验结果

 

图6 实验结果对比

4 结论

本文利用硬件加速的思想,提出了基于FPGA的软硬件协同加速仿真技术。用可综合的Verilog语言编写的设计测试文件(DUT)经综合实现后,下载到 FPGA中,TestBench仍然运行在主机的仿真器ModelSim软件上,通过Verilog编程语言接口(PLI)进行软硬件间的数据交互,从而实现对DUT的软硬件协同加速仿真。实验结果表明,相对于纯软件仿真,运用软硬件协同加速仿真技术仿真速度提高了30倍,这大大缩短了仿真时间,从而达到缩短设计周期的目的。

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢