Vivado中RTL封装IP流程
Vivado中RTL封裝IP流程
前言
本文記錄自己將RTL代碼封裝成IP的流程,以供之后查閱使用。最近一個月在做一個數據仲裁與轉發的項目,已經完成功能仿真,準備將其封裝成IP在Block Design中進行調用。實驗平臺為Vivado 2018.3,編程語言為Verilog,IP的接口主要是一個AXI-Lite接口和一個AXI-Full接口。閑言少敘,我們直接開始。
詳細流程
準備工作
新建一個文件夾ip_test,在該文件夾下新建文件夾rtl,將所有RTL源碼放入該文件夾,完成準備工作;
新建一個文件夾top_module,里面僅存放RTL源碼的最頂層的.v文件,便于IP生成正確的接口。(之前嘗試將所有的RTL源碼一次導入,發現vivado不能正確識別頂層模塊,從而導致IP接口一直不對)
創建工程
雙擊打開vivado 2018.3,選擇Tasks->Manage IP->New IP Location,按下圖所示順序進行操作;
上圖中的IP location選擇之前建立的ip_test文件夾路徑,選完后點擊Finish完成工程的創建;
因為本項目已有RTL源碼,所以上圖中我們選Package a specified directory;如果沒有源碼想創建一個帶AXI接口的空IP往里寫功能的話就選擇Create a new AXI4 Peripheral;
此處一定注意下圖中的路徑,選擇RTL頂層模塊源碼的路徑
指定項目的名稱,本示例工程名字為ip_test;
點擊Finish后我們看到封裝IP的界面,此時看到IP的名稱與頂層模塊相同,且接口也與頂層模塊的一致,只是此時除了頂層模塊外,其余模塊均未添加到Design Sources中。
下面進行剩余源碼的添加,將rtl文件夾中的代碼添加到Design Sources中。
選擇IP封裝模塊的File Groups選項,點擊Merge changes from File Groups Wizard
可以看到此時的IP已經包含了所有的源碼;
屬性配置
在Ports and Interfaces界面中,我們可以看到,vivado工具自動將時鐘復位信號、AXI-Full信號和AXI-Lite信號進行打包處理(vivado永遠的神!),但還有一些屬性需要設置,否則vivado會報warning。如復位信號的低電平復位屬性、時鐘與AXI協議的相關屬性等;
添加復位信號的低電平復位屬性流程如下:
將clk時鐘與rst_clk_n綁定起來,并指定AXI-Lite接口用clk時鐘
具體各參數的屬性配置情況大家可以參考vivado官方教程ug1118。完成上面時鐘或者復位的綁定配置后,最后進行IP核的導出。
導出IP
在封裝IP界面選擇Review and Package,先進行打包IP的配置,點擊Edit packaging settings;
進行上圖所示的配置,其中Delete project after packaging選項可以不選,因為導出IP可能之后還要繼續,要對RTL代碼進行修改上板測試來迭代更新,所以我們一般保留導出IP的項目工程。
最后回到封裝IP的界面,點擊Package IP選項即可。
已經成功打包,詢問是否關閉項目工程,Yes或者No均可。
到指定的路徑下查看,發現已經生成我們所需的IP。至此,封裝IP圓滿結束。
結語
本文為筆者打包IP的經驗分享帖,其中不免錯誤不足之處,如果其中步驟有誤還望大家指正出來,一起交流進步。
參考資料
Vivado Design Suite User Guide: Creating and Packaging Custom IP (UG1118)
總結
以上是生活随笔為你收集整理的Vivado中RTL封装IP流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HLS中数据的合并与拆分
- 下一篇: 为什么D触发器需要建立时间与保持时间