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