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”)打开旧网表文件,然后利用fgets()函数把一行信息读到临时字符数组str[]中,使用strcmp()函数分别与“[”和“]”进行比较,以确定某一个元件信息的开始和结束。另外使用strcmp()函数与“(”比较,以确定元件定义的结束和网络信息定义的开始。按照前面的设计思路,我们需要从网表文件中提取的仅是网络信息,因此,用feof()函数判别是否读到旧网表文件尾,如没有,则通过调用fgets()函数读取一行信息,只要不是“(”,说明该行信息不属于网络定义部分,用continue语句跳过;继续读取下一行,直到读到“(”,说明已经读到网络定义部分,可以将该行信息及其之后的所有信息都写入新的网表文件。打开新网表文件可以看到,新网表文件已经过滤掉了旧网表文件中与测试无关的元件信息部分,而只保留了网络的定义部分。本部分程序流程如图1所示。 3.2 网表文件中电源及接地模块的过滤在新网表文件创建成功以后,对其进一步分析可以知道,在新的网表文件中包含了一些电源模块,如+1.2v,+1.8V,+2.5V,+3.3V,+5V,+12V等;还有接地模块GND,GNDC等。这些模块所包含信息仍与测试管脚无关,所以还需要过滤掉。过滤这些电源模块和接地模块的方法仍然是采用fgets()函数依次渎取每一行信息,然后调用strcmp()函数进行判断是否为对应的电源及接地模块,如果是,则跳过该模块的文件块,从“(”开始,至“)”结束。本部分流程如图2所示。 3.3 待测器件管脚连线文件的生成过程分析经过以上两步处理后的网表文件中只余下net信息了。在界面上输入需要测试的元件名,然后在新网表文件中查找出包含所有待测试元件的网络节点,最后将查找出的网络结点以一定的格式存入一个新的文件。由于在新网表文件中要抽取出的是在同一个网络结点中同时包括多个待测元件的那些引脚号,即这些器件之间的连线。因此,在使用fgets()函数一行一行读取信息时,首先从每行信息中抽取出元件名,然后将该元件名与输入的待测试的元件名进行比较,如一致则将该行信息写入新文件,否则接着读下一行信息。当整个结点信息读取完毕时,新文件保存的只是那些与待测元件相匹配的引脚信息。本部分程序流程如图3所示。
4.结束语本文主要介绍集成电路可测性设计项目中针对Altera DE2 Cyclone II开发板的网表文件进行解析,提取待测试器件引脚连线的方法及实现过程,该方法同样适用于其他的网表文件。经过测试,本软件通过对开发板网表文件的解析,为实现对电路的结构测试奠定了一个非常好的基础,既提高了芯片的质量保证,又改善了设计电路的可测性,基本达到了预期的目的。