1.背景
使用者做FPGA應用開發,將開發成果交給自己的客戶,但是并不想提供RTL源碼以及加密的源碼,只想提供網表文件。
2.方法
2.1 指定應用功能子模塊設置為Top層;
2.2 運行綜合,在outputs文件夾下會生成該應用功能子模塊*.aib和*.bv文件;
2.3 在現有的工程中加載應用功能子模塊*.aib和*.bv文件,上一級模塊做好連線;
2.4 運行編譯。
3.舉例說明
3.1 原工程說明
eth_evb_v1_4_top.v
module ETH_EVB_V1_4(input ext_osc_clk , // 20Minput sw_rst_n ,input uart0_rx ,output wire uart0_tx
);wire mcu_clk ;
wire fpga_clk ;
wire pll_locked ;
wire sys_rst_n ;
wire por_locked ;pll_v1 u_pll_v1(.clkin0 ( ext_osc_clk ), // i.locked ( pll_locked ), // o.clkout0 ( fpga_clk ), // o.clkout1 ( mcu_clk ) // o
);por_v1_1 u_por_v1_1(.O ( por_locked )
);assign sys_rst_n = sw_rst_n & pll_locked & por_locked;soc_system_v1 u_soc_system_v1(.m3soc_clk_o ( mcu_clk ),.m3soc_clken ( 1'b1 ),.m3soc_rstn ( sys_rst_n ),.u_m3soc_uart0_cts_n_i ( ),.u_m3soc_uart0_dcd_n_i ( ),.u_m3soc_uart0_dsr_n_i ( ),.u_m3soc_uart0_ri_n_i ( ),.u_m3soc_uart0_dtr_n_o ( ),.u_m3soc_uart0_out1_n_o ( ),.u_m3soc_uart0_out2_n_o ( ),.u_m3soc_uart0_rts_n_o ( ),.u_m3soc_uart0_sin_i ( uart0_rx ),.u_m3soc_uart0_sout_o ( uart0_tx ),.u_m3soc_uart0_sir_in_i ( ),.u_m3soc_uart0_sir_out_n_o ( ),.u_m3soc_uart0_baudout_n_o ( )
);endmodule
該工程top層,例化三個模塊pll_v1 、por_v1_1 和soc_system_v1 ,實現ARM硬核 UART的功能。
EDA工具的層次結構如圖1:
圖1
3.2 指定應用功能子模塊設置為Top層
以por_1_1舉例,設置por_v1_1為Top層。在該子模塊點右鍵,左鍵“Set As Top Module”,如圖2:
圖2
設置完成后,EDA界面的變化,por_v1_1的前面的IP變成了"T"字樣,說明已經設置成為Top層,如圖3:
圖3
3.運行綜合
運行Synthesize->Run Synthesis Without IO,運行完成后在工程的outputs文件會生產該子模塊的*.aiv和*bv文件,如圖4:
圖4
4.新建工程驗證
為了驗證使用*.aiv和*bv文件的正確性,依然使用原工程的代碼,只是將源代碼por_v1_1.v刪除,替換為por_v1_1.aiv和por_v1_1.bv。
點擊工程右鍵,“Add Existing File”,選擇*.aiv和*.bv所在路徑,文件類型選擇“All Files”,如圖5:
圖5
添加后的EDA界面的變化,如圖6:
圖6
編譯、加載、上板驗證過程不在此贅述,可以查閱京微齊力相關文檔。
驗證兩個*.acf,二者的打印相同并且符合預期。