如何在硅芯片制作完成前進行軟件開發(fā)
運行虛擬機和硬件加速器的組合,或一些供應(yīng)商所謂的“混合仿真(hybrid-emulation)”,可在精確硬件模型的一個時鐘周期中快捷、簡便地運行軟件。一般這種配置的性能為100 MHz,這并不是實時的,但是其速度足以運行和調(diào)試完整的軟件堆棧。
可對外圍設(shè)備進行一些簡單的測試,但要對驅(qū)動程序進行徹底的驗證,外圍設(shè)備只進行“環(huán)回(loop-back)”,還遠遠不夠。這意味著將其與外部世界相連接,無論是通過硬件加速器上的I/O電纜,還是虛擬模型或硬件加速器相連的主機的接口。Mentor的硬件加速器系統(tǒng)中,將其稱為co-model主機。co-model主機和硬件加速器之間快速有效的連接對于維持高水平的性能是至關(guān)重要的。
圖3:重新為新驅(qū)動程序定義讀/寫宏指令
需要注意的是,在這個配置中完整的設(shè)計不是在RTL中。這意味著系統(tǒng)將正常工作,但不會表現(xiàn)出與最終產(chǎn)品相同的性能特征。從這個配置中你能看出某些方面的性能,如某些組件之間轉(zhuǎn)換的流量。但是詳細的性能分析則需要對系統(tǒng)進行更準確的表達。
當RTL代表整個設(shè)計時,你將得到整個系統(tǒng)一個時鐘周期的準確模型。這可以用來進行詳細的時間分析并得出吞吐量、延遲以及響應(yīng)時間的具體數(shù)據(jù)。要使系統(tǒng)有效運行,你需要將其放在一個硬件加速器或FPGA原型中。一個包括實際軟件的完整系統(tǒng),實際上是不可能基于軟件仿真進行建模的。甚至在硬件加速器平臺上也只能運行于一兆赫茲。這遠遠超過了基于軟件的仿真速度,但與實際時間相比,還是要慢得多。
在硬件加速器上運行設(shè)計時,需要在嵌入式處理器中調(diào)試軟件。一般這種調(diào)試會使用系統(tǒng)可用的硬件接口(例如JTAG接口)連接硬件調(diào)試探針來完成。但是有一個問題:盡管JTAG很適合調(diào)試功能問題,但很難用它來調(diào)試性能和時序問題。因為“混合”虛擬機和仿真的性能更高一籌,你會想在這上面調(diào)試所有的功能問題。因此,僅存的問題就是時序和性能相關(guān)的問題了。
JTAG和類似的調(diào)試技術(shù)使處理器進入調(diào)試模式,然后使用各種技術(shù)來從處理器和外圍寄存器中檢索數(shù)據(jù)。即使在最優(yōu)情況下,這些操作也至少需要耗費成千上萬個時鐘-通常是數(shù)以百萬計的時鐘。而且這些調(diào)試時鐘通常只是處理器時鐘的一小部分。由于在調(diào)試時間點前后調(diào)試工具引入了數(shù)以百萬計的操作時鐘的延遲,因此,調(diào)試性能和時序問題變得極為困難。開發(fā)人員一般通過處理器跟蹤來回溯調(diào)試,以避免延遲。但即使收集處理器跟蹤數(shù)據(jù)也會影響到你正在觀察的系統(tǒng)的運行。
Mentor Graphics有一款產(chǎn)品叫“Codelink”,通過它能收集在仿真中運行設(shè)計時的回溯數(shù)據(jù),利用這些數(shù)據(jù)就能驅(qū)動傳統(tǒng)的軟件調(diào)試。本質(zhì)上說,你可以獲得傳統(tǒng)軟件調(diào)試中的所有功能-代碼單步執(zhí)行、設(shè)立斷點,查看內(nèi)存和變量。這樣做保留了仿真系統(tǒng)的時鐘周期的精確性,沒有任何副作用。你還具有完全的并行多核可見性和運行與回退的能力。但許多性能問題很難在源代碼層面調(diào)試,通常還需要一幅對比硬件動作的、在設(shè)計中運行的處理器的動作時間軸視圖。Codelink收集這些跟蹤數(shù)據(jù),并導(dǎo)入Mentor的系統(tǒng)分析工具,便能對照顯示性能數(shù)據(jù)和硬件數(shù)據(jù)。要在這一開發(fā)階段對整個設(shè)計進行診斷,那么這可能是可視化性能問題和時序問題的最佳解決辦法。
FPGA原型通常會比硬件加速器運行得更快,因而更長的軟件運行時間是可以實現(xiàn)的,還可能會發(fā)現(xiàn)更多設(shè)計上的問題。軟件調(diào)試通常采用JTAG或者類似的技術(shù)來實現(xiàn),但都存在上述的各種問題。在硬件調(diào)試中,F(xiàn)PGA歷來都存在可視性有限的缺點。FPGA供應(yīng)商提供的嵌入式邏輯分析儀只能提供有限的跟蹤幅度和較淺的跟蹤深度以及頻繁的重新測量,最終導(dǎo)致漫長、且經(jīng)常是突然的(“回到原點”)重新編譯(綜合的和PR)。這使得在FPGA中調(diào)試變得痛苦萬分,枯燥不已。幸運的是, 新的技術(shù)面市了,不僅能提供成千上萬種信號的可見視圖,并具備深入跟蹤芯片及系統(tǒng)級動作的能力,還能提供前所未有的易用性和強大的運行時可配置性,通過消除大多數(shù)重新測量和回頭迭代的需求,能極大地提高調(diào)試效率。經(jīng)過改進的調(diào)試將對使用FPGA原型的體驗和效率產(chǎn)生積極的影響。
圖4:硬件加速器正變得不僅僅只是加速仿真。
從簡單的存根代碼開始,通過一系列依次更詳細和完整的硬件模型來推進,可以在得到實際硬件芯片之前對軟件進行驗證。你可以長時間保持最高性能能和最易用的調(diào)試環(huán)境,必要時使用詳細的模型驗證系統(tǒng)的各個方面。你將需要一個通用的環(huán)境來生成、運行和調(diào)試,以便和其他環(huán)境進行無縫轉(zhuǎn)換。而且這也將擴展到最終的芯片中,因為你會需要對實際產(chǎn)品做一個最終的測試。這意味著一旦你拿到了實體原型,需要做的就僅僅是確認所有功能都正常運行了。針對硬件的抽象模型和后期具有精確時鐘周期的RTL硬件模型,最難的軟硬件交互問題將在設(shè)計階段就能得以解決。一旦實體樣機就緒,就能大大減少軟件開發(fā)的時間。
評論