網表文件(edf文件與dcp文件)


一、Vivado將模塊封裝為IP的方法(網表文件)

在給別人用自己的工程時可以封裝IP,Vivado用封裝IP的工具,可以得到像xilinx的ip一樣的可以配置參數的IP核,但是用其他工程調用后發現還是能看到源文件,如何將工程源文件加密,暫時沒有找到方法,如果知道還請賜教。
而直接用.edif網表文件作為ip的方法如下:
1、建立工程設置頂層模塊
將需要封裝的模塊設置為頂層模塊。(shift_bus模塊)

2、綜合待封裝模塊
vivado綜合時會默認將輸入輸出端口添加buffer緩存,而封裝的模塊大多都是用在一個大的模塊的內部,綜合不能添加iobuf,在ISE的綜合選項中有-iobuf選項而在Vivado中該選項是隱藏的,可以在綜合設置窗口的Options下面最后一項 More Options一欄寫入“-no_iobuf”,然后綜合即可。

3、生成.edif網表文件
打開綜合后的設計:在Flow Navigator中點擊“Open Synthesis Deisgn”
在TCL Console中輸入:“write_edif /path/xx.edif” 。特別注意:路徑分隔字符為“/”(得到的網表文件為shift_bus.edif)

4、建立wrapper
建立一個與待封裝模塊同名的.v文件,該文件只描述該模塊的接口。(shift_bus.v)

5、調用
將shift_bus.v和shift_bus.edif文件添加到需要調用的工程中,然后直接對shift_bus模塊進行例化即可。
在vivado中使用( read_edif 路徑/xxx.ngc)讀入網表文件到工程中,添加只包含端口信息的文件

二、【划水】Vivado生成網表文件是怎么回事呢?
https://zhuanlan.zhihu.com/p/137433454

四、vivado下將rtl模塊做成網表加入工程使用
在fpga開發過程中,往往是模塊化的分工合作,大家做好自己的模塊再統一添加到頂層。

rtl代碼是透明,當你不想公開自己的代碼而只想提供一個黑盒子時,就需要想別的辦法。

xilinx vivado提供IP封裝的功能,但是不能提供加密,所以可行的辦法是提供網表來供頂層使用。

模塊的網標生成需要注意三個問題:

1、將模塊作為頂層綜合時,端口會被工具認作是I/O而添加IO BUF;

2、端口的很多信號由於沒有驅動所以會被工具優化掉;

3、xilinx工具無法確定網表使用者是否有IP核的licence,所以制作網表的rtl內不能包含xilinx的IP核。

以上問題都能想辦法規避,

1、IO BUF可以不用管,工具會將不是頂層模塊的端口的IO BUF優化掉,當然你也可以自己去刪;
2、在模塊的端口添加(KEEP = “TRUE”),保證信號不被優化;
3、一定需要用到xilinx的IP核的話就將IP核作為你的模塊的一個平行模塊。

網標的生成也很簡單,將模塊作為頂層綜合后,路徑下會有checkpoint,而該文件會包含頂層例化的.v和.vhd、網表.edf.。將該文件加入工程替代.v或.vhd即可。

五、在Vivado下利用Tcl編輯綜合后的網表
http://www.iot-online.com/jishuwenku/2017/0602/69596.html

七、VIVADO網表文件DCP,edf
為了便於模塊化設計,同時保護自己的知識產權,Xilinx VIVADO 提供兩種代碼封裝方法:DCP文件和edf文件。
DCP文件生成方法:
1、將需要生成DCP的模塊設置為頂層,打開綜合設置,在more option中填入 -mode out_of_context,刪除所有約束文件(約束文件會被封裝在DCP中,並且優先級最高),開始綜合;
2、綜合完成后在runs\synth_1文件夾下可找到DCP文件,但該DCP文件在實際使用中會有諸多限制,如模塊內部有IP核或其他DCP文件,則可能出現錯誤,如何實現DCP嵌套IP可參照以下步驟;
3、DCP嵌套,為了保證DCP嵌套后能正常被調用綜合,在第1步中在綜合前可將所有IP核設置為globle模式,在完成綜合后打開綜合設計,在TCL命令框中輸入:write_checkpoint -force D:/x/xxx.dcp,其中xxx為模塊名稱,這樣就可以生成完整的dcp文件。

EDF(網表)文件生成方法:
1、將需要生成DCP的模塊設置為頂層,打開綜合設置,在more option中填入 -mode out_of_context,刪除所有約束文件,開始綜合;
2、在完成綜合后打開綜合設計,在TCL命令框中輸入:write_edif D:/x/xxx.edf生成edf文件,輸入write_verilog -mode synth_stub D:/x/xxx_stub.edf生成黑盒接口文件,應為edf文件不像DCP文件,可以單獨被調用,edf文件必須配合.v的黑盒接口才能被調用;
3、關於設計模塊內包含IP核或edf的設計,不建議使用edf封裝,很可能報IP錯誤,若實在需要使用,可在TCL命令框中輸入:write_edif -force D:/x/xxx.edf生成edf文件,可一定程度上減少報錯,但不能保證。

DCP和edf比較:
1、DCP文件對軟件版本及其敏感,高版本軟件生成的DCP無法在低版本軟件使用;
2、采用一定手段,DCP可實現IP、DCP嵌套,但EDF實現嵌套的能力較弱。

九、write_edif
EDF文件可以直接導入Vivado,而無需Verilog源文件。
好處:
(1) 避免沙雕隊友修改源代碼,則可以直接提交EDF網表文件。
(2) 避免用戶剽竊勞動成果,保護自己的知識產權。
(3) 對於無需更改的設計復用,直接用EDF網表會賊方便。
1 vivado write_edif
目的:將當前網絡列表導出為EDIF文件。
語法:
在這里插入圖片描述
舉例:
write_edif C:/Data/edifOut.edn 將整個設計的EDIF網表文件寫入指定的文件名
write_edif -pblocks [get_pblocks] C:/Data/FPGA_Design/ 獲取輸出設計中所有Pblock的EDIF網表。這些文件將被寫入指定的目錄。
Pblocks:手工布局的本質是對指定邏輯單元設定面積約束,在Vivado下就是對其畫一個Pblock。Pblock的大小限定了該邏輯單元所能使用的FPGA資源;Pblock的位置限定了該邏輯單元在FPGA中的位置;Pblock中所包含的FPGA資源類型限定了該邏輯單元所能使用的資源。

2 操作步驟
(1)將需要封裝的模塊設置為頂層模塊
(2)綜合或實現需要生成edif的verilog或vhdl源文件。
(3)open Elaborated Design or Open Synthesized Design or Open Implemented Design
  (4) tcl console:write_edif xx.edf
  (5) tcl console:write_verilog -mode synth_stub xx_stub.v
  (6) 調用 xx.edf和xx_stub.v


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM