当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于SystemC 的系统验证研究和应用

摘要 : 视频编解码芯片中运动估计与补偿单元(MECU)的算法复杂,使用传统硬件描述语言建立模型和模型验证的过程繁琐耗时,为了缩短芯片验证时间,本文针对MECU 模块提出了基于SySTemC 语言的具体系统级验证流程。在整个芯片验证工作中,为了实现MECU 模块和低抽象级的其它外部模块协同验证,本文提出的验证流程利用了SystemC 能在不同抽象级建模的优势,对MECU 模块的数据传输控制端口进行细化。仿真结果表明:与使用传统件描述语言验证方法相比,基于SystemC 的验证流程简单有效,大大缩短了建模与验证时间。

1 引言

当前集成电路制造技术迅速发展,SoC(system-on-chip)设计已经成为集成电路设计的发展方向。随着SoC 设计的复杂度提高,在开发SoC 的过程中,验证工作越发重要和繁重,所占的开销占据总开销的40%~70%。SoC 设计的验证过程不但影响到芯片的成功设计,而且影响到芯片的上市时间,因此验证的正确性及其耗时的缩短成为了SoC 设计的关键。

传统设计中,系统级设计使用高级语言C/C++等描述功能模块的算法,验证的时候使用硬件描述语言(VHDL 或Verilog HDL)。系统验证之前必须通过手工将原始的C/C++代码转换为VHDL/Verilog HDL 代码,这个转换过程耗时大并且容易产生错误。在系统验证过程中,使用传统硬件描述语言对复杂模块的验证需要耗费大量时间。

为了提高系统级验证效率,本文针对视频芯片中的运动估计与补偿单元模块(MECU)提出了基于SystemC 的验证方法和流程。该方法大大缩短了系统验证的搭建时间和系统验证过程的时间。本文利用SystemC 支持设计者在不同抽象级建模的特点,给MECU 添加了低抽象级接口,使该单元能够和视频芯片内部其它模型通讯以便完成整个芯片的系统级验证。本文最后的仿真结果证明了该设计流程的有效性。

2 SystemC 语言

SystemC 是由C++衍生而来,本质是在C++的基础上添加了硬件扩展库和仿真核,这使SystemC 可以在不同抽象级对复杂电子系统建模。它既可以描述纯功能的模型和系统体系结构,又可以描述软硬件的具体实现,进行软硬件的协同验证。

SystemC 包括以下建模元素:

  *模块(module) 相当于C++的类定义,是一个可以多层次的实体。一个模块可以嵌套其他模块和一些进程,是SystemC 里面最基本的单元。

  *进程(process) 用来描述模块的功能,包含于模块中。进程是由事件(event)来触发的,这种触发的方式使进程可以并行执行,实现了硬件系统的并行特性,SystemC 包括三种不同的进程。

  *接口(interface) 定义了一组方法实现目标,但是不实现这些方法。

  *通道(channel) 实现了接口定义的方法,分为基本通道和层次化通道。

  *端口(port) 总是与一定的接口类型相关联,端口只能连接到实现了该类接口的通道上,通过端口模块和进程来访问通道内定义的接口方法。

  *信号(signal) 用来实现各个进程之间的通讯。SystemC 提供了多种信号格式来满足从寄存器传输级(Register Transmit Level, RTL)到功能级等不同抽象级的模拟。

  *事件(event) 用来触发各个进程的开始以及暂停,通常多个事件组成一个敏感列表(sensitive list)共同决定进程的状态。

  *时钟信号(clock) 时钟在同步电路设计中是一个非常重要的角色,本质上它是一种特殊的信号,为仿真过程提供了时间基准。

上述建模元素使得SystemC 能够顺利的搭建硬件平台。

3 基于SystemC 的建模方法

系统级验证过程中,对于复杂算法模型只需要建立参考模型(Reference Models),搭建验证平台,观察模型的一些重要功能(算法、进程等等),不需要了解RTL 层面的细节。利用事务级建模方法(TLM, Transaction Level Modeling)技术很容易建立参考模型。一个完整的芯片是由多个功能模块组成,采用SystemC 对复杂算法单元建立模型能使功能验证时间缩短,而一些简单模型的验证需要在RTL 层面。为了实现不同抽象级模块通讯,本文对使用SystemC 建立的复杂单元模型进行接口精细化处理。本文对实际芯片单元提出的SystemC 建模验证流程如图1 所示:

图1 SystemC 验证流程

验证流程描述:

(1)搭建SystemC 系统级模型:

使用基于C++的SystemC 能很容易搭建系统级模型。利用SystemC 对所要实现的系统功能进行描述,主要描述系统的算法、结构等,不考虑每个时钟周期寄存器数值改变。只有针对复杂算法单元使用SystemC 建模,才能够发挥SystemC 节省建模和验证时间的优势。

(2)系统级功能仿真:

利用支持SystemC 的工具对建立的模型进行仿真验证系统功能,观察结果并且不断进行反馈修改直到仿真正确。

(3)精细化接口:

精细化接口是多模块验证过程的关键。因为在对单个复杂单元系统级验证的时候,抽象级很高,只需要考虑其功能性。多个模块验证时外部单元模型可能在RTL 级别构建,这时需要利用SystemC 能在不同抽象级建模的优势,在一个较大的模块中实现不同的抽象层建模,即在和外部模型接口处将抽象级降低到RTL 级。精细化接口的过程需要根据外部模块接口调节输入输出数据位宽、设置敏感事件列表,并且严格按照外部时钟控制数据的传输,保证顺利和外部模块通讯。

(4)协同验证:

验证多个模块共同工作的正确性,这时候发现错误就能够及时进行设计的修改,提高芯片设计效率。验证结果正确的模块就可以进行后端流程,建立的验证平台也可以作为外部驱动的测试平台进行软件的验证。

4 应用实例

4.1 MECU 原理

广泛应用在手机中的视频编解码芯片编解码流程包括了DCT 变换、量化、VLC 编码、反DCT 变换,反量化、运动估计、运动补偿、插值计算、边缘填充等步骤,其中运动估计与补偿部分是实现压缩图像时间冗余度的重要环节,由于其算法的复杂性该部分占据了大部分的编解码时间, 对MECU 模块的验证是整个芯片验证中工作量最大的环节。

本文中MECU采用MVFast(Motion Vector Field Adaptive Fast Motion Estimation) 算法实现ME/MC:ME 部分在图像编码过程中实现运动预测,计算出运动矢量,同时完成宏块编码类型(MBmode)判断和运动矢量编码类型判断;MC 部分在图像编码过程中,根据输入各块的运动矢量完成YUV 的插值处理输出运动参考块数据和当前处理块数据;在图像解码处理中完成插值处理输出参考块数据。

4.2 模块搭建

采用Verilog 语言直接建立MECU 模型用于芯片设计时,由于MECU 算法复杂,建模过程耗时巨大。Verilog 建模期间系统验证工程师需要等待模型建立完成,这样增长了芯片设计周期,另一方面对使用Verilog 建立的MECU 模型验证耗费时间长。由于基于SystemC的建模时间相对Verilog 建模时间缩短3~4 倍,验证过程具有快速性优势,本文尝试采用SystemC 进行前期建模和验证工作。

依据本文第二部分介绍的验证方法,首先建立MECU 硬件仿真模型进行功能验证,然后在这个硬件模型正确的基础上进行外围模块设计的验证,以实现整个芯片的系统级验证。

第一步利用SystemC 对ME 和MC 分别进行系统级建模。在建立ME 和MC 这两个模块时,只需要实现ME 和MC 各自算法功能和两个模块之间的通讯,因此不需要按照精确的时序建模。在C 语言实现MVFAST 算法模型基础上,用SC_MODULE 将ME 和MC 各自编写成可仿真的模块MEU 和MCU,内部的功能利用Process 来实现。模型建立之后,搭建平台进行功能验证,观察数据经过ME 和MC 之后的变化是否完全符合算法要求。

MEU 和MCU 模型功能验证结束之后需要协同芯片中其它模块进行验证,由于MECU的外围模块是在RTL 级建模,并且严格按照时钟进行数据处理,因此必须对MECU 接口进行精细化。本实验添加了SYS_IF ,ZSP-IF, DMA-IF 和BPU-IF 模块以实现与外围模块通讯,这些接口模块包括和外围模块相匹配的输入输出端口,并且由时钟严格控制数据的传输。

最终建立的SystemC 模型和外部环境定义如图2 所示。

图2 MECU 的SystemC 模型

4.3 接口模块描述

(1)SYS_IF 提供MECU 的外部时钟以及复位信号接口,这两个控制信号对MECU 内部所有模块有效。

(2)MEU 和MCU 的触发由外部ZSP 产生的开始信号来控制,在MECU 内部包含的控制寄存器也由ZSP 来控制。ZSP_IF 模块的添加实现了ZSP 对MECU 进行读写控制。

(3)MECU 模型编解码过程需要处理的数据是通过ZSP 控制DMA 提供,因此添加DMA_IF模块实现和DMA 通讯,搬运数据以供MECU 处理。

(4)最终MC 完成产生的数据,通过BPU_IF 模块传输出到BPU 中(用于软硬件结果对比)。

从上述结构可以看出,MECU 包括了六个模块:ME,MC,SYS_IF,ZSP_IF, DMA_IF 以及BPU_IF。ME 和MC 作为核心功能模块实现了MECU 单元的算法,SYS_IF,ZSP_IF, DMA_IF以及BPU_IF 四个接口模块由时钟严格控制数据的传输,实现和外围模块通讯功能。

5 仿真结果分析

利用上述SystemC 模型进行仿真验证,采用一组352*288 像素的图像作为仿真对象,使用Mentor 公司的Modelsim 作为仿真工具。首先建立测试平台,对外部ZSP,DMA 进行模拟以提供控制信号和处理数据,然后利用Modelsim 进行仿真验证和时序分析。Modelsim得到的部分波形图如图三所示:

图三 MECU 验证部分波形图

仿真得到的数据结果完全符合算法的期望值,证明了搭建模型的正确性。时序分析结果表明:使用SystemC 对图像的一个宏块(16*16 像素)进行编码平均需要680 个clock cycle,其中ME 和MC 部分占用11 个clock cycle;用传统硬件描述语言Verilog 建模进行验证一个模块的编码平均需要3000 个clock cycle,其中ME 和MC 占据2200 个clock cycle。将基于SystemC 和Verilog 两种建模方法的ME 和MC 验证时间相比较发现:采用SystemC 进行纯功能性验证时间比使用Verilog 验证时间缩短了约200 倍,因此验证时间上的优势是显著的。

6 总结

本文对 SystemC 验证方法进行了深入的研究,针对视频编解码芯片MECU 单元的验证提出了使用SystemC 验证的建模流程,通过端口细化方法使芯片能在不同抽象级建模验证,这种方法在当前国内验证方面使用不多。仿真结果证明了该流程的有效性,和使用传统硬件描述语言验证相比时间显著缩短。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭