文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.174735
中文引用格式: 蔡紅艷,杜濤,孟祥剛,等. 基于高層次綜合工具的BIST控制器設(shè)計[J].電子技術(shù)應(yīng)用,2018,44(8):27-30.
英文引用格式: Cai Hongyan,Du Tao,Meng Xianggang,et al. BIST controller design with high-level synthesis[J]. Application of Electronic Technique,2018,44(8):27-30.
0 引言
隨著集成電路復(fù)雜度的不斷提升,嵌入式存儲器測試面臨著很大的挑戰(zhàn)。目前常用的測試方法是在存儲器周圍設(shè)計存儲器內(nèi)建自測試[1](Memory Built-In Self-Test,MBIST)電路。在實際工程中,MBIST的設(shè)計主要依賴于專用EDA工具或者通過手工編寫RTL級代碼描述測試算法來實現(xiàn)。高層次綜合工具采用C/C++等高級語言編程,通過編譯、優(yōu)化、映射等一系列過程得到所輸入算法的RTL級代碼,從而降低算法在硬件上的實現(xiàn)難度。因此,基于傳統(tǒng)EDA工具的局限性和手工RTL設(shè)計MBIST的不足,本文提出利用高層次綜合工具完成BIST控制器設(shè)計,降低算法實現(xiàn)的復(fù)雜度。
1 背景介紹
1.1 MARCH算法與BIST結(jié)構(gòu)
MARCH系列算法[2-4]是存儲器測試常用算法之一,其內(nèi)容為根據(jù)一系列對存儲器的讀寫操作,把存儲器中讀出的實際值與期望值相比較,判斷存儲器是否存在故障,從而將物理故障模型轉(zhuǎn)換為邏輯故障模型。
BIST電路是算法的硬件體現(xiàn)形式,固化在芯片中存儲器周圍,主要包含BIST控制器和數(shù)據(jù)比較器兩部分。數(shù)據(jù)比較器一般采用通用結(jié)構(gòu),用于比較判斷,產(chǎn)生故障標(biāo)志信號;BIST控制器產(chǎn)生地址信號等用于存儲器測試的多種激勵信號,是存儲器測試算法實現(xiàn)的硬件載體,本文主要討論BIST結(jié)構(gòu)中的BIST控制器設(shè)計。
1.2 高層次綜合技術(shù)
基于高層次綜合技術(shù)的開發(fā)流程如圖1所示。
首先將設(shè)計完成的C/C++算法代碼進(jìn)行高層次綜合編譯,檢查算法是否可綜合并驗證代碼的功能是否正確;之后在增加相應(yīng)優(yōu)化指示指令插入的基礎(chǔ)上進(jìn)行綜合;綜合完成后進(jìn)行RTL協(xié)同仿真,驗證硬件功能正確性及時序需求;如果不能滿足設(shè)計需求,則可重新更改優(yōu)化條件進(jìn)行綜合。得到正確的RTL代碼后可將其封裝成IP核或直接導(dǎo)出RTL代碼,通過Modelsim或VCS等RTL編譯仿真工具繼續(xù)完成傳統(tǒng)RTL級設(shè)計流程。
BIST電路設(shè)計[5-6]需通過專業(yè)驗證平臺完成足夠的驗證與評估后,再將其通過芯片設(shè)計流程進(jìn)行實現(xiàn),驗證平臺通常采用FPGA評估平臺。本文提出的基于高層次綜合工具設(shè)計BIST控制器的方法,結(jié)果的評估也采用FPGA驗證平臺進(jìn)行。文中高層次綜合工具采用Xilinx Vivado_HLS 2014.4版本,高層次綜合評估平臺采用Virtex-7系列的FPGA處理器,通過FPGA平臺驗證和評估RTL級設(shè)計在電路功能和電路規(guī)模上的可靠性。
2 BIST控制器設(shè)計與優(yōu)化
2.1 算法實現(xiàn)
本節(jié)以SRAM為對象,介紹采用高層次綜合工具設(shè)計BIST控制器的方法。本文所述算法均采用C語言實現(xiàn)。結(jié)合上文對MARCH算法的介紹,對單個線性存儲器而言,采用多組循環(huán)節(jié)結(jié)構(gòu)實現(xiàn)算法的讀寫操作。在針對單個線性存儲器C代碼設(shè)計的基礎(chǔ)上,在每個步驟外添加一重循環(huán)處理行列地址的進(jìn)位關(guān)系。對于多個存儲器測試共享一個BIST控制器的情況,利用C代碼順序執(zhí)行的特點,在單個SRAM設(shè)計的外層嵌套一層在存儲器間的循環(huán)實現(xiàn),分別實現(xiàn)對應(yīng)不同存儲器的地址,讀寫使能信號。對于不同SRAM而言,由于地址范圍不同,采用數(shù)組賦初始值的形式對其進(jìn)行設(shè)定。
2.2 優(yōu)化方案
2.2.1 端口優(yōu)化
為了避免高層次綜合工具可以本身默認(rèn)的端口設(shè)計方案使得綜合出的模塊存在多個冗余的端口信息,本文采用高層次綜合工具提供的INTERFACE優(yōu)化方案進(jìn)行優(yōu)化,對輸入和輸出端口分別采取ap_ctrl_none和ap_none的優(yōu)化方案進(jìn)行優(yōu)化。
2.2.2 流水線優(yōu)化
為了降低嵌套在地址循環(huán)中的讀寫循環(huán)部分的時鐘周期延遲,本設(shè)計中對讀寫循環(huán)采取了流水線[7-8](PIPELINE)優(yōu)化的方案。流水線的應(yīng)用將循環(huán)結(jié)構(gòu)強(qiáng)行打開,將每步循環(huán)實現(xiàn)需要的兩個時鐘周期縮短為一個時鐘周期,從而降低了總的時鐘延遲周期數(shù),流水線優(yōu)化的原理圖如圖2所示。
2.2.3 數(shù)組完全分割優(yōu)化
為了避免多個存儲器共享BIST控制器設(shè)計中的數(shù)組單元被綜合成存儲結(jié)構(gòu),本設(shè)計對于輸入輸出端口的數(shù)組單元和內(nèi)部賦初值的數(shù)組單元采用了數(shù)組完全分割(ARRAY PARTATION-complete)的優(yōu)化方案[7-8]優(yōu)化數(shù)組單元。對于輸入輸出端口的數(shù)組單元數(shù)組完全分割能夠?qū)в袑ぶ泛妥x寫使能的數(shù)組元素拆分成多個單獨的輸入輸出端口;對于內(nèi)部賦初值的數(shù)組單元數(shù)組完全分割能夠?qū)?shù)組元素打散成單個的寄存器用于存儲數(shù)據(jù)。
3 結(jié)果分析
下面以FPGA平臺綜合得到的時鐘周期延遲(latency)和資源消耗的結(jié)果評估完成的RTL級設(shè)計在功能和電路規(guī)模上的可靠性。存儲器選取單口線性SRAM,算法選取多個經(jīng)典的MARCH系列算法。數(shù)據(jù)如表1和表2所示,表1為單個存儲器對應(yīng)一個BIST控制器的數(shù)據(jù)結(jié)果,存儲器數(shù)據(jù)位寬均為64 bit,存儲器深度分別為128、256、512和1 024。表2為多個存儲器所共享的BIST控制器評估結(jié)果,存儲器數(shù)據(jù)位寬均為64 bit,數(shù)據(jù)深度均為1 024,共享BIST控制器的存儲器個數(shù)分別為2、3、4和5。
對于表1和表2中的數(shù)據(jù),從資源消耗可以看出,設(shè)計中僅消耗FF(觸發(fā)器)和LUT(查找表)資源,而沒有消耗BRAM(塊存儲器)及DSP(乘加器)資源,符合BIST控制器設(shè)計的要求。另一方面,對于相同的存儲器或者相同的共享個數(shù),隨著MARCH算法總讀寫次數(shù)的增加,F(xiàn)F和LUT的數(shù)量大致呈現(xiàn)線性增加的趨勢,因為隨著算法總讀寫次數(shù)的變化,控制讀寫步驟和讀寫次序的內(nèi)部狀態(tài)機(jī)狀態(tài)數(shù)和狀態(tài)機(jī)控制單元位寬變化導(dǎo)致的。算法相同時,資源消耗隨著存儲器地址范圍的增加而有所增加,這是由于隨著地址范圍的增加,地址輸出寄存器和產(chǎn)生地址信號的中間觸發(fā)器位寬隨著增加的結(jié)果。此外,資源消耗隨著BIST控制器存儲器個數(shù)的增加也適當(dāng)?shù)卦黾?,但是增加的?shù)量遠(yuǎn)小于其累加值,說明綜合出共享BIST控制器結(jié)構(gòu)節(jié)約了資源消耗。因此,資源消耗的變化均很小。因此說明了本文采用的C代碼設(shè)計能夠綜合出固定的電路結(jié)構(gòu)。此外表中數(shù)據(jù)的資源消耗數(shù)量都很小,對比C代碼中數(shù)據(jù)量和數(shù)據(jù)寬度值,可以分析出資源消耗主要與C代碼中對應(yīng)的端口和內(nèi)部變量相關(guān),這一點說明了C代碼被綜合出的電路規(guī)模合理。
從時鐘周期延遲角度分析,對于單個存儲器設(shè)計,本文所設(shè)計BIST控制器運行的總時鐘周期數(shù)略大于各步驟總讀寫次數(shù)與地址范圍的乘積;對于多個存儲器共享BIST控制器設(shè)計而言,總的時鐘周期延遲數(shù)略大于各個存儲器測試所需的時鐘周期延遲數(shù)的總和。因此說明高層次綜合工具綜合出的電路結(jié)構(gòu)能夠在運行完整的算法步驟且在每個時鐘周期完成一次對存儲器的讀或?qū)懖僮?,證明功能上滿足設(shè)計需求。
4 結(jié)論
本文針對傳統(tǒng)的BIST控制器設(shè)計方法中存在的不足,提出了采用高層次綜合工具設(shè)計BIST控制器的設(shè)計思路。采用高層次綜合工具對BIST控制器算法進(jìn)行設(shè)計,并通過對端口分配、流水線插入和數(shù)組分割的優(yōu)化方案對設(shè)計進(jìn)行完善,最后通過FPGA平臺從資源消耗和時鐘周期延遲兩個方面驗證和評估了基于高層次綜合工具完成的RTL級設(shè)計在功能和電路規(guī)模上的可靠性。采用高層次綜合工具的設(shè)計能有效縮短設(shè)計時間,在用戶自定義算法上具有很高的靈活性。本文提出的方案在存儲器內(nèi)建自測試邏輯設(shè)計上具有很強(qiáng)的實用性,在未來的工作中,將會完善不同類型的存儲器BIST設(shè)計,開發(fā)更完善的流程。
參考文獻(xiàn)
[1] 陸思安,何樂年,沈海斌,等.嵌入式存儲器內(nèi)建自測試的原理及實現(xiàn)[J].固體電子學(xué)研究與進(jìn)展,2004(2):205-208.
[2] 石磊,王小力.一種基于存儲器故障原語的March測試算法研究[J].微電子學(xué),2009(2):251-255+279.
[3] 須自明,王國章,劉戰(zhàn),等.一種測試SRAM失效的新型March算法[J].微電子學(xué),2007(6):330-333.
[4] 郭進(jìn)杰,王瑜,李婷,等.基于FLASH-March算法的SLASH缺陷檢測系統(tǒng)[J].微電子學(xué)與計算機(jī),2014(10)::81-85.
[5] 馬琪,裘燕鋒.片上SRAM內(nèi)建自測試的實現(xiàn)方法[J].計算機(jī)研究與發(fā)展,2010(S1):185-189.
[6] 夏季軍.基于時鐘的數(shù)字電路可重構(gòu)BIST設(shè)計研究[J].儀表技術(shù)與傳感器,2017(1):134-138.
[7] ZHONG G,VENKATARAMANI V,LIANG Y,et al.Design space exploration of multiple loops on FPGAs using high level synthesis[C].32nd IEEE ICCD. Seoul,South Korea.2104:456-463.
[8] 孟祥剛,陳瑤,高騰,等.FFT算法硬件模塊的高層次綜合實現(xiàn)與優(yōu)化[J].微電子學(xué),2017(2):217-221.
作者信息:
蔡紅艷1,杜 濤1,孟祥剛2,李國峰3,梁 科3,陳新偉4,5
(1.天津市光電傳感器與傳感網(wǎng)絡(luò)技術(shù)重點實驗室,天津300350;
2.天津市光電子薄膜器件與技術(shù)重點實驗室,天津300350;3.南開大學(xué) IC設(shè)計與系統(tǒng)集成實驗室,天津300350;
4.工業(yè)機(jī)器人應(yīng)用福建省高校工程研究中心,福建 福州350108;5.福州市機(jī)器人技術(shù)應(yīng)用聯(lián)合實驗室,福建 福州350108)