本發(fā)明涉及一種單芯片上多塊嵌入式存儲器的存儲器自建內(nèi)測試(Memory Built-In Self Test,MBIST)設計方法,特別是各個存儲器工作頻率相差較大、版圖位置相隔較遠時的MBIST設計方法,屬于半導體數(shù)字集成電路設計和測試領(lǐng)域,主要應用于半導體數(shù)字集成電路的片上嵌入式存儲器的MBIST設計過程。
背景技術(shù):
隨著集成電路的發(fā)展,芯片集成度迅速提高,而嵌入式存儲器在整個芯片內(nèi)部所占的比例越來越大,采用更快、更大的片上存儲器是未來必然的發(fā)展趨勢?;诠δ芟蛄繙y試存儲器的方法,受測試難度、測試覆蓋率、測試效率的制約,已經(jīng)不為芯片設計廠商所接受。目前,存儲器測試最常用的測試方法是MBIST,即采用電子設計自動化(Electronic Design Automation,EDA)軟件工具,針對不同的故障類型,采用對存儲器相應的讀寫操作算法,在電路內(nèi)部插入存儲器自測試邏輯結(jié)構(gòu),通過對片上嵌入式存儲器的讀寫操作,并將存儲器的輸出與預期的結(jié)果在芯片內(nèi)部進行比較,判斷存儲器是否存在故障,從而完成存儲器的測試。
由于在以往芯片中集成存儲器數(shù)量不是很大,并且存儲器測試邏輯本身會占用一定的面積和功耗,傳統(tǒng)的做法是采用一個控制器進行全部存儲器的MBIST測試;同時,存儲器測試時鐘采用與功能時鐘復用的形式,無法實現(xiàn)對MBIST測試時鐘的靈活控制;此外,在掃描測試時,由于存儲器的輸出是不可控的,所以對于掃描測試覆蓋率是一種損失,會帶來掃描測試覆蓋率的降低。
目前,單芯片很多情況下具有豐富的功能,往往在芯片內(nèi)部集成大量的分塊式的存儲器用于實現(xiàn)各自不同的數(shù)據(jù)或程序存儲功能,并且布局在芯片的不同位置,如果在芯片內(nèi)部只插入一個控制器,則會使得整塊芯片的全部存儲器測試時間很大,尤其在大批量供貨的產(chǎn)品中,使得測試成本變得難以接受,并且?guī)戆鎴D設計的布線過程中存在繞線過長問題,使得時序難以收斂。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是:克服現(xiàn)有技術(shù)的不足,提供一種單芯片上多塊嵌入式存儲器的內(nèi)建自測試設計方法,能夠有效提高測試效率,增加測試靈活性,同時實現(xiàn)時序的快速收斂,提升測試覆蓋率,降低測試成本。
本發(fā)明的技術(shù)解決方案是:一種單芯片上多塊嵌入式存儲器的內(nèi)建自測試設計方法,包括以下步驟:
(1)根據(jù)單芯片上每個存儲器的工作頻率、位寬、大小、端口類型,為每個存儲器產(chǎn)生內(nèi)建自測試庫;
(2)根據(jù)每個存儲器的工作頻率、位寬、大小、端口類型以及版圖布局,確定控制器的個數(shù)以及每個控制器對應測試的存儲器,以保證每個控制器的總測試時間均衡;
(3)為單芯片增加N個存儲器測試時鐘端口、存儲器測試邏輯復位端口bist_rst、N個存儲器測試使能端口、掃描測試模式端口scan_mode、N個存儲器測試通過端口、N個存儲器測試失效端口,其中N為控制器的個數(shù);
(4)利用MBIST測試邏輯插入工具,根據(jù)新增加的芯片端口和每個存儲器的內(nèi)建自測試庫,生成每個存儲器的自測試邏輯,并插入到單芯片中;
(5)在單芯片上為每個控制器增加時鐘選擇邏輯電路,所述時鐘選擇邏輯電路根據(jù)外部輸入工作模式控制信號確定單芯片處于工作模式還是存儲器自測試模式,并在單芯片處于存儲器自測試模式時根據(jù)外部輸入的存儲器測試邏輯時鐘選擇信號確定存儲器的自測試時鐘,并輸出給對應的控制器;
(6)每個控制器根據(jù)對應存儲器的自測試邏輯和工作模式生成測試激勵,完成對應存儲器的自動測試,并通過該控制器對應的存儲器測試通過端口或存儲器測試失效端口將測試結(jié)果輸出,完成每個存儲器的內(nèi)建自測試。
所述步驟(2)中每個控制器對應測試的存儲器為一個或多個,且當控制器測試多個存儲器時,所述多個存儲器的工作頻率相同。
所述步驟(4)中每個存儲器的自測試邏輯包括控制器邏輯、選擇邏輯和旁路邏輯。
所述步驟(5)中在單芯片上為每個控制器增加時鐘選擇邏輯電路之前首先為單芯片增加存儲器測試邏輯時鐘選擇端口bist_atsp以及每個控制器的工作模式控制端口bist_mode,所述工作模式控制端口bist_mode用于接收外部輸入的工作模式控制信號,所述存儲器測試邏輯時鐘選擇端口bist_atsp用于接收外部輸入的存儲器測試邏輯時鐘選擇信號。
時鐘選擇邏輯電路包括與門、或門和兩路選擇器;
其中或門的一個輸入端與片上時鐘產(chǎn)生模塊的輸出相連,另一個輸入端與工作模式控制端口bist_mode相連,輸出端口用于輸出功能時鐘信號function_clock;與門的一個輸入端與片上時鐘產(chǎn)生模塊的輸出相連,另一個輸入端與工作模式控制端口bist_mode相連,輸出端口與兩路選擇器的一個輸入端連接;兩路選擇器的另一個輸入端與控制器對應的存儲器測試時鐘端口相連,兩路選擇器的選擇端與存儲器測試邏輯時鐘選擇端口bist_atsp連接,輸出端用于向?qū)刂破鬏敵龃鎯ζ鳒y試時鐘信號bist_clock;其中片上時鐘產(chǎn)生模塊根據(jù)鎖相環(huán)PLL的輸出時鐘產(chǎn)生每個控制器的存儲器測試時鐘。
本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:
(1)本發(fā)明是在現(xiàn)有MBIST測試方法的基礎(chǔ)上,通過增加多個控制器和芯片端口的方式,以及對存儲器所屬控制器的相應劃分,能夠更好地在測試效率、測試功耗、芯片由于存儲器測試增加面積等方面取得平衡,并減少布線時控制器的繞線長度,有利于時序收斂。
(2)本發(fā)明通過時鐘選擇邏輯電路選擇鎖相環(huán)輸出時鐘或者存儲器測試時鐘端口bist_clk,實現(xiàn)能夠在功能模式下,存儲器測試邏輯的時鐘關(guān)閉;在存儲器測試模式下,功能邏輯的時鐘關(guān)閉,顯著降低存儲器測試時的電路功耗。
(3)本發(fā)明通過多路選擇器可以選擇PLL產(chǎn)生的高頻時鐘或外部輸入的存儲器測試時鐘,采用片上鎖相環(huán)PLL產(chǎn)生的高頻時鐘,可以降低對測試儀高速輸入時鐘的要求,實現(xiàn)存儲器的在速測試;采用外部輸入的存儲器測試時鐘,可以進行低速測試,有利于MBIST測試的調(diào)試。
(4)本發(fā)明在自測試邏輯中增加旁路邏輯,在掃描測試模式下,通過將存儲器的輸入進行邏輯運算后連接到掃描鏈上,使得存儲器的周邊邏輯變得可控,并具有可觀測性,提高芯片的整體掃描測試覆蓋率。
附圖說明
圖1是本發(fā)明多個控制器結(jié)構(gòu)圖;
圖2是本發(fā)明中旁路邏輯在掃描測試模式下的等效電路;
圖3是本發(fā)明時鐘選擇邏輯結(jié)構(gòu)圖;
圖4是本發(fā)明單芯片多塊嵌入式存儲器的MBIST設計方法的實施流程圖;
圖5是本發(fā)明在某總線控制電路芯片中的具體實例。
具體實施方式
本發(fā)明針對現(xiàn)有的采用單一時鐘方式的單一控制器測試內(nèi)嵌存儲器的方法在測試效率、時序收斂、測試靈活性以及掃描測試覆蓋率上的不足,提出了一種單芯片上多塊嵌入式存儲器的內(nèi)建自測試設計方法,既可以有效提高測試效率,增加測試靈活性,又可以實現(xiàn)時序的快速收斂,提升測試覆蓋率。
本發(fā)明的方法包括以下步驟:
如圖4所示,本發(fā)明的實現(xiàn)過程是首先根據(jù)SoC芯片所采用的存儲器的類型,包括大小、位寬、端口類型,分別對每一種存儲器定義相應的MBIST庫,MBIST庫包括端口定義、讀寫操作時序定義。其次是根據(jù)芯片中所采用存儲器的類型,以及各塊存儲器的工作頻率、功能和版圖位置,進行MBIST測試控制器Controller的劃分,確定采用多少個控制器Controller來完成SoC芯片中存儲器的測試,以及每個控制器Controller所測試的存儲器,以保證每個控制器的總測試時間均衡;同時,當一個控制器測試多個存儲器時,所述多個存儲器的工作頻率相同。第三,采用MBIST測試邏輯插入工具,為單芯片增加N個存儲器測試時鐘端口、存儲器測試邏輯復位端口bist_rst、N個存儲器測試使能端口、掃描測試模式端口scan_mode、N個存儲器測試通過端口、N個存儲器測試失效端口,其中N為控制器的個數(shù),將端口對應到每個控制器,并將每個控制器Cotroller對應到所測試的存儲器。第四,利用MBIST測試邏輯插入工具,根據(jù)新增加的芯片端口和每個存儲器的內(nèi)建自測試庫,生成每個存儲器的自測試邏輯(控制器邏輯、選擇邏輯和旁路邏輯),并插入到單芯片中。第五,在完成芯片MBIST測試結(jié)構(gòu)插入的芯片中,增加新的芯片端口bist_mode、bist_atsp,以及時鐘選擇邏輯電路1、時鐘選擇邏輯電2,并按照圖1所示的連接方式通過手動修改的方法進行連接,形成包含多個MBIST時鐘選擇邏輯、多個自測試邏輯的芯片設計,完成單芯片多塊嵌入式存儲器的MBIST設計。第六,每個控制器根據(jù)對應存儲器的自測試邏輯和工作模式生成測試激勵,完成對應存儲器的自動測試,并通過該控制器對應的存儲器測試通過端口或存儲器測試失效端口將測試結(jié)果輸出,完成每個存儲器的內(nèi)建自測試。
時鐘選擇邏輯電路結(jié)構(gòu)和連接方式如下:時鐘選擇邏輯電路包括與門、或門和兩路選擇器;
實施例:
以某個單芯片上有三個存儲器Memory1、Memory2、Memory3為例,其中Memory1為雙端口,大小是2048(即地址線寬度為11位),位寬是8位,工作頻率為120MHz。Memory2和Memory3均為單端口,大小是1024(即地址線寬度為10位),位寬是8位,工作頻率為60MHz。且在版圖布局上,Memory2和Memory3距離較近。
利用批處理工具,為三個存儲器產(chǎn)生內(nèi)建自測試庫。確定Memory1需要一個控制器Controller1,Memory2和Memory3共用一個控制器Controller2.
為單芯片增加2個存儲器測試時鐘端口bist_clk1和bist_clk2、存儲器測試邏輯復位端口bist_rst、2個存儲器測試使能端口bist_en1和bist_en2、掃描測試模式端口scan_mode、2個存儲器測試通過端口test_done1和test_done2、2個存儲器測試失效端口fail_h1和fail_h2。
利用Mentor Graphics公司的MBIST測試邏輯插入工具MBISTArchitect,根據(jù)新增加的芯片端口和每個存儲器的內(nèi)建自測試庫,在原單芯片的設計基礎(chǔ)上生成每個存儲器的自測試邏輯(控制器邏輯、選擇邏輯和旁路邏輯),并插入到單芯片中。
在單芯片上增加存儲器測試邏輯時鐘選擇端口bist_atsp,并為Controller1增加工作模式控制端口bist_mode以及時鐘選擇邏輯電路1,為Controller2增加工作模式控制端口bist_mode以及時鐘選擇邏輯電路2。
時鐘選擇邏輯電路1或門和與門的一個輸入端均與時鐘產(chǎn)生模塊的第一個輸出時鐘連接,或門和與門的另一個輸入端均與bist_mode相連,或門的輸出端用于輸出功能時鐘信號function_clock1,與門的輸出端與兩路選擇器的一個輸入端連接,兩路選擇器的另一個輸入端與另一個輸入端與bist_clk1連接,兩路選擇器的選擇端與bist_atsp連接,兩路選擇器的輸出端口用于向控制器Controller1輸出存儲器測試時鐘信號bist_clock1。
時鐘選擇邏輯電路2或門和與門的一個輸入端均與時鐘產(chǎn)生模塊的第二個輸出時鐘連接,或門和與門的另一個輸入端均與bist_mode相連,或門的輸出端用于輸出功能時鐘信號function_clock2,與門的輸出端與兩路選擇器的一個輸入端連接,兩路選擇器的另一個輸入端與另一個輸入端與bist_clk2連接,兩路選擇器的選擇端與bist_atsp連接,兩路選擇器的輸出端口用于向控制器Controller2輸出存儲器測試時鐘信號bist_clock2。
其它端口連接方式如下:
片上鎖相環(huán)PLL的輸入,與芯片輸入端口參考時鐘ref_clk相連;
時鐘選擇邏輯電路1和2的輸出function_clock1和function_clock2,與內(nèi)部功能邏輯相連,時鐘選擇邏輯電路1的輸出bist_clock1,與控制器1的輸入連接,時鐘選擇邏輯電路2的輸出bist_clock1,與控制器2的輸入連接。
以下連接由工具自動實現(xiàn),其中選擇邏輯為原有設計:
控制器Controller1的輸入同時與bist_clk、bist_rst、bist_en1、以及旁路邏輯1的輸出相連;控制器Controller1的輸出與test_done1以及fail_h1相連。
選擇邏輯1的輸入,與功能邏輯1、控制器Controller1的輸出相連;選擇邏輯1的輸出,與存儲器Memory1的輸入、旁路邏輯1的輸入相連;
存儲器Memory1的輸入,與選擇邏輯1的輸出相連;存儲器Memory1的輸出,與旁路邏輯1的輸入相連;
旁路邏輯1的輸入,與scan_mode、選擇邏輯1的輸出以及Memory1的輸出相連;旁路邏輯1的輸出,與控制器Controller1的輸入、功能邏輯1的輸入相連;
控制器Controller2的輸入同時與bist_clk、bist_rst、bist_en2以及旁路邏輯2的輸出相連;控制器Controller2的輸出與test_done2以及fail_h2相連。
選擇邏輯2的輸入,與功能邏輯3、功能邏輯5、控制器Controller2的輸出相連;選擇邏輯2的輸出,與存儲器Memory2、Memory3的輸入、旁路邏輯2的輸入相連;
存儲器Memory2的輸入,與選擇邏輯2的輸出相連;存儲器Memory2的輸出,與旁路邏輯2的輸入相連;
存儲器Memory3的輸入,與選擇邏輯2的輸出相連;存儲器Memory2的輸出,與旁路邏輯2的輸入相連;
旁路邏輯2的輸入,與芯片輸入端口scan_mode、選擇邏輯2的輸出、Memory2的輸出、Memory3的輸出相連;旁路邏輯2的輸出,與控制器Controller2的輸入、功能邏輯4、功能邏輯6的輸入相連。
連接后的單芯片如圖1所示。
針對實施例,闡述本發(fā)明工作原理如下:
當scan_mode=0,bist_mode=0時,時鐘選擇邏輯電路1和2輸出function_clock為片上鎖相環(huán)PLL的輸出,輸出bist_clock為固定電平0,存儲器測試邏輯的時鐘為關(guān)閉狀態(tài),芯片工作在功能模式;旁路邏輯1直接輸出Memory1的輸出,旁路邏輯2直接輸出Memory2、Memory3的輸出。
當scan_mode=0,bist_mode=1時,時鐘選擇邏輯電路1和2輸出function_clock為固定電平1,輸出bist_clock為片上鎖相環(huán)PLL的輸出,或者芯片端口輸入時鐘bist_clk,芯片工作在存儲器內(nèi)建自測試模式;旁路邏輯1的輸出為Memory1輸入經(jīng)過邏輯運算后的結(jié)果;旁路邏輯2的輸出為Memory2、Memory3輸入經(jīng)過邏輯運算后的結(jié)果。
如圖3所示,當scan_mode=0,bist_mode=1,bist_atsp=1時,時鐘選擇邏輯電路1和2輸出function_clock為固定電平1,功能邏輯的時鐘為關(guān)閉狀態(tài),輸出bist_clock為芯片端口輸入時鐘bist_clk,即低速測試;MBIST測試時鐘采用的是可調(diào)整頻率大小的芯片輸入時鐘bist_clk;
當scan_mode=0,bist_mode=1,bist_atsp=0時,時鐘選擇邏輯電路1和2輸出function_clock為固定電平1,功能邏輯的時鐘為關(guān)閉狀態(tài),輸出bist_clock為片上鎖相環(huán)PLL的輸出,即在速測試。
當scan_mode=0,bist_mode=1時,芯片工作在存儲器自測試模式,進行如下的操作:
當bist_en1=0時,控制器Controller1中的狀態(tài)機停止工作,通過選擇邏輯1將功能邏輯1的輸出到Memory1;
當bist_en1=1時,控制器Controller1中的狀態(tài)機開始工作,在bist_clk1的控制下產(chǎn)生存儲器測試激勵,通過選擇邏輯1將測試激勵輸入到Memory1;Memory1的輸出直接輸出到控制器Controller1中的比較器Comparator,與Memory1預定的期望結(jié)果進行比較,比較結(jié)果以test_done1、fail_h1作為標志,當Memory1測試完成并且沒有錯誤發(fā)生時,test_done1由低電平變?yōu)楦唠娖?,當Memory1在測試過程中發(fā)生錯誤時,fail_h1由低電平變?yōu)楦唠娖街敝翜y試結(jié)束,并且在測試完成時test_done1一直為低電平。
當bist_en2=0時,控制器Controller2中的狀態(tài)機停止工作,通過選擇邏輯2將功能邏輯3、功能邏輯5的輸出到Memory2、Memory3;
當bist_en2=1時,控制器Controller2中的狀態(tài)機開始工作,在bist_clk2的控制下產(chǎn)生存儲器測試激勵,通過選擇邏輯2將測試激勵輸入到Memory2、Memory3。Memory2和Memory3的輸出直接輸出到控制器Controller2中的比較器Comparator,與Memory2和Memory3預定的期望結(jié)果進行比較,比較結(jié)果以test_done2、fail_h2作為標志,當Memory2和Memory3測試完成并且沒有錯誤發(fā)生時,test_done2由低電平變?yōu)楦唠娖剑擬emory1在測試過程中發(fā)生錯誤時,fail_h2由低電平變?yōu)楦唠娖街敝翜y試結(jié)束,并且在測試完成時test_done2一直為低電平。
如圖2所示,本發(fā)明是在MBIST測試邏輯插入過程中,同時插入旁路邏輯結(jié)構(gòu),使得在掃描測試時能夠測試到Memory周邊邏輯,從而提高整體芯片的掃描測試覆蓋率。
以控制器Controller1為例,當scan_mode=0時,芯片工作在功能模式或者存儲器測試模式下,此時旁路邏輯的輸出為Memory1的輸出。
當scan_mode=1,bist_en1=0時,芯片工作在掃描測試模式下,此時旁路的輸出為Memory1所有輸入端經(jīng)過旁路邏輯的邏輯運算后,輸出到功能邏輯,串入掃描鏈,使得Memory1的周邊邏輯可控和可觀測,提高測試覆蓋率。
本發(fā)明中,當bist_en1由0變?yōu)?時,控制器Controller1開始對Memory1進行測試;當bist_en2由0變?yōu)?時,控制器Controller2開始對Memory2、Memory3進行測試;二者之間的測試互不干擾,兩個控制器可以同時啟動測試,從而大幅度降低整體芯片的測試時間,也可以在其中一個完成測試后再啟動另一個測試,從而降低MBIST測試時的功耗,并有利于調(diào)試,以及定位MBIST出現(xiàn)錯誤的位置。
本發(fā)明根據(jù)芯片上存儲器的工作頻率、大小、端口類型、數(shù)量以及版圖布局來確定合理的存儲器內(nèi)建自測試方案和結(jié)構(gòu),在設計中插入多塊存儲器內(nèi)建自測試邏輯,實現(xiàn)串行和并行測試的多種組合測試方式,達到存儲器的測試時間、測試成本、測試功耗、測試邏輯所增加面積的最優(yōu)化,提高測試效率,并有利于版圖設計時的布局布線和時序收斂;增加時鐘選擇邏輯電路,能夠?qū)崿F(xiàn)在速測試和低速測試;此外,增加存儲器的旁路邏輯,能夠消除存儲器陰影邏輯帶來的數(shù)字邏輯掃描測試時的測試覆蓋率的損失,提升測試覆蓋率。
本發(fā)明主要應用于單芯片中存在多塊Memory時的MBIST設計,尤其是各塊Memory大小、類型、工作頻率、版圖布局差異化較大時,能夠大幅度降低芯片MBIST的測試時間,有利于時序收斂,提升掃描測試時的測試覆蓋率,實現(xiàn)測試時鐘的靈活選擇,便于調(diào)試。
如圖5所示,本發(fā)明的顯著效果在開發(fā)某總線控制電路芯片的實際項目中得到了體現(xiàn)。該總線控制電路芯片中,共包括9塊Memory,其中1塊Memory為單端口,深度為128(即地址線寬度為7位),位寬為39bit,工作頻率為60MHz;3塊Memory為單端口,深度為2048(即地址線寬度為11位),位寬為39bit,工作頻率為60MHz;5塊Memory為雙端口,深度為2048(即地址線寬度為11位),位寬為39bit,工作頻率為120MHz。在版圖布局時,由于Memory面積較大,以及出于功能應用考慮,將各塊Memory放置在芯片四周。采用本發(fā)明方法,共采用6個控制器Controller,分別控制Memory1~2,Memory3,Memory4,Memory5,Memory6~7,Memory8~9,可以將測試時間降低為原來的25%,并且更容易達到時序收斂。
本發(fā)明未詳細說明部分屬本領(lǐng)域技術(shù)人員公知常識。