可重用组件

2024-08-07

可重用组件(精选四篇)

可重用组件 篇1

仿真系统开发中普遍存在可重用性不强的问题, 使得软件开发效率较低[1]。为解决上述问题, 提出了一种应用在虚拟装备仿真软件开发中的组件设计方案。

当前软件开发中普遍采用的组件技术有C O R B A、C O M/DCOM、EJB等[2]。应用组件技术, 开发专用于虚拟装备仿真软件开发的组件可以提高仿真软件的开发效率。

在虚拟装备仿真软件的开发中, 首先要对仿真对象装备控制台进行分析建模。各种装备控制台由不同操作面板组成, 面板由各种元器件组成, 包括显示器、按钮、开关、旋钮、指示灯、仪表等[3]。采用面向对象的思想, 首先将属性及行为相同的元器件抽象成类, 定义类的各种属性和行为;然后, 将这些类打包生成动态链接库, 使其成为具有独立对外提供服务功能的个体, 即组件。

仿真组件以MFC类库为基础, 在系统结构上位于应用软件与MFC类库之间, 系统结构图见 (图1) 。

2 组件相关定义

下面给出在支持虚拟装备仿真的组件设计相关定义。

定义1虚拟装备VE是由N个虚拟组件VEle, 按照一定的结构关系和功能逻辑构成的实体。

定义2虚拟组件VEle是指构成虚拟装备的单元, 具有独立的功能和特性, 能够单独与外界的元素进行交互。

其中:index表示组件索引号, Graph Att表示组件图形信息的集合, Phy Att表示物理属性的集合。

定义3组件图形信息集合Graph Att表示组件的二维图像与图形信息, 用来在虚拟装备中描述一个组件的外观可视化信息。

定义4组件物理属性Phy Att是指虚拟装备环境中组件的物理性质。

定义5行为是对虚拟组件自身和相互之间变化的描述, 行为Act可以定义为七元组。

其中:Act ID表示行为序号, Actname表示行为名称, Actsender表示行为发出者, Actreceiver表示行为接收者, Actvalue表示行为取值。Actparam, Actextendparam表示行为参数。

定义6行为触发条件定义为:

其中, Inter Cond表示组件内部条件, Envir Cond表示组件环境条件。

3 组件类设计

组件的基本功能是接收输入数据, 对输入数据进行处理, 然后将结果输出到组件外部。组件按功能可划分为图形组件和计算组件。图形组件的图形界面用于展示仿真结果和接收用户的鼠标或键盘操作信息, 将处理结果传递到其他组件中;计算组件用于仿真模型计算, 并将计算结果传递到其他组件中。

首先, 设计一个组件基类CModule, 然后分别派生图形组件基类CWin Item和计算组件基类CCalc Item Thd。组件实例化类需要继承图形组件基类或计算组件基类。组件相关类关系见图2, 其中New Graph Com和New Calc Com表示用户定义的组件实例类。

3.1 组件基类Cmodule

用于派生出图形组件基类和计算组件基类, 主要由虚函数Create Module、Get Para、Run组成。虚函数Create Module根据参数类型创建组件实例;虚函数Get Para获取组件输入/输出交互信息项;虚函数Run用于实现组件属性更新时的相关计算。

3.2 计算组件基类Ccalc Item Thd

由组件基类CModule派生, 主要包括函数Create Module和Initialize。函数Create Module, 加载用户自定义函数的指针, 给成员变量赋值;函数Initialize创建线程对象, 并启动线程。

3.3 图形组件基类Cwin Item

需重写虚函数Run和Get Para, 函数功能如CModule类中所述。

3.4 图形组件实例类New Graph Com

在New Graph Com中增加On Paint消息函数, 实现图形界面绘图功能。

3.5 在New Calc Com类的Run函数中添加计算模型代码, 实现仿真计算 (图2)

4 组件开发流程

为简化开发过程, 利用Visual Studio开发环境中的Custom App Wizard创建组件模板, 以简化组件开发工作。下面以图形组件开发为例介绍组件开发过程。

(1) 使用组件模板创建组件项目, 由向导自动添加图形组件基类的实现类。

(2) 增加回调函数G e t D l l M o d u l e和G e t D l l G u i d。其中, Get Dll Module函数负责创建组件实例, 并返回组件实例的句柄;Get Dll Guid函数负责获取组件模板的唯一标识Guid值。

(3) 重写虚函数Get Para和Run。当输入交互发生变化时, 组件调用Run函数从输入参数数组中获取新的交互值。

(4) 增加MFC消息函数On Paint, 在函数中获取设备上下文CPaint DC实例句柄, 然后调用GDI函数进行图像绘图。

5 结语

近年来, 虚拟仿真技术越来越成熟, 在虚拟装备仿真领域的应用也越来越广泛。虚拟装备仿真研发工作量大, 并且涉及到大量协同开发任务。为了提高该领域软件开发的效率和质量, 需要强调可重用设计的重要性。本文提出的可重用仿真组件的设计方案简单高效, 易于实现, 并且已成功应用于某舰艇虚拟装备仿真系统的软件开发。

摘要:基于组件的软件开发具有可重用性、易维护性和可扩展性等特点。给出了虚拟装备仿真组件的相关定义, 提出了面向对象的组件设计方案, 该方案在某舰艇虚拟装备仿真系统中应用取得了良好效果。

关键词:可重用,组件设计,虚拟仿真

参考文献

[1]彭峰, 高叔开, 徐二树.基于数据自适应组件的台屏虚拟仿真.计算机仿真, 2004, 21 (12) :235-237.

[2]廖蜂, 郑书朋, 侯伟钦, 姜洪溯.一种高逼真度的控制显示组件仿真方法.计算机工程, 2011, 37 (4) :247-251.

基于组件的软件重用技术研究 篇2

关键词:组件;软件工程;重用技术;代理

中图分类号:TP311

1 研究背景

在正常情况下,应用程序开发过程遵循一定的规律,一般软件系统开发包括以下几个阶段:需求分析、设计、编码、测试和维护。当从零开始进行开发时,应用系统的开发必然有大量的重复性工作,例如:用户需要访问的数据类型有重复性需求分析、编码、测试,以及重复的项目文档。所以我们必须首先调查系统的性质,调查通常包括三方面:(1)通用基本组件调查:一个特定的计算机系统组成的基本数据结构,以及它的用户界面元素等区域(2)系统公共部分的常见应用领域调查,如该系统存在于各种应用领域的系统组件;(3)该系统应用程序的特定组件调查,包括每个应用程序特定的复合帧。其中,有重复特性的应用系统的开发,主要是成员组件的重复开发。

2 软件重用的类型

软件重用技术,可以从不同的视角进行观察。基于可重用的对象,软件重用可以分为对产品和对过程的重用。针对产品的重用是使用现有的软件组件进行开发,即进行成员集成与装配,从而获得一个新产品。针对过程的重用,是指在软件开发过程中,使用可重用的应用程序生成器,自动或半自动生成所需的系统组件。软件重用技术,目前只适合一些特殊类型的应用,主要是针对过程的自动化。重用的软件产品越来越多,现在已经成为软件产业的现实,也成为了主流的软件生产方式。

在获取信息分析的基础上进行研究,软件重用可以分为白盒重用、黑盒重用。利用黑盒技术重用现有的工件,意味着不需要做任何修改,直接重用即可。黑盒重用是一种理想模式,现实中较少。白盒重用是指现有的工件不能完全满足用户的需求,需要根据用户的需求进行修改,在使用前需要适应变化。在大多数应用程序开发中,需要考虑零件装配过程中所需的组成部件的变化。

在抽象的层次研究,软件重用可分为以下类别:(1)可重用组件的重用,需要分析某些事物(问题)的阈值,这种解决方案是更高层次的抽象;(2)设计重用,比代码重用有更高的抽象级别,所以这类重用的实施环境影响较小,使可重用的组件重用的机会更大,并且需要较少的修改;(3)代码重用,包括目标代码和源代码的重用。大多数编程语言,目前均提供这方面的运营支撑,包括系统的连接、绑定和其他功能,来支持这种重用。

3 软件重用的优点

软件重用技术,是在软件开发中避免重复的一种解决方案。软件重用所有的出发点是应用系统的开发不再使用“从无到有”的模式。软件重用技术在现有工作的基础上,充分利用在过去积累的知识和经验,例如:过去的需求分析、设计、应用程序、扩展代码、测试计划、测试用例等。软件重用技术关注的焦点,是应用程序组件的一个特定的组合。通过软件重用,应用系统的开发可以充分利用现有的组件成品,消除包括分析、设计、编码、测试等大量的重复性工作,从而提高软件开发的效率。此外,开发将重复使用现有的成品,这样可以提供高代码质量,以避免重新开发可能引入的错误,提高软件的质量。

软件重用是指重复使用之前的开发产品,是一个减少重复性工作的过程。软件重用的具体概念,一般指的是反复使用组件的行为,在“为了重用组件设计为目的”的过程中,须要进行不同应用系统之间的代码重用,或重用不同版本的组件,有些东西不属于严格意义上的软件重用。软件重用在真正意义上,是用“旧的软件产品”更好更快地开发新的应用程序。

重用技术在软件行业,整体效果是比较微妙的,它不是一种完全一厢情愿的想法。这是由于一些技术和非技术方面的各种因素,一个重要的原因是技术的不成熟。在过去的十年,面向对象技术不断发展,提供了软件重用基本的技术支持,使得软件重用研究再次成为热点,被认为是解决软件危机最现实的方式,可以提高软件生产率。

4 组件开发

组件技术的发展有着许多分支,其中最有代表性的是CBSD技术。CBSD是SEI/CMU组件设计参考模型,该模型的设计原则通常认为是:基于独立组件的膨胀特性,组件模型必须有可用性保证,独立开发的一些标准组件可以被配置为一个共同的标准,没有特殊功能和不可预见的问题;组件的开发时间短,这将降低整体系统的开发和维护成本,增加可预测性。

基于组件的软件开发方法,借鉴了传统观念的工业生产模式。首先进行消费者需求分析,设计整体的框架结构,基于组件库需要选择完成相应的功能组件,组装后形成应用系统。如果所需的组件不存在,则去购买、定制或开发新的组件。组件和系统制造商需要严格按照要求生产组件。相关公司提供组件开发团队,团队成员不再只是编程,还需要通过经验取向元素集成开发人员,最后获取一个有效的系统。

5 基于代理的软件重用

这里的代理也称为软件代理或智能代理。许多研究者基于不同的研究内容和目标,术语“代理”被给予不同的含义。根据詹宁斯的研究成果,“代理”的定义主要可以分为两种类型,主要的分类根据它们的用途。这种定义分类划分为弱定义和强定义。代理有自主性弱定义,这主要基于它的社会性、反应性、主动性、时间连续性,是一种面向目标的行为。强定义是指除去弱定义,所展现出的“软弱”的特性,通常包括:流动性、合理性、灵活性、协作性等。

面向对象技术是用于被动实体的一种抽象。然而,它可以实现对抽象实体的活动,从而能够更好地实现一个抽象的实体代理技术活动。在代理软件工程的基础上,软件重用是一个新的研究领域。面向对象编程的代理,或者叫AOP(面向对象编程代理)是在1993年提出的概念。1995年,人工智能专家吉尔福伊断言:十年之后,大多数新兴IT技术将接受该机构的理论,这是解决2l世纪网络协作建模的必然趋势。

基于组件的重用技术面临一些必须解决的问题。需要具备用户的搜索组件需求,需要具备重用现有工件版本的用户升级机制,应用程序供应商和用户组的成员须具备一个良好的语言交流工具,须要使用相同的技术用于组件生产和组件重用技术,添加到系统的组件可以灵活地退出系统。基于组件的重用工具在互联网上发布,也必须重用开发环境的一部分。

根据上述理论,本文构建了基于组件的软件重用体系,它具备多个代理体系结构,必须考虑的因素是:选择几种类型的代理,代理的分工与合作,代理知识创造等。这种体系结构包含多种因素,例如验证机构、精确定义任务本体、定义计划等,这意味着行为的定义和交互原型。使用面向对象技术,可以实现通信模块的功能,需要根据定义的代理进行每个实例的结构开发。这一体系流程概括为:计划、实施、其他代理交互等。

6 结论

本文在当今软件危机日益显现的背景下,研究了软件重用的技术理论体系。包括软件重用的定义,软件重用的优点,软件重用的技术分类,本文还提出了了一种完善的实用体系:基于代理的软件重用技术。软件重用技术,有优点也有缺点,有些时候组件的源代码不能够很好地访问,导致组件开发的阻碍。但是,总体来说软件重用技术有着良好的发展前景。

参考文献:

[1]傅音翔,王直杰,张珏.一种基于组件的软件开发方法[J].微计算机信息,2006,22(3):228-230.

[2]梅宏,李克勤.软件重用与软件组件技术[J].电子学报,1999,27(2):51-68.

[3]熊磊.基于组件的软件重用技术研究[D].武汉大学硕士论文,2004.

[4]陆军,张育平.基于组件的软件体系结构实现技术[J].计算机工程与应用,2002,4:115-117.

可重用组件 篇3

传统GIS平台优势在于强大的地理系统数据分析能力, 但由于忽视了数据格式的标准统一, 造成GIS应用软件相对封闭、数据信息分享与交互相对困难的弊病。传统的GIS应用程序是相对信息封闭的, 已经不适合如今需求多变的软件行业。大多数的GIS都是一次成型的应用, 难以进行大规模的功能扩展。大部分的GIS开发模式都是直接调用底层GIS API, 没有形成可重用的GIS功能控件。

而新的软件开发模式深入人心:软件重用、搭建式组合开发 (Mashup) 。这些都是提高软件开发效率的利器。随着近年来GIS公共标准的日益完善, 以及Web作为软件交付平台成为主流, 使得轻量级可重复的GIS开发模式得以实现并推广。本文中GIS开发模型的核心在于将GIS开发分为两个方面: (1) 通用的GIS功能组件和控件的开发; (2) 根据用户需求进行搭建式开发。其中第二部分的开发搭建原料由第一部分开发结果提供。这种GIS开发模型的目标在于加速基于用户需求的GIS软件自定义搭建交付。

1 可重用GIS应用概念

由用户驱动的GIS是更符合现代未来的软件开发理念的:更轻量、高度可重用。用户驱动的GIS强调发挥终端用户的主观能动性, 给予终端用户自定义GIS软件的能力。可重用的用户驱动的GIS开发模型有以下特点: (1) 有统一的GIS软件架构; (2) 有相当数量的可重用GIS功能组件; (3) 根据用户工作流组合GIS功能组件; (4) 允许用户根据自己的使用习惯自定义

2 可重用GIS开发关键技术

GIS服务是用户可以得到的GIS功能组件和GIS应用的总和, 这些服务主要以Saa S和Web2.0类型的控件形式存在;GIS的搭建式开发则是用户根据自己的业务流程组合各种GIS服务的开发形式, 这种搭建式开发是基于Web2.0的技术实现的, 主要代表是混搭技术。

这里有必要说明一下, 本文中使用到的“GIS功能组件”不同于平常我们接触到的COM组件、CORBA组件以及EJB组件等, 我们平时所说的COM、CORBA、EJB都是依赖于特定平台的, 而本文中的GIS功能组件则是平台无关的。这些GIS功能组件都是以Service形式存在的。其次要说明的是, 本文中的GIS控件指用户直接可见的、拥有部分用户界面的GIS功能小部件:如地图图层树、要素添加表、地图查询结果表格等等, 现在统称它们为GIS Widget。

GIS的功能组件式GIS Widget的基础, 也是可重用的GIS开发模型中的核心。可重用的GIS开发模型是一个开发的架构, 用户或者开发者可以往这个架构里添加自己的GIS功能组件, 在基于这些组件开发自己的GIS Widget, 而后在应用搭建中使用自己的Widget。开发者甚至可以把以前的GIS系统底层功能组合包装成新的GIS功能组件。而且, 这些GIS功能组件是语言无关的, 可通过JSON或Web Service的形式调用。

Web混搭 (Mashup) 技术使GIS可以使用不同来源的数据, 并和这些数据交互。这既体现了GIS开发层面的敏捷性, 也体现了GIS应用层面的敏捷性。同时Mashup技术也使GIS应用程序可以使用庞大的互联网数据信息。

3 可重用GIS开发模型架构

终端用户驱动的可重用GIS开发模型分为6层, 包括展示层、业务逻辑层、GIS功能组件层、GIS通用应用程序编程接口层、系统组合层以及数据持久化层。将GIS开发模型分为6层, 提高了GIS应用程序的扩展能力, 并且使该开发模型更加容易维护。下面将逐个分析开发模型的各个层面。

用户展示层也称为UI层, 这一层作为终端展示层需要支持Web应用和桌面应用, 用户交互界面是会根据用户的使用要求而经常改变的。用户可以改变界面布局, 也可以改变业务流程。现在有好几种适合用户驱动的可重用GIS开发模型的UI解决方案:在基于浏览器的Web应用环境下的解决方案是Mashup技术方案和Flex技术方案;在桌面应用程序环境下, Eclipse与Netbeans的RCP (Rich Client Platform) 平台是理想的解决方案。当然Adobe的AIR技术也是个可行的解决方案。

业务逻辑层负责存放GIS控件和控件目录, 这些控件是基于GIS Service开发的。业务逻辑层同时也负责响应UI层的调用请求。这一层根据用户展示层的不同而分为两个不同的子模块:一个是支持Mashup Widget的Web Server, 另一块是支持RIA插件的RIA Object Server。

GIS功能组件层是整个用户驱动的可重用GIS开发模型的核心层, 该层存放GIS功能组件, 如叠加分析、缓冲区分析、图层控制等等独立的GIS功能组件。该层接收来自Widget的请求, 然后开始调用GIS通用应用程序编程接口, 这些GIS功能组件都建立在GIS通用应用程序编程接口上。GIS功能组件层通常用来构建GIS Widget。

GIS通用应用程序编程接口层以统一的格式包装了底层的GIS函数, 并供GIS功能组件层调用。

在组合层中, 包括了许多来自不同的GIS产品的API。该层的作用是确保这些API能够都被外部系统访问。其中如Arc GIS9.2等已经支持功能被Service调用的GIS平台, 可直接与业务逻辑层通信。

数据持久化层需要兼容多种不同的GIS数据格式, 如shapefile、xml、spatial-database等。数据持久化层要提供一种统一的数据访问接口, 遵循SDO规范。

4 相关内容

中地、超图和ESRI针对Web2.0做了不少工作, 尤其是ES-RI, ESRI的Arc Server9.2几乎重新构建了自己的平台结构, 使得开发平台支持Service调用, 换句话说:所有的Arc Server9.2上的GIS功能都是Service。这使得Arc Server9.2可以直接在用户驱动的可重用GIS开发模型中支持GIS功能组件层。超图也同样在GIS功能服务化的道路上前行, 超图的“iserver”是超图的主产品。中地数码的Map GIS-IMS9也提供了Web Service版本。这些GIS公司开发的Service对用户驱动的可重用GIS开发模型提供了强大后台服务支持。

参考文献

[1]A DOYLE, C REED, J HARRISON, M REICHARDT.Introduction to OGC web Services[S].Open Geospatial Consortium, 2001.

[2]OGC.OGC Approves KML as Open Standard[R].Open Geospatial Press.2008.

[3]OGC.Web Processing Service[S].Open Geospatial Standard.2008.

[4]张雷, 扈飞.软件即服务应用框架中配置的设计与实现[J].计算机系统应用, 2009 (6) .

[5]闵栋, 刘东明, 徐迎阳.面向移动互联网的Mashup聚合业务研究[J].现代电信科技, 2009 (3) .

[6]王雅琴, 陶华学, 高华, 等.基于GML的多源异构数据交换模式研究[J].测绘科学, 2006 (2) .

[7]蔡学镛.Adobe AIR平台的新世界:桌面与Web的大一统[N].程序员, 2008.

可重用组件 篇4

关键词:System Verilog,验证,层次化,可重用

随着集成电路制造工艺技术水平不断进步,芯片设计规模越来越大,验证所花费的时间占据了整个产品设计周期的70%,而且随着设计复杂度的提高呈指数性增加[1]。芯片一次流片的成功率从很大程度上取决于功能验证是否充分[2]。因此,验证已经成为制约芯片开发的瓶颈问题。

传统的验证平台主要依赖验证人员观察波形的方法进行验证,验证效率低,不能满足当今验证规模的需求。VMM验证方法学[3]的出现极大程度上提高了验证的效率,进而出现了一批借鉴VMM验证方法学的验证平台[4,5,6,7],如参考文献[4]所设计的验证平台就采用了VMM验证技术。但是其设计的验证平台只产生了随机激励,验证时仅使用随机激励很难测试到电路的边界情况,而且验证过程收敛性差。

为了快速定位设计中的问题及边界情况,同时提高验证效率,本文拟采用System Verilog语言,根据VMM验证方法学中的分层设计思想,搭建一个可重用的验证平台,以求同时提供定向测试、受约束的随机测试和错误激励测试。

1 平台框架

验证平台可分为4层,即测试层、建立层、事务层和物理层,如图1所示。

(1)物理层:包括被测设计模块(DUT)集合和电路模型。

电路模型用来与被测代码进行比较,以实现自检验的验证。采用Verilog语言或者System Verilog语言模拟与设计代码等价的功能。

(2)事务层:包括激励产生器、监视器、和覆盖率统计器等。

激励产生器的主要功能是驱动DUT和电路模型的接口信号。本平台的激励产生器能够产生定向测试向量、错误测试向量和受约束的随机向量。

监视器的主要功能是监视DUT和电路模型输出的信号,并对两者进行比较。当DUT的输出信号和电路模型的输出信号不一致时,仿真可能被强迫结束,同时打印出当时出错的时间和出错的信号名称及内容。

覆盖率统计器的主要功能是根据激励产生器产生的测试向量、DUT输出信号以及覆盖点的要求统计出电路功能的覆盖概率。覆盖点是一种有效的验证机制[8],它的编写根据具体的测试对象而定,可以对单个信号进行功能覆盖率统计,也可以统计多个信号的交叉覆盖率。

以上介绍了事务的类型,根据不同的测试需求可以创建各种平台所需的事务,如随机事务、各种回调函数事务等。

(3)建立层:包括验证框架的建立和电路初始配置。

验证框架建立的主要功能是利用事务层的各种事务构建出整个平台的框架。包括平台环境的配置及参数的设定;激励产生器和监视器的句柄定义和对象声明;与覆盖率相关的回调函数类的句柄定义和对象声明;激励产生器和监视器与回调函数的通信建立。本平台还研发了面向通信交换设备的配置软件和专用的图形界面。

(4)测试层:包括配置文件和测试用例。

在平台搭建好之后,测试层的主要功能是提供定向测试的测试实例和与DUT相关的一些配置信息。例如对高性能路由器转发单元进行验证时,需要通过微机接口对转发单元进行配置,不同的配置参数DUT将会提供不同的功能。本文设计开发了面向定向测试的数据块/包的软件辅助工具。测试人员可以使用辅助工具来产生所需要的数据。

2 通信交换设备验证平台

2.1 交换功能介绍

本文假定所测试的交换设备具有N个输入/输出端口,这里N通常是2的整数次幂,考虑到内部复用,这N个端口可以映射到k组总线,每m=N/k个端口分时复用一组总线,k

2.2 验证平台

验证平台需要按照数据包/块格式的要求提供各种不同类型、包长、优先级、源端口和目的端口,以及包含其他参数和配置的网络数据包,同时能够根据各个端口输出的数据包个数计算出该端口的速率,以此来产生链路的忙/闲状态,模拟配置规定的速率和其他要求。

根据层次化结构,并结合交换设备的功能,对验证平台进行了详细的设计。

(1)物理层:DUT采用Verilog语言编写,电路模型采用System Verilog编写,编写过程不是设计的重点,所以这里不再进行叙述。

(2)事务层:根据功能描述可知,如果要从端口处进行验证,本验证平台需要N个激励产生器,用于产生来自N个输入端口的数据包/块,还需要N个监视器来观察N个输出端口的数据包/块。如果要从总线处进行验证,则需要k个激励产生器和k个监视器用于监视来自电路模型和DUT的k组总线上的输出数据。这里,每个激励产生器需要模仿m=N/k个端口及其速率,每个监视器需要记录m个端口的输出。同时还需要一个覆盖率统计器用于统计激励产生器产生的所有情况下的数据包。

(1)激励产生器:将激励产生器定义为一个类,该类的属性包含了虚接口的定义、待发送包的队列定义、激励发生器编号和回调函数队列定义等,此外还包含了运行方法、定向测试、随机测试、端口速率配置方法、定向包入队方法、定向包驱动方法、随机包产生方法、随机包入队方法、随即包驱动方法和丢弃概率计算方法等。

其中定向测试的测试流程如图2所示。

首先调用端口速率配置方法对所有N个端口的速率进行配置,然后调用定向包/块入队方法,根据测试层的测试实例进行定向包/块的入队操作。按照发送时序要求将定向包依次驱动到DUT的输入端口上,直到发送完所有的定向包,并触发随机包产生事件,然后宣告定向测试结束。测试中在包与包或者块与块之间引入了受约束的随机时延。随机时延的范围采用辅助工具进行配置。在测试层不仅能使用随机数据,还能使用随机时延,从而最大限度地验证被测电路的功能和时延正确性,保证了被测模块的鲁棒性。

随机测试流程如图3所示。首先为每个端口或者总线设置一个数据结构和包/块的队列。产生的数据包/块先被送入相应的队列。然后为每个输入端口的队列预存入一个数据包,等待随机事件被触发。当随机事件被触发后,程序分为两个分支:分支一用于产生随机数据包并进行入队操作;分支二用于调用回调函数,产生错误指示信号,根据错误指示信号丢弃该包、或者发送错误的数据信息、又或者正常发送该包。当发送完一个数据包后再次调用回调函数进行覆盖率的统计;最后判断是否结束随机测试,如果结束,则退出测试。否则重复上述操作。分支一和分支二之间通过事件进行同步通信。

(2)监视器:监视器的类结构与激励产生器相近,其中包含了属性(虚接口的定义、监视器编号、回调函数队列等)和方法(数据结果比较、端口速率计算)。数据结果比较方法将DUT和行为模型的有效输出数据信号进行比较,如果输出结果不一致,则可能停止仿真,并打印出当前仿真的时间和错误数据信息;如果输出结果一致,则调用回调函数进行覆盖率的统计。端口速率计算方法的主要功能是统计每个端口输出的数据包,根据数据包个数产生相应的链路空/闲指示信号。

(3)覆盖率统计器:覆盖率统计器的类结构与激励产生器的类有所不同,其结构由属性、方法和覆盖组构成。属性主要是为进行覆盖率统计而定义的一些中间变量;方法为进行覆盖率统计准备数据,这些数据涉及到相应的覆盖点,并调用采样函数,进行覆盖率统计操作;覆盖组由多个覆盖点组成,首先定义多个独立的覆盖点。然后根据具体的情况将这些独立的覆盖点进行交叉覆盖率计算定义,如cross packet_type、packet_dport等。

(3)建立层:建立层定义为一个类,该类由属性和方法构成。属性包含了m个激励产生器和m个监视器的句柄定义、m组总线的虚接口定义、覆盖率类的句柄声明等。其方法包含了建造方法、DUT配置方法和运行方法。其中建造方法用于对m个激励产生器和m个监视器进行对象声明,同时将回调函数压入激励产生器和监视器的回调函数队列中。DUT配置方法的主要功能是按照微机接口时序利用测试层提供的配置文件,对电路进行初始配置。运行方法主要的功能是启动m个激励产生器和m个监视器的线程,这里采用fork join_none语句实现。

(4)测试层:按照数据包的格式要求编写定向测试向量文件,同时提供电路的各种配置参数文件。

最终搭建好的验证平台如图4所示。

3 验证结果和分析

本文的验证平台搭建在Sysnopsys公司的VCS仿真平台上,使用了DVE环境。运行结果如图5所示。可以看出本平台能够按照DUT输入数据信号的要求产生正确的输入信号,并能够按照一定的概率产生错误的数据。同时,当DUT和电路模型输出的数据不一致时,验证平台能够强行停止仿真过程,并打印错误信息。该错误信息包括了错误信号及错误信号产生的时刻等,这些信息能够帮助设计人员快速地定位错误,从而提高验证效率。

最后在覆盖率结果的引导下,通过增加覆盖点以及修改随机信号约束条件和产生随机信号的权重值,最终功能覆盖率能够达到100%。

采用System Verilog语言,借鉴VMM层次化的验证技术,设计了一个可重用的验证平台。与其他的验证平台相比,该可重用验证平台能够提供多种形式的激励,包括定向测试激励、受约束的随机测试以及错误激励;采用了一套十分有效的算法来产生激励并真实地模仿配置好的端口设施;能产生随机数据和受约束的随机时延,模仿真实的环境,对被测模型进行完备的验证。

同时采用了自动对比结果技术。构建不同设计对象的验证平台时,在不修改本验证平台框架的情况下,仅需修改功能覆盖率类中的覆盖点和激励产生器中的一些方法,新的验证平台即可搭建而成。与采用纯手工编写测试向量的验证技术相比较,本文设计的验证平台极大地提高了验证效率,缩短了设计周期。

参考文献

[1]闫沫,张媛.基于System Verilog语言的设计验证技术[J].现代电子技术,2008,31(6):8-11.

[2]马宁,李玲,田泽,等.ARINC659总线协议芯片的仿真验证[J].计算机技与发展,2010,20(1):205-208.

[3]张春,麦宋平,赵益新.System Verilog验证[M].北京:科学出版社,2009.

[4]刘兆勇,王进祥,李清波.基于VMM的外部存储器接口验证[J].微处理机,2009(4):1-4.

[5]段乘超,徐金甫.基于VMM构件可重用验证平台[J].现代电子技术,2011,34(8):127-129.

[6]林健,杨志家.利用VMM建立基于事务的层次化验证平台[J].微计算机信息,2010,26(4-2):97-98.

[7]段青亚,黄士坦,靳荣利,等.SoC自动化验证方法的研究与实现[J].吉林大学学报:信息科学版,2010,28(3):231-237.

上一篇:发动机缸体下一篇:城市建设投资公司员工