FPGA設計者正在把軟微處理器嵌入到越來越多的電子系統設計中。因此,FPGA供應商和第三方知識產權(Intellectual Property IP)供應商開發了許多軟微處理器,而獲得授權許可的方法也多種多樣,最近的方式是開放源代碼。 由于設計者在開發軟微處理器的軟件代碼時投入了大量的時間,所以理解相關許可模式的含義非常重要。 困難的決策 一旦做出了用軟微處理器的決策,設計者必須決定采用哪種許可模式才最能滿足他們的需要。對于軟微處理器和微控制器,FPGA供應商主要使用四種許可模式,而第三方IP供應商大部分都使用付費IP模型。 模式1:付費IP 為FPGA提供軟微處理器的傳統模式是付費IP。該交貨模式存在4種挑戰:1. 使用微處理器開發工具必須付費,并產生HDL代碼。若要繼續使用開發工具,例如軟件維護,每年都要付款。2. 微處理器的HDL描述是加密的。這限制了設計者試圖優化設計的想法,設計者依賴FPGA供應商來修正錯誤。3. 對那些FPGA供應商來說,支持微處理器的開發資源是有限的。不是設計者而是供應商定義了資源的優先權。4. 付費IP許可證條款限制了設計者使用供應商提供的FPGA器件時的靈活性。 由于設計者積聚了大量為微處理器開發的代碼,要轉向另外一家FPGA供應商就會很困難。供應商對設計者的這種處境非常了解,因而設計者沒有能力轉換供應商的事實消除了供應商之間的競爭壓力,減少了供應商對客戶的關注程度也限制了將來的價格讓步。 模式2:免費的參考設計 免費的參考設計消除了與付費IP模式相關的兩種挑戰。沒有首筆支付費用當然是很有吸引力的,事實上這些設計是以源代碼的形式提供的,這樣就能夠獲取設計的結構。然而FPGA供應商對設計所有權的擁有使設計師缺乏為設計開發額外代碼的動力。最終和付費IP一樣,參考設計的實現被局限在供應商的器件結構上。 模式3:加密IP 加密IP是一種新的嘗試,試圖對付費IP方式進行挑戰。在此模式,使用FPGA設計工具將IP混合在設計之內,并產生加密位流。為了使用這個位流,要購買預編程密鑰的特殊FPGA,這種特殊FPGA的價格要高于標準的FPGA。這種方法消除了首筆支付費,并能夠在FPGA內使用標準的微處理器結構。標準結構的使用允許代碼在非FPGA解決方案中實現,例如獨立的芯片和ASIC。然而設計者再次發現他們仍然被鎖定在單一的器件供應商上。代碼缺乏能見度,使用該方法還是無法改變由供應商來主導開發模式的狀況。 模式4:開放代碼 開放源代碼方法承諾要解決其它許可證模式的棘手問題。開放源代碼提供可見的代碼,使設計者理解設計的功能,并能對之進行優化。為設計者修改代碼提供了靈活性和知識產權,鼓勵用戶將他們對設計所作的改進提供給更多的開發團體。開放源代碼是免費的,最重要的是它的可移植性,設計可以在任何FPGA結構上實現,或者在ASIC這樣的非FPGA上實現。 GPL:針對軟件而不是硬件的開放代碼黃金標準 開放源代碼的運動起源于軟件界,有許多開放源代碼許可證的方法已經被使用,其中頗受歡迎的一種是GNU通用公用許可證(General Public License,簡稱GPL)。作為接受責任或者要求的回報,這個許可證給予用戶幾個重要的權利。這些權利有:1.有權使用和修改軟件。2. 有權再分銷軟件和衍生的產品。3. 需要在GPL的許可下進行分銷,并提供許可證給那些接受分銷的客戶。4. 需要申請GPL許可證,并基于在GPI許可下收到的資料進行工作。5. 需要構造基于在GPL許可下收到的資料進行工作所需的源代碼。6. 在責任方面的限制。7. 需要保持原始版權記錄,并清楚的標明所做的修改。 GPL在保護原創者對其成果的權利、保證該成果仍能為公眾所采用以及滿足未來用戶需求這三者之間找到了平衡,這是在軟件開發組織中GPL受歡迎的主要因素之一。然而對于最終要用硬件來實現的知識產權來說GPL是有缺陷的許可。 針對硬件分銷時使用GPL的兩個挑戰 第一個挑戰是要求提供許可證的副本和獲取源代碼,這個挑戰與目標為硬件的GPL知識產權許可相關。用軟件的形式進行分銷時,很明顯這是合理和重要的,例如把修改的代碼放到網站上,或者把它提供給用戶。然而設計物理實現時,例如用FPGA,這是有問題的。設想一下發運GPL的副本和系統的每個版本會是何種情況! 第二個挑戰是對許可整個衍生產品,包括GPL下基于GPL的代碼的需求。設計者經常要使用GPL和所有權資料。對于軟件,把基于GPL的代碼和所有權代碼分開作為兩個獨立的編譯和存檔程序通常并不困難。對于硬件,單獨的布局和布線產生單個設計,這是不可行的。 為了提供優化的用于硬件實現的開放源代碼許可證模式,例如LatticeMico32嵌入式微處理器,Lattice開發了開放IP核許可證協議,明確地提到了GPL的限制。為了解決GPL要求發運許可證的副本,Lattice協議做了保證:“供應商賦予你個人非獨家的權利使用由軟件建立的目標代碼,或者用器件物理實現設計的衍生產品,諸如可編程邏輯器件或專用集成電路。你可以分銷這些器件而沒有許可證的副本或者源代碼。” 解決了GPL要求:把基于GPL代碼和所有權代碼分開 “供貨商賦予你個人非獨家的權利,可以修改軟件源碼并把修改后的源碼與其它源碼合并成衍生產品。根據本許可證條款,只要滿足以下兩個條件,你能夠以你自選的格式和方式分發銷售該衍生產品,而無需支付費用。這兩個條件是:第一,你在安排設計時,要確保這個衍生產品在整體設計中是一個可以識別的模塊;第二,在分發銷售衍生產品時,要用公認的機器可讀的格式來發布包含該衍生產品的模塊的源代碼! 采購需謹慎 由于嵌入在FPGA內的軟微處理器越來越流行,設計者應小心關注許可證條款。本文分析了4種許可證方法,除了開放源代碼方式,其余的都限制了設計者對今后FPGA的選擇。其中一些方法還限制了設計者得到優先代碼的能力,阻礙了理解,并需要依賴IP供應商來修正錯誤。 軟微處理器的開放源代碼許可證使設計者能靈活地改變FPGA結構,清晰地理解處理器的結構。然而,即使擁有開放源代碼,也必須關注許可證的細節。因為在目標為硬件的知識產權應用中(包括銷售無需許可證的硬件,以及用單個硬件實現混合開放代碼和所有權代碼),許多在軟件領域流行的開放源代碼許可證仍然會帶來重大的挑戰。 |