完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1 引言 随着大规模集成电路工艺技术的发展,集成电路设计逐渐进入了系统级芯片(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)。 |
|
|
|
3 Altera FPGA的门级软硬件协同仿真 FPGA的规模越来越大,如Altera的APEX20KE 系列最高可以有50多万个逻辑单元,典型门数达到150万门,一块FPGA芯片已经足以容纳下包括32 位微处理器、相当数量的存储器和大量用户专用逻辑的数字系统。虽然FPGA具有快速重新配置的能力,软件可以直接在FPGA硬件上调试,但是为了缩短开发周期,有必要对基于FPGA的系统芯片设计进行软硬件协同仿真。协同仿真可以发现许多直接调试无法观察到的问题,如系统总线上的读写时序等,因此软硬件协同仿真对基于FPGA的系统芯片设计也是非常重要的。下文通过基于Altera EP20K200E的Bluetooth基带处理器仿真实例,介绍基于Altera FPGA的门级软硬件协同仿真技术。由于Altera FGPA的基本元器件并不是逻辑门,而是逻辑单元(LE)和嵌入式系统块(ESB),所以更确切地说是基本单元级软硬件协同仿真。
该Bluetooth基带处理器如下图所示。 图1中虚线筐内的模块都在一块Altera EP20K200E芯片上实现。该Bluetooth基带处理器主要用于点对点的连接,因此微处理器采用了快速 8051软核。.Boot ROM用于8051复位后启动并将调试软件代码从串行口下载到片外的Code SRAM中执行。由于Boot ROM仅起到下载代码的功能,在仿真时8051复位后直接从片外Code SRAM中执行。Code SRAM的行为级模型在系统复位时将 Intel HEX格式的调试软件代码。Data SRAM也使用行为级模型描述,在系统复位时Data SRAM的存储单元将被清零。 协同仿真的流程如下图所示。 协同仿真使用了Altera的FPGA开发软件QuartusII 2.1以及8051的C编译器C51和模拟工具ModelSim5.5e。在Quartus编译项目前必须将eda tools setting的simulation选项设为ModelSim,这样编译后就能生成整个设计的门级网表文件top.vho 或top.vo和SDF(Standard Delay Format)延时文件top.sdo。测试平台文件test_bench.vhd主要包含顶层设计的实例和片外存储器的行为级实例。在ModelSim中先编译项目所用的Altera FPGA器件库,然后再编译top.vho和测试文件,在载入仿真实例时选择top.sdo文件作为top.vho的SDF延时文件。仿真开始后可以通过波形查看器观察软件执行的过程及结果。如果测试文件中不包含行为级模型,那么仿真流程可以简化为:把main.hex作为嵌入式ROM的初始化文件,然后直接在Quartus中编译仿真。 门级软硬件协同仿真是最基本的协同仿真。有时设计中可能用到了第三方的软核,由于这些软核往往只是些网表文件而不是源代码,无法进行高层次的协同仿真。但是只要这些软核可以被Quartus编译成功,就能生成对应的门级网表和SDF延时文件,就能进行门级软硬件协同仿真。由于门级软硬件协同仿真速度较慢,在编写调试软件时务必将 printf()等用户接口代码去掉,要尽量减少静态变量,以缩短初始化代码长度。如有必要,可以直接把程序运行到某一阶段的存储器镜像作为仿真开始时存储器的状态,这样就可以直接调试仿真主要的关键代码,而无需仿真冗长的系统载入过程。存储器的镜像可以在指令级模拟器中获得。 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2893 浏览 3 评论
27693 浏览 2 评论
3467 浏览 2 评论
3981 浏览 4 评论
基于采用FPGA控制MV-D1024E系列相机的图像采集系统设计
2331 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:48 , Processed in 0.507607 second(s), Total 52, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号