由于 SOC 设计复杂度不断增加,使得缩短面市时间的压力越来越重。虽然充分利用IP核大大减少了SoC的设计时间,但SoC 验证 仍然非常复杂耗时。SoC和ASIC的最大不同之处在于它的系统特性,除了大量硬件模块之外,SoC还需要大量的固件和软件,如操作系统、驱动程序、通讯协议以及应用程序等。SoC硬件模块数目众多、内嵌软件复杂,传统的基于逻辑模拟的验证方式已不再可行。尤其是软硬协同验证时,模拟时间之长令人难以忍受。为了缩短SoC验证时间,快速系统 原型 (Rapid System Prototype)验证,即硬件原型和软件原型结合验证,已经成为SoC设计流程前期阶段的常用手段。
快速系统原型验证的本质在于快速地实现SoC设计中的硬件模块,让软件模块在真正的硬件上高速运行,实现SoC设计的软硬件协同验证。该技术实现的基础是强大的FPGA和有力的设计描述及编译工具。原型验证系统由三个部分组成:系统硬件、软件编译器和运行程序。系统硬件设计的核心部分是定
制的FPGA并行系统,用来实现SoC设计中的关键模块如Mpeg编码器,系统硬件的常规模块可由商用芯片实现。软件编译器则把寄存器级或门级设计及其验证环境扁平化,映射到系统硬件。运行程序控制原型系统的运行、设计调试,一般采用C-API编程,并且有开放的软件结构,便于后期紧密集成。
快速系统原型验证采用商用芯片实现设计中的常用模块,只有核心模块才用FPGA实现,因此提高了原型系统的速度,减少了原型描述及其实现的工作量,降低了原型验证系统的成本,更适合于开发出针对某个领域的验证平台。但目前的SoC原型的描述主要使用Verilog或者VHDL,描述的级别低、复杂度高、容易出错,因此不能很快地实现SoC的原型。本文的目的就是找出一种方法,用高级语言(如C语言)来描述SoC的原型,并实现在设计的原型验证硬件上。
1 SoC原型的Handel-C描述及其实现流程
Celoxica公司提出的软件编译式系统设计(SOFtware-CompiLED System Design,SCSD)把软件设计技术引入硬件设计,直接用Handel-C语言描述硬件设计,大大改善了硬件设计效率。SCSD的软件工具包括集成开发环境(DK)、平台开发工具(PDK)以及系统级硬件描述语言Handel-C等。DK可以编辑、模拟、调试并编译Handel-C源代码,生成EDIF、Verilog或VHDL代码,并能够与ModelSim一起协同模拟Handel-C和Verilog设计。PDK由数据流管理器(DSM)、平台抽象层(PAL)和平台支持库(PSL)三个层面构成。通过DSM,可以很方便地在软件和硬件之间实现转移设计的功能,便于快速地划分设计,找到最优的划分方案;PAL提供与API方式访问原型电路板一致的硬件资源,实现Handel-C设计的可移植性;PSL为DK和Handel-C设计提供与电路板、可编程器件或开发工具有关的支持,更接近驱动程序的概念。
SCSD的整套软件工具能够把Handel-C描述的设计直接实现到FPGA上,因此非常适合SoC原型的描述及其实现。本文以SCSD为基础,提出了SoC/IP的原型验证流程,如图1所示。

图1 SoC/IP原型实现的基本流程及其EDA工具
在SoC原型验证中,不同的硬件模块用不同的方式实现。处理器用主机CPU或者原型硬件中的嵌入式处理器实现;存储器用原型硬件中与FPGA直接相连的存储器排实现;Verilog描述的核心模块在FPGA中实现;各种外设模块用原型硬件中的外设资源实现;模块之间的互连实现在FPGA和原型硬件的互连总线上。IP原型验证需要确定它的外围逻辑环境、验证向量生成机制和验证结果分析检查策略。本文把SoC和IP验证中所有需要描述的模块及其互连与原型硬件的映射关系以及原型验证的硬件支持统称为设计的验证环境。被验证的设计用Verilog/VHDL语言描述,验证环境用Handel-C语言描述。
www.55dianzi.com
Handel-C描述完成后,用模拟器ModelSim和Handel-C开发工具DK协同模拟、调试设计和 验证 环境,这样可用较少的验证向量检查验证环境的正确性。模拟成功后,DK把验证环境的Handel-C描述编译为Verilog描述。然后调用综合工具(Synplify)对设计及其验证环境的Verilog描述进行编译优化。接着调用Xilinx的布局布线工具(ISE),把优化的Verilog描述转换为 原型 系统硬件的配置数据。原型系统配置完毕后,就可以启动系统执行原型验证了。如果模块设计的RTL优化已经完成,就无需调用Synplify进行优
化,直接输入ISE即可。
在 SOC 软硬件协同验证中,首先通过DK,协同模拟C/C++描述的软件、Handel-C描述的验证环境和Verilog描述的模块;然后把软件编译成SoC处理器的目标代码,让软件在原型系统中高速运行,执行验证。主机PC上运行的诊断软件与SoC的软件模块的描述实现流程基本一致,只是最终实现运行在主机的处理器上。
2 SoC原型验证系统样机
本文利用可配置计算电路板RC1000和SoC设计展示评估平台RC200搭建了一个原型验证系统的样机,以充分体验SCSD的优缺点,为以后SoC原型验证系统的设计做一些基础性研究工作。
原型验证系统的样机由PC主机、RC1000和RC200构成,如图2所示。在功能定位上,PC主机是主控子系统,RC1000和RC200共同组成原型子系统。RC1000插在PC主机的PCI插槽中。RC200和PC主机之间用并口总线连接。RC1000和RC200之间用自制的34位总线连接。

图2 RC1000的功能框图
PC主机与原型子系统之间通信的方式有三种:单数位、字节和DMA。单数位方式使用GPI和GPO两根信号线进行一位的数据通信,可用来传递一个状态。字节方式使用RC1000控制/状态端口进行单字节数据传输,可用来传递控制命令或状态信息;两者采用握手协议,只有在操作完成之后才能返回。前两种方式一般用来对存储器所有权的交换进行同步,DMA方式一般用于大量数据的传输。首先主机以DMA方式在SRAM中写入数据;然后FPGA获得SRAM所有权后,读取数据并进行处理,将结果写入SRAM;最后主机又以DMA方式取回结果。
RC1000的FPGA外接四排SRAM,其中任何一排都可以赋给FPGA或者主机。SRAM是主机和原型子系统交换数据的缓冲区。
把RC1000和RC200连接起来,共同构成原型子系统弥补了两者的缺点:首先,为RC1000提供多种接口标准支持,如音视频输入输出、Internet和Bluetooth、触摸屏、串/并口等;其次,增强RC200的调试诊断能力,运行过程中的数据可以通过RC1000传输到主机,因此可以和模拟环境中一样观察分析信号;另外,还扩展了系统的逻辑容量:RC1000的FPGA有2.5M系统门,RC200的FPGA有1M系统门,所以整个子系统的逻辑容量为3.5M系统门,可以实现更大设计的原型验证。
www.55dianzi.com
并口总线是PC主机和RC200之间唯一的通信渠道。PC主机只能通过并口总线下载RC200配置数据,或者读写RC200上SmartMedia卡中内容。而RC1000配置可通过PCI总线实现,有多种灵活的配置方式。
RC1000的可编程时钟可以提供400kHz~100MHz的时钟频率。它的输出时钟从"OUT"端口输出,经由连接总线驱动RC200,实现RC1000和RC200的时钟同步。
3 Lena图像处理 SOC 的 原型 验证
为了检验系统样机进行原型验证的有效性,试验了一个实例:Lena图像处理S oC原型验证,如图3所示。主机处理器代表SoC处理器的原型;RC1000实现图像扭曲算法,是专用图像处理模块;RC200是显示驱动模块及显示装置。

[1] [2] 下一页
本文关键字:技术 综合-其它,单片机-工控设备 - 综合-其它