星载解调器代码的验证

2015-06-23 16:27张鸣芸王立民
无线电工程 2015年7期
关键词:测试点测试用例覆盖率

张鸣芸,王 薇,王立民

(中国电子科技集团第五十四研究所,河北 石家庄 050081)

星载解调器代码的验证

张鸣芸,王 薇,王立民

(中国电子科技集团第五十四研究所,河北 石家庄 050081)

专用集成电路(ASIC)在卫星通信系统的应用使得设计开发周期变短,为了保证可靠性则需要对代码进行充分的测试验证,这将耗用较多时间。为了解决这个问题,在有限的时间内对星上代码进行快速有效的验证,介绍了一种覆盖率引导的功能验证方法。采用该方法对星上解调器代码进行了验证,详细介绍了验证过程。测试结果表明,该方法可有效加速代码验证过程,保证可靠性。

ASIC;解调器代码;覆盖率

0 引言

随着数字化调制解调技术的发展,目前现场可编程门阵列(FPGA)因其编程的灵活性在卫星通信系统中广泛使用。然而近年来,在空间环境中使用大规模数字逻辑电路而发生的单粒子事件愈加频繁。而FPGA抗单粒子能力较弱[1,2],使用ASIC代替FPGA成为星上抗单粒子的技术手段之一。但是由于ASIC一经流片,便不能更改,因此相对以往基于FPGA的开发流程,留给设计修改验证的时间大幅缩短。传统的验证方法是根据功能需求逐个编写测试激励,通过仿真得到测试结果,当测试结果全部通过后即认为验证结束。然而由于星上产品高可靠性要求的特性,对验证的完备性极为关注。一般而言,更加充分的验证也就需要耗费更多的时间,而传统的验证方法基于开环流程的特点无法评估代码的验证程度。为了加速验证过程,帮助评估验证程度,在对星载解调器代码进行测试验证的时候以传统的功能验证为基础,引入了覆盖率测试作为反馈和引导。在进行验证时,测试激励的全部通过并不意味着验证结束,而是以覆盖率测试的结果为导向,有针对性地开始下一轮验证过程,以此形成一个不断改进的闭环过程,直至验证的完备性达到预期。这种方法可以达到加速代码的问题收敛及缩短验证过程的目的。

1 验证方法

集成电路的验证指检测硬件语言设计是否满足设计需求的过程,具体来说就是在设计需求规定下施加激励,验证电路是否产生了符合功能要求的输出,以及在设计规定的条件下,电路是否完成正常的功能。目前验证的常用方法有基于仿真的验证方法以及形式验证方法[3]。其中形式验证发展还未成熟,基于仿真的验证方法是主流模式。基于仿真的验证是以设计的功能需求为基本出发点,对设计进行仿真,检测设计实现的功能是否达到了功能需求。

基于仿真的验证流程如下:首先依据设计需求设计测试用例[4],每一个测试用例通常包含测试点和测试数据2部分。测试点是指测试用例要测的特性,测试数据包括激励数据和标准的响应输出数据[5]。然后根据测试用例设计相应的激励和标准输出,经过仿真后,将仿真输出结果与标准输出结果进行比较,从而验证设计的正确性。

上述验证过程的出发点是系统的功能,因此每一个测试用例都需要精心设计。在系统较为简单时,足够详尽的测试用例可以查出大部分错误。但是随着系统功能日益复杂,测试用例的设计难度随之不断增大,测试用例的质量受限于设计者的经验,即使所有的用例都通过测试,也无法保证没有异常出现或者没有考虑到的情况发生,因此衡量验证的完备程度成为验证的关键。

2 覆盖率引导的验证方法

2.1 覆盖率

鉴于传统验证无法评估验证程度的缺点,引入了覆盖率测试作为传统验证方法的补充。覆盖率测试包括功能覆盖率测试和代码覆盖率测试,功能覆盖率用于反映测试用例执行测试功能点的情况,包括执行功能点的比例和具体没有执行的功能点。在验证过程中,依据测试计划逐项测试用例的测试也可认为是对功能的覆盖测试过程。代码覆盖率反映设计工程师编写代码的执行效率,代码覆盖率可以通过EDA工具自动收集,既反映执行比例,又能明确没有执行的行、条件或状态机。很多EDA工具可以进行覆盖率测试,其中仿真工具ModelSim中也带有覆盖率测试工具[6],仅需要在编译及仿真之前勾选相应覆盖率分析选项即可。代码覆盖率只能保证所编写代码的执行程度,不能保证所执行代码的功能正确。但是其可以直观地反映代码的执行情况,帮助设计工程师分析代码[7,8]。

2.2 验证步骤

覆盖率引导的验证步骤主要包括验证特性提取、测试点分解、测试用例编写、测试用例执行和覆盖率分析。

在验证过程中,首先根据星载解调器的需求规格提取验证特性。验证特性是从验证的角度描述需求,说明了某个需求规格对应需要验证的多个特性,它包括功能、性能、容错性、可靠性及缺省功能特性等[9]。星载解调器的主要工作是将接收的上行数据进行解调处理。作为数字处理的核心部分,星载解调器解调代码主要验证特性就包括了接收星上遥控指令,发送遥测数据,对输入的中频采样数据进行解调处理及组帧输出等。

随后根据验证特性提取验证测试点,例如在解调最主要的数据解调功能中,主要功能特性包括了解调器的基本性能指标,包括信号电平动态范围、频差捕获范围及时钟偏差纠正范围等。测试点将指导测试用例的开发和覆盖率组的编写,测试点的提取综合使用等价类法和边界值法实现[10,11]。等价类的基本思想就是把所有可能的输入数据,即程序的输入域划分成若干子集,然后从每一个子集中选取少数具有代表性的数据作为测试用例。边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。例如,假设解调器电平范围为L,最小电平为L0,最大电平为L1,那么该性能要求所需的测试点便包括了L0、L1、介于L0与L1之间的一到两个值、小于L0的一到两个值、大于L1的一到两个值,共至少5个测试点。

确定测试点之后,开始编写测试用例,测试用例用于覆盖测试点,一个测试点对应一到多个测试用例,一个测试用例也可以覆盖一到多个测试点。例如解调器的电平范围需要多个测试用例测试,而一个测试用例也可同时测试信号的最高电平、最大频率偏差的若干个测试点。验证过程中所需的测试向量的生成机制可分为3类:直接激励、随机激励、和可约束的随机激励[12,13]。后2种方式人工耗费较小,但是针对性不强,在极为复杂的系统验证中得到了广泛应用。而直接激励就是完全由验证人员手动写成的固定向量,通过直接激励,可以准确有效地触发验证的某个目标功能,人工耗费较大。由于星载解调器的主要处理过程是针对数据流的处理,逻辑处理方面算不上特别复杂,因此采用了直接激励的方式进行验证。其中中频采样数据数据源利用MATLAB软件产生。

测试用例的执行过程是利用已形成的若干测试用例进行仿真并与标准的响应输出数据进行比较,从而确定仿真结果的正确性。覆盖率分析则在功能验证的同时进行,找出未覆盖地方或者程序的错漏之处。

3 覆盖率引导的的验证流程

覆盖率引导的验证过程是以传统的验证为基础,在功能验证的同时对覆盖率进行测试,来监视并提高验证的完备性,同时在覆盖率分析的过程中发现功能点遗漏或错误。

在首次对代码进行验证时,可能代码本身和验证环境都很不成熟,存在着诸多问题,此时主要对关键的功能点进行测试,使验证系统启动起来。随着代码本身和验证环境逐渐趋于稳定,之后的测试过程主要关注如何迅速提高验证的覆盖率。在此阶段,根据被测功能,对各种功能进行测试,同时监测覆盖率水平,根据覆盖率来修改激励,继续进行测试,然后再根据覆盖率修改约束,如此反复,以完成对绝大多数功能覆盖点的测试。

具体如下:在第1轮测试时,根据测试计划设置一组测试用例依次进行仿真,在此过程中可发现代码的错误及疏漏之处,此时需要返回代码进行修改并重新测试,直至此组测试用例全部测试完成,并且测试结果符合预期。但是此时还不能结束验证工作,需要利用覆盖率对此轮验证工作进行评估,找出覆盖率漏洞,即未被覆盖之处。

当发现覆盖率漏洞时需要对其进行分析,这时可能出现几种情况:

①当前测试用例不完备,这时需要修改或增添测试用例来使测试更加完备。此时一种常见错误是编写测试向量时遗漏了对某个条件或是某些属性的操作,这种情况只要更正这些遗漏,就可以达到更完备的覆盖率。

②某段代码本身是冗余代码,或者代码本身存在某种逻辑错误,这时应该去除冗余代码,对问题代码进行修改,增加其可维护性;例如发现一组复杂条件选择判定(if else)语句的最后一个条件无法触发,经过分析发现最后一个分支的条件设定包含在之前几个分支之内了,因此无法被触发执行,这种情况下需要对此处程序进行更正。

③一些未覆盖点属于由于设计限制永远不会执行到的代码,这种语句可以在覆盖率分析开始之前就将其排除在外,不对其进行分析,也可以选择忽视它。

在采用各种方式填补覆盖率漏洞后,可以开始第2轮测试,由于第1轮测试可能对代码本身以及测试用例均进行了修改,在重新执行功能测试时,可能原先能通过验证的功能点在修改后不能通过了,此时需要着重对这些地方进行分析,常常会发现一些之前被疏忽的边界情况,这有益于提升测试用例的完备性,更有效的开展下一轮测试。利用覆盖率引导的功能验证流程如图1所示。

在验证时进行的代码覆盖率分析能够帮助设计工程师发现一些功能的遗漏和不完善之处,同时也发现测试计划中被忽略的功能,需要针对这些功能生成更多的测试用例。在下一轮测试之前发现这些问题,可加速代码以及测试向量的问题收敛,有效的避免在后续设计工作中时间和资源的浪费,缩短整个验证过程,也减少了重新流片或者成品含有缺陷的风险。

图1 验证流程

4 验证结果

根据上述方法对星载解调器代码进行3轮测试后,代码经过不断的修改完善已经较为成熟,功能测试和覆盖率测试指标也达到预期要求。同时最终形成的测试激励组也可认为对星上解调代码来说是完备的。星上解调代码的最终形成的各种覆盖率数据如表1所示。其中表达式覆盖率、状态覆盖率和转移覆盖率均已达到100%,而语句、分支、条件覆盖率也在90%以上,达到了预期要求。

表1 覆盖率数据

5 结束语

为了在有限时间内对星载解调器代码进行充分有效的测试验证,在功能验证的基础上,引入了覆盖率测试作为功能验证的反馈和引导。在功能验证的同时对覆盖率进行统计分析,以期尽快发现设计中的错误及漏测的功能点,尽量避免将问题带入下一轮测试,加快问题的收敛速度。

在验证的过程中,以覆盖率为依据改进和完善代码设计以及测试向量,最后达到了较为完善的功能测试和符合预期的代码覆盖率水平。通过实践证明了覆盖率引导的功能验证方法具有更高的效率。应用该方法最终在较短的开发测试周期内对星上解调代码进行了较好的测试验证,也为星载解调器最终平稳正确运行提供了可靠保证。

[1]邱金娟,徐宏杰,潘 雄,等.SRAM型FPGA单粒子翻转测试及加固技术研究[J].电光与控制,2011,18(8):84-88.

[2]高 鹏,庞宗强,周同.Virtex FPGA抗单粒子翻转技术[J].无线电通信技术,2014,40(4):73-76.

[3]孙海平,丁 健.系统芯片(SOC)验证方法与技术[M].北京:电子工业出版社,2005.

[4]杨 悦,秦湘河,杨永安,等.航天测控软件测试用例标准及应用研究[J].无线电工程,2013,43(9):41-44.

[5]杨宗凯,黄 建,杜 旭.数字专用集成电路的设计与验证[M].北京:电子工业出版社,2004:125-169.

[6]杜慧敏,李宥谋,赵全良.基于Verilog的FPGA设计基础[M].西安:西安电子科技大学出版社,2006.

[7]项碧波.代码覆盖率分析——IC设计流程中不可缺少的一步[J].集成电路应用,2002(1):49-52.

[8]席筱颖,毛志刚,殷景华.一种基于覆盖率的功能验证方法[J].哈尔滨理工大学学报,2008,13(1):90-92.

[9]罗登富,赵建明.基于覆盖率的集成电路验证[J].现代电子技术,2009(14):115-119.

[10]王爱平.软件测试[M].北京:清华大学出版社,2008.

[11]周元哲,胡 滨,潘晓英,等.软件测试技术基础[M].西安:西安电子科技大学出版社,2011.

[12]刘 雅.星载软件测试用例设计方法的研究[J].航空计算技术,2010,40(3):99-102.

[13]武剑洁,陈传波,肖来元.软件测试技术基础[M].武汉:华中科技大学出版社,2008.

The Verification of Satellite Demodulator Code

ZHANG Ming-yun,WANG Wei,WANG Li-min
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)

The application of ASIC in satellite communication system brings a shorter design period.However comprehensive code verification costs more time to guarantee system reliability.To verify the satellite code in a short period,a fast and effective approach which combines functional verification and code coverage testing was introduced in this paper.The method was applied to a satellite demodulator code.This paper introduced in detail the procedure of the verification and analyzed the result.Test results indicate that the method could effectively shorten verification time and assure the reliability.

ASIC;demodulator code;coverage

TN431.2

A

1003-3106(2015)07-0059-03

10.3969/j.issn.1003-3106.2015.07.16

张鸣芸,王 薇,王立民.星载解调器代码的验证[J].无线电工程,2015,45(7):59-61,74.

张鸣芸女,(1983—),工程师。主要研究方向:卫星通信。

2015-04-07

国家部委基金资助项目。

王 薇女,(1980—),高级工程师,主要研究方向:卫星通信。

猜你喜欢
测试点测试用例覆盖率
民政部等16部门:到2025年村级综合服务设施覆盖率超80%
矿山长距离胶带机动力特性测试及运行分析
基于信息熵可信度的测试点选择方法研究
我国全面实施种业振兴行动 农作物良种覆盖率超过96%
基于SmartUnit的安全通信系统单元测试用例自动生成
逻辑内建自测试双重过滤测试点选取策略
基于需求模型的航天软件测试用例生成方法
基于喷丸随机模型的表面覆盖率计算方法
2015年湖南省活立木蓄积量、森林覆盖率排名前10位的县市区
基于依赖结构的测试用例优先级技术