1.前言随着微电子制造技术向深亚微米方向发展,数字集成电路的集成度也越来越高,而半导体工艺中可能引入各种失效,另外材料的缺陷以及工艺的偏差都可能会导致芯片中电路连接的短路、断路以及器件结间穿通等问题。这样的物理失效必然导致电路功能或者性能方面的故障。为了保证设计的正确性,在制造和使用芯片时必须要对其进行测试。目前最有效的方法就是采用可测性设计技术(dft,de-signfortestability),即在设计时就保证电路的可测性。对数字逻辑电路的测试包括功能测试和结构测试。功能测试是检测该模块在系统中工作状态下的常用功能,并检测模块与系统的接口连接。但由于模块的复杂性,在限定的时间内,穷举所有的功能并加以测试通常是不可能的。结构电路测试是对内部的电路结构进行全面的测试,以保证该电路实现的功能的正确性。结构电路测试首先需要将电路的物理缺陷模型化,建立故障模型,产生测试激励。然后将测试激励从原始输入引入故障点,并将故障点的测试响应传播到电路的原始输出,最后比较测试响应与无故障响应,判断电路是否有故障。1986~1988年,以欧洲和北美会员为主的联合测试行动组织(jtag,jointtestactiongroup)率先开展了边界扫描技术的研究,提出了一系列jtag边界扫描标准草案。1990年teee和jtac共同推出了ieeestd1149.1边界扫描标准。其主要思想是:通过在芯片管脚和芯片内部逻辑电路之间,即芯片的边界上,增加边界扫捕单元来实现对芯片管脚状态的串行设定和读取,从而提供芯片级、板级和系统级的标准测试框架。芯片扫描机制可实现下列目标:测试电路板上不同芯片之间的连接;测试芯片及电路板的功能;应用边界扫描寄存器完成其他测试功能,如特征分析等。在本项目中将采用边界扫描技术,针对alterade2,cycloneii开发板进行结构测试,以保证电路功能的正确性。其基本测试思路是采用遍历的方式检测开发板上多个集成器件的不同引脚之间的连通性,在保证连通性的基础上,引人测试激励来判断电路是否有相应的响应输出。这中间最关键的要素是要通过对开发板网表文件的解析,提取出待测的集成器件的引脚连线。本文通过对网表结构的分析,得出解析网表的一种有效方法:首先,针对cadence网表文件,一行一行的读出每行数据,然后针对每行数据进行语义解析,从中抽出相关的网络信息,再选取需要测试的元件名,把与这些元件相连的所有引脚抽取出来,存到一个新的文件中去,该文件就包含了待测器件的所有连线信息。
2.网表文件格式分析cadence网表的格式由两部分组成,一部分是元件的定义,另一部分是网络的定义。具体如下:2.1元件的定义格式网络表第一部分是对所使用的元件进行定义,一个典型的元件定义如下:每一个元件的定义都以符号“[”开始,以符号“]”结束。第一行是元件的名称,即designator信息;第二行为元件的封装,即footprint信息;第三行为元件的注释。2.2网络的定义格式网表的后半部分为电路图中所使用的网络定义。每一个网络定义就是对应电路中有电气连接关系的一个点。一个典型的网络定义如下:每一个网络定义的部分从符号“(”开始,以符号“)”结束。“(”符号下第一行为网络的名称。以下几行都是连接到该网络点的所有元件的元件标识和引脚号。如c2-2表示电容c2的第2脚连接到网络。netc2_2上;x1-1表示还有晶振x1的第1脚也连接到该网络点上。根据对网表格式的分析可以看出每个元件都具有固定的格式:元件名,元件值,封装类型,引脚数,x坐标,y坐标;器件与器件之间用[]隔开;紧随器件之后的是net;每个net中的内容都是“元件名-引脚号”(注:个数可能是不一样);net与net之间用()隔开。本软件的开发平台是c++builder6.0,采用的编程语言为c语言。基本思路为从网表文件的读入解析开始,先从网表文件中删除元件定义部分,然后是根据输入待测试的集成器件名进行抽取相关的网络信息,最后生成一个层次清晰、功能明确的待测元件管脚连线文件。
3.网表解析过程分析本文介绍了集成电路可测性设计项目中针对电路网表文件进行解析,提取待测集成器件之间管脚连线的方法和过程。网表析取程序的要求是:在给定网表基础上,首先将网表转换为有利于提取网络定义信息的新网表,即从原有网表文件中删除所有的元件定义信息和电源|稳压器模块及接地模块信息;然后从新网表中,根据要测试的集成元件名提取出相应的管脚连线信息;最后再把管脚连线信息按照易于测试的文件格式进行保存。3.1网表文件中元件信息的过滤根据对网表格式的分析可以看出对网表采用单行读取的方法比较方便,故通过调用fgets()函数来读取文件的每一行。由于每个器件的信息是用“[]”隔开的,这样“[”,就可以作为一个元件信息是否开始的标志,而“]”就可以作为一个元件信息是否读完的标志。对旧网表,首先声明一个file指针,用fopen(“旧网表的路径”,“r”)打开旧网表文件,然后利用fg