隨著現(xiàn)場可編程門陣列(FPGA)集成度越來越高,在大型FPGA系統(tǒng)設(shè)計中應(yīng)用第三方IP核也越來越廣泛 (IP核是指集成電路設(shè)計中所采用的具有獨立知識產(chǎn)權(quán)的可復用的電路功能模塊)。多數(shù)IP供應(yīng)商提供基于FPGA技術(shù)的各種功能模塊�;贗P核的模塊化設(shè)計具有眾所周知的優(yōu)勢:可以縮短設(shè)計周期,提高設(shè)計質(zhì)量,使得系統(tǒng)設(shè)計更加便利。
目前,基于IP的EDA設(shè)計流程面臨著兩大挑戰(zhàn)。首先,必須提供方法技術(shù),用于測試包含IP組件設(shè)計的可靠性和質(zhì)量;另一方面,必須保護IP供應(yīng)商和設(shè)計者的知識產(chǎn)權(quán)。第三方IP核的使用確實可以提高芯片設(shè)計效率,但是供應(yīng)商將IP核交付到客戶的過程卻并非直截了當。對于客戶來說,為了測試驗證IP核,它必須具備一定的可見性�?梢娦园↖P的仿真、結(jié)構(gòu)性理解以及特性的詳細描述。客戶獲得的可見度越高,就越容易將IP核集成到自己的FPGA設(shè)計中。而對于供應(yīng)商來說,IP核具有一定的保護性,必須防止未經(jīng)授權(quán)使用或復制IP核,而客戶需求恰恰與之相矛盾。因此交付IP核的程序必須權(quán)衡這兩種相互矛盾的需求。如果客戶獲取關(guān)于IP設(shè)計的信息過多,就可能出現(xiàn)未經(jīng)授權(quán)而使用或復制該IP核,從而降低其價值,影響到設(shè)計者和供應(yīng)商的利益。
目前有一些方法著重保護供應(yīng)商的利益,如水印技術(shù),就是將數(shù)字簽名嵌入至IP組件中,沒有供應(yīng)商的許可,客戶就無法去除數(shù)字簽名,實例化IP元件就具有一定風險。水印技術(shù)的主要限制在于只能維護供應(yīng)商組件實例化的合法性,卻無法真正隱藏IP,因為通過元件體系的反向工程仍可以獲取IP核的內(nèi)部信息。
JavaCAD架構(gòu)中采用了另一種有效安全的IP評估測試方法。設(shè)計者能實例化第三方的IP元件,同時可以結(jié)合自己設(shè)計的模塊一起仿真。不同IP供應(yīng)商提供的多個IP核也能夠一同進行仿真,同時保證各個供應(yīng)商及用戶的知識產(chǎn)權(quán)不受侵害。IP用戶與供應(yīng)商可以協(xié)商仿真期間可以獲取的信息量。JavaCAD是相當靈活的、以事件驅(qū)動的仿真工具,設(shè)計者可以在java程序中直接采用結(jié)構(gòu)與行為級混合的編寫方式。
JavaCAD 架構(gòu)
設(shè)計者可以針對不同抽象層次指定模塊行為。目前JavaCAD支持門級、寄存器傳輸級,同時在行為級上也有一個實現(xiàn)工具。JavaCAD環(huán)境完全支持混合模式的系統(tǒng)描述,例如某些設(shè)計元件是RTL級語言描述的,而其余的是門級描述。設(shè)計模塊可以是本地模塊也可以是遠程模塊。本地模塊在IP用戶端的java虛擬機(JVM)上運行,而遠程模塊可以通過Internet訪問。一般說來,遠程模塊均是在IP供應(yīng)商的JavaCAD服務(wù)器上運行的。
圖1中描述了JavaCAD的概念性體系結(jié)構(gòu)。用戶在JavaCAD客戶端上完成所有的電路設(shè)計,包含供應(yīng)者提供的IP元件。供應(yīng)商可以通過JavaCAD服務(wù)器與客戶端進行通信。設(shè)置仿真參數(shù)時,用戶和供應(yīng)商協(xié)商每個元件可以訪問的功能與成本模塊類型。有一些模塊需要供應(yīng)商提供在線幫助,當然這得花費額外費用。例如,不必得知封閉式IP元件的內(nèi)部信息,用戶就可以通過整個設(shè)計的故障模擬準確地評估易測性。
如果JavaCAD客戶端的仿真工具需要了解IP核的實現(xiàn)過程時,JavaCAD客戶端就可能要求供應(yīng)者運行仿真子程序。JavaCAD底板借助客戶端與服務(wù)器之間復雜的網(wǎng)絡(luò)通信完全隱蔽起來。JavaCAD吸收了Java面向?qū)ο蟮奶厣?這樣可以將程序高效地映射到現(xiàn)代數(shù)字系統(tǒng)中基于元件的設(shè)計原語。JavaCAD的關(guān)鍵特性是能夠處理包含本地組件(用戶所有的)與遠程組件(IP供應(yīng)者所有的)的系統(tǒng)設(shè)計。任何設(shè)計或仿真工具都能采用JavaCAD協(xié)議處理遠程組件。在JavaCAD中系統(tǒng)級硬件描述語言(HDL)則用Java語言編寫。