Fpga芯片內(nèi)嵌bram核的測試系統(tǒng)及方法
【專利摘要】本發(fā)明屬于集成電路技術(shù)領(lǐng)域,具體為基于片內(nèi)部分重配置的FPGA芯片內(nèi)嵌BRAM核的測試系統(tǒng)及方法。本發(fā)明的測試系統(tǒng)包括:TPG模塊、ORA模塊、PR_BRAM模塊、BUF模塊、片內(nèi)重配置控制模塊和位流存儲模塊。本發(fā)明利用FPGA的部分重配置功能,用片內(nèi)配置接口完成內(nèi)部自動部分重配置,來實(shí)現(xiàn)對內(nèi)嵌BRAM核的測試;首先,改進(jìn)測試算法,提高故障覆蓋率,在已有方法的基礎(chǔ)上提高了對寫破壞故障、讀破壞故障、干擾耦合故障、寫破壞耦合故障、讀破壞耦合故障以及BRAM初始化功能故障的覆蓋;其次,利用FPGA的片內(nèi)配置接口實(shí)現(xiàn)測試算法的片內(nèi)自動部分重配置,降低測試配置數(shù),從而降低測試時間。
【專利說明】
FPGA芯片內(nèi)嵌BRAM核的測試系統(tǒng)及方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明屬于集成電路技術(shù)領(lǐng)域,具體涉及FPGA芯片內(nèi)嵌BRAM核的測試系統(tǒng)及方 法。
【背景技術(shù)】
[0002] 隨著集成電路的發(fā)展,現(xiàn)場可編程門陣列(FPGA)在不斷擴(kuò)大可編程邏輯陣列的同 時,內(nèi)嵌的各種可編程知識產(chǎn)權(quán)(IP)核的規(guī)模也在不斷地擴(kuò)大,使得FPGA的性能越來越強(qiáng) 大。因此,如何高效且全面地對芯片的可編程邏輯陣列及IP核進(jìn)行測試成為一大課題。而 BRAM核作為FPGA內(nèi)最常用的IP核之一,如何測試其功能的正確性尤為重要。而在芯片測試 中,測試時間和測試覆蓋率是最重要的兩個指標(biāo),它直接反映了芯片測試的有效性。對于 FPGA芯片的測試來講,由于其可配置性,因此測試時間的主要受測試配置數(shù)目的影響, BRAM作為FPGA內(nèi)嵌的可配置IP核,也是如此,降低其測試時間的瓶頸在于如何減小測試配 置數(shù)。
[0003] 本發(fā)明提出的測試方法是針對Xi 1 inx FPGA芯片的內(nèi)嵌BRAM,對于FPGA內(nèi)嵌BRAM 來說,可以根據(jù)需要配置成不同的模式[1]。根據(jù)FPGA內(nèi)嵌BRAM可配置的模式以及SRAM的結(jié) 構(gòu),將BRAM中可能出現(xiàn)的故障分為以下7種,分別為SRAM故障、雙端□讀寫故障、位寬模式故 障、ECC功能故障、Cascade功能故障、FIFO功能及標(biāo)志位故障、初始化功能故障 [1]。其中的 SRAM故障又可細(xì)分為地址譯碼故障(簡稱AF)、固定型故障(簡稱SAF)、開路故障(簡稱S0F)、 轉(zhuǎn)換故障(簡稱TF)、寫破壞故障(簡稱WDF)、讀破壞故障(簡稱DRDF)、倒置耦合故障(簡稱 CF in)、等冪耦合故障(簡稱CFid)、狀態(tài)耦合故障(簡稱CFst)、干擾耦合故障(簡稱CF dst)、寫破 壞耦合故障(簡稱CFwd)、讀破壞耦合故障(簡稱CF&d) [2]。
[0004] 對于FPGA內(nèi)嵌BRAM核的測試,已有較多文獻(xiàn)給出了測試方法。為了在保證故障覆 蓋率的前提下降低測試配置數(shù)以降低測試時間,有些文獻(xiàn)采用了部分重配置技術(shù) [3,《。如在 文獻(xiàn)[5]中,在覆蓋SRAM故障時采用了March LR算法[6],可以覆蓋地址譯碼故障、固定型故 障、開路故障、轉(zhuǎn)換故障、耦合故障(其中包括全部倒置耦合故障、等冪耦合故障、狀態(tài)耦合 故障及部分干擾耦合故障),同時,還增加配置數(shù)覆蓋了BRAM的雙端口讀寫功能、多種位寬 模式、cascade功能、ECC功能及FIFO功能等可能出現(xiàn)的故障,故障覆蓋率較高,最終共使用 了5個完整配置,輔以14個部分配置完成對Xilinx Virtex-5 FPGA的測試,但仍存在沒有覆 蓋到的故障,如SRAM故障中的寫破壞故障、讀破壞故障及部分耦合故障,BRAM功能中的初始 化功能故障也未進(jìn)行測試,同時仍舊存在著測試配置數(shù)過多,測試時間長的問題。而在文 獻(xiàn) [7]中采用的方法中,使用改進(jìn)的March C-算法,盡管只用了一個完整配置完成對Virtex-4系列FPGA內(nèi)嵌BRAM的測試,但僅能對部分SRAM故障進(jìn)行了檢測,對BRAM的其他功能如雙端 口讀寫功能、多種位寬模式、cascade功能、ECC功能、FIFO功能及初始化功能均沒有進(jìn)行測 試,因此,測試的故障覆蓋率較低。
[0005] 參考文獻(xiàn):
[l]Xilinx Inc. Virtex-4 FPGA User Guide, 2008. [2016-3-27]. http:// www.xilinx.com/.
[2] Hamdioui,Said, d. G. A. J. Van, M. Rodgers. March SS: A test for all static simple RAM faults[J]. In: Proc. of IEEE International Workshop on memory Technology, Design, and Testing, Bendor, France, 2002: 95-100.
[3] Xilinx Inc. Virtex-4 FPGA Configuration User Guide , 2009. [2016-3-27]. http://www.xi1inx. com/.
[4] Xilinx Inc. Partial Reconfiguration User Guide, 2011. [2016-3-27] ?http://www.xilinx.com/.
[5] Dailey J L, Garrison B R, Pulukuri, M.D, et al. Built-In Self-Test of embedded memory cores in Virtex-5 Field Programmable Gate Arrays[C]// System Theory (SSST),2011 IEEE 43rd Southeastern Symposium on Auburn, Alabama. IEEE, 2011: 220-225.
[6] A. van de Goor, G. Gaydadjiev, V. Harmolik, and V. Mikitjuk, March LR: A Test for Realistic Linked Faults, In Proc. IEEE VLSI Test Symposium, Princeton, New Jersey, IEEE, 1996: 272-280.
[7] Gadde P, Niamat M. FPGA memory testing technique using BIST[J]. Midwest Symposium on Circuits & Systems, Columbus, Ohio, IEEE, 2013: 473-476.
[8] Ichinomiya Y, Amagasaki M, Iida M, et al. A bitstream relocation technique to improve flexibility of partial reconfiguration[C]// Proceedings of the 12th international conference on Algorithms and Architectures for Parallel Processing - Volume Part I. Fukuoka, Japan: IEEE Press, 2012:139-152·。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的在于提供一種故障覆蓋率高、測試時間低的FPGA內(nèi)嵌BRAM核的測試 系統(tǒng)及方法。
[0007] 本發(fā)明提供的FPGA內(nèi)嵌BRAM核的測試方法和系統(tǒng),是基于片內(nèi)部分重配置的。為 了便于說明問題,我們示例其中一種典型測試系統(tǒng)的電路架構(gòu),請參考圖1所示,主要包括: TPG模塊、0RA模塊、PR_BRAM模塊、BUF模塊、片內(nèi)重配置控制模塊和位流存儲模塊;其中,TPG 模塊是測試向量產(chǎn)生模塊,用于產(chǎn)生待測BRAM的測試序列;0RA模塊是輸出響應(yīng)比較器,用 于比較從待測BRAM中輸出的數(shù)據(jù)是否正確;PR_BRAM模塊是待測BRAM部分,主要包含需要 進(jìn)行測試的BRAM,該模塊設(shè)計為部分重配置模塊;BUF模塊是緩沖器模塊,是為了保證所有 的PR_BRAM模塊與其他靜態(tài)模塊的連接均一致,從而實(shí)現(xiàn)用單個PR_BRAM模塊的部分重配置 位流配置其他PR_BRAM模塊的目的;片內(nèi)重配置控制模塊是用于控制測試算法的部分重配 置流程;位流存儲模塊則是用于存儲部分重配置位流。除了PR_BRAM模塊外,其余模塊均設(shè) 為靜態(tài)模塊。
[0008] 上述測試系統(tǒng)的測試流程為: 首先進(jìn)行第一個算法的測試,將TPG模塊中第一個算法產(chǎn)生的測試序列傳輸?shù)紹UF模塊 中,經(jīng)由BUF模塊的緩沖功能傳輸?shù)讲糠种嘏渲玫腜R_BRAM模塊中,測試序列輸入到待測 BRAM(PR_BRAM模塊)之后,對待測BRAM進(jìn)行相應(yīng)的讀寫操作,然后讀出數(shù)據(jù);將讀出的數(shù)據(jù) 傳輸?shù)捷敵鯞UF模塊中,經(jīng)過BUF模塊的緩沖作用,將讀出的數(shù)據(jù)傳送到ORA模塊中,與正確 值進(jìn)行比較;如果出現(xiàn)與正確值不一致的情況,則報出錯誤,否則不報錯,直至所有的讀出 數(shù)據(jù)均比較完畢,該算法執(zhí)行完畢;然后,算法執(zhí)行完畢后,相關(guān)信號直接控制片內(nèi)重配置 控制模塊從位流存儲模塊中讀出部分重配置位流以實(shí)現(xiàn)部分重配置,將部分重配置模塊 PR_BRAM的配置信息修改為第二個算法所需要的,同時控制TPG模塊產(chǎn)生第二個算法的測試 序列,開始第二個算法的測試,以此類推。
[0009]本發(fā)明提出了一種基于片內(nèi)自動部分重配置的BRAM內(nèi)建自測試的方法,改進(jìn)了測 試算法,有效地提高了測試的故障覆蓋率,同時采用片內(nèi)自動部分重配置的方式降低了測 試配置數(shù)目,從而降低了測試時間。
[0010]本發(fā)明的技術(shù)核心點(diǎn)在于: 一是改進(jìn)測試算法,在已有論文[5]基礎(chǔ)上,利用March SS算法覆蓋SRAM故障,設(shè)計初始 化測試算法覆蓋BRAM初始化功能故障,從而提升測試的故障覆蓋率; 二是利用了 FPGA內(nèi)嵌配置接口進(jìn)行片內(nèi)部分重配置,將所有測試算法集成在同一個測 試配置里來實(shí)現(xiàn)降低測試的完整配置數(shù),最終實(shí)現(xiàn)了將測試配置數(shù)降低的目的,降低了測 試時間。部分重配置位流既可以存儲在片外,也可以存儲在片內(nèi)。部分重配置位流存儲在片 外較常見,本發(fā)明給出了將部分重配置位流存儲在片內(nèi)的方法,以提高測試的靈活性。
[0011] 在FPGA內(nèi)嵌BRAM核的測試中,最重要的兩個因素是測試覆蓋率和測試時間。測試 方法的故障覆蓋率直接決定了該測試方法的有效性。如今的FPGA在功能和性能上均越來越 強(qiáng)大,設(shè)計的工藝也越來越先進(jìn),隨之而來的就是芯片故障的類別也越來越多,故障模型也 越來越復(fù)雜,因此評判一個測試方法是否有效的一個重要標(biāo)準(zhǔn)是是否能夠覆蓋芯片可能會 出現(xiàn)的盡可能多的故障。本發(fā)明將繼承已有算法中的部分算法,同時修改并增加一些算法 以達(dá)到更高的測試故障覆蓋率。測試時間是芯片測試中的另一個重要因素,直接決定了該 測試方法的效率,測試時間的長短會影響測試的人力和時間投入。而在芯片測試中,測試時 間一般可由兩部分組成,其一為下載配置時間,其二為程序執(zhí)行時間。對于BRAM來講,下載 配置時間一般都大于程序執(zhí)行時間,因此需要降低測試時間,主要從降低下載配置時間方 面來考慮,而影響下載配置時間的因素主要需要配置的位流。本發(fā)明中,將所有的算法均集 成在同一個測試配置中,并采用FPGA片內(nèi)配置接口進(jìn)行片內(nèi)部分重配置,部分重配置位流 存儲在芯片片內(nèi),這么做可以大大降低測試配置位流數(shù)目,降低配置時間同時可以提高測 試的靈活性。
[0012] 本發(fā)明提到的提高故障覆蓋率的測試算法是,沿用了文獻(xiàn)[5]中采用的March s2pf-、March d2pf、MATS+、cascade MATS+、ECC及FIFO的測試算法,在此基礎(chǔ)上,使用March SS算法取代March LR算法,以覆蓋讀破壞故障、寫破壞故障、干擾耦合故障、讀破壞耦合故 障以及寫破壞耦合故障等[2];此外,增加初始化測試算法,覆蓋FPGA內(nèi)嵌BRAM的初始化功 能。依此修改后,在文獻(xiàn) [5]的基礎(chǔ)上進(jìn)一步提高了測試覆蓋率。
[0013] 本發(fā)明提出的初始化測試算法步驟為,在配置時給每塊BRAM初始化一定的數(shù)據(jù), 并且給每塊BRAM寫入的數(shù)據(jù)一致,在程序執(zhí)行時依次將所有BRAM中的數(shù)據(jù)按地址讀出,數(shù) 據(jù)讀出后進(jìn)行相互比較并與正確值進(jìn)行比較,看是否存在故障,直至所有地址的數(shù)據(jù)均比 較完畢。一旦檢測到某個BRAM讀出的數(shù)據(jù)與正確結(jié)果不一致,則說明該BRAM初始化功能存 在故障。
[0014]本發(fā)明提出的降低測試時間的具體步驟為,提取出測試BRAM的所有測試算法實(shí)現(xiàn) 電路中可通用的模塊,并將這些模塊置為靜態(tài)模塊,其余模塊設(shè)計為部分重配置模塊,在本 發(fā)明的設(shè)計中,僅僅待測BRAM部分被設(shè)置為部分重配置模塊,在實(shí)際操作時,切換不同的測 試算法只需重新配置部分重配置模塊的位流即可,可以大幅降低配置時間,從而實(shí)現(xiàn)降低 測試時間的目的,不同芯片測試時間降低的幅度將視BRAM占芯片中的比例而定。以Xilinx Virtex-4的XC4VLX200芯片為例,經(jīng)過試驗發(fā)現(xiàn),待測BRAM部分產(chǎn)生的配置位流僅占整體配 置位流的8.7%,理論上單個算法配置時間可以降低91%。
[0015] 在進(jìn)行部分重配置時,本發(fā)明使用了FPGA片內(nèi)配置接口(如Xilinx FPGA中的ICAP 接口)來是實(shí)現(xiàn),并將重布置技術(shù)[8]應(yīng)用到測試中,實(shí)現(xiàn)了將部分重配置位流存儲在片內(nèi), 這是基于兩方面的考慮,一是從片內(nèi)配置接口訪問片內(nèi)存儲器的速度要高于片外,有利于 降低配置時間,二是將部分重配置位流存儲在片內(nèi)而無需借助片外存儲單元,提高了本發(fā) 明的使用靈活性以及移植性。
[0016]本發(fā)明尤其適合對FPGA內(nèi)嵌BRAM進(jìn)行測試,因為內(nèi)部配置接口在現(xiàn)代FPGA非常普 遍,而且現(xiàn)代FPGA中具有豐富的邏輯資源,因此不用擔(dān)心其余模塊如測試向量發(fā)生器等等 的硬件開銷問題,只需要由硬件描述語言描述出這些模塊的功能并采用相應(yīng)地部分重配置 流程實(shí)現(xiàn)即可。
[0017]技術(shù)效果 本發(fā)明能夠在只需兩次完整配置的情況下,利用FPGA芯片內(nèi)的內(nèi)部配置接口,進(jìn)行片 內(nèi)部分重配置,將多個測試算法集成在同一個配置中,從而實(shí)現(xiàn)對FPGA內(nèi)嵌BRAM的測試故 障覆蓋率達(dá)到100%,同時大大降低了測試時間,此外,還實(shí)現(xiàn)了將部分重配置位流存儲在 FPGA芯片,在測試時無需借助外部存儲單元。因此,本發(fā)明相比于一般測試方法,具備測試 覆蓋率高,測試時間小,測試時間的可移植性和靈活性較高等特點(diǎn)。
【附圖說明】
[0018] 圖1:測試方法電路架構(gòu)。
[0019] 圖2:BRAM劃分示例。
[0020] 圖3: TPG模塊選擇電路。
[0021] 圖4:0RA模塊實(shí)現(xiàn)。
[0022] 圖5:部分重配置控制模塊實(shí)現(xiàn)流程圖。
[0023]圖6:測試結(jié)果判定示例。
【具體實(shí)施方式】
[0024]本發(fā)明的實(shí)現(xiàn)方案根據(jù)不同的FPGA芯片略有不同,但基本實(shí)現(xiàn)框圖都如圖1所示。 由TPG模塊產(chǎn)生測試向量,測試向量通過BUF模塊進(jìn)入到部分重配置模塊(PR_BRAM)中,即待 測BRAM中,測試向量進(jìn)入部分重配置模塊后,待測BRAM進(jìn)行相應(yīng)的讀寫操作后讀出數(shù)據(jù),讀 出數(shù)據(jù)通過BUF模塊輸出到0RA模塊,0RA模塊中集合了所有PR_BRAM模塊的輸出并對這些輸 出進(jìn)行比較,看是否與正確結(jié)果一致,如出現(xiàn)任意一個結(jié)果與正確結(jié)果不一致,均令輸出結(jié) 果為測試出現(xiàn)故障。而部分重配置控制模塊則用于控制進(jìn)行部分重配置操作,當(dāng)一個算法 執(zhí)行完畢后,由該模塊控制進(jìn)行部分重配置,重新配置待測BRAM的配置方式,同時給出信號 到TPG模塊中選擇新的測試向量進(jìn)行測試。位流存儲模塊則用于存儲部分重配置位流,部分 重配置控制模塊在控制進(jìn)行部分重配置流程時,即從位流存儲模塊中讀取數(shù)據(jù)進(jìn)行重配 置。
[0025] 以測試Xilinx公司的XC4VLX200芯片中的BRAM功能為例。該芯片內(nèi)含有7列共336 塊BRAM,片內(nèi)配置接口可以用片內(nèi)內(nèi)嵌ICAP核實(shí)現(xiàn)。首先我們將整個芯片的BRAM根據(jù)在芯 片中的位置平分為上半?yún)^(qū)和下半?yún)^(qū),在對上半?yún)^(qū)BRAM進(jìn)行測試時,該區(qū)間內(nèi)的BRAM作為待 測BRAM,需要切割劃分為部分重配置模塊,即上文中介紹的PR_BRAM模塊,下半?yún)^(qū)的BRAM則 用作位流存儲模塊,反之亦然。確定了待測BRAM后,將這些BRAM切割劃分為部分重配置模 塊,在劃分時以row為最小單位劃分部分重配置模塊,劃分原則為同列的每相鄰的四塊BRAM 構(gòu)成一個部分重配置模塊,在這種劃分原則下得到的部分重配置模塊位流最小。圖2是BRAM 劃分的示例圖。在該例子中,我們對下半?yún)^(qū)BRAM進(jìn)行測試,上半?yún)^(qū)BRAM作為位流存儲模塊, 從圖中可以看出,將待測BRAM以每4個為一組構(gòu)建部分重配置模塊。測試上半?yún)^(qū)BRAM時類 似。在測試算法上采用了 14個測試算法來實(shí)現(xiàn)對該系列FPGA故障的覆蓋率100%,參考表1。 算法編號中的PR為部分重配置,含義是在實(shí)現(xiàn)時以部分重配置的形式進(jìn)行配置。
[0026]表1:14個測試算法以及配置標(biāo)示意
[0027]下面將對各個模塊的具體實(shí)現(xiàn)方式進(jìn)行說明。
[0028] (l)TPG模塊。該模塊不作為重配置模塊而是作為靜態(tài)模塊,也就是說在14個測試 算法測試的過程中是無法進(jìn)行重配置的,而不同的測試算法對應(yīng)的測試向量不一樣。因此, 需要將整個測試流程的14個測試算法需要的測試向量全部集成在該模塊內(nèi),每執(zhí)行完一個 測試算法后在進(jìn)行重配置下一個位流時通過選擇信號切換為相應(yīng)測試算法需要的測試向 量。這是通過一個多路選擇器來實(shí)現(xiàn)的,選擇信號為TPG_count信號,該信號是用來指示當(dāng) 前正在執(zhí)行的是第幾個算法。選擇電路如圖3所示,通過TPG_c 〇unt信號來選擇14個測試算 法中的一個算法傳輸?shù)酱郎yBRAM中。
[0029] (2)0RA模塊。本模塊的設(shè)計思路是兩兩相互比較,將所有待測BRAM的輸出兩兩進(jìn) 行比較,如圖4所示,相鄰的兩個待測BRAM的輸出傳輸?shù)揭粋€比較模塊中進(jìn)行比較,將所有 的比較結(jié)果匯總到一起。
[0030] (3)PR_BRAM模塊。即本設(shè)計的部分重配置模塊,劃分原則如上文所述。
[0031] (4)BUF模塊。目的是為了保證所有的重配置模塊(即PR_BRAM模塊)的與其他靜態(tài) 模塊的連接均一致。這樣可以實(shí)現(xiàn)所有重配置模塊產(chǎn)生的重配置位流只存在地址的差異, 滿足重布置的要求,即以單個重配置模塊的位流來配置所有的重配置模塊。
[0032] (5)部分重配置控制模塊。在該例子中即為ICAP控制模塊。在該模塊的設(shè)計中,最 重要的是實(shí)現(xiàn)14個測試算法之間的重配置流程,該過程的實(shí)現(xiàn)流程圖如圖5左側(cè)所示,首先 執(zhí)行測試算法1,該測試算法執(zhí)行完畢后BIST_done信號將拉高,指示該算法執(zhí)行完畢,此時 開始進(jìn)行下一個測試算法需要的部分重配置模塊的部分重配置,重配置完成后REC0NF_ done信號拉高,指示著重配置完畢,重配置完畢后,將BIST_done信號置為低電平,此時第二 個算法開始執(zhí)行,以此類推直至所有的算法執(zhí)行完畢后,則輸出測試結(jié)果。其中,該流程中, "重配置下一算法"這一步驟由于是通過單個重配置模塊的位流通過ICAP來配置所有的重 配置模塊,此過程的實(shí)現(xiàn)需要滿足一定的時序要求。具體流程如圖5右側(cè)流程圖所示,該部 分是左側(cè)重配置下一算法步驟的細(xì)化,在進(jìn)行部分重配置模塊的部分重配置時,由于整個 設(shè)計含有多個重配置模塊,而所有的重配置模塊配置用的位流均為同一個,因此需要依次 進(jìn)行重配置,首先進(jìn)行第一個部分重配置,增加一個PR_count信號指示當(dāng)前正在進(jìn)行配置 的重配置模塊,讀出部分重配置位流,找到該重配置位流中FAR地址部分,根據(jù)PR_c 〇unt的 值修改FAR地址的值,修改完畢后通過I CAP配置該位流,配置完成后將PR_coun t加一以配置 下一個重配置模塊,以此類推直至所有的重配置模塊均配置完畢。其中流程圖中的BIST_ done信號為算法執(zhí)行完成信號,REC0NF_done信號是重配置結(jié)束信號,PR_count信號為在重 配置過程中描述當(dāng)前正在配置重配置模塊編號。FAR為配置位流的地址信息。
[0033] (6)位流存儲模塊。該模塊是由不進(jìn)行測試的芯片半?yún)^(qū)的BRAM組成,用于在片內(nèi)存 儲部分重配置時的位流,設(shè)計為靜態(tài)模塊。
[0034] 所有的模塊均設(shè)計好之后,進(jìn)行部分重配置流程生成部分重配置位流并進(jìn)行下載 配置進(jìn)行測試。
[0035] 對Xilinx Virtex-4 XC4VLX200芯片測試時,將開發(fā)好的位流直接下載到FPGA芯 片中進(jìn)行測試,如圖6所示,該圖中elk為時鐘信號,rst_n為復(fù)位信號,result為測試結(jié)果, 該信號為1時表示測試出現(xiàn)異常,TPG[3:0]為測試算法編號,Unit_ reSult信號為每一個存 儲單元的測試結(jié)果,0表示正在測試的存儲單元異常,1表示正在測試的存儲單元正常。測試 過程為:首先等待測試結(jié)束,結(jié)束的標(biāo)志是TPG跳轉(zhuǎn)到數(shù)值D(下載完畢后等待時間小于ls), 測試結(jié)束時,觀察result的值來判斷測試是否出現(xiàn)故障,如果result為0,則說明測試的 BRAM無故障,如果result為1,則說明測試的BRAM出現(xiàn)故障。在result出現(xiàn)故障時,可以通過 示波器的觸發(fā)功能觸發(fā)Unit_result信號確定出現(xiàn)故障的位置,即Unit_result被拉到低電 平的位置。
[0036]本發(fā)明相比于一般測試方法,具備測試覆蓋率高,測試時間小,測試時間的可移植 性和靈活性較高等特點(diǎn),而且,該方法還可以應(yīng)用到FPGA內(nèi)別的模塊如DSP的測試中。
[0037]本發(fā)明的移植性及通用性較強(qiáng),在測試其他FPGA的內(nèi)嵌BRAM時測試方法的開發(fā)流 程與上述類似。
【主權(quán)項】
1. 一種FPGA內(nèi)嵌BRAM核的測試系統(tǒng),其特征在于,主要包括:TPG模塊、ORA模塊、PR_ BRAM模塊、BUF模塊、片內(nèi)重配置控制模塊和位流存儲模塊;其中: TPG模塊是測試向量產(chǎn)生模塊,用于產(chǎn)生待測BRAM的測試序列; 0RA模塊是輸出響應(yīng)比較器,用于比較從待測BRAM中輸出的數(shù)據(jù)是否正確; PR_BRAM模塊是待測BRAM部分,主要包含需要進(jìn)行測試的BRAM,該模塊設(shè)計為部分重 配置模塊; BUF模塊是緩沖器模塊,用于確保所有的PR_BRAM模塊與其他靜態(tài)模塊的連接均一致, 以實(shí)現(xiàn)用單個PR_BRAM模塊的部分重配置位流配置其他PR_BRAM模塊; 片內(nèi)重配置控制模塊是用于控制測試算法的部分重配置流程; 位流存儲模塊是用于存儲部分重配置位流; 除了 PR_BRAM模塊外,其余模塊均設(shè)為靜態(tài)模塊。2. 根據(jù)權(quán)利要求1所述的FPGA內(nèi)嵌BRAM核的測試系統(tǒng),其特征在于,測試流程為: 首先進(jìn)行第一個算法的測試,將TPG模塊中第一個算法產(chǎn)生的測試序列傳輸?shù)紹UF模塊 中,經(jīng)由BUF模塊的緩沖功能傳輸?shù)讲糠种嘏渲玫腜R_BRAM模塊中,測試序列輸入至ljPR_BRAM 模塊之后,對待測BRAM進(jìn)行相應(yīng)的讀寫操作,然后讀出數(shù)據(jù);將讀出的數(shù)據(jù)傳輸?shù)捷敵鯞UF 模塊中,經(jīng)過BUF模塊的緩沖作用,將讀出的數(shù)據(jù)傳送至IjORA模塊中,與正確值進(jìn)行比較;如 果出現(xiàn)與正確值不一致的情況,則報出錯誤,否則不報錯,直至所有的讀出數(shù)據(jù)均比較完 畢,該算法執(zhí)行完畢;算法執(zhí)行完畢后,相關(guān)信號直接控制片內(nèi)重配置控制模塊從位流存儲 模塊中讀出部分重配置位流以實(shí)現(xiàn)部分重配置,將部分重配置模塊PR_BRAM的配置信息修 改為第二個算法所需要的,同時控制TPG模塊產(chǎn)生第二個算法的測試序列,開始第二個算法 的測試,以此類推。3. -種基于權(quán)利要求1所述測試系統(tǒng)的FPGA內(nèi)嵌BRAM核的測試方法,其特征在于,具體 步驟為: 首先進(jìn)行第一個算法的測試,將TPG模塊中第一個算法產(chǎn)生的測試序列傳輸?shù)紹UF模塊 中,經(jīng)由BUF模塊的緩沖功能傳輸?shù)讲糠种嘏渲玫腜R_BRAM模塊中,測試序列輸入至ljPR_BRAM 模塊之后,對待測BRAM進(jìn)行相應(yīng)的讀寫操作,然后讀出數(shù)據(jù);將讀出的數(shù)據(jù)傳輸?shù)捷敵鯞UF 模塊中,經(jīng)過BUF模塊的緩沖作用,將讀出的數(shù)據(jù)傳送至IjORA模塊中,與正確值進(jìn)行比較;如 果出現(xiàn)與正確值不一致的情況,則報出錯誤,否則不報錯,直至所有的讀出數(shù)據(jù)均比較完 畢,該算法執(zhí)行完畢; 算法執(zhí)行完畢后,相關(guān)信號直接控制片內(nèi)重配置控制模塊從位流存儲模塊中讀出部分 重配置位流以實(shí)現(xiàn)部分重配置,將部分重配置模塊PR_BRAM的配置信息修改為第二個算法 所需要的,同時控制TPG模塊產(chǎn)生第二個算法的測試序列,開始第二個算法的測試,以此類 推。4. 根據(jù)權(quán)利要求3所述的FPGA內(nèi)嵌BRAM核的測試方法,其特征在于: 一是改進(jìn)測試算法,即利用March SS算法覆蓋SRAM故障,設(shè)計初始化測試算法覆蓋 BRAM初始化功能故障,以提升測試的故障覆蓋率; 二是利用FPGA內(nèi)嵌配置接口進(jìn)行片內(nèi)部分重配置,將所有測試算法集成在同一個測試 配置里,以降低測試的完整配置數(shù),從而降低測試時間;并將部分重配置位流存儲在片內(nèi), 以提高測試的靈活性。5. 根據(jù)權(quán)利要求4所述的FPGA內(nèi)嵌BRAM核的測試方法,其特征在于: 所述初始化測試算法的步驟為,在配置時給每塊BRAM初始化一定的數(shù)據(jù),并且給每塊 BRAM寫入的數(shù)據(jù)一致,在程序執(zhí)行時依次將所有BRAM中的數(shù)據(jù)按地址讀出,數(shù)據(jù)讀出后進(jìn) 行相互比較并與正確值進(jìn)行比較,看是否存在故障,直至所有地址的數(shù)據(jù)均比較完畢;一旦 檢測到某個BRAM讀出的數(shù)據(jù)與正確結(jié)果不一致,則說明該BRAM初始化功能存在故障。6. 根據(jù)權(quán)利要求4所述的FPGA內(nèi)嵌BRAM核的測試方法,其特征在于: 所述降低測試時間的具體步驟為,提取出測試BRAM的所有測試算法實(shí)現(xiàn)電路中可通用 的模塊,并將這些模塊置為靜態(tài)模塊,其余模塊設(shè)計為部分重配置模塊;切換不同的測試算 法只需重新配置部分重配置模塊的位流,即可大幅降低配置時間,從而降低測試時間。
【文檔編號】G11C29/10GK106098104SQ201610401905
【公開日】2016年11月9日
【申請日】2016年6月11日
【發(fā)明人】李圣華, 來金梅, 王健
【申請人】復(fù)旦大學(xué)