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