基于Altera FPGA的软硬件协同仿真
扫描二维码
随时随地手机看文章
关键词:系统级芯片设计;软硬件协同仿真;FPGA;
中图分类号:TN407 文献标识码:A 文章编号:1003-353X(2003)05-0052-02
随着大规模集成电路工艺技术的发展,集成电路设计逐渐进入了系统级芯片(SoC)设计的时代。SoC芯片往往会集成数百万门,而且电路结构还包括MPU、SRAM、DRAM、EPROM、ADC、DAC以及其它模拟和射频电路。由于SoC芯片通常包含有一个或数个微处理器,软件成为SoC芯片不可或缺的一个重要组成部分。在SoC芯片上,软件和硬件是紧密耦合在一起的。软件和硬件任何一部分设计有缺陷,或者两者协调有问题,都将导致整个芯片设计的失败。为了能及早发现问题,软硬件协同仿真成为SoC芯片产品仿真策略中一个非常重要的部分。本文首先简单介绍软硬件协同仿真技术,然后介绍基于Altera FGPA的软硬件协同仿真的方法和策略,同时给出门级协同仿真的实例。
2 软硬件协同仿真简介
软硬件协同仿真(software/hardware co-simulation)的基本定义是在模拟的硬件上运行软件。软硬件协同仿真的目的是为了能在芯片设计交付生产前尽早地验证尽可能多的软硬件功能。对于一个小系统,软硬件协同仿真可以验证芯片的大部分软件功能,而对于一个较大的系统,软硬件协同仿真可能只能验证芯片软件的某些关键部分的功能。
软硬件协同仿真系统主要由仿真平台、硬件设计和软件设计三个部分组成。如果仿真引擎完全由运行在工作站或PC机上的软件构成,这样的仿真称为纯软件模拟。还有些仿真平台的仿真引擎使用专用协处理器来辅助运行,这样的仿真称为混合模拟。另有些仿真平台的仿真引擎主要由专门的硬件仿真器构成。硬件仿真器仿真速度通常可以达到实际运行速度的10%,仿真速度要比混合模拟高2~3个数量级,但是硬件仿真器的价格也要比混合模拟平台高2~3个数量级,甚至更多。纯软件模拟虽然仿真速度最慢,但是其灵活性最好,而且价格也是最低的。
根据采用的不同仿真算法,仿真引擎可以分成事件驱动模拟器(event driven simulator)、周期基准模拟器(cycle-based simulator)和数据流模拟器(data flow simulator)三类。事件驱动模拟器会计算时钟周期内每个信号值的变化,而周期基准模拟器为了加快仿真速度只在时钟边沿计算信号值。数据流模拟器则进一步简化了仿真模型,信号由一组没有明显时间标记的数据序列来表示。在数据流模拟中,整个软硬件系统由通过信号连接的各个功能块组成,功能块的执行次序由模拟器的调度程序决定。数据流模拟是高层次的仿真,通常在芯片的系统设计阶段采用,主要用于验证算法的正确性。
根据芯片设计的不同阶段,软硬件协同仿真可以分为系统级协同仿真、行为级协同仿真、RTL级协同仿真和门级协同仿真。系统级协同仿真主要用于验证算法的正确性和评估系统的整体性能。系统级协同仿真为了提高仿真速度往往侧重于对总线操作进行模拟,如CoCentric System Studio的业务级建模(Transaction Level Modeling)仿真。行为级仿真和RTL级仿真的区别主要在于硬件设计是否可综合。在RTL级仿真中,测试平台中往往也包含一些行为级的模型,如为了模拟操作系统的载入过程,测试平台中必须包含片外Flash ROM的行为模型。门级协同仿真可以完整的模拟软硬件实际运行的过程,但是仿真速度会随设计规模的增大而急剧下降。
典型的软硬件协同仿真通常是直接在模拟的硬件上运行软件,即微处理器通常与别的硬件是在同一个层次上被模拟的。但是事实上大部分设计中的微处理器都是采用成熟的IP,或微处理器已经单独验证过而没有必要在RTL级或门级对微处理器进行仿真。而且对于软件工程师来说,他们更习惯于在指令集模拟器上调试软件而不是在硬件仿真器上观察信号的波形。因此,在协同仿真中有些成熟的模块如微处理器,往往采用行为级的模型。在仿真时,该模型通过仿真引擎的专用进程间通信接口与指令集模拟器(ISS)通信,软件代码在指令集模拟器中的执行结果会直接反映到仿真引擎中模拟硬件上。由于采用了进程间通信接口,协同仿真引擎和指令集模拟器可以分布在通过网络连接的不同计算机上。这种协同仿真的方法称为异阶协同仿真(Heterogeneous Co-simulation)。
FPGA的规模越来越大,如Altera的APEX20KE 系列最高可以有50多万个逻辑单元,典型门数达到150万门,一块FPGA芯片已经足以容纳下包括32 位微处理器、相当数量的存储器和大量用户专用逻辑的数字系统。虽然FPGA具有快速重新配置的能力,软件可以直接在FPGA硬件上调试,但是为了缩短开发周期,有必要对基于FPGA的系统芯片设计进行软硬件协同仿真。协同仿真可以发现许多直接调试无法观察到的问题,如系统总线上的读写时序等,因此软硬件协同仿真对基于FPGA的系统芯片设计也是非常重要的。下文通过基于Altera EP20K200E的Bluetooth基带处理器仿真实例,介绍基于Altera FPGA的门级软硬件协同仿真技术。由于Altera FGPA的基本元器件并不是逻辑门,而是逻辑单元(LE)和嵌入式系统块(ESB),所以更确切地说是基本单元级软硬件协同仿真。
该Bluetooth基带处理器如下图所示。
协同仿真的流程如下图所示。
门级软硬件协同仿真是最基本的协同仿真。有时设计中可能用到了第三方的软核,由于这些软核往往只是些网表文件而不是源代码,无法进行高层次的协同仿真。但是只要这些软核可以被Quartus编译成功,就能生成对应的门级网表和SDF延时文件,就能进行门级软硬件协同仿真。由于门级软硬件协同仿真速度较慢,在编写调试软件时务必将 printf()等用户接口代码去掉,要尽量减少静态变量,以缩短初始化代码长度。如有必要,可以直接把程序运行到某一阶段的存储器镜像作为仿真开始时存储器的状态,这样就可以直接调试仿真主要的关键代码,而无需仿真冗长的系统载入过程。存储器的镜像可以在指令级模拟器中获得。
4 结论
本文介绍的基于Altera FPGA的软硬件协同仿真方法简单实用,而且这些协同仿真的思想方法也可以借鉴到别的FPGA产品的软硬件协同仿真中。
参考文献:
[1].EPROMdatasheethttp://www.dzsc.com/datasheet/EPROM_1128137.html.
来源:零八我的爱0次