強大的Vivado IP工具——自定義IP的使用(IP packager)
轉自http://blog.chinaaet.com/detail/37169
首先,要指出,本文不描述任何IP的功能與使用。
在開發一個大型FPGA專案時,多人協作是必不可少的。這個時候,如何提交設計給負責整合的人,是專案開發中最關鍵的問題之一。
常用的一個方法是,提交網表。網表的提交可以算是相當方便的操作了,這在ISE的時期還體會不到,但到了Vivado中,正如amazing icecream在博文http://blog.chinaaet.com/detail/37153中描述的,dcp的引入,讓網表這一非常好用的功能發揮了其應有的作用。對於部分設計,直接使用dcp提交設計,已經足夠。
但正如amazing icecream在博文
設計中包含了兩個IP的xci。如果IP使用的OOC模式,則和dcp模組一樣,都使用網表提交給頂層ADC_SPI。如果再將ADC_SPI模組打包成dcp,就會出現dcp檔案的巢狀。呼叫ADC_SPI這個dcp網表時,會出現錯誤,無法讀取其中的dcp模組的資訊。
這就意味著,使用dcp的模組,只能是純程式碼的模組,無法使用任何IP,哪怕是FIFO、BRAM之類的簡單IP。另外,dcp也無法多次提交,所有開發者只能提交一次
所以,本文介紹一下IP Packager這個工具,來解決上述的工程問題。目前的IP Packager仍然不支援包含dcp網表,但是生成子dcp網表的工程也可以封裝為IP,所以可以用IP的方法來層級巢狀。
IP Packager,用來將自己的設計打包,封裝成IP。然後在IP Catalog中匯入後就可以與Xilinx提供的IP一起使用。其操作相對簡單,難度低,可操作性很強。該工具為Vivado獨有,ISE似乎沒有類似的工具可以使用。
如何使用呢?首先,準備一個設計,由於IP Packager在封裝IP時並不會檢查設計是否有問題,比如是否有原始檔確實等,需要開發者自己確認設計是否完整。
然後在選單欄中選擇“Tool”->“Create and Package IP…”,如下圖所示。
彈出如下介面,有興趣可以自行閱讀說明或參考相關文件,點選Next
在下一個介面中,選擇第一項,然後點選Next。這裡說明一下,第一項是將工程封裝成IP,第二是將某個目錄下的原始檔封裝成IP,第三項是封裝AXI4的外設,有興趣可以自行閱讀說明文字或查詢文件。
下一介面選擇IP的路徑,用於日後匯入IP檔案,同時選擇僅包括xci檔案還是包括所有IP已經生成的網表。這裡選擇“Include .xci files”
最後一頁點選Finish即可
設定完成之後,可以發現在Project Manager視窗下的Hierarchy標籤中,會多一個IP-XACT,下面會有一個component.xml,其中儲存著封裝IP的資訊。
在Package IP的主介面裡,列出了IP的定製化選項
在第一項中,可以設定IP的資訊,其中Categories是匯入後IP存放的位置,預設為BaseIP,及IP Catalog匯入後,可以再BaseIP中找個該IP
需要注意的是第二項“IP Compatibility”,點開後如下圖所示。
從圖中可以看到,此IP在封裝時是相容Zynq系列的,但是不相容其他系列,為了讓其支援其他系列的FPGA,可以右鍵彈出選單,點選“Add Family”。
在彈出的“Choose Family Support”中選擇希望新增的FPGA。
在最後一步“Review and Package”中,點選下方的edit packaging settings, 可以開啟設定介面。
在藍色框中,勾選“Create archive IP”即可生成zip壓縮檔案,用來儲存IP資訊,便於存檔及使用。點選OK後回到Vivado主介面,然後點選Re-package IP即可重新整理輸出檔案。
此時, IP封裝的工作已經全部完成。
IP封裝好以後,下一步就是如何呼叫該IP。首先開啟IP Catalog。無論是單獨建一個管理IP的工程,還是在Project Manager中點選IP Catalog,都可以。
進入IP Settings,介面如下圖所示
在“Repository Manager”標籤中,點選“Add Repository…,如上圖藍框所示。
新增好剛才進行IP封裝的路徑後,即可自動識別出IP
點選OK返回IP Catalog主介面,即可在IP Catalog中找到相關IP。注意,只有IP相容FPGA晶片時,該IP才會顯示在IP Catalog中。比如IP封裝式選擇的是V7,主工程是K7,則無法使用;但是IP封裝中新增相容K7後,主工程是K7時就可以在IP Catalog中找到該IP
IP Packager的問題是,程式碼無法加密,不具有類似dcp的不可讀功能。
考慮到Vivado目前仍然比較新,不排除在今後的版本中新增IP Packager的加密功能和dcp的巢狀功能。
如有興趣,趕快去定製自己的IP Core吧。