当前位置: 东星资源网 > 高考资料 > 高考改革 > 正文

软硬件协同设计 [一种基于SOC软硬件协同仿真调度技术的研究]

时间:2019-02-06 来源:东星资源网 本文已影响 手机版

  摘 要:随着SOC芯片复杂度的增加,采用传统的逻辑仿真工具对SOC验证技术显得愈来愈力不从心。文章提出一种事件驱动的FPGA软硬件协同仿真方法,讨论了软件仿真器和FPGA之间的同步机制,在此基础上提出一种新型快速的仿真调度新技术,将FPGA仿效器和软件仿真器紧密耦合,实现更加快速有效的协同仿真。
  关键词:SOC验证;事件驱动;软硬件协同仿真;仿真调度
  一款SOC芯片的面市包括设计、验证和生产等步骤,其中验证所耗费的时间和费用占了整个SOC芯片成本的70%~80%。因此,对SOC验证技术的研究已经成为当今世界IC行业的发展重点之一。近年来,事务级验证,周期驱动(cycle-driven)的仿真,形式验证,硬件仿效以及硬件加速成为验证领域的潮流。事务级的验证将设计层次提升到系统级并通过完善的协议减少通信开支,从而获得更快的验证速度[1],但事务级的建模需要额外的成本。周期驱动的仿真对同步设计可以获得相对较好的性能,但仿真精度比不上事件驱动的仿真[2]。形式验证借助于静态的数学分析,对验证系统的正确性很有用,但要借助于黄金参考模型,且不能取代逻辑仿真。对于系统级的验证,硬件仿效是最有效的措施,但其可调试性和可控性较弱。
  基于FPGA的协同仿真试图在纯软件仿真和硬件仿效之间找到一个平衡点,从而达到系统仿真速度快、可调试性和可观测性强的目的[3]。文献[4]提出的协同仿真系统由软件仿真器和FPGA开发板组成,两者通过PCI总线互联。文献[5]提出类似的硬件加速系统,软件仿真器和FPGA通过JTAG通道完成协同,这样调试能力得到了加强。文献[6]提出硬件建模的技术,将实际的电路抽象为仿真系统内的模型,PC机上测试平台产生的激励被加到硬件模型中。但上述方法都没有涉及硬件内有多DUT的情况,且仅仅讨论了周期驱动的仿真,不支持事件驱动(event-driven)的协同仿真。
  本文提出一种事件驱动的FPGA协同仿真方法,详细讨论了软件仿真器和FPGA之间的同步机制,在理论上确保协同仿真的正确性。在此基础上提出一种新型快速的仿真调度技术,将FPGA仿效器和软件仿真器紧密耦合,实现更快速有效的协同仿真。
  1 协同仿真系统
  协同仿真从软件仿真器中将运算密集型的任务下载到硬件加速器中,这样就显著缩短了仿真时间。它结合了硬件快速执行和软件仿真灵活可调的特点。图1给出一种协同仿真系统。
  在用户设定好初始验证环境并选择完将要映射到FPGA仿效器中的DUT模型后,系统会自动进行软硬件划分并将FPGA仿效器与软件仿真器建立连接,整个过程无需人工干预。仿真系统搭建完后,通过自行开发的编译软件Cosim Compiler对设计进行软硬件自动划分。
  系统工作期间,FPGA仿效器初始化后等待与软件仿真器进行数据交互,当软件仿真器检测到数据交互事件时,向目标DUT发出端口访问请求,FPGA仿效器收到请求后开始执行DUT模块并将更新值返回给软件仿真器,然后等待下一个请求。软件仿真器和FPGA仿效器轮流工作完成整个验证过程,系统工作流程如图2所示。
  2 FPGA协同仿真调度新技术的实现
  协同仿真技术的关键在于对仿真事件的调度操作,为此本文首先引入一种全新的硬件仿真事件替换DUT原有的软件仿真事件,在此基础上引入一种新的调度技术调度Verilog 事件,将DUT的求值和更新过程封装在新的VPI函数中使仿真调度操作得到更快速有效的执行,从而达到快速有效协同仿真的目的。
  2.1 FPGA仿真事件
  本文提出的仿真事件称为FPGA仿真事件,和软件仿真事件类似,FPGA仿真事件可分为FPGA仿真更新事件和FPGA仿真求值事件。图3所示为一个FPGA仿真事件的实例。
  Wrapper模块输入端口信号的改变会触发回调函数cbValueChange,cbValueChange函数会调度一个FPGA仿真求值事件,FPGA仿真求值事件完成后触发另一回调函数cbReadWriteSynth。cbReadWriteSynth函数发生在所有活跃事件执行后,非阻塞赋值更新事件执行前,这样FPGA仿真求值事件可以保持和软件仿真求值事件一致,从而保证了协同仿真结果的正确性。
  在FPGA求值事件执行期间,Wrapper模块输入端口上的值被vpi_get_value函数采样并通过物理通道发送到FPGA,作为DUT模块的激励。一段时间后,回调函数vpi_put_value从FPGA获得更新值并调度一个FPGA仿真更新事件,将更新值送到Wrapper模块的输出端口。和软件更新事件一样,FPGA仿真更新事件也可分为连续赋值更新事件和非阻塞赋值更新事件,这通过给回调函数设定不同的延时参数来实现,可用的延时参数包括:vpiTransportDelay和vpiNoDelay。设定vpiTransportDelay参数后,仿真器将不能调度在这之后的仿真事件,因此vpiTransportDelay可用来调度非阻塞更新事件,vpiNoDelay参数可用来调度连续赋值更新事件。
  2.2 FPGA仿真事件调度技术
  为了保证将DUT从仿真器转移到FPGA时,软件仿真事件可以被FPGA仿真事件的无缝替换,本文提出了与FPGA仿真事件相应的调度技术。
  一个DUT可能包含各种Verilog语句,如连续赋值,非阻塞赋值,阻塞赋值或是任何上述语句的组合。典型的DUT结构如图4所示。
  如图所示,DUT包含连续赋值和非阻塞赋值,端口c的值改变会调度FPGA仿真求值事件,同时b端口值的改变也会调度FPGA仿真求值事件,为了防止两类FPGA仿真更新事件发生冲突,在FPGA求值事件发生时为输出端口d注册一个cbValueChange回调函数,并设定vpiTransportDelay延时参数对输出值进行更新。对于阻塞路径,输出端d的非阻塞更新事件会调用另一个回调函数,该函数会触发输出端f的计算和更新事件;对于非阻塞路径,b的更新值在同一仿真周期被传到d,但不会被C模块采样,这样就确保了调度的正确性。
  3 实验结果及分析
  本文以一个OpenRisc最小系统为例验证采用新调度技术的协同仿真,该最小系统包括一个OpenRisc 1200 CPU核,一个AHB总线,一个RAM模块作为总线从设备,在该嵌入式系统上运行计算π的C程序。实验采用Intel Pentium 4 CPU 3.0GHz处理器,Candence LDV软件仿真器及Altera公司芯片StratixII EP2S60F1020C4。
  实验首先利用自主开发的编译软件Cosim Compiler对设计源代码进行编译,并将硬件侧代码下载到FPGA以后,可以通过TCL命令行界面执行协同仿真,如图5所示为协同仿真命令行界面。
  协同仿真结果显示在仿真器界面上,如图6所示,在协同仿真情况下,OpenRisc计算出的π=3.14159265327,这和软件仿真结果一致,说明协同仿真的正确性是能够保证的。
  逻辑仿真和协同仿真验证所用时间如表1所示。
  从结果上看,协同仿真似乎消耗更多时间,这是由于本文使用的通讯通道速度很慢造成的,并且所采用的设计规模也不够大,不足以显示出协同仿真的优越性。另外,协同仿真最大的优点是随着设计规模的增大,验证时间不会明显增加,但对于逻辑仿真,当设计复杂度增加时,验证速度会大幅度下降。
  4 结束语
  本文提出一种新型的协同仿真机制,将FPGA仿效器和事件驱动的Verilog仿真器结合在一起,完成更加快速有效的仿真。首先引入一种全新的硬件仿真事件替换DUT原有的软件仿真事件,在此基础上引入与FPGA仿真事件相应的调度技术,将DUT的求值和更新过程封装在新的VPI函数中使仿真调度操作得到更快速有效的执行,实现快速有效的协同仿真,实验结果表明本文提出的协同仿真系统正确可行,且仿真性能更优。
  参考文献
  [1] Lukai Cai,Daniel Gajski. Transaction Level Modeling: An Overview[C]. In IEEE International Conference On Hardware/Software Codesign and System Synthesis,2003
  [2] Heejum Shim,Sang-Heon Lee,Yun-Sik Woo,Moo-Kyoung,Jae-Gon Lee,Chong-Min Kyung. Cycle-accurate Verification of AHB-based RTL IP with Transaction-level System Environment[C]. In IEEE International Conference On VLSI Design,Automation and Test,Apr. 2006,pp. 1
  [3] Ramayya Kumar. Formal Verification of Hardware: Misconception and Reality[C]. In IEEE International Conference On Wescon,Sep. 1998. pp. 135
  [4] Mohamed N. Wageeh, Ayman M. Wahba, Ashraf M. Salem,Mohamed A. Sheirah. FPGA Based Accelerator for Functional Simulation[C]. In IEEE International Conference On Circuits and Systems,May. 2004. pp.V-317
  [5] Rawat Siripokarpirom, Friedrich Mayer-Lindenberg. Hardware-Assisted Simulation and Evaluation of IP Cores Using FPGA-based Rapid Prototyping Boards[C]. In IEEE International Conference On Rapid System Prototyping,Jun. 2004. pp.96
  [6] Maciej Pyka,Wojciech Sakowski,Wlodzimierz Wrona. Developing the concept of hardware modeling to enhance verification process in virtual component design[C].
  [7] Maciej Pyka,Wojciech Sakowski,Wlodzimierz Wrona. Developing the concept of hardware modeling to enhance verification process in virtual component design.
  [8] Yuichi Nakamura,Kouhei Hosokawa,Ichiro Kuroda Ko Yoshikawa Takeshi Yoshimura. A Fast Hardware/Software Co-Verification Method for System-On-a-Chip by Using a C/C++ Simulator and FPGA Emulator with Shared Register Communication. In IEEE International Conference On Design Automation Conference. 2004
  [9] IEEE Standard Verilog Std 1364-2005.

标签:软硬件 调度 协同 仿真