图1 SoC/IP原型实现的基本流程及其EDA工具
在SoC原型验证中,不同的硬件模块用不同的方式实现。处理器用主机CPU或者原型硬件中的嵌入式处理器实现;存储器用原型硬件中与FPGA直接相连的存储器排实现;Verilog描述的核心模块在FPGA中实现;各种外设模块用原型硬件中的外设资源实现;模块之间的互连实现在FPGA和原型硬件的互连总线上。IP原型验证需要确定它的外围逻辑环境、验证向量生成机制和验证结果分析检查策略。本文把SoC和IP验证中所有需要描述的模块及其互连与原型硬件的映射关系以及原型验证的硬件支持统称为设计的验证环境。被验证的设计用Verilog/VHDL语言描述,验证环境用Handel-C语言描述。
Handel-C描述完成后,用模拟器ModelSim和Handel-C开发工具DK协同模拟、调试设计和验证环境,这样可用较少的验证向量检查验证环境的正确性。模拟成功后,DK把验证环境的Handel-C描述编译为Verilog描述。然后调用综合工具(Synplify)对设计及其验证环境的Verilog描述进行编译优化。接着调用Xilinx的布局布线工具(ISE),把优化的Verilog描述转换为原型系统硬件的配置数据。原型系统配置完毕后,就可以启动系统执行原型验证了。如果模块设计的RTL优化已经完成,就无需调用Synplify进行优
图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系统门,可以实现更大设计的原型验证。
并口总线是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是显示驱动模块及显示装置。
图3 SoC原型示意图
图4 改进的SoC原型验证流程
图5 原型电路板上总线结构及主要资源
为了支持原型验证的诊断能力、实现大规模SoC设计的原型验证,设计了一款全新的原型电路板,其功能示意图如图5所示。电路板使用三个FPGA,采用环形互连结构。原型FPGA之间的互连便于设计在两者之间划分。而接口FPGA与两者之间的连接则用于对设计内部接点实现监督,对配置数据进行下载。接口FPGA外接六排存储器(32位SRAM),因此每周期最多可以并行监督192个内部信号。运行过程中,监测点的信号值直接存入SRAM。主机以DMA方式读取SRAM中的信号值,从而实现软件读取原型硬件运行过程中的数据,开发工程师可以像在模拟环境中一样观察分析自己感兴趣的信号。这就部分解决了长久以来困扰硬件仿真或原型的问题(诊断能力很差)。如果监测点的信号数据量很大,无法通过PCI总线实时传送到PC主机或分析困难时,可在接口FPGA中进行处理,数据处理之后再传送过去。但有时用逻辑分析仪分析信号更适合也更方便,因此电路板上还设计了一个逻辑分析仪与接口FPGA连接的插槽。该原型电路板支持两种扩展方式:电路板扩展和插件扩展。电路板扩展就是在系统的PCI总线中加入更多原型电路板,以验证更大规模的电路。此时,电路板之间可采用速度可高至射频的高速连接总线,PCI总线只是用来实现控制和诊断。扩展插槽中可以插入不同的小尺寸外设以及数模/模数电路板,以扩展原型系统的原型能力。Rocket I/O接口支持射频模块的接入。原型验证系统的设计细节可参见参考文献[6]。
SCSD可以加快SoC原型验证的描述和实现,但无法实现诊断和设计的划分。本文在数次试验的基础上,提出了改进的原型实现流程,并重新设计原型电路板。然而,这只是为SoC原型验证系统的开发找到了一个很好的方向,并作了一些基础性的研究工作。要实现它,还有很多工作要做。
参考文献:
1 Natalino Busá, Ghiath Alkadi etc. al. RAPIDO A Modular,Multiboard,Heterogeneous Multiprocessor, PCI Bus Based protoping Framework for the Validation of SOC VLSI Designs. Darmstadt, Germany: Proceedings of the 13 th IEEE Inter-national Workshop on Rapid System Prototyping (RSP´02), 2002
2 Celoxica. DK Design Suite Datasheet. Celoxica,2003
3 Celoxica.Introduction to the Celoxica Platform Developer´s Kit (PDK). Celoxica,2003
4 Celoxi
ca.RC1000 Software Reference Manual.Celoxica,2003
5 Celoxica.RC1000 Hardware Reference Manual.Celoxica, 2003
作者:清华大学微电子所 马凤翔 孙义和
文章评论(0条评论)
登录后参与讨论