本發(fā)明涉及一種應(yīng)用于反熔絲FPGA測試向量的逆向分析方法。
背景技術(shù):
反熔絲FPGA的架構(gòu)中包含邏輯模塊、IO模塊、反熔絲陣列等模塊,通過編程可將這些模塊有機(jī)組合最終形成目標(biāo)功能電路。一般情況下,在產(chǎn)品交付用戶使用之前需要進(jìn)行全面測試,以確保反熔絲FPGA可正常使用。然而,反熔絲FPGA屬于一次可編程器件,交付前不能接受編程,因此需要進(jìn)行編程前測試,以作為交付前的測試。一方面,反熔絲FPGA形成產(chǎn)品后在交付前需要進(jìn)行編程前的測試驗(yàn)證,另一方面,在芯片研制過程中也需要對電路進(jìn)行編程前的仿真驗(yàn)證,同為編程前的功能驗(yàn)證,兩者都需要用到測試向量,且測試向量可共享。對一組特定的測試向量而言,我們需要事先判斷其合法性,確保其正確無誤。在仿真驗(yàn)證或測試驗(yàn)證過程中,當(dāng)出現(xiàn)驗(yàn)證結(jié)果與預(yù)期結(jié)果不符合的功能故障時(shí),首先需要排查仿真驗(yàn)證平臺或硬件測試平臺是否出現(xiàn)錯(cuò)誤,在確定驗(yàn)證平臺完好后,再出現(xiàn)功能故障時(shí),則需要對故障資源進(jìn)行定位。以上驗(yàn)證都需要依賴于對測試向量進(jìn)行逆向分析。另外,在某些場合下,當(dāng)從第三方獲取到測試向量時(shí),如果要從測試向量中獲取所測試資源、資源覆蓋率、功能覆蓋率等信息,這些也都離不開對測試向量的逆向分析。通過對測試向量的逆向分析可以判斷測試向量的正確性、明晰測試資源信息等。因此,為了方便快捷地對測試向量進(jìn)行評估、對研制電路的仿真驗(yàn)證進(jìn)行評估、對產(chǎn)品實(shí)物樣品的測試驗(yàn)證進(jìn)行評估和對驗(yàn)證符合度及可信度進(jìn)行評估,本發(fā)明人做出以下發(fā)明。
技術(shù)實(shí)現(xiàn)要素:
以下是本發(fā)明的發(fā)明內(nèi)容:一種應(yīng)用于反熔絲FPGA測試向量的逆向分析方法,有以下步驟:
a、對反熔絲FPGA芯片研制階段的電路仿真驗(yàn)證或交付前的成品測試驗(yàn)證中在特定條件下使用的資源進(jìn)行參數(shù)提取得到資源參數(shù)信息;比如在電路中標(biāo)號為K的邏輯C模塊,在特定條件下該資源會被使用,因此該資源的參數(shù)將被提取得到資源參數(shù)信息,所述特定條件是指在測試向量中根據(jù)測試目的選擇或者不選擇該資源,所述參數(shù)可以是該資源的端口信息,比如該資源對應(yīng)的邏輯C模塊有8個(gè)輸入端口,分別為D00、D01、D10、D11、A0、B0、A1、B1,假設(shè)D01端口在被配置成1其他端口都配置為0,那么所對應(yīng)的端口信息為“01000000”;
b、采用編號與步驟a中所提取到的所述參數(shù)信息以結(jié)對的形式錄入?yún)?shù)信息表中以及將所述編號及其對應(yīng)的表示在測試向量中體現(xiàn)該資源位數(shù)或者信息位寬的值結(jié)對錄入Q值列表形成資源測試向量庫,所述編號對應(yīng)于測試向量中所體現(xiàn)出該資源的信息位置,比如測試向量在(n,n+7)位中,當(dāng)(n,n+7)都不為0時(shí)表示使用到在電路中標(biāo)號為第K個(gè)C邏輯模塊,K的取值為該資源在電路中的固有編號,對于在電路中第K個(gè)資源參數(shù)在所述文檔或者數(shù)據(jù)庫中編號為Q,Q的取值為該資源參數(shù)信息在測試向量中的位置數(shù)值n,即編號參數(shù)信息對為{Q,第K個(gè)邏輯C模塊參數(shù)信息},由步驟a中可知該信息對有多個(gè)以Q為開頭的參數(shù)信息對,將所有參數(shù)信息對一一錄入?yún)?shù)信息表中,所述該資源的位數(shù)或者信息位寬比如所提及的(n,n+7)共有8位,則表示該資源的位數(shù)或者信息位寬為8,即MQ=8,將Q與MQ結(jié)成對寫入Q值列表;所述資源參數(shù)信息可以是端口參數(shù)信息或者坐標(biāo)參數(shù)信息或者控制參數(shù)或者功能信息,所述坐標(biāo)參數(shù)信息是指定位邏輯資源位置反應(yīng)在測試向量中的參數(shù)信息,所述控制參數(shù)信息是指控制包括寄存器鏈對存儲在其中的數(shù)據(jù)輸出反應(yīng)在測試向量中的參數(shù)信息等,所述功能信息是指對于邏輯模塊輸入端口配置形成對應(yīng)的功能;
c、在獲取測試向量后,開始遍歷Q值列表中的Q值,當(dāng)遍歷到QL(L=0、1、2、….)時(shí),QL為Q值列表中的所有Q值的一個(gè),獲取QL與QL對應(yīng)的資源在測試向量被體現(xiàn)的位數(shù)或者信息位寬MQ,即從第QL位開始依次獲取到測試向量中第QL+MQ–1位的值,接著通過對參數(shù)信息表中查找QL值獲取QL在參數(shù)信息表中所有的編號參數(shù)信息對,最后選取符合(QL,QL+MQ)位的值的編號參數(shù)信息對進(jìn)而獲取到測試向量中所包含的資源的參數(shù)信息,比如第K個(gè)邏輯C模塊或者所述C模塊所被配置成某個(gè)功能的信息等,即通過逆向分析獲取測試向量中包含的資源信息;
d、將步驟c中獲取到的資源信息依次羅列出來,形成測試向量的資源信息逆向分析報(bào)告。
在a步驟中所述的參數(shù)信息包括但不限于端口信息,比如測試者不需知道具體端口信息只需所述端口如D10在連接上一行線節(jié)點(diǎn)時(shí)對應(yīng)的值,則將該值作為參數(shù)信息提取出來,又比如測試者既想了解具體端口信息又想了解所述端口如D10在連接上一行線節(jié)點(diǎn)時(shí)對應(yīng)的值,則將該值和如步驟a中所述的端口信息作為參數(shù)信息提取出來,所述行線是指靠近該邏輯資源最近的一組反熔絲陣列中的一條信號線。
通過上述步驟可以將測試向量包含的測試資源逆向提取出來,根據(jù)仿真驗(yàn)證或者測試驗(yàn)證目的,如果出現(xiàn)仿真驗(yàn)證或者測試驗(yàn)證結(jié)果不符合預(yù)期時(shí)通過對所測試的資源或者所述資源所被配置的功能進(jìn)行比對確認(rèn),進(jìn)而進(jìn)一步排查出錯(cuò)誤之處。另外,通過這樣的逆向分析技術(shù),根據(jù)測試者的要求可以根據(jù)參數(shù)信息表中的信息自行重構(gòu)一個(gè)測試向量。
附圖說明
圖1是本發(fā)明一種應(yīng)用于反熔絲FPGA測試向量的逆向分析方法的較佳實(shí)例流程圖。
圖2是本發(fā)明所應(yīng)用的一種長度為540位的測試向量示意圖。
圖3是本發(fā)明一種應(yīng)用于反熔絲FPGA測試向量的逆向分析方法運(yùn)用于檢驗(yàn)測試向量包含錯(cuò)誤資源的較佳實(shí)例流程圖。
圖4是本發(fā)明一種應(yīng)用于反熔絲FPGA測試向量的逆向分析方法運(yùn)用于分析資源覆蓋率/功能覆蓋率的較佳實(shí)例流程圖。
圖5是本發(fā)明一種應(yīng)用于反熔絲FPGA測試向量的逆向分析方法運(yùn)用于故障資源定位的較佳實(shí)例流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,步驟101中經(jīng)過對電路的資源分析,比如編號為K=100的邏輯C模塊資源作為特定條件下測試分析資源,其輸入端口為D00、D01、D10、D11、A0、B0、A1、B1八個(gè)端口,對此,編號為K=100的邏輯C模塊的參數(shù)信息我們可以設(shè)定為:比如當(dāng)只有端口B1設(shè)置為1時(shí),則參數(shù)信息表示為“00000001-100#C、B1=1”,又比如當(dāng)只有端口A1設(shè)置為1時(shí),則參數(shù)信息表示為“00000010-100#C、A1=1”,經(jīng)過這樣的參數(shù)信息形式或者格式把在測試時(shí)需要進(jìn)行測試分析的資源參數(shù)進(jìn)行提取。
在資源信息提取后,根據(jù)測試向量上所表達(dá)的該資源信息位獲取到Q值,比如以K=100這個(gè)邏輯C模塊在測試向量中的第一位信息位處于測試向量中的第404位,因此Q=404為該資源在參數(shù)信息表中的編號,采用編號和參數(shù)信息對的方式比如{404,00000001-100#C、B1=1}這樣的方式錄入?yún)?shù)表中,同樣地將{404,00000001-100#C、A1=1}、{404,00000011-100#C、A1=1、B1=1}等Q對應(yīng)的所有參數(shù)信息錄入?yún)?shù)表中,如果想獲取的參數(shù)信息為邏輯C模塊所配置的功能,比如當(dāng)邏輯C模塊8個(gè)輸入端口對應(yīng)的值為00010101表示的是配置AND2宏單元,那么對應(yīng)的編號和參數(shù)信息對的方式比如{404,00010101-100#C、AND2宏單元};同時(shí)將Q值和表示在測試向量上表示該資源的位數(shù)或者信息位寬MQ錄入Q值列表中,如在測試向量中表示編號為100的邏輯C模塊資源的位數(shù)或者信息位寬為8,即MQ=8,因此以{404,8}作為Q值對錄入Q值列表。
步驟102為獲取測試向量,測試向量的來源可以由測試向量生成工具生成,或者來源于第三方提供。
基于步驟102的測試向量,步驟103進(jìn)入測試向量逆向分析關(guān)鍵環(huán)節(jié),先對Q值列表遍歷表中的Q值,在遍歷到QL(L=0、1、2、……)時(shí),獲取到QL的值以及對應(yīng)的MQ值,比如遍歷QL=404時(shí),獲取到QL以及對應(yīng)MQ的值即404和8,然后查找處于測試向量中第404位及其后面的7位的值,假如(404,411)的值為00000010,再在參數(shù)信息表中查找“404,00000010”對應(yīng)的參數(shù)信息,最后查找到{404,00000010-100#C、B1=1}這個(gè)編號參數(shù)信息對,而“00000010-100#C、B1=1”這個(gè)參數(shù)信息就是我們要查找的信息;如果(404,411)的值為00000010,且在參數(shù)信息表中存在{404,00010101-100#C、AND2宏單元}這樣參數(shù)對,則“00010101-100#C、AND2宏單元”這個(gè)功能參數(shù)為我們所查找的功能信息等等。
步驟104,當(dāng)遍歷完Q值列表以及通過該列表依次查詢最終獲取到該列表中所有Q值對應(yīng)的參數(shù)信息后,將包含在測試向量中所包含的資源的參數(shù)依次羅列出來形成逆向分析報(bào)告,報(bào)告的格式可以根據(jù)測試者的需求設(shè)置,比如采取這樣的格式:
1、編號為1的組合邏輯C模塊的輸入端口D10、A1、B1設(shè)置為1/編號為1的C邏輯模塊被配置為AND2宏單元功能;
2、編號為3的時(shí)序邏輯S模塊的輸入端口D10、A0設(shè)置為1/編號為3的S邏輯模塊被配置為DFP1宏單元功能;
3、……
4、……
……
在測試向量對FPGA進(jìn)行測試如果出現(xiàn)錯(cuò)誤,根據(jù)上述測試向量逆向分析報(bào)告,我們依次對照上述信息進(jìn)行與原設(shè)定測試資源比對進(jìn)而排除錯(cuò)誤。更進(jìn)一步地,通過對電路資源的參數(shù)提取錄入,編寫相關(guān)軟件,程序化地根據(jù)測試向量方便快捷地羅列出該測試向量所使用到的具體資源進(jìn)而計(jì)算出資源的覆蓋率,特別地,對于來源第三方的測試向量,我們可以根據(jù)這個(gè)測試向量基于本發(fā)明提出的逆向分析方法提取出該測試向量所使用的資源以及對資源的利用率等。
如圖3所示,圖3是本發(fā)明一種應(yīng)用于反熔絲FPGA測試向量的逆向分析方法運(yùn)用于檢驗(yàn)測試向量包含錯(cuò)誤資源的較佳實(shí)例流程圖。
步驟301為獲取測試向量,測試向量的來源可以由測試向量生成工具生成,或者來源于第三方提供者提供。
基于步驟301的測試向量,步驟302進(jìn)入測試向量逆向分析關(guān)鍵環(huán)節(jié),先對Q值列表遍歷表中的Q值,在遍歷到QL(L=0、1、2、……)時(shí),獲取到QL的值以及對應(yīng)的MQ值,比如遍歷QL=404時(shí),獲取到QL以及對應(yīng)MQ的值即404和8,然后查找處于測試向量中第404位及其后面的7位的值,假如(404,411)的值為00000010,再在參數(shù)信息表中查找“404,00000010”對應(yīng)的參數(shù)信息,最后查找到{404,00000010-100#C、B1=1}這個(gè)編號參數(shù)信息對,如果查找不到這樣的參數(shù)信息,則說明該測試向量包含錯(cuò)誤資源信息。
步驟303,當(dāng)遍歷完Q值列表以及通過該列表依次查詢最終獲取到該列表中所有Q值對應(yīng)的參數(shù)信息后,如果包含錯(cuò)誤資源信息,則到步驟304將包含在測試向量中所包含的錯(cuò)誤資源的參數(shù)依次羅列出來,對于呈現(xiàn)格式可以按照圖1所述的呈現(xiàn)格式呈現(xiàn)進(jìn)而形成錯(cuò)誤資源參數(shù)報(bào)告。如果都正確,則結(jié)束。
如圖4所示,圖4是本發(fā)明一種應(yīng)用于反熔絲FPGA測試向量的逆向分析方法運(yùn)用于分析資源覆蓋率/功能覆蓋率的較佳實(shí)例流程圖。
步驟401為獲取測試向量,測試向量的來源可以由測試向量生成工具生成,或者來源于第三方提供。
基于步驟401的測試向量,步驟402進(jìn)入測試向量逆向分析關(guān)鍵環(huán)節(jié),先對Q值列表遍歷表中的Q值,在遍歷到QL(L=0、1、2、……)時(shí),獲取到QL的值以及對應(yīng)的MQ值,比如遍歷QL=404時(shí),獲取到QL以及對應(yīng)MQ的值即404和8,然后查找處于測試向量中第404位及其后面的7位的值,假如(404,411)的值為00000010,再在參數(shù)信息表中查找“404,00000010”對應(yīng)的參數(shù)信息,最后查找到{404,00000010-100#C、B1=1}這個(gè)編號參數(shù)信息對,而“00000010-100#C、B1=1”這個(gè)參數(shù)信息就是我們要查找的信息;對于查找功能信息,如果(404,411)的值為00000010,且在參數(shù)信息表中存在{404,00010101-100#C、AND2宏單元}這樣參數(shù)對,則“100#C、AND2宏單元”這個(gè)功能參數(shù)為我們所查找的功能信息等等。
步驟403,當(dāng)遍歷完Q值列表以及通過該列表依次查詢最終獲取到該列表中所有Q值對應(yīng)的參數(shù)信息后,將逆向分析結(jié)果依次羅列出來,對于呈現(xiàn)格式可以按照圖1所述的呈現(xiàn)格式呈現(xiàn)進(jìn)而形成逆向分析報(bào)告。
步驟404,根據(jù)步驟403的分析報(bào)告,統(tǒng)計(jì)該測試向量所包含的測試資源所占有的資源覆蓋率,資源覆蓋率為該測試向量所包含的測試資源個(gè)數(shù)與全電路中所有的資源總數(shù)相除。對于本發(fā)明運(yùn)用于測試向量測試資源功能覆蓋率,則根據(jù)測試向量包含的資源的端口被利用個(gè)數(shù)除以該資源的總端口數(shù)進(jìn)而獲取。
步驟405,將步驟404中的統(tǒng)計(jì)以及計(jì)算結(jié)果依次羅列出來,形成應(yīng)用逆向分析報(bào)告。
如圖5所示,圖5是本發(fā)明一種應(yīng)用于反熔絲FPGA測試向量的逆向分析方法運(yùn)用于故障資源定位的較佳實(shí)例流程圖。
步驟501為獲取測試向量,測試向量的來源可以由測試向量生成工具生成,或者來源于第三方提供。
基于步驟501的測試向量,步驟502進(jìn)入測試向量逆向分析關(guān)鍵環(huán)節(jié),先對Q值列表遍歷表中的Q值,在遍歷到QL(L=0、1、2、……)時(shí),獲取到QL的值以及對應(yīng)的MQ值,比如遍歷QL=404時(shí),獲取到QL以及對應(yīng)MQ的值即404和8,然后查找處于測試向量中第404位及其后面的7位的值,假如(404,411)的值為00000010,再在參數(shù)信息表中查找“404,00000010”對應(yīng)的參數(shù)信息,最后查找到{404,00000010-100#C、B1=1}這個(gè)編號參數(shù)信息對,而“00000010-100#C、B1=1”這個(gè)參數(shù)信息就是我們要查找的信息等等。
步驟503,當(dāng)遍歷完Q值列表以及通過該列表依次查詢最終獲取到該列表中所有Q值對應(yīng)的參數(shù)信息后,將逆向分析結(jié)果依次羅列出來,對于呈現(xiàn)格式可以按照圖1所述的呈現(xiàn)格式呈現(xiàn)進(jìn)而形成逆向分析報(bào)告。
步驟504,獲取測試向量對反熔絲FPGA的實(shí)際驗(yàn)證結(jié)果,根據(jù)步驟503的分析報(bào)告,將實(shí)際結(jié)果中不符合步驟503所列出的分析報(bào)告中個(gè)資源參數(shù)信息,則將該資源提取出來。
步驟505,將步驟504中所提取的結(jié)果依次羅列出來,形成故障資源定位報(bào)告。
以上發(fā)明實(shí)施例不能限定本發(fā)明。