>
首页 » 技术文章 » SCSD在SoC原型验证中的应用及其改进

SCSD在SoC原型验证中的应用及其改进

作者:马凤翔,孙义和   时间:2006-10-18 22:41  来源:
摘 要:以软件编译式系统设计方法学为基础,提出了片上系统( SoC)的原型验证流程,并用Handel-C描述SoC原型,直接实现在原型硬件上。为了验证该流程,用SCSD的软件工具、RC1000和RC200搭建了一个SoC原型验证系统的样机,在样机上完成了Lena图像处理SoC的原型验证。在反复试验的基础上,改进了SoC原型验证流程,并设计出了新的原型电路板。

关键词:SoC的验证原型;软件编译式系统设计;Handel-C

引 言

芯片设计复杂度不断增长,缩短面市时间的压力越来越重。除大量硬件模块之外,片上系统( SoC)还需要大量固件和软件,如操作系统、驱动程序、通讯协议以及应用程序。SoC硬件模块数目众多、内嵌软件复杂,传统的基于逻辑模拟的验证方式已不再可行。尤其软硬协同验证时,模拟时间之长难于忍受。为了缩短SoC验证时间,快速系统原型验证(RSP)技术,已经成为SoC设计流程前期阶段的常用手段。

RSP的本质在于用硬件方式快速地实现SoC设计中硬件模块,让软件模块在真正的硬件上高速运行,实现SoC设计的软硬件协同验证。这里的“快速”体现用硬件搭建设计原型的速度。RSP用商用芯片实现设计中的常用模块,只有核心模块才用FPGA实现。因此提高了原型系统的运行速度,减少了原型描述及其实现的工作量,降低了验证系统的成本。但目前SoC原型的描述主要使用Verilog或VHDL,描述的级别低复杂度高,容易出错,因此不能很快地实现SoC的原型。

Celoxica提出的系统级设计方法学( SCSD) ,把软件设计技术引入硬件设计,直接用Handel-C描述硬件设计,大大改善了硬件设计效率。SCSD的一整套软件工具能够把Handel-C描述的设计直接实现到FPGA,因此非常适合SoC原型的描述及其实现。笔者以SCSD方法学为基础,提出了SoC原型验证流程,用可配置计算电路板RC1000和SoC设计展示评估平台RC200搭建了一个SoC原型验证系统的样机,并在样机上完成了Lena图像处理SoC的原型验证。在反复试验的基础上,改进了SoC原型验证流程,并设计出了新的原型电路板。



验证流程及系统样机

SoC原型实现的基本流程及其EDA工具
  SoC原型验证中,硬件模块以不同的方式实现。处理器一般用主机CPU或原型硬件中的嵌入式处理器实现。Memory用原型硬件中与FPGA直接相连的存储器实现。Verilog描述的核心模块实现在FPGA中。各种外设模块用原型硬件中的外设资源实现。模块之间的互连通过FPGA和硬件的互连总线实现。IP原型验证需要确定它的外围逻辑环境、验证向量生成机制和验证结果分析检查策略验证中所有需要描述的模块及其互连与原型硬件的映射关系,以及原型验证的硬件支持,在这里统称为设计的验证环境。被验证的设计用Verilog/VHDL描述,验证环境用Handel-C描述,见图1。完成Handel-C描述后,用ModelSim和DK(Handel-C开发环境)协同模拟、调试设计和验证环境,用较少的验证向量检查验证环境的正确性。模拟成功后,DK把验证环境的Handel-C描述编译为Verilog描述。然后调用Synp lify对设计及其验证环境的Verilog描述进行优化。接着调用Xilinx的布局布线工具ISE,把优化的Verilog描述转换为原型系统硬件的配置数据。原型系统配置完毕后,即可启动系统,执行原型验证。如果模块设计的RTL优化已经完成,就没必要调用Synp lify进行优化,直接输入ISE即可。SoC软硬件协同验证时,首先可通过DK,协同模拟C/C++描述的软件、Handel-C描述的验证环境和Verilog描述的模块;然后把软件编译成SoC处理器的目标代码,让软件在原型系统中高速运行,执行验证。

主机PC上运行的诊断软件与SoC的软件模块的描述实现流程基本一致,只是最终实现是运行、在主机的处理器上。

SoC原型验证系统样机
样机由PC主机、RC1000和RC200构成,如图2所示。PC主机是主控子系统, RC1000和RC200共同组成原型子系统。RC1000插在PC主机的PCI插槽中。RC200和PC主机之间通过并口总线连接。RC1000和RC200之间用自制的34位总线连接。



PC与原型子系统之间通信的方式有比特、字节和DMA:

⑴比特方式用GPI和GPO两根信号线进行通信,用于传递一个状态;

⑵字节方式用RC1000控制/状态端口进行单字节数据传输,用于传递控制命令或状态信息,两者采用握手协议。前两种方式一般用来存储器所有权的交换进行同步;

⑶ DMA方式一般用于大量数据的传输。主机以DMA方式在SRAM中写入数据。FPGA获得SRAM所有权后,读取数据并进行处理,然后将结果写入SRAM。最后,主机以DMA方式取回结果。SRAM是主机和原型子系统交换数据的缓冲区。

连接RC1000和RC200,共同构成原型子系统弥补了两者的缺点:为RC1000提供多种接口标准支持,比 如音视频输入输出、Internet和Bluetooth、触摸屏、串并口等;增强RC200的调试诊断能力,运行时数据可通过RC1000传输到主机。因此可和模拟环境中一样观察分析信号。另外也扩展系统的逻辑容量:RC1000的FPGA有2.5M系统门, RC200的FPGA有1M系统门,所以整个子系统的逻辑容量为3.5M系统门,可实现更大设计的原型验证。

并口总线是PC和RC200之间惟一的通信渠道。PC只能通过并口总线配置RC200,或读写RC200上SmartMedia卡中内容。而RC1000配置通过PCI总线实现,有多种灵活的配置方式。RC1000的可编程时钟可提供400 kHz到100MHz的时钟频率。它的输出时钟从“OUT”端口输出,经由连接总线驱动RC200,实现RC1000和RC200的时钟同步。

Lena图像处理SoC的原型验证

实验描述
  Lena图像是一个静态照片,图像处理行业的标准参照照片。处理过程中,主机把Lena图像发给RC1000,后者处理完一帧后反馈给主机显示。并在处理的过程中,以像素为单位把图像数据传送给RC200,后者对数



据进行扩展,然后驱动液晶屏显示。这个例子可看作是一个SoC原型验证,如图3所示。主机处理器代表SoC处理器的原型, RC1000实现图像扭曲算法,是专用图像处理模块, RC200实现显示驱动模块以及显示装置。主机程序启动后,首先对原型子系统进行配置,然后用DMA的方式把图像数据送入RC1000的存储器中。数据传输结束后,主机用控制端口通知RC1000进行处理。RC1000对Lena图像进行扭曲处理,处理完一帧后,通过状态端口通知主机取回结果,并在主机显示器上显示。主机拿到结果后,通知RC1000继续处理。如此反复。也就是说,主机以DMA方式传输一帧静态图像,然后以DMA方式逐帧取回处理结果显示,在主机显示器上得到了扭曲变幻的动态图像。

在RC1000对每帧图像处理过程中,以像素为单位把图像数据传递给RC200。像素数据的传送使用3个信号,分别是Data,Write和RC200Rdy。Data是16位的数据总线,用来发送像素数据。W rite是RC1000发送数据的标志信号。RC200Rdy表明RC200是否准备好接受像素数据Data。像素数据的发送协议与握手协议类似。在RC1000处理像素的过程中,Write为0,像素处理完成后,如果RC200Rdy为1,则开始发送数据Data,同时把W rite置为1通知RC200接受数据;如果RC200Rdy为0, RC1000就进入等待状态,直至RC200Rdy跳变为1。在RC200接受、处理数据的过程中, RC200Rdy被置为0。RC200接收到的数据是16位的,但它只支持24位或30位的显示数据。因此,对16位的像素数据乘以8,把它扩展到24位。动态图像的显示借助FrameBufferdb实现,这是Celoxica的视频显示核。它用两个存储器作为视频缓冲器,交替接收数据、驱动显示。

实验结果及系统原型的性能分析
Lena图像处理及其试验表明, SCSD能够有效、快速地实现SoC的原型验证和IP的仿真验证。但用于SoC原型验证,尚有不足之处。首先,只支持设计的可配置逻辑实现,不支持诊断能力的实现。其次,只能在单个FPGA上实现设计,不能把Handel-C设计在多个FPGA之间的划分。而这两点对于原型验证非常重要。

诊断就是在原型运行过程中如何实现重要信号的收集和分析。诊断涉及到监测点的指定及其实现,以及监测点数据的处理分析。在Verilog代码中指定监测点相对简单, 因为有现成的工具———Synp licity的Identify。在Handel-C还没有现成办法指定要监测点,其指定和实现机制需要进一步的研究。可行的办法就是,先用DK把Handel-C描述的验证环境或设计编译成Verilog代码,然后在Identify中指定监测点。实现就是硬件上如何获得并表现这些监测点的信号,如把这些信号直接、或经过某种处理后,输出到逻辑分析仪、或PC主机。这需要原型硬件的支持。

大规模设计需要多个FPGA才能实现。因此需要把设计划分到多个FPGA。比较快捷的方法是,先用DK把Handel-C设计编译为Verilog代码,然后用Synp licity的设计划分工具Certify划分,最后用Xilinx公司的布局布线工具生成配置数据。也可进一步研究如何划分Handel-C设计。改进的SoC/ IP原型验证流程及所用的软件工具如图4所示。


为了支持原型验证的诊断能力、实现大规模SoC设计的原型验证,设计了一款全新的原型电路板,其功能示意图如图5所示。电路板使用3个FPGA,采用环形互连结构。原型FPGA之间的互连便于设计在两者之间的划分。而接口FPGA与两者之间连接则用于实现对设计内部接点的监督,以及配置数据的下载。接口FPGA外接6排32位SRAM,因此每周期最多可并行监督192个内部信号。运行过程中,监测点的信号值存入SRAM。主机以DMA方式读取SRAM中的信号值,从而实现了软件读取原型硬件运行过程中的数据,开发工程师可像在模拟环境中一样观察分析自己感兴趣信号。这就部分解决了长久以来困扰硬件仿真或原型的问题———诊断能力很差。

如果监测点的信号数据量很大,无法通过PCI总线实时传送到PC主机或分析困难时,可在接口FPGA中实现处理算法,直接对数据进行高速处理。但有时用逻辑分析仪分析信号更适合更方便。因此,电路板上还设计了一个逻辑分析仪与接口FPGA连接的插槽。该原型电路板支持两种扩展方式:电路板扩展和插件扩展。电路板扩展就是在系统的PCI总线中加入更多原型电路板,以验证更大规模的电路。此时,电路板之间通过速度高至射频的高速连接总线通信, PCI总线只用来实现控制和诊断。扩展插槽中可插入不同的小尺寸外设以及数模/模拟电路板,以扩展原型系统的原型能力。Rocket IO接口支持射频模块的接入。



结束语


SCSD把Handel-C描述的SoC原型直接编译实现到原型硬件,加快了SoC原型的描述和实现。以SCSD为基础,提出并改进了SoC原型实现流程,设计了原型硬件,改善了SCSD在设计划分和诊断支持上的不足。

相关推荐

SCSD在SoC原型验证中的应用及其改进

在线研讨会
焦点