核心提示:
1.前言 隨著微電子制造技術(shù)向深亞微米方向發(fā)展,數(shù)字集成電路的集成度也越來(lái)越高,而半導(dǎo)體工藝中可能引入各種失效,另外材料的缺陷以及工藝的偏差都可能會(huì)導(dǎo)致芯片中電路連接的短路、斷路以及器件結(jié)間穿通等問(wèn)題。這樣的物理失效必然導(dǎo)致電路功能或者性能方面的故障。為了保證設(shè)計(jì)的正確性,在制造和使用芯片時(shí)必須要對(duì)其進(jìn)行測(cè)試。目前最有效的方法就是采用可測(cè)性設(shè)計(jì)技術(shù)(DFT,De-sign For Testability),即在設(shè)計(jì)時(shí)就保證電路的可測(cè)性。對(duì)數(shù)字邏輯電路的測(cè)試包括功能測(cè)試和結(jié)構(gòu)測(cè)試。功能測(cè)試是檢測(cè)該模塊在系統(tǒng)中工作狀態(tài)下的常用功能,并檢測(cè)模塊與系統(tǒng)的接口連接。但由于模塊的復(fù)雜性,在限定的時(shí)間內(nèi),窮舉所有的功能并加以測(cè)試通常是不可能的。結(jié)構(gòu)電路測(cè)試是對(duì)內(nèi)部的電路結(jié)構(gòu)進(jìn)行全面的測(cè)試,以保證該電路實(shí)現(xiàn)的功能的正確性。結(jié)構(gòu)電路測(cè)試首先需要將電路的物理缺陷模型化,建立故障模型,產(chǎn)生測(cè)試激勵(lì)。然后將測(cè)試激勵(lì)從原始輸入引入故障點(diǎn),并將故障點(diǎn)的測(cè)試響應(yīng)傳播到電路的原始輸出,最后比較測(cè)試響應(yīng)與無(wú)故障響應(yīng),判斷電路是否有故障。1986~1988年,以歐洲和北美會(huì)員為主的聯(lián)合測(cè)試行動(dòng)組織(JTAG,joint test action group)率先開(kāi)展了邊界掃描技術(shù)的研究,提出了一系列JTAG邊界掃描標(biāo)準(zhǔn)草案。1990年TEEE和JTAC共同推出了IEEE Std 1149.1邊界掃描標(biāo)準(zhǔn)。其主要思想是:通過(guò)在芯片管腳和芯片內(nèi)部邏輯電路之間,即芯片的邊界上,增加邊界掃捕單元來(lái)實(shí)現(xiàn)對(duì)芯片管腳狀態(tài)的串行設(shè)定和讀取,從而提供芯片級(jí)、板級(jí)和系統(tǒng)級(jí)的標(biāo)準(zhǔn)測(cè)試框架。芯片掃描機(jī)制可實(shí)現(xiàn)下列目標(biāo):測(cè)試電路板上不同芯片之間的連接;測(cè)試芯片及電路板的功能;應(yīng)用邊界掃描寄存器完成其他測(cè)試功能,如特征分析等。在本項(xiàng)目中將采用邊界掃描技術(shù),針對(duì)AlteraDE2,Cyclone II開(kāi)發(fā)板進(jìn)行結(jié)構(gòu)測(cè)試,以保證電路功能的正確性。其基本測(cè)試思路是采用遍歷的方式檢測(cè)開(kāi)發(fā)板上多個(gè)集成器件的不同引腳之間的連通性,在保證連通性的基礎(chǔ)上,引人測(cè)試激勵(lì)來(lái)判斷電路是否有相應(yīng)的響應(yīng)輸出。這中間最關(guān)鍵的要素是要通過(guò)對(duì)開(kāi)發(fā)板網(wǎng)表文件的解析,提取出待測(cè)的集成器件的引腳連線。本文通過(guò)對(duì)網(wǎng)表結(jié)構(gòu)的分析,得出解析網(wǎng)表的一種有效方法:首先,針對(duì)cadence網(wǎng)表文件,一行一行的讀出每行數(shù)據(jù),然后針對(duì)每行數(shù)據(jù)進(jìn)行語(yǔ)義解析,從中抽出相關(guān)的網(wǎng)絡(luò)信息,再選取需要測(cè)試的元件名,把與這些元件相連的所有引腳抽取出來(lái),存到一個(gè)新的文件中去,該文件就包含了待測(cè)器件的所有連線信息。2.網(wǎng)表文件格式分析Cadence網(wǎng)表的格式由兩部分組成,一部分是元件的定義,另一部分是網(wǎng)絡(luò)的定義。具體如下:2.1 元件的定義格式網(wǎng)絡(luò)表第一部分是對(duì)所使用的元件進(jìn)行定義,一個(gè)典型的元件定義如下:每一個(gè)元件的定義都以符號(hào)“[”開(kāi)始,以符號(hào)“]”結(jié)束。第一行是元件的名稱(chēng),即Designator信息;第二行為元件的封裝,即footprint信息;第三行為元件的注釋。2.2 網(wǎng)絡(luò)的定義格式網(wǎng)表的后半部分為電路圖中所使用的網(wǎng)絡(luò)定義。每一個(gè)網(wǎng)絡(luò)定義就是對(duì)應(yīng)電路中有電氣連接關(guān)系的一個(gè)點(diǎn)。一個(gè)典型的網(wǎng)絡(luò)定義如下:每一個(gè)網(wǎng)絡(luò)定義的部分從符號(hào)“(”開(kāi)始,以符號(hào)“)”結(jié)束。“(”符號(hào)下第一行為網(wǎng)絡(luò)的名稱(chēng)。以下幾行都是連接到該網(wǎng)絡(luò)點(diǎn)的所有元件的元件標(biāo)識(shí)和引腳號(hào)。如C2-2表示電容C2的第2腳連接到網(wǎng)絡(luò)。NetC2_2上;X1-1表示還有晶振X1的第1腳也連接到該網(wǎng)絡(luò)點(diǎn)上。根據(jù)對(duì)網(wǎng)表格式的分析可以看出每個(gè)元件都具有固定的格式:元件名,元件值,封裝類(lèi)型,引腳數(shù),X坐標(biāo),Y坐標(biāo);器件與器件之間用[]隔開(kāi);緊隨器件之后的是net;每個(gè)net 中的內(nèi)容都是“元件名-引腳號(hào)”(注:個(gè)數(shù)可能是不一樣);net與net之間用()隔開(kāi)。本軟件的開(kāi)發(fā)平臺(tái)是C++builder6.0,采用的編程語(yǔ)言為C語(yǔ)言。基本思路為從網(wǎng)表文件的讀入解析開(kāi)始,先從網(wǎng)表文件中刪除元件定義部分,然后是根據(jù)輸入待測(cè)試的集成器件名進(jìn)行抽取相關(guān)的網(wǎng)絡(luò)信息,最后生成一個(gè)層次清晰、功能明確的待測(cè)元件管腳連線文件。3.網(wǎng)表解析過(guò)程分析本文介紹了集成電路可測(cè)性設(shè)計(jì)項(xiàng)目中針對(duì)電路網(wǎng)表文件進(jìn)行解析,提取待測(cè)集成器件之間管腳連線的方法和過(guò)程。網(wǎng)表析取程序的要求是:在給定網(wǎng)表基礎(chǔ)上,首先將網(wǎng)表轉(zhuǎn)換為有利于提取網(wǎng)絡(luò)定義信息的新網(wǎng)表,即從原有網(wǎng)表文件中刪除所有的元件定義信息和電源模塊及接地模塊信息;然后從新網(wǎng)表中,根據(jù)要測(cè)試的集成元件名提取出相應(yīng)的管腳連線信息;最后再把管腳連線信息按照易于測(cè)試的文件格式進(jìn)行保存。3.1 網(wǎng)表文件中元件信息的過(guò)濾根據(jù)對(duì)網(wǎng)表格式的分析可以看出對(duì)網(wǎng)表采用單行讀取的方法比較方便,故通過(guò)調(diào)用fgets()函數(shù)來(lái)讀取文件的每一行。由于每個(gè)器件的信息是用“[]”隔開(kāi)的,這樣“[”,就可以作為一個(gè)元件信息是否開(kāi)始的標(biāo)志,而“]”就可以作為一個(gè)元件信息是否讀完的標(biāo)志。對(duì)舊網(wǎng)表,首先聲明一個(gè)FILE指針,用fopen(“舊網(wǎng)表的路徑”,“r”)打開(kāi)舊網(wǎng)表文件,然后利用fgets()函數(shù)把一行信息讀到臨時(shí)字符數(shù)組str[]中,使用strcmp()函數(shù)分別與“[”和“]”進(jìn)行比較,以確定某一個(gè)元件信息的開(kāi)始和結(jié)束。另外使用strcmp()函數(shù)與“(”比較,以確定元件定義的結(jié)束和網(wǎng)絡(luò)信息定義的開(kāi)始。按照前面的設(shè)計(jì)思路,我們需要從網(wǎng)表文件中提取的僅是網(wǎng)絡(luò)信息,因此,用feof()函數(shù)判別是否讀到舊網(wǎng)表文件尾,如沒(méi)有,則通過(guò)調(diào)用fgets()函數(shù)讀取一行信息,只要不是“(”,說(shuō)明該行信息不屬于網(wǎng)絡(luò)定義部分,用continue語(yǔ)句跳過(guò);繼續(xù)讀取下一行,直到讀到“(”,說(shuō)明已經(jīng)讀到網(wǎng)絡(luò)定義部分,可以將該行信息及其之后的所有信息都寫(xiě)入新的網(wǎng)表文件。打開(kāi)新網(wǎng)表文件可以看到,新網(wǎng)表文件已經(jīng)過(guò)濾掉了舊網(wǎng)表文件中與測(cè)試無(wú)關(guān)的元件信息部分,而只保留了網(wǎng)絡(luò)的定義部分。本部分程序流程如圖1所示。3.2 網(wǎng)表文件中電源及接地模塊的過(guò)濾在新網(wǎng)表文件創(chuàng)建成功以后,對(duì)其進(jìn)一步分析可以知道,在新的網(wǎng)表文件中包含了一些電源模塊,如+1.2v,+1.8V,+2.5V,+3.3V,+5V,+12V等;還有接地模塊GND,GNDC等。這些模塊所包含信息仍與測(cè)試管腳無(wú)關(guān),所以還需要過(guò)濾掉。過(guò)濾這些電源模塊和接地模塊的方法仍然是采用fgets()函數(shù)依次瀆取每一行信息,然后調(diào)用strcmp()函數(shù)進(jìn)行判斷是否為對(duì)應(yīng)的電源及接地模塊,如果是,則跳過(guò)該模塊的文件塊,從“(”開(kāi)始,至“)”結(jié)束。本部分流程如圖2所示。3.3 待測(cè)器件管腳連線文件的生成過(guò)程分析經(jīng)過(guò)以上兩步處理后的網(wǎng)表文件中只余下net信息了。在界面上輸入需要測(cè)試的元件名,然后在新網(wǎng)表文件中查找出包含所有待測(cè)試元件的網(wǎng)絡(luò)節(jié)點(diǎn),最后將查找出的網(wǎng)絡(luò)結(jié)點(diǎn)以一定的格式存入一個(gè)新的文件。由于在新網(wǎng)表文件中要抽取出的是在同一個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)中同時(shí)包括多個(gè)待測(cè)元件的那些引腳號(hào),即這些器件之間的連線。因此,在使用fgets()函數(shù)一行一行讀取信息時(shí),首先從每行信息中抽取出元件名,然后將該元件名與輸入的待測(cè)試的元件名進(jìn)行比較,如一致則將該行信息寫(xiě)入新文件,