集成电路测试系统软件的设计及实现

2010-09-12 03:21李旭刚
电子测试 2010年9期
关键词:测试程序编译器流程图

李旭刚

(电子科技大学自动化工程学院,四川成都 611731)

0 引言

1 开发平台的基本功能

在集成电路测试系统中,软件开发平台是测试人员与测试设备之间的操作接口。该软件平台具有如下几种功能:

(1)系统资源描述及通道设置。

(2)基于流程图的IDE设计,包括测试流程图的编辑和转化。

(3)文本测试程序编译生成dll动态库序列。

(4)软件平台调用dll动态库序列完成IC测试。

(5)测试数据处理功能。

2 集成电路测试系统硬件建模

为了编写优秀的软件平台,对集成电路测试仪的建模是必须的,本文介绍的测试系统主要针对模拟器件,其硬件框图如图1,各个模块解释如下:PCI驱动卡负责把计算机PCI总线转换成测试系统内部总线;功能板为被测对象提供测试通道,实现对DUT 测试点的施加和测量;通道控制板,其实是一个矩阵开关,完成DUT 测试点与功能板的通道切换;测试控制板是针对特定的测试IC 设计的辅助测试板,根据不同的测试参数变换不同的测试电路;测试系统内总线包含22 位地址以及一些读写、中断和板卡选择控制线。

(3)进一步完善相关辅助行业推动机制。旅游产业的发展离不开相关辅助行业的推动,旅游业包含的相关行业繁多而复杂,要想提高旅游产业的竞争力,必须进一步完善与相关辅助行业的协同合作,两者相辅相成,具有共生关系。

图1 测试系统硬件框图

3 软件平台总体设计

自动测试系统的软件平台是整个系统的核心和关键,它是联系测试资源和被测对象的软桥梁,其体系结构的好坏直接关系到整个自动测试系统的性能。结构良好的软件体系结构应该具备:层次化,组件化,标准化的特征;同时满足测试程序的可移植性及仪器的互换性要求;此外,测试系统软件结构应当是开放的,可扩充与裁减,功能模块可重用,系统可重构[2]。借助于对硬件的建模,本文采用用户IDE界面层、数据交互层、功能驱动层(包括功能板驱动,通道控制板驱动以及测试控制板驱动),PCI驱动层等4层软件结构,实现软件框架设计,如图2所示。

图2 集成电路测试系统软件分层结构

4 基于流程图编程的IDE设计

流程图编程采用逐次封装技术:第一层封装,即把功能驱动提供的API函数封装为功能图元,把一些计算处理的算法封装为辅助图元,当用户调用功能图元或辅助图元时,只需向图元提供相应的参数即可,这一层封装由系统提供。第二层封装:用户根据测试流程调用相应的功能图元和辅助图元来测试IC某个测试参数并封装为测试参数图元。第三层封装:用户调用测试参数图元完成整个测试项目的程序的编写,并封装为一个集成IC测试程序。在采用上述分层封装技术,分别完成测试参数图元的编程和整个测试项目的编程。

将流程图转化为文本代码首先需要对流程图结构进行分析,获取流程图图元的连接信息,分析流程图时序以及循环分支结构,并把这些信息保存在一个外部文档中,实现流程图结构的文本描述;然后根据外部文档产生出对应的文本代码。分析测试流程图的结构主要是分层遍历测试流程图中的所有图元,先遍历第一层,再遍历第二层。为实现对循环结构的遍历本文采用了递归以及堆栈操作;为实现分支结构的遍历采用递归以及链表数据结构。通过一般流程图的分析可以看出循环和分支结构存在如下关系:循环中包括分支、循环中的分支跳出循环、分支中包括循环以及循环超出分支等关系。为了解决测试流程图中这种复杂的循环分支关系,本项目采用循环函数和分支函数来处理,函数流程图如图3和图4,通过这两个函数就可以把一个复杂的测试流程图转化为测试代码了。

5 测试程序编译为DLL动态库

通过测试流程图编辑环境转化出来标准C结构的测试文本代码后还需将测试文本代码编译连接成DLL或EXE形式的二进制序列才能供开发环境加载或运行,在综合比较GCC(g++)和VC的编译器cl.exe后,在本项目中,采用VC的编译器cl.exe作为测试代码的编译器。在控制台中键入:”cl /?”,将出现cl的命令行参数:

CL [option...]file...[option | file]...[lib...][@command-file][/link link-opt...]

[option…]:一个或多个 CL 选项。注意,所有选项都应用于所有指定的源文件。选项是由一个正斜杠 (/) 或一个短划线 (–) 指定的。如果某个选项带有参数,则该选项的说明指定在选项和参数之间是否允许有空格。选项名(/HELP 选项除外)区分大小写。

Lib: 一个或多个库名。CL 将这些名称传递给链接器。

Filename: 一个或多个源文件、.obj 文件或库的名称。

command-file: 包含多个选项和文件名的文件。

本项目中通过创建一个进程调用cl.exe,并且通过管道技术对进程输出重定位,将编译信息输出到指定的缓冲区,以显示到IDE界面,并根据编译信息调整测试程序。

创建管道:

CreatePipe(&hReadPipe,&hWritePipe, &saPipe, 0);

输出重定位:

startupInfo.hStdError = hWritePipe;

startupInfo.hStdOutput = hWritePipe

图3 循环结构函数流程图

创建进程:

CreateProcess(NULL,cmdline , &sa, &sa, TRUE, 0,NULL, NULL, &startupInfo, &processInfo);

图4 分支结构流程图

获取编译信息:

ReadFile(hReadPipe, buf, sizeof(buf) - 1, &num,NULL)

其中进程命令行的设置至关重要,设置出错将导致调用编译器失败。在本项目中以一个批处理文件来组织命令行参数,即:str = " compile.bat ",该文件主要是实现cl编译器的环境变量设置以及调用cl编译器生成动态库。vc++6.0 编译器环境变量设置在由“VCVARS32.BAT”批处理文件完成,该文件在安装目录下可以找到;cl编译器的调用格式如下:Cmdline="cl /LD /TEST.dll source.c x.lib",其中TEST.dll为编译生成的DLL,也可以不要该参数,那么编译出来的DLL和源文件同名;source.c为测试程序源文件,x.lib为所需的库。

6 应用和结论

测试MC4558两个参数:OS和AVOD,其测试流程图如图5所示,由测试流程图转换得到的测试代码如图6所示,在文本代码的基础上即可编译连接得到dll序列,最终完成测试。基于流程图编程技术,打破了传统的文本编辑测试程序的格局,使技术人员编程更加高效。该软件平台在硬件支持的情况下可以测试各种模拟IC,通用性强。

图5 MC4558(OS,AVOD)测试流程图

图6 MC4558(OS,AVOD)文本代码

[1]李宝安, 李行善.自动测试系统(ATS)软件的发展及关键技术[J ].测控技术,2003 ,22 (1) :124.

[2]张在得,曹乃森,蒋晓松.ATE通用性设计与实现[J].计算机测量与控制,2003,11(11):830-832.

[3]戴春翟, 李晓静, 张侃谕.集成电路测试系统通用测试软件的研究与设计[J].电子测量技术 ,2010,33(1):133-135.

[4]Microsoft 工作室, 开发Microsoft Visio 解决方案[M].北京:北京大学出版社,2002.

[5]GEORGE SHEPHERD.Visual C++.net 技术内幕[M].6 版.北京:清华大学出版社,2004.

[6]于功敬,张韬.VXI 通用测试软件框架结构的研究[J].计算机自动测量与控制,1999,7 (3) :627.

[7]高天德,杨小丽.基于配置文件的自动化测试软件设计方法[J].测控技术,2009 ,28 (6) :70.

[8]陶立峰.跨平台IC 转换测试系统的研究与实践[D].天津:天津大学,2000.

猜你喜欢
测试程序编译器流程图
基于相异编译器的安全计算机平台交叉编译环境设计
基于Castle型机械手的三温量产测试平台实现
手机APP交互界面人因适合性测试程序的设计与实现
专利申请审批流程图
专利申请审批流程图
电气自动化控制设备可靠性测试探讨
宁海县村级权力清单36条
通用NC代码编译器的设计与实现
《天津医药》稿件处理流程图
编译器无关性编码在微控制器中的优势