2.網(wǎng)表文件格式分析 Cadence網(wǎng)表的格式由兩部分組成,一部分是元件的定義,另一部分是網(wǎng)絡(luò)的定義。具體如下: 2.1 元件的定義格式網(wǎng)絡(luò)表第一部分是對所使用的元件進行定義,一個典型的元件定義如下: 每一個元件的定義都以符號“[”開始,以符號“]”結(jié)束。第一行是元件的名稱,即Designator信息;第二行為元件的封裝,即footprint信息;第三行為元件的注釋。 2.2 網(wǎng)絡(luò)的定義格式網(wǎng)表的后半部分為電路圖中所使用的網(wǎng)絡(luò)定義。每一個網(wǎng)絡(luò)定義就是對應電路中有電氣連接關(guān)系的一個點。一個典型的網(wǎng)絡(luò)定義如下: 每一個網(wǎng)絡(luò)定義的部分從符號“(”開始,以符號“)”結(jié)束。“(”符號下第一行為網(wǎng)絡(luò)的名稱。以下幾行都是連接到該網(wǎng)絡(luò)點的所有元件的元件標識和引腳號。如C2-2表示電容C2的第2腳連接到網(wǎng)絡(luò)。NetC2_2上;X1-1表示還有晶振X1的第1腳也連接到該網(wǎng)絡(luò)點上。根據(jù)對網(wǎng)表格式的分析可以看出每個元件都具有固定的格式:元件名,元件值,封裝類型,引腳數(shù),X坐標,Y坐標;器件與器件之間用[]隔開;緊隨器件之后的是net;每個net 中的內(nèi)容都是“元件名-引腳號”(注:個數(shù)可能是不一樣);net與net之間用()隔開。本軟件的開發(fā)平臺是C++builder6.0,采用的編程語言為C語言;舅悸窞閺木W(wǎng)表文件的讀入解析開始,先從網(wǎng)表文件中刪除元件定義部分,然后是根據(jù)輸入待測試的集成器件名進行抽取相關(guān)的網(wǎng)絡(luò)信息,最后生成一個層次清晰、功能明確的待測元件管腳連線文件。
3.網(wǎng)表解析過程分析本文介紹了集成電路可測性設(shè)計項目中針對電路網(wǎng)表文件進行解析,提取待測集成器件之間管腳連線的方法和過程。網(wǎng)表析取程序的要求是:在給定網(wǎng)表基礎(chǔ)上,首先將網(wǎng)表轉(zhuǎn)換為有利于提取網(wǎng)絡(luò)定義信息的新網(wǎng)表,即從原有網(wǎng)表文件中刪除所有的元件定義信息和電源|穩(wěn)壓器模塊及接地模塊信息;然后從新網(wǎng)表中,根據(jù)要測試的集成元件名提取出相應的管腳連線信息;最后再把管腳連線信息按照易于測試的文件格式進行保存。 3.1 網(wǎng)表文件中元件信息的過濾根據(jù)對網(wǎng)表格式的分析可以看出對網(wǎng)表采用單行讀取的方法比較方便,故通過調(diào)用fgets()函數(shù)來讀取文件的每一行。由于每個器件的信息是用“[]”隔開的,這樣“[”,就可以作為一個元件信息是否開始的標志,而“]”就可以作為一個元件信息是否讀完的標志。對舊網(wǎng)表,首先聲明一個FILE指針,用fopen(“舊網(wǎng)表的路徑”,“r”)打開舊網(wǎng)表文件,然后利用fgets()函數(shù)把一行信息讀到臨時字符數(shù)組str[]中,使用strcmp()函數(shù)分別與“[”和“]”進行比較,以確定某一個元件信息的開始和結(jié)束。另外使用strcmp()函數(shù)與“(”比較,以確定元件定義的結(jié)束和網(wǎng)絡(luò)信息定義的開始。按照前面的設(shè)計思路,我們需要從網(wǎng)表文件中提取的僅是網(wǎng)絡(luò)信息,因此,用feof()函數(shù)判別是否讀到舊網(wǎng)表文件尾,如沒有,則通過調(diào)用fgets()函數(shù)讀取一行信息,只要不是“(”,說明該行信息不屬于網(wǎng)絡(luò)定義部分,用continue語句跳過;繼續(xù)讀取下一行,直到讀到“(”,說明已經(jīng)讀到網(wǎng)絡(luò)定義部分,可以將該行信息及其之后的所有信息都寫入新的網(wǎng)表文件。打開新網(wǎng)表文件可以看到,新網(wǎng)表文件已經(jīng)過濾掉了舊網(wǎng)表文件中與測試無關(guān)的元件信息部分,而只保留了網(wǎng)絡(luò)的定義部分。本部分程序流程如圖1所示。 3.2 網(wǎng)表文件中電源及接地模塊的過濾在新網(wǎng)表文件創(chuàng)建成功以后,對其進一步分析可以知道,在新的網(wǎng)表文件中包含了一些電源模塊,如+1.2v,+1.8V,+2.5V,+3.3V,+5V,+12V等;還有接地模塊GND,GNDC等。這些模塊所包含信息仍與測試管腳無關(guān),所以還需要過濾掉。過濾這些電源模塊和接地模塊的方法仍然是采用fgets()函數(shù)依次瀆取每一行信息,然后調(diào)用strcmp()函數(shù)進行判斷是否為對應的電源及接地模塊,如果是,則跳過該模塊的文件塊,從“(”開始,至“)”結(jié)束。本部分流程如圖2所示。 3.3 待測器件管腳連線文件的生成過程分析經(jīng)過以上兩步處理后的網(wǎng)表文件中只余下net信息了。在界面上輸入需要測試的元件名,然后在新網(wǎng)表文件中查找出包含所有待測試元件的網(wǎng)絡(luò)節(jié)點,最后將查找出的網(wǎng)絡(luò)結(jié)點以一定的格式存入一個新的文件。由于在新網(wǎng)表文件中要抽取出的是在同一個網(wǎng)絡(luò)結(jié)點中同時包括多個待測元件的那些引腳號,即這些器件之間的連線。因此,在使用fgets()函數(shù)一行一行讀取信息時,首先從每行信息中抽取出元件名,然后將該元件名與輸入的待測試的元件名進行比較,如一致則將該行信息寫入新文件,否則接著讀下一行信息。當整個結(jié)點信息讀取完畢時,新文件保存的只是那些與待測元件相匹配的引腳信息。本部分程序流程如圖3所示。
4.結(jié)束語本文主要介紹集成電路可測性設(shè)計項目中針對Altera DE2 Cyclone II開發(fā)板的網(wǎng)表文件進行解析,提取待測試器件引腳連線的方法及實現(xiàn)過程,該方法同樣適用于其他的網(wǎng)表文件。經(jīng)過測試,本軟件通過對開發(fā)板網(wǎng)表文件的解析,為實現(xiàn)對電路的結(jié)構(gòu)測試奠定了一個非常好的基礎(chǔ),既提高了芯片的質(zhì)量保證,又改善了設(shè)計電路的可測性,基本達到了預期的目的。