【EDA软件】【应用功能子模块网表提供和加载编译方法】
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,二者的打印相同并且符合预期。