APP下载

一款视频解码芯片的硬件仿真加速

2010-12-21林孝康

电子器件 2010年5期
关键词:仿真器加速器解码

杨 津,张 盛,林孝康

(清华大学深圳研究生院, 广东 深圳 518055)

目前,动态的模拟仿真仍然是主要的功能验证方法,即首先产生一系列的测试向量,然后将测试向量加载到设计上(DUT)通过HDL模拟器得到测试结果,将这些结果与参考结果相比较,以此来验证设计的正确性。但是随着设计规模的急剧增大,使用软件RTL模拟器进行仿真时仿真速度会变得非常低,在Pentium IV的设计验证中Intel公司使用了6 000个节点的PC Farm进行仿真,而测试的向量不过相当于实际系统运行2 min所执行的测试向量[1]。

尽管使用FPGA可以获得快速的运行速度,但是使用FPGA进行仿真不能提供设计信号的百分之百可见.而通常需要逻辑分析仪这样的设备进行调试.可观测信号的时间窗口范围也很小,这给调试带来了很大的困难。硬件加速器很好的平衡了计算速度和差错能力,因此在海外IC设计公司中被广泛使用[2]。

本文根据视频解码芯片的需要,结合硬件加速器的特性,对视频解码芯片使用Cadence Xtreme硬件加速器进行硬件仿真加速,取得高于40倍的加速效果。

1 系统结构

图1是视频解码芯片的功能框图。芯片具有一条32 bit的总线和一条64 bit的总线。 32 bit的总线连接System CPU、Audio CPU及一些外围设备。System CPU负责运行操作系统和整个芯片的控制,而Audio CPU负责对语音进行处理。外围的设备则包含了一些接口控制器,如GPIO, UART, IDE等等。

图1 视频解码芯片功能框图

64 bit的总线连接用于视频解码的MPEG2 和H264的IP,以及显示控制单元等等。两条总线通过一个32到64的桥进行连接。芯片系统CPU的运行速度为200 MHz,设计规模约为350万门。

芯片详细的结构如图2所示。

图2 芯片具体结构图

芯片分为Core_SYS、Core_Vedio和Core_Peri三个部分。其中, Core_SYS主要是运行操作系统的CPU,而Core_Vedio则是包含了MPEG2及H264等用于视频解码的IP核,以及显示控制单元DCU。所有的视频解码及显示控制的数据均存入1 G的64 bitDDR2 RAM中。Core_Peri主要包含了音频CPU及一些外围接口控制器如Flash_ide, Ethernet等等。

2 视频解码芯片的硬件仿真加速

2.1 硬件加速器的加速方式

Xtreme硬件加速器通过把IC设计进行映射,把可综合的设计放入到硬件加速器中进行仿真,不可综合的部分留在软件中仿真以提高仿真的速度。

硬件加速器的仿真方式主要有三种[3]:

(1)软件仿真方式;

(2)仿真加速方式;

(3)STB(Synthesizable Testbench)模式;

表1分析了几种硬件仿真方式的特点和不足。

表1 几种硬件仿真方式各自的特点和不足

由于视频解码芯片尚处于设计验证阶段,且包含模拟电路,由表中可以看出,视频解码芯片适合使用硬件加速的方式进行硬件加速。

2.2 硬件加速器的使用流程

硬件加速器的使用流程如图3所示。在Compile阶段,硬件仿真器的控制软件对verilog代码进行语法分析,然后生成文件名为WORK的文件夹,把编译后的数据放入到WORK文件夹中。在完成信号分析和生成FPGA代码后,把这些数据放入文件名为AxisWork的文件夹中。同时,生成可执行文件vlg,通过运行vlg开始进行仿真。

图3 硬件加速器流程图

2.3 视频解码芯片的硬件加速

视频解码芯片硬件仿真加速主要的难点是如何获得更快的仿真速度。

硬件加速器的仿真时间主要由三部分决定:①硬件仿真器部分运行速度和需要的时间th;②软件仿真器中部分的运行速度和需要的时间ts;③软件仿真器和硬件仿真器之间信号和数据传递需要花费的时间tt。

由于硬件仿真器的运行速度一般可以达到几百,千赫兹, SA方式的运行速度主要取决于上面的第②项ts和第③项tt。

显然, ts和tt不是独立的, tt越大,则ts也越大。因此,并不一定是放入硬件加速器中的模块越多,仿真速度就越快,我们要尽量减少仿真系统中硬件和软件之间的数据交换。在加速过程中,要针对设计的特性具体问题具体分析,才能获得相对此设计的比较快的仿真速度。

2.3.1 视频解码芯片的软硬件划分

在进行软硬件划分时,需要优先考虑的是尽量减少仿真系统中硬件和软件之间的数据交换。考虑到芯片仿真开始时需要不断从测试向量文件读取数据到Flash Memory中,将Flash Memory放入硬件加速器将会增加大量的软硬件之间的通信,降低仿真速度,因此,我们将Flash放入软件中进行仿真,加快仿真速度。图4是具体的软硬件划分示意图。

图4 软硬件划分示意图

2.3.2 视频解码芯片的编译准备

在编译过程中, Xtreme的编译器会将本来应该放入硬件加速器中但又不可综合的模块指定成嵌入式软件模块,并将该模块留在软件中运行。嵌入式模块的存在会增加软件仿真器的负担,并增加软件仿真器和硬件仿真器之间的数据交换,造成硬件仿真速度的下降。因此,在确定了仿真模式及软硬件划分之后,通常要进行模型的转换工作。

通过分析Xtreme的编译报告,我们发现,设计中存在了大量的嵌入式模块,而进一步的细分,嵌入式模块主要来自于设计中不可综合的Memory及一些不可综合的IP。因此,我们需要完成下面的工作。

(1)设计内部Memory模型的替换

大部分设计使用由IC生产商提供的Memory单元模型,而这些模型很多是软件仿真准备的,不可综合。Xtreme提供了Memeory primitive,通过这个模块可以模拟ROM的功能。 Xtreme memory primitive可以直接用RCC上板载的存储空间实现,提高性能。视频解码芯片的Core_Peri中使用了较多的Artisan Memory,而这些Memory都是行为级模型,不可综合,因此,我们需要对设计中的Artisan Memory用memory Primitive进行改写。

(2)不可综合IP的处理

由于DDR2的IP仅为仿真模型,不可综合,极大的影响了仿真速度,因此需要对这个IP进行处理,由于DDR2功能复杂,自己改写将花费大量的时间,且不能保证正确性, 因此, Xtreme可综合的DDR2代码由Cadence提供。

(3)Testbench的修改

Teshbench对设计结果进行检测并记录到文本中,这个监测记录的task每个时钟周期都会运行一次,因此,在软件和硬件之间存在大量的数据交换,将会严重影响仿真速度,所以我们需要考虑对testbench进行修改,减少task的调用次数。

基于上述考虑,我们取消了ap_ba22_monitor和uart_monitor,并对设计进行修改,增加了触发ba22_monitor的信号,改为事件触发monitor,极大的加快了仿真速度。但是,这样的修改会导致监测的信号太少,不利于判断仿真结果的正确性,同时,不容易对错误进行定位。因此,这个修改并不适用于设计验证阶段,但适用于芯片的全功能验证阶段。根据上面的特性,我们在设计验证阶段,采用有monitor的形式monitor_on,可以方便的进行错误定位和数据监测,而在芯片全功能阶段,我们使用修改后的模式,即monitor_off模式,保证仿真具有较快的速度。

完成上述工作,就可以进行编译,然后将编译好的数据下载到硬件加速器中,进行仿真。

3 视频解码芯片的加速结果

硬件仿真系统的加速结果见表2。在Monitor_on模式下,可获得约为4倍的加速,而在Monitor_off的模式下,获得了40倍以上的加速。

表2 硬件仿真系统的加速结果

4 结论

本文根据视频解码芯片的需要,结合硬件加速器的特性,对视频解码芯片使用

Cadence Xtreme硬件加速器进行硬件仿真加速,取得高于40倍的加速效果。硬件加速器强大的仿真速度和查错能力无疑为大规模设计的功能验证提供了一个非常好的解决方案,对比于现在广泛使用的软件仿真和FPGA的方法,它是具有无可比拟的优势的。可以预见,随着芯片设计规模的增大,硬件加速器的使用将可能成为大规模设计功能验证的标准流程。

[ 1] Bob Bentley.Validatinga Moden Microprocessor[C] //17th Intemational Conference on Comput-Aided Verification:CAV2005, July, 2005.

[ 2] 林丰成,竺红卫,李立.数字集成电路设计与技术[ M].北京:科学出版社, 2008.

[ 3] Cadence.Xtreme User Guide[S] .Version 6.3.1, 2006.

猜你喜欢

仿真器加速器解码
莫比斯加速器众创办公空间
知识快餐店 科学加速器
《解码万吨站》
全民小康路上的“加速器”
AI仿真器将大大提高科学领域的仿真模拟速度
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于多用户无线仿真器系统的研究
天文测量仿真器模拟星图精度分析