如何在硅芯片制作完成前進(jìn)行軟件開(kāi)發(fā)
運行虛擬機和硬件加速器的組合,或一些供應商所謂的“混合仿真(hybrid-emulation)”,可在精確硬件模型的一個(gè)時(shí)鐘周期中快捷、簡(jiǎn)便地運行軟件。一般這種配置的性能為100 MHz,這并不是實(shí)時(shí)的,但是其速度足以運行和調試完整的軟件堆棧。
可對外圍設備進(jìn)行一些簡(jiǎn)單的測試,但要對驅動(dòng)程序進(jìn)行徹底的驗證,外圍設備只進(jìn)行“環(huán)回(loop-back)”,還遠遠不夠。這意味著(zhù)將其與外部世界相連接,無(wú)論是通過(guò)硬件加速器上的I/O電纜,還是虛擬模型或硬件加速器相連的主機的接口。Mentor的硬件加速器系統中,將其稱(chēng)為co-model主機。co-model主機和硬件加速器之間快速有效的連接對于維持高水平的性能是至關(guān)重要的。

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

圖4:硬件加速器正變得不僅僅只是加速仿真。
從簡(jiǎn)單的存根代碼開(kāi)始,通過(guò)一系列依次更詳細和完整的硬件模型來(lái)推進(jìn),可以在得到實(shí)際硬件芯片之前對軟件進(jìn)行驗證。你可以長(cháng)時(shí)間保持最高性能能和最易用的調試環(huán)境,必要時(shí)使用詳細的模型驗證系統的各個(gè)方面。你將需要一個(gè)通用的環(huán)境來(lái)生成、運行和調試,以便和其他環(huán)境進(jìn)行無(wú)縫轉換。而且這也將擴展到最終的芯片中,因為你會(huì )需要對實(shí)際產(chǎn)品做一個(gè)最終的測試。這意味著(zhù)一旦你拿到了實(shí)體原型,需要做的就僅僅是確認所有功能都正常運行了。針對硬件的抽象模型和后期具有精確時(shí)鐘周期的RTL硬件模型,最難的軟硬件交互問(wèn)題將在設計階段就能得以解決。一旦實(shí)體樣機就緒,就能大大減少軟件開(kāi)發(fā)的時(shí)間。
評論