將片外調試的優點融入FPGA片上調試之中
隨著FPGA密度不斷增加,工程師們需要經常使用新方法對FPGA實現的設計進行測試和驗證。設計人員傳統上使用邏輯分析儀、示波器和總線分析儀通過測試夾具來探查信號,這些測試夾具和連接器與FPGA上用戶定義的I/O引腳相連,部分引腳(最常見的是64個)被分配給調試和驗證,因此對于引腳分配,設計人員不得不在全面調試與設計實現之間進行協調。工程師經常還要安排時間給引腳加上片上邏輯以便選擇信號或信號組,驅動I/O和后面的連接部分以供調試。盡管該方案可減少分配給調試的I/O引腳數量,但這項工作單調乏味,而且通常不能提供正確調試設計所需的可見性,此外測試夾具和連接器占用了寶貴的電路板空間,并會引入信號完整性和時鐘問題(特別是在高速電路板設計上),同時成本也很高。
測試復雜FPGA設計的另一個方法是把部分FPGA邏輯資源專用于“邏輯分析”內核,這些內核的功能類似于傳統的邏輯分析儀,包括觸發、數據采集和采樣存儲,但卻位于FPGA中,可直接接觸到設計的信號和節點。邏輯分析內核的數據存儲在FPGA本地存儲器中,經由JTAG端口可以讀出,這樣就不必占用寶貴的通用I/O引腳。由于邏輯分析內核位于FPGA內部,可利用高速互連總線、快速存儲器和系統時鐘,而無須把這些信號引出芯片,因此可提供傳統調試和驗證方法中沒有的可見度和精確性。
領先的FPGA供應商能提供方便的工具,把邏輯分析和總線分析內核直接插入到FPGA設計中,并帶有先進的接口,支持測試和測量供應商主流邏輯分析儀的多種特性和功能。
片上調試的局限
這種片上調試的主要局限在于邏輯內核本身使用了FPGA資源,更重要的是還用到了采樣存儲器。實現邏輯或總線分析內核所需的邏輯非常少(一般少于FPGA邏輯單元的3%),因為這些內核很小,所以它們可以放在被測邏輯附近不用的邏輯里。但與之相反,片上采樣存儲會占用大量片上存儲資源。片上邏輯與總線分析內核使用FPGA內部RAM,根據用戶定義的觸發條件存儲采集到的樣品數據,僅僅32K采樣數據就需要用到FPGA的全部RAM單元。
除此以外,時間也是調試多個系統問題的關鍵因素之一,長時間采樣需要更多片上存儲器。解決這個問題的一個常用方法是一旦完成調試和驗證就把邏輯分析內核去除,盡管這釋放了FPGA設計的邏輯和存儲器資源,但也意味著邏輯分析內核不能用在以后的設計中。
采樣存儲器的數量由FPGA里的RAM數量決定,在某些情況下,它限制了對發生在較長時間里的復雜事件進行調試。片上調試解決方案希望通過提供先進的支持,允許用戶定義復雜觸發情況來克服這個局限,基于多事件的觸發條件讓用戶只能捕捉與特定事件相關的數據,從而節約片上存儲器資源。雖然該方法可以更好地利用有限的片上存儲器,但它需要知道錯誤發生在邏輯中的什么地方,而這常常是一個不斷演進的迭代過程,要仔細研究引起錯誤的具體設計問題。因此盡管該方法可以用于調試,但它太費時,且需要大量思考和對設計的深入認識,從而大大影響了驗證能力,而且通常無法把設計“分解”成多個小部分塞入受限片上資源進行驗證。
傳統測試和測量設備制造商圍繞這個問題,提供了帶有很深采樣存儲和復雜觸發能力的測試設備。當設計出現問題時,用戶要盡量多采集數據,經常要好幾秒,然后利用提供的工具查看數據,發現設計中的問題,這樣能確保工程師抓到事件,但在查看數據發現問題時需要有耐心。
將兩者優點結合起來
理想的解決方案是把傳統片外調試設備的擴展采樣存儲器與片上調試的優點結合在一起。這種方法能使用戶把虛擬測試夾具放在FPGA設計任意位置,接觸內部信號和節點,并使用傳統邏輯和總線分析儀設備的片外深采樣存儲器。它沒有使用片上存儲資源,相反,存儲器都在片外。
該解決方案帶來了很多好處。用戶可以調試現在很多FPGA設計中常見的復雜數據交換事件,調試復雜的控制邏輯、存儲器和I/O接口、處理器系統以及詳細的狀態機等,這些都要求在較長時間內捕捉樣品數據。復雜數據交換事件需要用戶捕捉所有活動以全面分析事件,當采樣存儲限制取消后,還可以再加上時間標記。
這種新方法最有用的地方在于實現了片上驗證。完全調試一個FPGA設計既費時又需要大量的計算,新的組合式方案可讓用戶利用現實世界幾乎無窮的測試向量在片上調試FPGA。在軟件仿真環境里即使仿真10秒的功能也要用多達100天的時間,而在現實條件下仿真設計功能還能揭示軟件仿真環境下無法看到的異步和信號完整性等異樣情況。
片上邏輯和總線分析內核通常把采樣數據寫入片上存儲單元,也可對這些內核進行修改而把數據寫到片外,但需要一個新接口。現在多數片上調試工具利用JTAG接口與安置在FPGA里的邏輯和總線分析內核進行通信,這是一個相對較慢的串行連接(10MHz),但對確定邏輯和總線分析內核參數如觸發條件來說正好,甚至對存儲在片上存儲器里的空載采樣也足夠,但是它不能支持結合片內、片外解決方案所需要的快速片外數據傳輸率,需要一個專用高速端口,就是說要為調試分配I/O引腳,這樣就抵消了片上調試方法的一個重要優點。有一個方法是利用諸如時分復用技術把數據壓縮到少量I/O引腳中,然后在片外將數據傳給外部采樣存儲器。分析表明,這樣只要分配20個I/O引腳就可以捕捉高達79個數據信道,并以與片上方法相當的速率在片外傳輸。
本文結論
片上調試作為調試復雜FPGA設計的一個可行方法而出現,目前正在開發的新技術以及現在已出現的技術則通過融合片外邏輯分析設備存儲單元對該方案進行改進。這樣不僅發揮了片上調試的作用,如片上實時驗證,而且提供了一種經濟的方法可以取代目前昂貴的邏輯和數據分析設備。
評論