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