EDN首页   博客首页

0

关于投票
集成电路可测性设计中网表的解析与实现(zz)
1.前言  

        随着微电子制造技术向深亚微米方向发展,数字集成电路的集成度也越来越高,而半导体工艺中可能引入各种失效,另外材料的缺陷以及工艺的偏差都可能会导致芯片中电路连接的短路、断路以及器件结间穿通等问题。这样的物理失效必然导致电路功能或者性能方面的故障。为了保证设计的正确性,在制造和使用芯片时必须要对其进行测试。目前最有效的方法就是采用可测性设计技术(DFT,De-sign For Testability),即在设计时就保证电路的可测性。对数字逻辑电路的测试包括功能测试和结构测试。功能测试是检测该模块在系统中工作状态下的常用功能,并检测模块与系统的接口连接。但由于模块的复杂性,在限定的时间内,穷举所有的功能并加以测试通常是不可能的。结构电路测试是对内部的电路结构进行全面的测试,以保证该电路实现的功能的正确性。结构电路测试首先需要将电路的物理缺陷模型化,建立故障模型,产生测试激励。然后将测试激励从原始输入引入故障点,并将故障点的测试响应传播到电路的原始输出,最后比较测试响应与无故障响应,判断电路是否有故障。 1986~1988年,以欧洲和北美会员为主的联合测试行动组织(JTAG,joint test action group)率先开展了边界扫描技术的研究,提出了一系列JTAG边界扫描标准草案。1990年TEEE和JTAC共同推出了IEEE Std 1149.1边界扫描标准。其主要思想是:通过在芯片管脚和芯片内部逻辑电路之间,即芯片的边界上,增加边界扫捕单元来实现对芯片管脚状态的串行设定和读取,从而提供芯片级、板级和系统级的标准测试框架。芯片扫描机制可实现下列目标:测试电路板上不同芯片之间的连接;测试芯片及电路板的功能;应用边界扫描寄存器完成其他测试功能,如特征分析等。在本项目中将采用边界扫描技术,针对AlteraDE2,Cyclone II开发板进行结构测试,以保证电路功能的正确性。其基本测试思路是采用遍历的方式检测开发板上多个集成器件的不同引脚之间的连通性,在保证连通性的基础上,引人测试激励来判断电路是否有相应的响应输出。这中间最关键的要素是要通过对开发板网表文件的解析,提取出待测的集成器件的引脚连线。本文通过对网表结构的分析,得出解析网表的一种有效方法:首先,针对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”)打开旧网表文件,然后利用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开发板的网表文件进行解析,提取待测试器件引脚连线的方法及实现过程,该方法同样适用于其他的网表文件。经过测试,本软件通过对开发板网表文件的解析,为实现对电路的结构测试奠定了一个非常好的基础,既提高了芯片的质量保证,又改善了设计电路的可测性,基本达到了预期的目的。

系统分类: 模拟技术
用户分类: 模拟电路
标签: 集成电路
来源: 无分类
发表评论 阅读全文(90) | 回复(0)

0

关于投票
IC卡原理 (转)

IC卡 (Integrated Circuit Card,集成电路卡)是继磁卡之后出现的又一种新型信息工具。IC卡在有些国家和地区也称智能卡(smart card)、智慧卡(intelligent card)、微电路卡(microcircuit card)或微芯片卡等。它是将一个微电子芯片嵌入符合ISO 7816标准的卡基中,做成卡片形式;已经十分广泛地应用于包括金融、交通、社保等很多领域。
IC卡读写器是IC卡与应用系统间的桥梁,在 ISO国际标准中称之为接口设备IFD(Interface Device)。IFD内的CPU通过一个接口电路与IC卡相连并进行通信。IC卡接口电路是IC卡读写器中至关重要的部分,根据实际应用系统的不同,可选择并行通信、半双工串行通信和I2C通信等不同的IC卡读写芯片。

系统分类: 模拟技术
用户分类: 模拟电路
标签: IC卡
来源: 无分类
发表评论 阅读全文(111) | 回复(0)

0

关于投票
三极管工作原理

本人初学模电,遇到三极管中的一个基本问题,总是弄不明白,希望各位高手们不吝赐教,在下感激不尽!
       问题一:三极管的三种工作状态 放大,饱和导通,截止时它们的Ube  Ubc  Uce到底有些什么关系啊?(是不是饱和导通时候Ube =Ubc=0.7V,还有截止时候Uce=0.2V,还有放大时候好象也有Ube =0.7V,那么各种状态Ube  Ubc  Uce有没有个固定的电压值呢?)
        问题二:附图是数电书上的BJT反向器的原理图,我也是其中的各个三极管的发射极,基极,集电极的电压关系不清楚,另外输入为3..6V的时候,三极管Q4的基极电压为2.226V,而输入为0.2V的时候,三极管Q4的基极电压为885.5mV。接法都一样,为什么三极管Q4的基极电压会有这么大的变化呢?三极管的基极电压由什么决定呢?(另外电流关系也帮忙解释下)谢谢!

点击开大图

点击开大图

点击开大图

点击开大图

系统分类: 模拟技术
用户分类: 模拟电路
标签: 三极管工作原理
来源: 无分类
发表评论 阅读全文(230) | 回复(0)

0

关于投票
TTL逻辑门电路

三极管-三极管逻辑(TTL)电路是用BJT工艺制造的数字集成电路,目前国内产品型号为CT74和54系列,对应以前产品型号CT1000系列。本节以TTL与非门为例,介绍TTL电路的一般组成、原理、特性和参数。

TTL与非门内部基本结构如图2-18(a)所示,多发射极管T1为输入级,T2为中间级,T3和T4组成输出级。NPN型多发射极管T1的基极类似于图2-16中多个二极管(发射结)的共阳极,当A、B、C中有一个或一个以上为低电平,对应发射结正偏导通,VCC经R1为T1提供基极电流。设输入低电平VIL =0.3V,输入高电平VIH =3.6V,VBE =0.7V,则T1基极电位VB1 =1V,T2因没有基极电流而截止,因此T3也截止。因为T2截止,VCC经R2为T4提供基极电流,T4导通输出高电平VOH (= VCC – IB4R2-VBE4 – VD ),由于IB2很小,忽略该电流在R2上直流压降,则VOH=5V-0.7V-0.7V≈3.6V。当A、B、C全为高电平或全部悬空,VCC经R1经T1集电结(类似于图2-16中D4)为T2提供基极电流,T2导通。此时,T1基极电位VB1(为T1集电结T2发射结T3发射结三个PN结正向压降之和)=2.1V。T2导通一方面为T3提供基极电流,使T3也导通,另一方面因T2集电极电位VC2(=VBE3 + VCES2)≈1V,使T4截止。T3导通,T4截止输出低电平VOL(= VCES3)≈0.3V。由此可见,图2-18所示电路实现了“见0为1,全1出0”的与非逻辑功能,是TTL与非门。

输入级多发射极管T1不仅起到图2-16中D1~D4的作用,而且具有加快门电路开关速度的作用。在输入由低电平变为高电平(三输入接一起,或多余端悬空)时,T2要由截止变为导通。输入变为高电平后,T1相当于一倒置应用的三极管(发射结反偏,集电结正偏,输入高电平相当于电源),为T2从截止变为导通提供较大的正向基极电流,加快T2状态转换速度。在输入由高电平变为低电平时,T2要由导通变为截止。输入变为低电平后,由于T2 、T3存储的电荷尚未泄放,VC1=1.4V(相当于电源),而VB1 =1V,VE1 =0.3V(T1发射结正偏,集电结反偏,处于放大状态),T1将从T2抽取较大的反向基极电流,加快存储电荷的泄放,加快T2状态转换速度。

T3、T4组成的推挽式输出级不仅具有提高开关速度的作用,而且具有提高带负载能力的作用。由于T3、T4工作状态相反,T3截止、T4导通,输出高电平,因为T3截止,所以T4导通所流过的电流全部流向负载,而不会被T3分流,即带负载的能力提高了。同时此较大的电流,又可以减小输出电压上升时间;T4截止、T3导通,输出低电平,T3导通能为负载电容提供较大的放电电流,减小了输出电压的下降时间。

    由于采用以上措施,TTL门电路有较高的工作速度,输出电压有较陡直的变化边沿。

系统分类: 模拟技术
用户分类: 模拟电路
标签: 逻辑门电路