基于SystemC的事务级协同验证方法研究

来源 :电子与电脑 | 被引量 : 0次 | 上传用户:jekiyi
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  随着深亚微米集成电路技术的发展,系统芯片上将集成越来越多的IP核,这些IP核不仅包括为数众多的存储器模块、控制电路模块、时钟电路模块、I/O模块和A/D、 D/A模块,还包括很多MCU、MPU和DSP,基于IP核的软硬件协同设计技术已经成为系统芯片发展的必然趋势。软硬件协同设计要求系统功能一部分由硬件实现,而其余部分则由软件实现,系统硬件实现的部分通常是由VHDL、Verilog等硬件编程语言描述其模型,然后进行仿真验证,最后利用EDA工具综合成门级网表并进行版图级的布局布线,而系统软件实现的部分则通常由C、C++等高级语言描述,并最终由软件编译器编译通过。由于系统芯片软件、硬件采用不同的设计方法和描述语言,这给验证带来了巨大的挑战,传统的软件、硬件分开验证的策略并不适合软硬件协同设计的要求,这就需要软硬件协同验证来解决上述问题。
  系统芯片复杂度的增加使验证所耗费的周期愈来愈长,成本愈来愈高,据统计,验证已经占到整个芯片设计工作的70%甚至更多[1],为了缓解芯片上市日益紧迫的压力,工业界迫切需要新的验证方法和验证技术,事务级协同验证将是一个很好的选择。基于此,本文将首先介绍一下当前系统芯片验证的主要方法,通过对目前验证方法的分析和评估,提出事务级建模及事务验证策略,文中还将说明事务级设计及验证语言SystemC并在最后简单介绍一下SCV验证库。
  
  当前主要验证方法介绍
  
  系统芯片的验证主要可以分为形式化验证和基于仿真的验证,其中形式化验证方法包括定理证明技术、模型形式检查和等价性形式检查,基于仿真的验证则包括快速原型系统、软硬件协同验证等等。形式化验证与仿真验证的最大区别是形式化验证不需要测试平台(Testbench)和测试向量,虽然形式化验证能够达到较快的验证速度和很高的验证覆盖率,但形式化验证没有考虑设计对象的时序信息,所以该方法只能成为仿真的一种补充,本文后面介绍的事务级验证属于仿真的一种。
  目前,系统芯片设计普遍采用IP核复用和基于平台的设计思想,这些复用的IP核包含了相当多的可编程逻辑资源,例如微处理器、数字信号处理器等等,软硬件协同验证能够帮助开发人员在硬件原型生产出来之前就能进行软件的设计和调试,从而大幅度削减芯片的开发周期。软硬件协同验证同时验证系统的软件和硬件,主要分为基于软件的协同模拟技术和基于硬件的协同仿真技术。目前基于FPGA硬件验证平台的协同验证技术正被越来越多的验证工程师采用,笔者所在实验室购买的奥腾公司Nexar2004+NanoBoard开发板正是软硬件协同验证的理想平台,该开发组件中包含了51系列及ARM系列单片机的软核,用户通过将硬件资源和软件资源下载到NanoBoard开发板上的FPGA中,可以实现软硬件的协同验证。
  传统的软硬件协同设计中硬件模块是由Verilog等硬件编程语言描述,软件模块则由C、C++等高级语言描述,在基于FPGA的协同验证中,由于FPGA中包含了可编程的软核甚至是硬核,再加上FPGA本身的门电路可以综合成系统所需的硬件,所以利用FPGA开发平台进行协同验证是个不错的选择,但FPGA验证平台通常价格比较昂贵,同时开发人员也不容易观察到MCU,DSP等微处理器内部的状态位和断点信息。将系统芯片硬件模块的RTL描述提升到事务级,并通过SystemC在统一的环境下进行软硬件协同设计与验证能够很好的解决由于系统芯片软件、硬件采用不同设计语言所带来的验证困难。研究表明,在事务级进行验证可以大幅度提高设计生产率总体水平,下文将具体介绍事务级建模及验证方法。
  
  事务级建模及验证方法
  
  事务[2]是指在系统模型中两个组件之间通过接口所做的一次数据的交换或控制的传输,事务可以是读写某个存储单元的简单事务,也可以是数据包传输这样的复杂事务。
  


  图1 基于事务的验证流程
  
  事务级建模(Transaction Level Modeling,TLM)最早出现在系统级语言及建模领域,文献[3]首先定义了通道(Channel)的概念,这里通道将通信和计算分开,下文将会阐述通道和接口是事务级建模的基础。文献[4]具体介绍几种事务级建模方法,其中总线功能模型(Bus Function Model,BFM)应用比较广泛,其它如总线仲裁模型、周期精确的计算模型等则相对受关注程度较小。总线功能模型用来模拟总线的功能,其作用是把底层总线的时序封装起来,向上层提供一个统一的接口,使上层不用关心底层具体的实现细节。在事务级建模中,总线功能模型也可以理解为下文将要阐述的事务器。
  事务级模型中的模块可以是硬件模块,也可以是软件模块。事务级模块之间的通信和RTL级模块不一样,在RTL级中,模块之间的通信通过管脚进行,而在事务级中,模块之间通过函数调用的方法进行通信。所以说事务级比RTL级更抽象,层次更高。
  基于事务的验证(Transaction-based Verification,TBV)包括测试对象(Design Under Test,DUT)、事务器(Transactor)和测试程序,其验证流程如图1所示。
  上述验证流程中,测试对象是基于信号的RTL级硬件模块,事务器则是一系列函数的组合,而测试程序代表用来产生验证所需事务的代码。验证流程中的核心模块事务器可以产生事务所代表的信号变化,并与测试对象的实际管脚相连。一般来说一个设计往往具有不同的接口,因此在一个验证环境中就需要有不同的事务器以产生不同的测试向量。测试程序、事务器一般用HDL语言或者C语言来描述,而测试对象则通常由Verilog HDL或者是VHDL描述,由于SystemC能够描述系统的软件和硬件,这里的3个模块都能用SystemC在统一的环境下进行描述。SystemC本身所具有的通道、接口的概念也正提供了事务级建模的理想平台,下文将具体介绍SystemC以及基于SystemC的事务级验证方法。
  
  基于SystemC的事务级验证方法
  
  SystemC是以Synopsys公司为首的OSCI (Open SystemC Initiative) 组织在1999年提出来的一种基于C++的建模平台。2005年12月12日,IEEE委员会批准SystemC为IEEE1666标准,目前SystemC的最高版本为SystemC2.2,有兴趣的读者可以在文献[5]中查阅关于SystemC最新的研究成果并下载相关的库文件。
  SystemC是建立在C++基础上,它保留了C/C++的优点,同时将并发、定时事件、重启机制等概念引入了C++,使其可以描述硬件。简单的说,SystemC是在C++的基础上增加了一个能对硬件不同抽象层次描述和仿真的C++类库和一个不依赖于任何硬件仿真器的仿真内核。对于描述传统硬件的门级、RTL级、系统级等各个抽象层次,SystemC都能进行很好的建模和仿真。SystemC用一种语言就能统一的描述软件和硬件,非常适合系统芯片软硬件协同设计的需求,其优点还体现在理想的行为模型仿真效率、与RTL模型的无缝连接、对接口电路混和模型的支持等等。基于SystemC的设计流程如下图所示:
  SystemC中有一些关于事务级建模很重要的概念:接口(interface)、通道(channel)和端口(port)。在SystemC中,接口是一个C++抽象类,抽象类中定义了只有函数声明而没有函数体的纯虚函数。如下所示:
  #include
  template
  class read :virtual public sc_interface
  {public
  Virtual void read(unsigned int address,T&data)=0;
  };
  通道是接口类的子类,它可以继承一个或者多个接口,通道具体实现接口中定义的函数方法,通道本身又可分为基本通道和分层通道,其中分层通道允许设计的通道中包括模块、进程和其它通道。端口用来声明使用的接口,然后连接到实现了该类接口的通道上。在实际使用时,端口和接口的区别不大,可以把端口理解为特殊的接口。直观的讲,接口和端口说明了一个模块的输入和输出情况,而通道对输入输出端的功能进行具体实现。这种接口的定义和实现分开的方法称为接口方法调用(Interface Method Call)。SystemC最大的优势在于可以将模块的功能部分和通信部分分开,这也是其进行事务级建模的基础。在利用SystemC设计的模块中,模块之间的通信不是通过管脚信号来进行,而是通过接口里定义的方法来进行,模块间的通信的方式由信号变为函数调用,因此仿真速度得到了大幅度的提高。据统计,同一建模对象的SystemC事务级模型的仿真速度大约是SystemC RTL级模型的100倍[6]
  


  图2 基于SystemC的设计流程
  
  利用SystemC的事务级验证首先建立在利用SystemC进行事务级建模的基础上,硬件模块和软件模块都可以直接用SystemC编写,软件模块链接处理器的指令集仿真器后与硬件模块在统一的开发平台上即可进行软硬件的协同验证。这里指令集仿真器也采用事务级模型,其可以由用户自行设计或由EDA厂商提供。基于SystemC的系统芯片设计可以在很多开发平台上进行,例如基于Windows平台的VC++环境[7]以及基于Linux平台的GNU C++环境,现在也有越来越多的商业软件开始提供SystemC的开发环境,例如Synopsys的CoCentric System Studioy以及Cadence Incisive平台等等。开发人员利用SystemC的标准库一般也能有效地完成验证工作,而SCV(SystemC Verification Standard)的提出则是为了进一步增强SystemC语言的验证能力,下面简要介绍一下SCV。
  SCV是一种基于SystemC类库的C++类库,是对SystemC标准库验证能力的扩展,其目前的最高版本为1.0p2。SystemC验证库在随机验证、数据内查、事务记录等方面进行了有效增强。为了区别SystemC库,SCV标准的类和函数均使用前缀scv_。SCV验证库对随机测试提供了很好的支持,文献[8]中提供了一个利用SCV随机测试的方法验证FIFO结构的实例,结果表明基于SCV的验证大大提高了仿真效率。关于SCV验证库的具体内容有兴趣的读者可以参考文献[5]
  
  结语与展望
  
  软硬件协同设计要求系统在更高的层次进行仿真和验证,基于SystemC的事务级建模和验证无疑最符合协同设计的需求。本文对SystemC以及事务级建模和协同验证方法进行了介绍,目前,SystemC的普及程度远没有Verilog和VHDL广泛,但相信随着事务级验证相关EDA工具与方法的成熟,越来越多的公司和用户将采用事务级建模和验证方法进行产品开发,SystemC以及SystemC验证库还处于不断的更新中,可以预见的是以SystemC为基础的事务级建模及验证方法将成为电子系统级设计的重要发展方向。
  
  参考文献
  [1] Prakash Rashinkar,Peter Paterson,LeenaSingh.System-On-a-Chip verification methodology and techniques[M].Kluwer Academic Publishers,2001
  [2] Sudeep P.Transaction Level Modeling of SoC using SystemC2.0.Synopsys User Group Conference’02.2002,Bangalore.Kluwer Academic Publishers
  [3] D.Gajski et al.SpecC:Specification Language and Methodology.Kluwer,Jan 2000
  [4] Lukai Cai,Daniel.Transaction level modeling:an overview.CODES+ISSS2003.Newport Beach,CA,USA,2003
  [5] www.systemc.org
  [6] Pete Haedee.Getting Hardware and Software to Speak the same language.Dedicated Systems Magazine,Vol2,2002
  [7] 陈曦,徐宁仪.SystemC片上系统设计.北京:科学出版社,2004
  [8] 王锦程等.SCV及其在SOC验证中的应用.武汉大学学报,2004,4:116-119。
其他文献
风河公司对于2007年半导体产业的景气预期是非常乐观的。在亚太地区,由于中国大陆的需求持续旺盛,市场进一步趋于成熟,特别是2008年北京奥运会和2010年上海世博会的基础设施都必须抓紧完善,这些因素将会显著拉动市场需求。  2008年北京奥运为IT产业带来的商机是全方位的。在风河公司看来,2008年北京奥运一方面是智能化、网络化电子产品的大检阅,另一方面更是今后很多年内电子产品应用趋势的风向标。 
期刊
x264是目前被全世界各地专业人士下载次数极高的原始程序代码。x264是Linux社群的杰作,它官方网站位于Videolan组织中(www,videonlan.org),它同时嘉惠了全球许多厂商和软件工程师。通过它,我们可以揭开H.264/AVC的大部份技术秘密,加快视频产品的应用与开发速度。这是过去H.263标准在公布之后几年内,未曾有过的体验。    x264的特性    2005年12月26
期刊
在未来3年中,中国半导体市场将继续以倍于整个半导体产业发展的速度高速增长,据有关资料显示,中国的半导体产业将占全球半导体市场20%的份额,约1,750亿美元。庞大的市场潜力吸引众多半导体厂商,使得国际大厂纷纷制定紧急方案,把中国纳入他们全球战略的一部分,以充分利用中国市场的巨大商机。  然而,从某个角度而言,这也是一种“竞争威胁”,因为中国市场正逐渐步入成熟期,且各路好手纷纷抢进的结果,势必将与其
期刊
Avago MGA-71543是采用SOT-343封装,内建旁路开关的GaAs MMIC低噪声放大器(LNA, Low Noise Amplifier)。当元件进入旁路模式时,其电路几乎不耗电,并能重现LNA的输入与输出阻抗,这个特性使得它可由放大器模式转换到旁路模式时拥有最小的不匹配情况,同时也可在两个模式下使用相同的匹配电路,这对放大器安排在双工器或滤波器之间的应用特别重要。  这篇文章将讨论
期刊
近来,有三大趋势正驱动亚洲半导体市场的惊人增长。首先是国际间因更快、更好的通信设备所带来的常态商业需求,2006年中国已超越美国,成为世界最大的网络连接市场。使用宽带连接的人口已达4,500万之多,使用DSL宽带连接的使用者也有3,500万人。而数据处理依然是最大的区域性半导体细分市场,通信预料将有最高的增长率,2006年-2010年的年复合增长率约在13.9%左右。  其次是即时通信需求已经引燃
期刊
时下,从分组网络向基于IP服务部署的转换正在重新整合有线和无线接入架构。然而,这种转变是一个渐进的过程,不可能一蹴而就。在全球范围内,宽带接入和网络通信设备的设计人员和制造商面临着生产适用的和可以升级的设备,以跟上不断增长的数据频率需求的压力。与此同时,他们还必须在一个成本敏感的竞技场中加倍努力,需要开发出支持多种协议——通常称之为交互工作方式的灵活的设备。随着行业转向基于信息包的网络通信,设备供
期刊
3月23日,电影《王牌特工:特工学院》的主演科林·费斯亮相北京。这是54岁的科林第一次来到中国,吃过北京烤鸭并爬完长城后,科林用充满“炫耀”的语气说:“来到中国,家人都很羡慕我。”此次,科林·费斯在片中扮演一位身怀绝技的特工哈里·哈特,同时也是一位很有生活品味的英国绅士。被问及最爱影片中特工的哪个装备时,科林·费斯尽显英伦绅士范儿地回答“是西装”,因为“不管它能不能防弹,它都是一个绅士的必备配件”
期刊
GPRS是通用分组无线业务 (General Packet Radio Service)的英文简称,是在现有的GSM系统上发展出来的一种新的分组数据承载业务。GPRS网络在短消息方面的应用具有不需拨号、价格低廉、传输可靠、覆盖范围广等特点,适用于需频繁传送小流量数据和不宜铺设线路的应用场合。GPRS远程监控系统是利用单片机组成的数据监控系统,通过GPRS网络以短消息的形式完成远程数据的传输,即在传
期刊
一、流于形式的户外锻炼  户外活动是幼儿在园一日生活的重要一部分,《3-6岁儿童学习与发展指南》(以下简称《指南》)和《幼儿园教育指导纲要(试行)》中都指出:幼儿每天的户外活动时间一般不少于两小时,其中体育活动时间不少于1小时。  除了体育活动,幼儿在园的户外活动还包括:户外锻炼、早操、餐后散步、户外游戏等,而“户外锻炼”因其亲自然、接地气、激兴趣等特点而深受幼儿的喜爱。  幼儿在户外锻炼时,各项
期刊
著名的瑞士心理学家皮亚杰,把儿童初生到两岁称为认知发展的“感知运算阶段”,认为这是认知发展的第一个阶段。在这个阶段,儿童依靠从感官得来的信息对环境刺激做出反应。笔者借鉴自助餐的操作模式,尝试研究科学感知觉活动,构建快乐体验馆(幼儿园)、感知部落格(家庭)、流动俱乐部(社区)三条通道,运用酝酿、实践、调整的方式来探索自助式亲子主题活动内容,让婴幼儿更全面地促进科学能力的发展。  一、问题的提出  (
期刊