毛佩瑤 周建
摘要:本文介紹了系統(tǒng)芯片開發(fā)中一種基于IP的集中檢查器自動產(chǎn)生方法和具體實現(xiàn)流程。片上系統(tǒng)(SoC-System On Chip)是一種高性能、低功耗、低成本的芯片設計方法。而為了提升了產(chǎn)品的競爭力,各類豐富的IP (Intellec tual property)都被集成到SoC中,這給驗證工作帶來了巨大挑戰(zhàn)。筆者從實際驗證工作出發(fā),使用該方法簡化了驗證工作,提高了工作的質量和效率。
關鍵詞:檢查器產(chǎn)生;IP;混合信號;
1 引言
為了使系統(tǒng)芯片有更高的性價比,不僅越來越多的數(shù)字和模擬IP被集成到單個芯片中,而且現(xiàn)有的芯片中也定義了越來越多的功能操作模式,除了運行模式,還有許多低功耗模式,時鐘模式,測試模式等[1]。
檢查器( checker)是驗證平臺中一個負責進行數(shù)據(jù)對比和報告的組件,是芯片的驗證工作必不可少的一部分。因此,在芯片集成的模塊越來越多,設計的工作模式越來越復雜的情況下,驗證工程師必須花費大量的時間來研究IP的功能以及一些關鍵接口信號,以保證能開發(fā)出正確的檢查器來進行系統(tǒng)級驗證。
2 問題
在實際SoC開發(fā)項目中,因為一些關鍵IP的檢查器構建錯誤或者因為疏忽而遺漏某些測試點,就會導致芯片產(chǎn)生一些缺陷。以下是筆者在實際SOC項目開發(fā)過程中遇到過的幾類問題,這些問題都會導致芯片開發(fā)延期。
(1)驗證工程師必須創(chuàng)建一些檢查器去檢查當芯片在某種功能模式下運行時,IP是否處于正確的工作狀態(tài)。但驗證工程師卻很困難去獲取哪些信號需要保持在何種狀態(tài)。
(2)因為SoC定義的各種功能模式繁雜,且因SoC的定義不同而不同,因此IP設計師很難知道自己設計的IP需要工作在哪些功能模式,也很難給SoC提供相應的指導和幫助。
(3)有的IP內(nèi)嵌了一些檢查器以檢查關鍵的功能,但是在SoC中這些檢查器并不容易被配置到不同的功能模式。這些內(nèi)嵌的檢查器可能使用了嵌入的PLI( Programming Language Interface),特定的功能語言等,這也會造成SoC無法直接使用。
(4) 一些模擬信號的檢查依賴于仿真工具,因此也很難實現(xiàn)通用的檢查器。
(5)因為檢查器分散在不同部分,所以很難產(chǎn)生一個直觀并且集中的覆蓋率報告,也很難知道哪些檢查器還沒有被覆蓋到。
(6)不同的SoC驗證工程師和DFT工程師可能花費了大量時間去構建幾乎相同的檢查器,并且執(zhí)行了大量的仿真,開發(fā)效率非常低,并且檢查器的質量和重用性也無法保證。3集中檢查器自動產(chǎn)生方法
為了解決上面所述的問題,筆者開發(fā)了一種集中檢查器自動產(chǎn)生方法。用這種自動化方法產(chǎn)生的檢查器可以被不同的工程師靈活的應用在SoC驗證環(huán)境中。這種方法也提高了檢查器的重用性和質量。這種檢查器自動產(chǎn)生方法主要分為以下幾個步驟。
3.1 在IP數(shù)據(jù)庫中構建信號列表
首先針對IP核構建信號列表,包括信號名字、信號類型以及信號在不同功能模式下的預期值。為了降低維護成本,提高重用性,信號列表應按照統(tǒng)一的格式(如.xml,.xls等)構造,并存放于IP數(shù)據(jù)庫中。
在圖1中IP模塊設計師定義了一些信號和功能模式。因為IP模塊設計師很清楚自己所設計的模塊的關鍵信號的預期值與功能模式之間的關系,所以圖中表格的內(nèi)容質量要明顯高于SoC驗證工程師構建的檢查器。
除此之外,IP模塊設計師很容易對圖1中的關鍵信號和功能模式進行擴展以滿足不斷增強的模塊功能。并且因為信號列表被存放于IP數(shù)據(jù)庫中,這保證了信號列表的正確性和一致性,很容易被SoC使用。
3.2建立IP功能模式與SoC功能模式映射關系
通常SoC會在用戶手冊中定義多種多樣的功能操作模式,而不同的IP模塊會工作在不同的SoC功能模式中。所以我們需要建立IP功能模式與SoC功能模式映射關系。
圖2是某SoC功能模式與IP功能模式映射表。adc16lv hardSTOP模式被映射到SoC的LLS模式,irc40m_c90lp模式被映射到SoC的LOOSE模式。也就是說,當芯片進入LLS模式時,adc16lv hard會工作在STOP模式,irc48m_c90lp會工作在LOOSE模式。
3.3產(chǎn)生統(tǒng)一的SoC級的檢查器
IP數(shù)據(jù)庫中的信號列表能夠被SoC功能模式抽取,并自動產(chǎn)生檢查器。筆者在最近的項目開中采用了該方法。圖3給出了詳細的產(chǎn)生原理及步驟。
(1)根據(jù)SoC映射表中的Module名字從adc16lv hard模塊的數(shù)據(jù)庫中抽取到信號列表。
(2)根據(jù)SoC的不同功能模式定義產(chǎn)生檢查器中的條件。例如,'SOC.power mode control.stop__mode被STOP模式使用,SOC.test control.chip_scan mode被CHIPSCAN模式使用。
(3)從IP模塊信號列表中抽取信號名字和預期值,并產(chǎn)生檢查器。3.4執(zhí)行仿真并產(chǎn)生覆蓋率報告
該方法產(chǎn)生的檢查器是在SoC級實現(xiàn)的,驗證工程師通過SystemVerilog斷言來實現(xiàn)那些檢查器[2]。這樣使用仿真工具就能很容易產(chǎn)生覆蓋率報告。根據(jù)覆蓋率報告,我們能知道每個檢查器是否被覆蓋到了,就能夠比較容易地抓到設計中的缺陷。
3.5 檢查器產(chǎn)生流程
圖4給出了該方法的完整流程。
4 實驗結果
我們使用Perl腳本實現(xiàn)了本文所介紹的檢查器自動產(chǎn)生方法,并且在最近進行的芯片設計工程中成功使用了該方法。下面摘取了部分產(chǎn)生出來的檢查器內(nèi)容。
//-adc0-
a adco adc16lv hard asclk_ en lv
assert property (@(posedge 'TESTMODE CHECKER SVACLK) disable iff(testmode_checkerdisable)
、L2KSSTOP l~>(、TOP SCOPE.adcO.adc16lv hard.asclk_ en lv一一1'b0));
voltage_range_check
adco adc16lv hard vrh_alt(、L2KS STOP.、TOP SCOPE.adc0.adc 16lv hard.vrh_alt, O.Ov); //analog voltage checker
a adco adc16lv hard sample_clk:
assert property (@(posedge 'TESTMODE CHECKER SVACLK) disable iff(testmode_checkerdisable)
、L2KSSTOP l—>(、TOP_ SCOPE.adcO.adc16lv hard.sampleclk一一1'b0));
5 結論及展望
本文介紹了一種基于IP模塊的系統(tǒng)芯片中檢查器的自動產(chǎn)生方法。該方法基于SoC定義的功能模式與IP模塊定義的功能模式映射,抽取IP模塊的關鍵信號列表,從而自動產(chǎn)生檢查器。這種檢查器能夠被不同的SOC開發(fā)工程師使用。IP的重用性與自動產(chǎn)生的檢查器提高了SoC產(chǎn)品質量和開發(fā)效率,而產(chǎn)生的覆蓋率報告也進一步提高了SoC芯片開發(fā)質量。
參考文獻
[1]王永生.系統(tǒng)級芯片(SoC)可測試性結構及其優(yōu)化的研究[D].哈爾濱工業(yè)大學,2006.
[2] IEEE Std 18001M-2012: SystemVerilog - Unified HardwareDesign, Specification, and Verification Language,Dec.5.2012.
作者簡介
毛佩瑤(1995一),女,四川省成都市人。電子科技大學碩士研究生在讀,在讀期間實習于恩智浦半導體。研究方向為數(shù)字IC設計與驗證。
周建(1981-),男,湖北省京山縣人。碩士學位,高級工程師,恩智浦半導體(中國)有限公司蘇州分公司資深集成電路設計工程師。主要從事計算機體系結構、微控制器系統(tǒng)芯片設計及驗證等研究。