已阅读5页,还剩67页未读, 继续免费阅读
(计算机软件与理论专业论文)基于tcl的逻辑仿真测试平台的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
埔卜t e l 的逻轴 仿真测试、r 的垃计1 ,实现 摘监 摘要 目前在丌发网络设备的犬规模数字系统过程中,仿真验证阶段自动化程度不 高,以至投入的人力大、产品开发周期k 。各个网络设备公司都在探索自己的一 套仿真测试方法,没有公丌的、高效的姚范可供使用。本文针对上| 述情况,提出 了a t m 、【p 、s d h 领域内的,- i t 基于t c 】的逻辑仿真测试平台的总体设计方案, 并分别在u n i x 和w j n d o w s 两个操作系统平台下玎发实现。这个测试平台具有通用 性,适合多种逻辑业务的自动化仿真测试。仿真测试时,测试平台由仿真软件启 动,两者交互通讯,共同完成逻辑业务的仿真测试。激励数据的自动化动态生成 和分析验证的自动化进行,使得整个仿真过程高度自动化。 本文的主要工作包括以下几个方面: 1 分析了逻辑仿真测试中的协议测试问题,引入了基于t c l 的协议测试方 法。 2 阐述了测试平台的设计思想,设计了测试平台的总体框架。测试平台的 核心设计思想是,丌发具有通用性的测试平台,实现仿真测试的高度自 动化。 3 设汁了基于t c l 的协议报文构造器。所有激励模块都是通过报文构造器 产生激励报文。报文构造器支持一系列协议标准的报文和信元的构造, 支持错误报文的构造。 4 在激励模块部分设计了两种端【_ 】类型的报文调度算法。通过报文调度, 可以动态产生报文或者信元。报文调度还支持非常重要的报文乱序功 能。这就很好的仿真了实际的网络环境。 5 详细的介绍了结果分析验证原理,实现了结果分析的自动化。 6 分别在w jn d o w s 和s o l a r i s 2 7 下,丌发了测试平台,并通过验收。 关键词:逻辑仿真测试平台;仿真测试:逻辑业务;激励模块:分析模块;t c l 中国科学技术大学坝b 学位论立 ! ! ! ! 型塑墅塑! ! 塑塑:鬯墼蔓! 型坐竺! a b s t r a c t 1 1 hl 、 。【irl v 、ir lth epr o c ( 、h n0 i f l c v 、1 ( ) p in g lh r g cn c h i ,t i ig ii ,1 1s v s t o m , th c 、f ) h “一c “1 1 ( ) 辑 i m l l i h ti ( 1 n “f l f it o s ii f l 誓 l 弋i ) 0 0 i 【_ 。姓l t g l l ;t tl c t i w i t i e l l r ( 、_ fjji jnr i r ) r ( 、j i b o fr 1 1 d 。l b it o i t g , p r o d u cc c l e v c i o p m c ,n lc ) l 、ii ( 1 , l a n u l 。l “1 1 l ( 、isw h op r o d u c em e iw ( f kd e v ic e ne x p i ( ) i e ih c iro w mr i l el h o d io c ( 1 l k i t u _、i m l 1 ;n i o rl c :- , l 1n g 、i l t ! i 。l 、n ) o p e nm i l lh i g ho il c ie r e 一l a n d rl r d le c hr l o l d g y a i m i n g i ilt h e il u a t j ( i r l ,i h i d ls s e rl t io ri ) ul sc o r w a r d e t d e s g no faj 1 c i b a s e dp l a t f o r mf o rj 0 9 1l x i m l l l r i t i o na n dt e s lin gw i t h i nt h e f 1c l d fa t 。l pa n ds d l 。a c c a r d n gl ot h ed 。s t g n ,e ( t e v e l o od i i f 。 一e t h , v 。r s i ( ) l l s ( ) rt h ep 1 挂lr ( mu n d e ru n i xa n dw in d c ) s f 1 i is 乏l 】l p u r p o s ep lr l ( r o r m c a nc o n d u c ts i m u l 觚i o nt e sl ir i g ( l l j t o m a t ic a l l yf o rm a r l y 1o g i cp r o j o c t s t h e o t a ty o r mi sc a i e db ya ne m u l 秘“ ra n dc o o p t a i e kw it h lei nl e s t l n g 【n g i ( : p r oi e c t s j t i st h ea u t o m a t i z a t i o i o f p r o d u c i n g s t i m u l a t i n g ( i l 。l an ( j v n l ;c h i li n g 【) l 1 t p uc d a t at h a tm a k e s3 l i o i i k i t ic t e s t i n gp r o c e s s l h is 1 ls s e t a t j o nc o t 、s i s t 5e l s c y c t 。t 口 i fl so fw e t kd sf o l l 。w s : 【) a r i a 【y z et h ep f o b fe l l lo f p r o t o c 0 1t e s t ir i g f 1t h ep f o c e s so f o g ic s i m u l a t i o nt e s t i n ga n da d o p tt h ep r o t o c o il e s t in gm e t h o db a s e do d 。k 卜 2 ) in i ( ) 【j l i c et h e d e s i g n d e a o f 、t h e p l i l o r r i l b r in gf o r w w d c c h t o c ed e n i g no f th ep 】。“i o f m ,川je ? ( :( ) r ejd e 。o j l d e s i g n i8 t o 乩c h ie v t , j a l il ( 1 m n l i cs j m l i i n t i ) n t 。t :n gn n dg o n e r 【u s a g t o ( t h e p i a lr o r m :j ) o e s i g n a n d jm f ) l o m o r t i cj _ b a s e d p a c k e c g e d e f # 1 t o fm o d u l e 队r o r y l i i n u | 、t in gm d u e p io d u ( ep “k o tso i nt h em o ( u ip 1 t x i l 口p ( 、f t s m tl k in g i ) a c k e t s ( ) f c o iis o 【m a n yp i o t o c 0 1s ,il l i s oc i :h i r i d k o w f o r l g p m k el s 4 ) d e s i g nt h e 。l l g o v j t h m 、 d t v c k e t s c h e d u l c r , 、h i s a l g o t ( t k m j i f = i :j 水人顺j j 学位 史 v 堆_ f l c 】的逻辑仿真测试、卜台的设计l j 实现 s u p p o r t sp r o d u c i n gp a c k e t si nd y n a m i cw a y p a c k e ts e h e d u l e ra 1s o f u lf i sa ni m p o z t a n tf u n c t io nt h a tist os e n dp a c k e t si nd i s o r d e r t h u st h es i t u a t i o i lo ft h er e a ln e t w o r kc a nb es i m u l a t e d 5 i n t r o d u e et h ea u t o m a t i ct e c h n i q u eo fo u t c o m ea n a l y s is ,w h i c h is t h ek e yt ot h ea u t o m a t i z a t i o n0 f l 。g i c s i m u l a t i o nt t r l dt e s t i n g 6 d e v e l o dd if f l e r e f i tv e r s i o n so t h e p l a t f o r m u n d e rw i n d o w sa n d s o l a r - i s2 7 w hic hh a v eb e e nc h e c k e da n da c c e p t e d k e yw o r d s :p l a t f o r mo fl o g i cs i m u l a t i o na n dt e s t i n g :s i m u l a t i o i l :l o g jc p r o j e c t :s t i m u l a t i i l gm o d u l e :a n a ly z i n gm o d u l e :t e l 中国科学技术大学厩士学位论文 v 肚t f c i 的逻 i : 纯豇测试r 台的啦汁扣穹观鹅一章0 l 击 1 1 研究背景 第一章引言 当前设计大规模数字系统的最新的、最先进的设计方法,就是采用硬件描 述语言 i d l ( h a r d w a r ed e s c r i p t i o nl a n g u a g e ) 为设计手段的高层次设计方法。 个数字系统用硬件描述语言描述出来之后,需要对其进行仿真测试,这是整个 系统开发的重要一环。 这里的逻辑指硬件描述语言描述的数字系统。一个具体的逻辑项目也叫逻辑 业务。文中的逻辑仿真测试平台,就是针对a t m 1 2 、i p 3 、s d h 4 领域内 的逻辑业务测试设计的。目前这些逻辑业务包括千兆以太网总线接口g m i i 5 , a t m 信元总线接口u t o p i a l l 1 和u t o p i a h 2 2 ,光网络s d h 等。 以前仿真测试多使用文件交换,但是文件交换存在限制,难以实现自动验 证。使用文件传递数掘,仿真模块无法得到发送报文的当前时间,也就无法计算 发送速率,从而调整激励的产生。对于多端口,存在的文件数目太多。不仅如此, 分析逻辑发出的数据时,几乎对每个逻辑业务都需进行专门的分析验证部分的开 发。上述这种测试方式弊端很多:激励产生的数据是静态的,有限的,不能很好 的模拟逻辑运行的实际环境;分析部分开发的重复部分比较多,但又很难重用; 整个仿真过程时时需要测试人员的参预,自动化程度低。 对于上述仿真测试过程的种种弊端,我们迫切需要研究新的仿真测试技术, 以改进低效率的局面。目前,各大网络设备公司都在研究探索这方面的新技术, 在业界还没有公开高效的测试规范形成。我们设计的仿真测试平台是在这个领域 做的一点探索和创新。 1 2 本文的主要内容和贡献 本文首先分析了逻辑仿真中的协议测试问题,引用了基于t c l 的协议测试 技术。接着详细叙述了整个仿真测试平台的设计思想、框架结构、组成模块、激 中国科学技术人学硕士学位论文 i 肚十r c l 的逻辑仿真测试、f t 台的设计t j 实现第一章引占 励产生原理、结果分析验证原理和仿真测试过程。重点讲述了激励产生原理和结 果分析验证原理。前者包括基于t c l 的协议报文构造器和报文调度算法,后者涉 及多个模块的即时检查和后期检查等内容。根据这个设计,实现了整个仿真测试 平台的各个模块,包括主控模块、数据库模块、c p u 模块,多个激励模块,多个 分析模块以及报文构造模块。由于总体设计要求仿真测试平台实现与操作系统平 台无关,所以我们分别丌发了w i n d o w s 和s o l a r i s 2 7 的测试平台版本。测试平 台得到了用户的好评,实践表明,测试平台明显的提高了逻辑仿真测试的效率。 1 3 本文章节安排 本文的内容安排如下: 第一章引言,介绍仿真测试平台的研究背景,研究内容和论文的结构。 第二章介绍了逻辑仿真中的协议测试问题,引入了基于t e l 的协议测试技 术。 第三章阐述了测试平台的设计思想,提出了仿真测试平台的总体框架结构, 介绍了各个组成模块。 第四章详细介绍了测试平台的激励产生原理,包括报文调度算法和基于t c 的协议报文构造器。 第五章详细叙述了结果分析验证原理。分析验证由各个模块分别承担一部 分任务,分为即时检查和后期检查两种。 第六章介绍了仿真测试的工作过程,给出了仿真测试的测试结果表示和典 型仿真测试用例。 第七章总结和展望 中困科学技术大学硕士学位论文 攮f + r c i 的逻辑仿史测试r 白的垃计1j 实现 第一孥逻辑仿真中的饥泌删试 第二章逻辑仿真中的协议测试 本文的逻辑仿真测试主要针对a t m 、i p 、s d h 领域内的逻辑、i p 务,其中涉及 到相当多的协议测试内容。本章简要介绍了逻辑仿真测试,对逻辑仿真中的协议 测试内容做了概述,并引入了基于t c l 的协议测试技术。 2 1 逻辑仿真测试 2 1 1 逻辑业务 测试平台的开发旨在提高逻辑业务仿真测试的效率。本文所述的仿真测试是 这样进行的:逻辑在仿真器中( 如m o d e l s i m 等) 执行,在仿真过程中,逻辑不 断接收外部( 仿真测试平台) 的报文流作为激励数据,在经过一定的处理后,逻 辑从一定的端口发出报文数据,测试平台通过分析这蝗报文数据,来确定逻辑的 行为是否正确。测试平台主要负责产生激励数据并分析逻辑的输出,具体而言就 是平台产生正确的或错误的报文激励数据,输送给逻辑,并对逻辑发送给平台的 报文流输出进行分析。 每种逻辑业务对激励的要求是不一样的,激励数据基本上可以分为三类:报 文类,毽、信元类型和数据流类型。报文类型如g m i i 总线接口,信元类型如 u t o p i a l l 总线接口,数据流类型如s d h 。同样,对于逻辑端口出来的数据也对 应分为报文、信元和数据流三种类型,我们需要平台对这三种类型的网络总线数 据形式都能加以验证,以实现平台的通用性。 2 1 2 仿真软件介绍 在逻辑的仿真测试中,仿真软件是测试的主要工具。测试平台与仿真软件 配合使用完成逻辑业务的仿真测试。我们用的仿真软件是m o d e l s i m 。m o d e l s i m 是m o d e lt e c h n o l o g y 公司开发的用于逻辑设计中v 1 d l 语言、v e r i l o g 语苦以及两 语言混合仿真工具,该仿真工具以界面友好操作方便、功能强大而在e d a 领域 中凰科学技术大学颤l :学位论史 璀,一t e l i j 勺逻辑仿真删试卜竹的改计j 实现 罅一静逻辑仿真- 1 ,f l 勺腓议谢试 得到越来越广泛的应用, d c a n d a n c e 公司的王牌仿真工具v e r il o g x l - - 样,m o d el t e c h n o o g y f 籍m o d e i sl m 的不断推广跻身几大e d a 公司行列。 m o d e s j m 是完全基于t c l t k 语言的仿真工具,u n jx 和w in d o w s 版小操作堪本 雷同。m o d e ls i m 能工作于批处理模式、命令行模式f e i o u i ( 图形操作接i 1 ) 模式。 批处理模式通常用于凹归测试,命令行模式和批处理模式基本帽同( 用,1 界面并 不出现) ,唯一的界面是命令操作台窗口。用户图形操作接口模式既能接收命令 输入又能接收图形输入。m o d e l s i mv h d l 支持t 雕1 0 7 6 1 9 8 7 f 6 、1 0 7 6 1 9 9 3 7 、 l1 6 4 1 9 9 3s t a n d a r dm u l t i v a t u e l o g i cs y s t e m f o rv h d l i n t e r o p e r a b i li t v 8 和1 0 7 6 ,2 1 9 9 6s t a n d a r dv h d lm a t h e m a ti c a lp a c k a g e s s t a n d a r d s 9 ;m o d e ls i mv e r i l o g 是基于i e e e s t d1 3 6 4 1 9 9 5s t a n d a r dh a r d w a r e d e s c r i p t i o nl a n g u a g e b a s e do nt h ev e r lt o gh a r d w a r ed e s c rl p t i o n l a n g u a g e 1 0 。 可以用m o d e s i m 来完成三个级别的仿真: ( 1 ) r e g i s t e rt r a n s f e rl e v ej ( r t l ) 级。在这个级别上,可以验证语法和基 本的逻辑功能。 ( 2 ) 功能仿真。这个级男嘶仿真发生在综台完成后,布局布线前的一阶段。 主要用于验证逻辑在综合后的功能是否f 常。 ( 3 ) 门级仿真( 时序仿真) 。它发生于设计已在特定的f p g a 器件上实现了布局 如线后,延时的信息会加入进来,需要厂家布局布线工具提供s d f ( s t a n d a r d d e l a yf o r m a t ) 格式的文件。 2 2 基于t c i 的协议测试 2 2 1 协议测试简介 协议测试理论是执议工程学的一个重要分支。研究协议测试理沦的原因在于 一个标准化的协议并不能确保该【办议的实现之| 1 _ l j 能够成功的进行通信a 这是因为 协议标准目前基本上是使用自然语言描述的,实现者对于协议的不同理解会导致 不同的协议实现,甚至有时会是错误的实现。因此需要一种有效的方法来对协议 实现的正确性和有效性进行判别,这便是“协议测试”。实际上,协议测试是试 中网科毕技术大学颂l :学位论史 簪十r c i 的逻 | : 仿嶷测试、r 矗改; 1 0 姿现 第一学逻蛳仿真中f l 勺脚| 义测试 图通过实验的方法找出错误的过程。在协议测试过程中既要模拟协议实现i r 常t 作的情况,也要模拟异常使用的情况:既要模拟协议实现单独运行的情况,也要 模拟协议实现之间互相通信的情况。这样爿能确信在任何情况下系统的币常工作 状况。由于对一个系统进行无穷尽的测试是不现实的,所以测试并不能保证一个 协议实现的完全f 确性,即测试只能表明“存在错误”,而不能证明“不存在错 误”。这是协议测试的基本出发点。 协议测试是从软件测试的基础上发展而束。一般的软件测试可以分为功能测 试和结构测试两种。结构测试又称为“白盒测试”,它是基于一个软件的内部结 构进行的测试,其目的是通过执行每条语句、遍历程序的各个分支来检查整个程 序代码的正确性。与此相反,功能测试只是依据软件的说明对从外部可以观察到 的软件功能进行测试,所以也称之为“黑盒测试”,即被测试系统被看作个黑 盒,仅仅通过观察外部行为来确定软件的功能实现,而不涉及程序的内部结构。 功能测试的目的是根据软件的说明确定软件实现是否达到了要求,因此预先要有 一一个简洁明确的软件功能澄明。协议测试属于功能测试,即黑盒测试。 2 2 2 逻辑仿真中的协议测试问题 一份通讯协议标准往往都是用自然语言叙述的,协议元素一般有血项 i i : 1 ) 协议提供的服务( s e r v i c e ) ; 2 ) 对协议运行环境的假定( a s s u m p t i o n s ) ; 3 ) 用于协议实现的消息词汇( v o c a b u l a r yo fm c s s a g e s ) : 4 ) 每个消息的编码( e n c o d i n g ) ; 5 ) 保证消息交换一致性的过程规范( p r o c e d u r er u e s ) 逻辑仿真中的m 议测试问题主要涉及协议元素中的3 4 两项内容。在逻辑 仿真测试中,需要对逻辑的协议报文处理功能进行验证。逻辑业务要求激励产生 能够支持多层协议的报文构造,包括f 确报文和错误报文的构造。对逻辑发出的 报文数据,要对其坍议正确性进行验证。完成上述功能需求,必须要熟悉大量的 协议标准,尤其是标准中的消息词汇和消息编码这两个协议元素。 目前要求激励产生能支持二二层的以太网、m p l s 1 2 、8 0 2 i q 1 3 , i p o a 1 4 ,p p p 1 5 、a r p 1 6 、r a r p 1 7 ,三层协议支持i p 、i g m pe 1 8 、i c m p 1 9 , 中国科学技术人学顾i :学位论史 堆十r c l 的逻辑仿真测试,r 矗的世汁1 0 实现第二章逻辑仿真中的坍 义测试 四层协议支持t c p 2 0 、u d p 2 1 。支持a a ,5 1 4 适配协议和标准a t m 2 2 信元的 构造。用户能够控制报文各字段的生成,包括构造一些异常报文。同样,结粜分 析验证部分也要相应提供对以上协议标准的支持,能够解析正确的脚议报文。验 证其协议币确性。 测试平台采用了基于t c l 的协议测试技术。这项技术非常适合趴议搬文的产 生和报文的分析验证,在实际应用中取得了很好的效果。 2 3t e l 语言 f c l ( t o o lc o m m a n dl a n g u a g e ) 是种简洁高效的解释脚本语占 2 3 ,它其实 是指两样东西:一种脚本语言,以及该脚本语言的解释器。该解释器可以很容易 地嵌入到应用程序中。t c t 最初的构想是希望把编程按照基于组件的方法 ( c o m p o n e n ta p p r o a c h ) ,即将程序分割成一个个小的,具备一定“完整”功能的, 可重复使用的组件。不同的组件有不同的功能,用于不同的目的,并可为其它的 应用程序所利用。当然,这种语言还要有良好的扩展性,以便用户为其增添新的 功能模块。t e l 是一种可嵌入的命令脚本化语言( c o m m a n ds c r i p tl a n g u a g e ) 。“可 嵌入”是指把很多应用有效、无缝地集成在起。“命令”是指每一条7 r c l 语句 都可以理解成命令加参数的形式: 命令 参数1 参数2 参数3 参数4 参数n 脚本化是s n t c l 为特殊的,特定的任务所设计。但从现在角度看,可以蜕t c l 是 一种集c 语言灵活强_ 尺的功能与b a s i c 语高易学高效的风格于身的通用程序 设计语言。 2 3 1 为什么要使用t c i 作为一种脚本语言,t e l 与其他的u n i xs h e l l 语言,如b o u r n es h e 儿( s h ) 、 cs h e l l ( c s h ) 以及p e r 类似。s h e l 】程序可以用于执行其他的程序。它们提 供了足够的可编程特性( 变量、流程控制和过程) ,以便将现有程序组装成符合 我们需要的复杂的脚本程序。 t e l 解释器可以很容易地添加到应用程序中,这种能力将它与其他的s h e l l 中圈科学技术人学 碰i :学位论文 堆十1 u 的逻齄 仿真测试卜台的驶汁,实观 第r 二章逻辑仿真中的胁泌l 舅i | 试 语占区分丌来。t c l 扮演了一种扩展语言的角色,用束配置和定制应用程序。我 们没有必要再去为自己的新应用程序发明一种命令语言,或是费力为自己的工具 提供某种用户可编程特性。我们可以通过添加个t c l 解释器,来将自己的应用 程序组织成一组操作原语,并使用这些原语柬构造最符合用户需求的脚本程序。 t c l 的c 函数库拥有清晰的接口而且便于使用。该函数库实现了基本的解释 器,它有一套实现变量、流程控制和过程的核心脚本命令,而且还有一组用来存 取操作系统服务以及运行其他程序、存取文件系统和使用网络套接字的命令。t c l 和7 【_ k 提供了一台可以在0 n i x 、w i n d o w s 和m a c i n t o s h 环境中可移植的“虚拟机”。 因为应用程序可以定义新的t c l 命令,所以t c l 虚拟机是可扩展的。这些 命令与应用程序所提供的c 或c + + 过程关联。结果应用程序就分割成一组用编 译语言编写的原语,并输出成为相应的t c l 命令。使用t e l 脚本程序可以将这些 原语组装成完整的应用程序。脚本语言层可以存取与s h e l l 类似的功能以运行其 他的程序,可以存取文件系统,还可以直接通过自己定义的t c l 命令来调用应用 程序中编译的代码部分。此外,从c 编程的层面上来说,还可以调用t c l 脚本程 序、设置和询问t c l 变量,甚至跟踪t c l 解释器的执行。 还有很多语言可以作为+ r c l 的扩展语言,比如v i s u a lb a s i c 、s c h e m e 、e l l s p 、 p e r t 、p y t h o n 和j a v a s c r i p t 等,我们可以依照不同情况进行选择。t e l 拥有简 单的结构,而且还有些地方类似于c 语言,可以通过编制c 过程来增添新的t c l 原语。t c l 非常易学,许多用户使用t a l 在很短时间内就完成了相当难度的项目, 并且他们以前没有接触过t c l 2 3 。 2 3 2t e l 和c 语言的接口 在应用程序中内嵌t e l 内建的t c l 命令和t c t 扩展的特殊应用命令可以在单独的编程环境中使用, 也可以嵌入到应用程序中。一个程序员需要做的仅仅是编写特殊应用的命令:内 建命令提供了足够的可编程性和扩展性。图2 一l 显示了t c l 和应用程序其他部分 的关系。为了使用t c l ,应用程序首先产生一个称为解释器( i n t e r p r e t e r ) 的对象。 一个解释器由一组命令集,变量绑定和一个命令执行状态组成。这是大多数t c l 库操 乍的基本单元。一旦应用程序创建了一个解释器,就可以用 中衙科学技术大学硕士学位论史 毕于k l 的逻辑仿真测试、p 竹的墩计,实现 第_ 二章逻辑仿真中的卧议测试 t c l _ c r e a t e c o m m a n d 过程使用用户自定义命令来扩展解释器: t c l c r e a t e c o m a n d ( t c l i n t e r p in t e r p ,c h a rn a m e , t 叫一c m d p r o cp r o c ,c 1 i e n t d a t ac li e n t d a t a ) t c f 应用程序 广一一一一一一一一一一一一一一一一1 广一一一一一一一一一一一一一一一一一1 图2 1t c l 对命令的分析过程 每次调用t c lc r e a t e c o m m a n d ,它就会把命令名字n a m e 和完成这一命令的 过程p r o c 联系在一起,并通过c l i n e t d a t a 可以把任意字符串值传递给实现过程。 在创建用户自定义命令后,应用程序进入一个主循环,此循环等待命令并把命令 传递给t c l e v a l 过程去执行: i n tt c l e v a l ( t c l i n t e r p * i n t e r p ,c h a r * c m d ) t c le v a l 过程分析传给它的c m d 参数,在命令名字表中查找此c m d ,找到后就 调用和这个命令名字相对应的过程。所有的命令,不管是内建的或是用户自定义 的,都是用这样的方法调用。 一个t c l 命令过程返回两个结果给t c l e v a l :一个整型的返回值和一个字符 串。返回值作为过程的返回值返回,字符串则存储在解释器中。t c l e v a l 返回同 样的值和字符串给它的调用者。通常返回值是t c l o k 而字符串则包含了命令的 返回值。如果在执行命令中发生了错误,则返回值是t c l _ e r r o r 而字符串包含了 发生错误的条件。表2 - 1 列出了返回值和返回字符串。命令c a t c h 可以用来捕捉 中固科学技术大学硕士学位论文 甚十n j 的逻辑仿真测试、卜 ; 的l 世计0 实现 第二章逻辑仿真中的拂i ;【测试 t c i 一e r r o r 的返回,它的参数是要执行的t c l 命令,它把命令传递给t e l e v a l 柬 执行,但总是返回t c l o k 。如果错误发生了,c a t c h 命令会捕捉到从t c l e v a l 返 回的t c l e r r o r ,并把错误信息保存到t c l 变量e f f o f 中,返回t c l o k 给它的调 用者。 表2 - 1t e l 命令过程的返回值 以下是应用程序内嵌t c l 的典型程序结构。 # i n c l u d e # i n c l u d e m a i n ( i n ta r g c ,c h a r + a r g v ) t c l _ i n t e r p + i n t e r p ; i n tc o d e ; i f ( a r g cf - 2 ( f p r i n t f ( “u s a g e :sf i l en a m e n ”a r g v o ) ;e x i t ( 1 ) ; i n t e r p = t c l c r e a t e i n t e r p o ; 丰创建解释器4 c o d e = t c l _ e v a l f i l e ( i n t e r p ,a r g v 1 ) ; i f ( + i n t e r p 一 r e s u l t ! = 0 、p r i n t f ( “s n ”,i n t e r p 一 r e s u l t ) ; i f ( c o d ep t c l _ _ o k ) e x i t ( 1 ) ; e x i t ( o ) ; ) 对t c l 命令的扩展用法 c 语言很容易就能对t c l 的命令进行扩展,而且个用c 实现的命令比相应 的t c l 过程执行效率更高,还能实现用t c l 不能实现的功能。以下是对t c l 命令 进行扩展的典型程序结构。 # i n c t u d e 中国科学技术大学呗士学位论文 ! 型二型- 窒里兰塑笪皇型苎! 垒堕坠! ! ! 茎些 兰三里望塑堕壅! 塑坐坚型堕 p 声明用户定义的命令过程 i n tr a n d o r n c m d ( c l i e n t d a t a c l i e n t d a t a ,t c l i n t e r p + i n t e r p , i n ta r g c ,c h a r + a 唱v j ) ; m a i n ( i n ta r g c ,c h a r + a r g v 1 ) t c l m a i n ( a r g c ,a r g v ) ;e x i t ( 0 ) ; ) p t c l a p p l n i t 出t c i - m a i n 调用。+ i n tt c l a p p t n i t ( t c l i n t e r p + i n t e r p ) t 初始化tci + i f ( t c l i n i t ( i n t e r p ) 22t c l e r r o r ) r e t u mt c l e r r o r ; + 注册用户自定义命令+ t c l c r e a t e c o m m a n d ( i n t e r p ,r a n d o m ”,r a n d o m c m d , ( c l i e n t d a t a ) n u l l , r t c l _ c m d d e l e t e p r o c + ) n u l l ) ; + 定义起始文件+ t e l r e f i l e n a m e2 “ m y a p p t c l ;r e t u r nt c l o k ; + r a n d o m c m d 这是r a n d o m t c l 命令的实现+ i n tr a n d o m c m d ( c l i e n t d a t a c l i e n t d a t a ,t c l _ i n t e r p + i n t e r p ,i n ta r g o ,c h a r + a r g c ) ( + 此处为具体实现+ ) 2 3 3t e l 的库管理 由于仿真测试平台是基于t c l t k 开发的,几乎每个模块都是一个t c l 扩展 模块,这涉及到t c l 的库管理机制。 成组的t c l 命令保存在库中并组织成软件包。当一个应用程序使用库中的命 令时,t c l 会自动地加载相应的库。库将有用的t c l 过程集组织起来以便可以让多 个应用程序来使用。一种组织大型应用程序的方法就是划分为一个短小的主脚本 程序以及包含支持脚本的库。t c l 可以很好的支持这一方案。这种方案的好处就 是在于启动应用程序时,并不需要加载所有的t c l 代码。这样一来,应用程序启 动迅速,而且在存取新功能时,实现它们的代码可以被自动加载。 通常,库中的每个文件都向软件包提供一个特定的版本号。软件包还可以与 中国科学技术大学硕士学位论文 1 0 捧于t c ) 逻辑仍真测试f 竹豹改汁t t 实现 第二帝逻辑仿真中的协义测试 共享目标代码厍起工作,这些目标库以编译代码来实现t c l 命令。一个软件包 可以有脚本与目标文件组合提供。应用程序指定它们所需要的软件包,于是库就 会被自动加载。 2 3 。4t k 基础 仿真测试平台各个模块的图形界面,是用t k 开发的,下面简要介绍一下t k 的基础知识。 t k 是一个x 窗口系统下的工具集,它与其它x 工具集类似,也是由一套c 库组成的,主要功能包括以下几个方面:图形部件、窗口层次、事件绑定、位置 管理、选择机制、聚焦控制。下面分别介绍各个功能 2 4 。 图形部件:构建图形界面的各种元件,每一种元件对应于一条t k 命令,如 按钮( b u t t o n 命令) 、输入栏( e n t r y 命令) 、菜单( m e n u 命令) 等。命令附 带的参数决定图形部件在显示时的层次关系、名字和主要属性( 如按钮上的 文字) 。各部件按分类组织,同类部件具有相似的属性,在受到针对类的操 作时+ 同类中所有部件均受到作用。 窗口层次:运行w is h 时会出现一个空的窗口,这就是根窗口。由图形部件命 令生成的各种部件本身是一个个独立的小窗口,它们按树型结构从根窗口向 下展开。这种层次结构既构成窗口之间的隶属关系,又成为窗口名字的依据, 将作为程序中引用、修改和控制的代号。 位置管理:在t k 体制f ,由位置管理器( g e o m e t r ym a n a g e r ) 来安置各个部 件在屏幕上的位置,它总是以一个部件作为父辈,其他部见都作为子辈。父 辈几乎总是一个框架或容器,子辈部件在这个框架中以“洞模型”算法决定 位置,也就是每放进去一个部件就占用一定的空间和一个边,以后放进去的 部件只能放在剩余的空间和边中,洞就是指剩余的空间和边。 事件绑定:将来自x l l 窗e l 系统的事件与特定的图形部件相链接。绑定的顺 序是:先全局,如指定a 1 1 参数,则一旦事件发生,所有图形部件均受到影 响;再到类,只对某一类的图形部件起作用:最后是某个部件。绑定由b i n d 命令来具体实现,分别确定各个部件要对那些事件做出反映,如何处理事件。 聚焦控制:先由x 1 1 窗口系统将鼠标或键盘事件传给根窗口,再由t k 的f o c u s 中国科学技术大学硕i :学位论文 培于t c l 的逻辑仿真测试、p 台的改计q 实脱 第二章逻辑仿真中的协议测试 命令将事件传达到根窗口下的某个部件,常用于控制输入和规定操作步骤。 选择机制:x l l 窗口系统下应用之阳j 交换信息的一种方法。由t k 命令 s e l e c t i o n 和c l i p b o a r d 来完成两种具体模式:前者先由应用定义可以交换 的信息,再由其它应用通过发请求来寻找并获得有关信息;后者是一种暂存 机制,存放着刚被删除的信息,可用粘贴方式转至其它应用中。 t k 提供了一整套基于x l l 窗口系统的应用开发命令集 2 5 ,通过这些命令访 问x l l 的资源,调用x l l 的底层库函数x l i b 。开发者不需要了解x l l 服务器与 客户之间交互的过程,也不必在脚本中考虑x 11 的初始化、资源管理、回调函数 等细节问题,大大降低了图形界面应用的开发难度和复杂性。 中国科学技术大学硕士学位论文 媾ft e l 的逻辑仿真删试乎白的改计1 0 实现 第三章仿真测试卜台总体设计 第三章仿真测试平台总体设计 本章首先阐述了仿真测试平台的设计思想,继而提出了测试平台的总体框 架设计,并简要介绍了各个组成模块。测试平台采用t c l t k 作为主要实现工具, 开发了u n i x 和w i n d o w s 两种操作系统下的版本,实现了测试平台与操作系统无 关。 3 1 设计思想 3 , 1 1 基于t c l 的报文构造器设计 逻辑仿真测试平台的提出,是针对a t m 、i p 、s d h 领域内逻辑业务的仿真测 试的。这种仿真测试,有很大一部分内容是对逻辑的协议正确性处理功能的验证。 完成逻辑的协议正确性处理功能的验证,必然要求仿真测试平台支持产生强大的 报文激励数据。 本文借鉴基于t c l 的协议测试技术 2 6 ,设计了基于t c l 的协议报文构造器, 作为激励产生的引擎。基于t c l 的协议报文构造具有如下优点: 1 ) 强大的协议报文构造能力。将西议报文的构造和解析过程,设计成命令形 式的t c l 扩展过程,最后的到一些列扩展命令。这些扩展命令可以灵活方便 的构造正确的或者错误的协议报文。报文的解析过程也对应一系列的扩展 命令,可以解析正确的报文。 2 ) 执行效率高。虽然t c l 是解释执行,但主要的执行时间都是在t c l 的扩展过 程中,而t c l 扩展过程是c 语言经过编译之后的二进制码。 3 ) 可以由简单的扩展命令,组合成复杂的脚本过程。扩展命令可以单独使用, 也可以在脚本层进行组合。t c l 是一种具有c 语言灵活性的编程语言,很容 易编写复杂的脚本过程 中国科学技术大学硕士学位论文 尽十k j 的逻: i 仿真测试t 卜台的没汁0 实现 第三带仿真删试、p 台总体砹计 3 1 2 测试平台的控制模块线程设计 测试平台的主程序称为测试平台的控制模块,有两个线程:窗口界面线程, 。j 仿真器侧p l i ( p r o g r a m m i n gl a n g u a g ei n t e r f a c e ) 【2 7 】) 程序通讯的线程。后 者同时负责测试脚本的解释执行,这里把它叫做主线程。 需要探讨的是,在主线程里如何实现测试脚本的执行。测试脚本里有两个 特殊语句需要考虑,一一个是o n b r e a k ( 脚本的事件处理子程序) 语句,该语句定 义了一个t c l 子程序。另一个是r u n ( 用于启动控制模块的事件线程,脚本解释器 进入等待) 命令。当执行r u n 命令后,就暂停其后的脚本的执行,主线程开始等 待仿真过程中p l i 程序发送的消息,当某一个激励模块或分析模块达到特定条件, 向主线程发送消息有两种消,g o k n o t e 和e r r o r 。主线程判别消息类型,如果是 o k n o t e ,e r r o r 这两种消息,就解释执行o n b r e a k 语句( 传递的参数有消息类型, 模块名) 。如果是e r r o r ,o n b r e a k 语句中应该执 f s t o p 命令:如果是o k n o t e , 判断是否是预定端口,如果是,则o n b r e a k 语句中应该执行r e s u m e ( 在o n b r e a k 语句中使用,使r u n 命令退出,并执行脚本中r u n 命令的后续命令) 脚本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山西金融职业学院单招职业适应性测试备考试题及答案解析
- 2026年重庆应用技术职业学院单招职业适应性测试备考题库及答案解析
- 2026年江西婺源茶业职业学院单招职业适应性考试参考题库及答案解析
- 2026年重庆电讯职业学院单招职业适应性测试模拟试题及答案解析
- 2026年成都职业技术学院单招职业适应性测试模拟试题及答案解析
- 2026年江苏城市职业学院江都办学点单招职业适应性测试模拟试题及答案解析
- 2026年保定职业技术学院单招职业适应性考试模拟试题及答案解析
- 2026年阿克苏职业技术学院单招职业适应性测试模拟试题及答案解析
- 2026年德阳科贸职业学院单招职业适应性考试模拟试题及答案解析
- 急诊科主任急诊处理与抢救流程
- 抵押车过户协议书
- 北京市东城区2024-2025学年五年级上册期末测试数学试卷(含答案)
- 眼科手术患者的心理护理与情绪管理
- 项目分包制合同范本
- 2025天津大学管理岗位集中招聘15人考试笔试备考题库及答案解析
- 企业数据安全管理制度
- 学堂在线 雨课堂 学堂云 批判性思维-方法和实践 章节测试答案
- 马眼看世界之品牌与品质的关系课件
- 香港验血测性别报告单
- 旋挖桩钻进记录-自动计算-含公式
- 高效能人士提高办事效率七个习惯学员
评论
0/150
提交评论