郝曉鵬
(中國電子科技集團公司第五十四研究所河北 石家莊 050081)
基于SignalTapⅡ和Modelsim的聯合仿真技術
郝曉鵬
(中國電子科技集團公司第五十四研究所河北 石家莊 050081)
提出了一種應用仿真軟件modelsim和邏輯分析儀Signal Tap II聯合使用的新方法,此方法利用嵌入式邏輯分析工具SignalTapⅡ采樣真實的輸入信號,經由TCL語言轉換為Modelsim中的激勵文件,利用Modelsim強大的仿真能力排查錯誤,解決了實際調試過程中編譯時間長和bug重現率低等問題。
signaltap IImodelsim聯合仿真交換矩陣
SignalTap域嵌入式邏輯分析儀,有成本低廉和升級方便的特點,能對所有內部信號和外部引腳信號進行探測[1]。通過對電路進行模塊化的分析,合理設置觸發條件,實現更有效和更準確的電路調試和排錯,M odelsim是業界最優秀的HDL語言仿真軟件,能提供友好的仿真環境和直接優化的編譯技術、TCL/TK技術和單一內核仿真技術,編譯仿真速度快[2]。如果把M odelsim和SignalTap域結合起來使用,FPGA的調試將更加便捷。
SignalTap II嵌入邏輯分析儀集成Quartus II設計軟件中一款方便的調試工具,為設計者提供了業界領先的SOPC設計的實時可視性,能夠捕獲和顯示FPGA器件中實時信號的當前狀態,這樣開發者就可以在整個設計過程中以系統級的速度觀察關鍵信號的時序關系,從而保證時序的正確性。SignalTap II的采樣深度高達128 K,支持多個通道,最多可以支持10級觸發[3]。使用SignalTap II調試的流程如圖1所示.設計人員在完成初步設計并編譯工程后,建立SignalTap II(.stp)文件并加入工程、配置STP文件并交由QuartusII編譯、綜合和布局布線,此時產生包含有邏輯分析儀的sof文件,將此文件經加載線纜下載到FPGA運行,在控制臺設置觸發條件,一旦設定的事件被觸發,SignalTap II就立即啟動,將所有關注信號的當前狀態緩存到FPGA內部的RAM中,然后通過JTAG接口傳送到計算機上顯示出時序的波形文件[4]。如果時序不正確,可以直觀的定位到出錯的信號。
此種方法對于一般的bug查找來說簡單迅速,但是有時候錯誤并不是很規律的出現,可能重復幾次都捕捉不到出錯
的信號,所以按照上述的調試流程一般會有以下幾個問題:
淤有的錯誤非常隱蔽,肉眼走查代碼并不能大致判斷出出錯的信號,可能本模塊的任何信號都可能出錯,如果故障定位不準確,漏抓了關鍵信號,還需要重新來一遍上述流程,需要重新在SignalTap里添加信號,浪費時間;
于故障定位修改代碼后還需要再次綜合和布線驗證,而且修改后的代碼極有可能還不正確,所以真正解決問題要經過數次編譯。隨著FPGA容量的增大,FPGA的設計日益復雜, FPGA工程編譯一次動輒都是耗時幾十分鐘,所以傳統的設計調試成為一個很繁重的任務。

圖1 SignalTap II調試流程
從事的某工程設計中,擬設計一大規模數據處理單元,由于考慮自主可控要求,需要自主研發的交換結構,故采用了VOQ(虛擬輸出排隊)緩存策略、Crossbar空分結構和DPA調度算法的高速交換結構的理論模型,具體方案如圖2所示。

圖2 FPGA方案框圖
設計的交換結構的輸入模塊采用了虛擬輸出隊列的緩存策略,虛擬輸出隊列實現的功能主要是將完成信元頭翻譯之后的數據,實現UTOPIA總線到N IBBLE總線格式的轉化,再將信元根據其輸出端口緩存到相應的隊列中去,并且實時地將隊列的信息送給調度模塊[5]。
對于端口數為8的Crossbar系統,它由8伊8個節點組成[6],每個節點可以讓信號沿水平方向或垂直方向傳播。由于Crossbar結構沒有內部阻塞,所以不必考慮信元爭用內部總線的問題,大大降低了調度模塊的復雜性。但是對于N伊N的Crossbar結構,系統需要N伊N個交換節點,即系統的復雜性為N 2;對于此交換系統,共有64個交換節點。每個節點的功能讓數據通過或截止,以及產生反壓信號,這個功能有內部控制信號stateNum實現。整個交換矩陣將64個節點綜合在一起,通過stateNum[63..0]信號的控制,實現數據流的交換。Crossbar交換矩陣模塊的輸入輸出端口與VOQ模塊的接口相連,完成交換結構的數據交換。對于核心的交換單元進行難點分析和分解,采用了多種技術融合,如零緩沖技術、反壓技術和共享虛擬內存技術等,并使用了循環列表,隊列處理等方式來滿足帶寬和優先級等要求,鏈表的使用在技術上使得設計很復雜。
對于此工程的調試如果采用單獨SignalTap II的調試方式,不僅上個章節分析的問題接踵而至,而且占用RAM資源很大,可監控的信號的數量很深度都有限制。下面采用的是SignalTap II和modelsim聯合仿真的方法,主要步驟如下:
(1)在測試中發現問題,確定是時序問題;
(2)通過代碼走查,計數器分析等確定產生錯誤的模塊;
(3)利用SignalTap II周期采樣的原理,將出現bug時此模塊所有的輸入信號得波形保存為數據文件,如圖3所示,并將此文件轉化為Modesim測試平臺中的測試向量。具體轉化方法是使用Tcl語言,采用此方法可以將復雜多變的波形文件準確地轉化為HDL文件,雖然Tcl腳本的編寫需要一定的時間,但是此腳本也可應用于以后其他模塊的程序設計。需要注意的是,SignalTap II波形中每一個數據樣點對應于一個時鐘周期,所以,在生成測試向量時,必須產生對應于SignalTap II采樣時鐘的時鐘波形,用來規范測試向量的時序。這里,可以采用VHDL的w ait until(clk='1');語句,或者Verilog的@ (posedge clk);語句產生相應的定時等待,使每一個采樣點對應的激勵波形按照采樣時鐘順序變化;

圖3 模塊輸入激勵波形圖
(4)針對該模塊和上一步得到的Modesim測試平臺運行單元仿真測試,在仿真測試中觀察該模塊輸出,定位和解決問題。由于modelsim仿真環境可以給提供對RTL設計最佳的可控制性和可觀測性,在仿真環境中定位bug,會比通過SignalTap II多次修改信號列表和編譯節省許多時間;
(5)重新編譯并測試修改后的FPGA設計。
針對大規模FPGA實際開發過程中,使用單一的
SignalTap II調試工具遇到的種種問題進行了分析。提出了結合M odelSim軟件的聯合仿真調試技術,利用SignalTap II生成最真實的激勵向量和M odelSim直觀的圖形仿真技術定位問題,解決了傳統調試方法反復修改代碼編譯時間過長的問題,可以大大的節約開發時間,提高開發效率。
[1]LEEK B.An EfficientQuality-awareMemory Controller for Multimedia Platform SoC[J].IEEETransactionson Circuitsand Systems for Video Technology,2005,15(5):620-633.
[2]鄧成,張亞妮,等.嵌入式邏輯分析器在FPGA中的應用[J].現代電子技術,2006(2):5-8.
[3]潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社, 2005.
[4]郭佳佳,胡曉菁,王永良.使用SignalTapⅡ邏輯分析儀調試FPGA[J].今日電子,2005(5):45-47.
[5]朱衛華,黃鄉佩,盧桂榮.基于FPGA的高精度數字移相低頻正弦波發生器設計[J].微計算機信息,2005,27(7):12-13.
[6]鄧成,張亞妮,等.嵌入式邏輯分析儀在FPGA設計中的應用[J].現代電子技術,2006(2):76-84.
Co-sim ulation Technology Based on SignalTapⅡand M odelsim
HAO Xiao-peng
(The 54th Research Institute ofCETC,Shijiazhuang Hebei050081,China)
A new co-simulation technology based on Modelsim application simulation software and SignalTapⅡlogic analyzer is proposed.This technology uses SignalTapⅡembedded logic analyzer to sample the real input signals,converts the signals into the excitation filesin Modelsim by TCL Language,and uses the strong simulation ability ofModelsim to check the bugs,which resolves the problemssuch as long compilation time and low recurrence rate ofbug,etc.in the actualdebugging process.
Signaltap II;Modelsim;co-simulation;sw itchmatrix
TP311
A
1008-1739(2014)13-46-3
定稿日期:2014-06-12