效率最好的內(nèi)存測(cè)試電路開(kāi)發(fā)環(huán)境
4.9 模擬
本文引用地址:http://m.butianyuan.cn/article/201702/343955.htm4.9.1 BIST電路仿真
圖4-11為BIST電路仿真架構(gòu)圖。此仿真環(huán)境使用make語(yǔ)言來(lái)建立。使用者可參考mbist文件夾下的Makefile.G*_clock_domain 檔案,該檔案包含了仿真指令及相關(guān)參數(shù)。如果使用者想儲(chǔ)存相關(guān)模擬波形,則可開(kāi)啟G*_clock_domain.f 檔案中相關(guān)選項(xiàng)。
在mbist文件夾中,使用者可看到不用clock domain有其相關(guān)輸出檔案。在example case中, G1_clock_domain開(kāi)頭的相關(guān)檔案,為G1 clock domain。除此之外,還有另外兩個(gè)不同之clock domain。執(zhí)行仿真的指令如下:
unix% cd multi_lab/top_down_lab/mbist
unix% make G1_clock_domain FUNC=tb
unix% make G2_clock_domain FUNC=tb
unix% make G3_clock_domain FUNC=tb
Note: 如果使用者的design中有使用ROM memory的話,請(qǐng)?jiān)趫?zhí)行模擬前,確認(rèn)相關(guān)rom code檔案路徑正確。
圖4-11. BIST電路仿真架構(gòu)圖
圖4-12. G1_clock_domain BIST電路仿真結(jié)果
4.9.2 整入BIST電路之仿真
圖4-13為整入BIST電路之仿真架構(gòu)圖. 該仿真對(duì)象為整合BIST電路后的系統(tǒng)design。此仿真環(huán)境使用make語(yǔ)言來(lái)建立。使用者可參考mbist 文件夾下的Makefile.G*_clock_domain 檔案,該檔案包含了仿真指令及相關(guān)參數(shù)。如果使用者想儲(chǔ)存相關(guān)模擬波形,則可開(kāi)啟G*_clock_domain_INS_FAULT.f 檔案中相關(guān)選項(xiàng)。
在mbist 文件夾中,使用者可看到不用clock domain有其相關(guān)輸出檔案。在example case中, G1_clock_domain開(kāi)頭的相關(guān)檔案,為G1 clock domain。除此之外,還有另外兩個(gè)不同之clock domain。執(zhí)行仿真的指令如下:
unix% cd multi_lab/top_down_lab/mbist
unix% make G1_clock_domain FUNC=tb_INS
unix% make G2_clock_domain FUNC=tb_INS
unix% make G3_clock_domain FUNC=tb_INS
圖4-13. 整入BIST電路之仿真架構(gòu)圖
圖4-14. G1_clock_domain 整入BIST電路之仿真結(jié)果
4.9.3 使用Fault Memory Models來(lái)模擬
Brains 提供 fault memory models 來(lái)驗(yàn)證BIST 電路的正確性。此fault memory models 為執(zhí)行Brains時(shí)自動(dòng)產(chǎn)生, 使用者可在 FAULT_MEMORY 文件夾中找到這些檔案。
用戶(hù)可透過(guò)下列指令來(lái)執(zhí)行相關(guān)仿真動(dòng)作:
執(zhí)行BIST電路仿真時(shí):
unix% make G1_clock_domian FUNC=tb_f
執(zhí)行整入BIST電路之仿真時(shí):
unix% make G1_clock_domain FUNC=tb_INS_f
當(dāng)執(zhí)行faulty memory模擬時(shí),使用者會(huì)得到failed的模擬結(jié)果。這是因?yàn)閒aulty memory model中有預(yù)先埋入error bit所致。使用者可透過(guò)觀察波形圖來(lái)了解此現(xiàn)象。圖4-15為一fault memory models仿真的范例波形圖。在此范例中,用戶(hù)可發(fā)現(xiàn)關(guān)于group G1_clock_domain (1_1_1, sram_sp_4096x16 memory model) 的存取順序。
A. Write access with data 16’hffff to address 12’hb7
B. Read access from address 12’hb7
C. Read data is 16’hfff7
由于讀取的結(jié)果和寫(xiě)入的結(jié)果不一致,所以導(dǎo)致模擬failed。
圖4-15. Fault Memory Models模擬波形圖
使用者可在fault memory models中發(fā)現(xiàn)預(yù)先埋入之error bit信息。圖4-16為sram_sp_4096x16 memory model 的error bit范例。
圖4-16. Error Bits定義范例
4.10 合成
Brains亦提供BIST電路相關(guān)合成script 供用戶(hù)執(zhí)行合成工作。該script名稱(chēng)為[design_name].tcl。在執(zhí)行合成工作前,使用者需先設(shè)定相對(duì)應(yīng)standard cell library。如果使用者的design中包含多個(gè)clock domain,則需針對(duì)各個(gè)clock domain執(zhí)行合成工作。合成的指令如下:
unix% cd multi_lab/top_down_lab/mbist
unix% make G1_clock_domain FUNC=dc
unix% make G2_clock_domain FUNC=dc
unix% make G3_clock_domain FUNC=dc
合成相關(guān)報(bào)告(面積,timing…等),則會(huì)輸出在REPORT文件夾中。
5. 整合流程 (Integrator Flow)
當(dāng)BIST電路產(chǎn)生完成后,Brains提供另一整合流程 - Integrator flow,供用戶(hù)將所產(chǎn)生的BIST電路做芯片端整合。該流程主要目的如下列:
n 整合多個(gè)BIST controller: Brains所產(chǎn)生的BIST電路架構(gòu)中,不同的clock domain會(huì)有其相對(duì)應(yīng)之BIST controller。用戶(hù)可透過(guò)此流程,整合多個(gè)controller接口,整合完后,只需一個(gè)IEEE 1149.1接口,即可控制所有BIST controller。
n Hookup pin工作: 使用者design端若有share pin架構(gòu)時(shí),則可透過(guò)hookup pin,將BIST電路相關(guān)腳位,與芯片端IO腳位連接。
n 設(shè)定芯片初始順序: 此功能主要用來(lái)設(shè)定驅(qū)動(dòng)芯片工作時(shí),所需要的相關(guān)順序。包含:切換到BIST模式,clock訊號(hào)和reset訊號(hào)初始設(shè)定…等。
此流程需透過(guò)設(shè)定BII檔案來(lái)完成。以下章節(jié)將介紹相關(guān)流程動(dòng)作。
5.1 產(chǎn)生并設(shè)定BII檔案
用戶(hù)可透過(guò)下列指令,來(lái)產(chǎn)生BII檔案范例。
unix% cd multi_lab/top_down_lab
unix% brains --tempgen
執(zhí)行上述指令后,選擇第一個(gè)選項(xiàng),即可產(chǎn)生BII范例檔案 - brains_template.bii。根據(jù)example case,使用者需修改BII檔案內(nèi)容如下:
n define{Integrator}[integrator_name] : modified integrator_name to INTEG.
n set top_module_name : top
n set TAP_hierarchy : top
n set verilog_path : ./mbist/G1_clock_domain_INS_FAULT.f
n set work_path : ./integ
n set bist_integ_path : ./mbist/G1_clock_domain_spec.integ |
./mbist/G2_clock_domain_spec.integ |
./mbist/G3_clock_domain_spec.integ
n define {group}
n set bist_order : G1_clock_domain, G2_clock_domain, G3_clock_domian
n define{Testbench}[bench_name] : modified bench_name to INTEG_tb.
n define{hookup}[signal] : comment this functional block
n define{initial_sequence}[signal] : comment this functional block
圖5-1為BII 范例檔案,用戶(hù)亦可參考reference 文件夾。
圖5-1. BII 檔案范例
5.2 執(zhí)行 Integrator Flow
當(dāng)BII 檔案設(shè)定完成后,用戶(hù)可透過(guò)下列指令來(lái)執(zhí)行integrator flow。
unix% cd multi_lab/top_down_lab
unix% brains --integrator -bii brains_template.bii
圖5-2. Integrator Flow 執(zhí)行信息
5.3 Integrator Flow中的模擬工作
當(dāng)integrator flow 執(zhí)行完畢時(shí),Brains會(huì)產(chǎn)生相對(duì)應(yīng)之整合后design檔案及模擬testbench。用戶(hù)可執(zhí)行下列指令來(lái)完成仿真工作。圖5-3為 integrator flow之模擬結(jié)果。
unix% cd multi_lab/top_down_lab/integ
unix% ncverilog INTEG_tb.v -f INTEG_INS.f +nc64bits
圖5-3. Integrator Flow模擬結(jié)果
評(píng)論