使用Vivado将包含Xilinx IP的用户模块封装成网表文件(也适用不包含Xilinx IP的用户模块)

本文详述了在Vivado环境下封装含XilinxIP的用户自定义模块为.edf网表文件的步骤。从设置模块为顶层、调整I/OBuffers设置,到综合、生成stub文件和edf文件,最后介绍了仿真方法及另一种封装方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Vivado TCL命令窗口中可以通过调用write_edif命令将用户自定义模块封装成.edf网表文件(类似ISE里的.ngc文件),但按照官方给出的参考用法生成的网表文件对自定义模块有种种限制,即待封装的模块不能含有Xilinx IP(少部分IP可以包含,如RAM IP、FIFO IP等),如DSP IP、MIG IP等,否则在编译时将报错,提示有未定义的黑盒。
那么如何将包含XIlinx IP的用户模块封装成网表文件,下面将给出详细步骤

1. 将待封装模块设置为top层

如下图所示,待封装模块为abc,则选中abc后右键,选择“Set as Top”,在这里插入图片描述

2. I/O Buffers设置

设置Settings–>综合 synthesis–>选项options下拉至最后一项:More Options,将其值设置为:

-mode out_of_context

在这里插入图片描述
-mode out_of_context表示在该级不插入任何I/O BUFFERs,该选项类似ISE里在相应设置处不勾选I/O BUFFERs。
另外还可以在选项options中找到“-flatten_hierarchy”,将层级结构设置为“full”,
层级结构则可设置“-flatten_hierarchy”选项为“full”:“全”该选项指示工具把层级全面变平,只剩下顶层,保护IP的层级结构不被其他用户清楚查看。

3. 综合

运行综合synthesis,完成综合后,打开综合设计open synthesized design

4. 生成仅包含IO端口信息的empty module

打开综合设计open synthesized design后,在TCL命令窗口执行如下命令:
2017.4之前版本:

write_verilog -mode port F:/FPGA/abc_stub.v

2018.1之后版本:

write_verilog -mode synth_stub F:/FPGA/abc_stub.v

其中F:/FPGA/替换为要存放的路径,如未指明路径,则将存放到工程文件所在路径下。

5. 生成edf文件

重头戏来了,分两条:

  1. 若不含Xilinx IP则可通过如下命令生成edf文件:

write_edif F:/FPGA/abc.edf

  1. 若含Xilinx IP则需通过如下命令生成edf文件:

write_edif -security_mode all F:/FPGA/abc.edf

6. 新工程中网表文件调用

将上述生成的abc_stub.v和abc.edf添加到新工程中即可。

7. 带Xilinx IP的另外一种网表封装方式(不推荐)

上述步骤3后,在tcl命令窗口中执行如下命令:

write_verilog -force abc_stub.v

该命令会将待封装模块中所有源码、IP都写入一个文件中,然后在新工程中仅需添加该文件即可。

8.关于仿真

当前Vivado暂不支持.edf文件的仿真,仿真过程中不会报错,但是无有效波形输出。
解决方法参考:

write_verilog -mode funcsim -force abc_sim.v

已验证上述方案可行,导出的.v模型可以做为仿真文件和.edf一起交付,要注意此.v文件只是用于仿真。

赛灵思中文社区论坛
在这里插入图片描述

<think>我们正在讨论如何在Vivado使用Verilog代码创建BlockDesign(BD)文件。根据用户的问题,他/她想知道如何从IP核生BD文件,特别是使用Verilog。由于用户提到了引用[1],其中涉及在ZEDBOARD上使用AXIGPIO和自定义IP,我们可以参考这个流程。步骤概述:1.首先,我们需要创建自定义IP核,这通常包括编写Verilog代码。2.将自定义IP核打包VivadoIP核格式。3.Vivado中创建一个BlockDesign,并将自定义IP核添加到设计中。4.在BlockDesign中添加其他必要的IP核(如AXIGPIO等)并连接它们。5.顶层Verilog文件(Wrapper)或使用自定义的顶层文件。但是,用户的问题是如何使用Verilog从IP核创建BD文件。这里需要澄清:BD文件Vivado中的图形化设计示,通常以.tcl脚本或.xml文件形式保存。我们无法直接通过Verilog代码生BD文件,但可以通过以下步骤将自定义Verilog模块到BD中:具体步骤:1.编写自定义IP的Verilog代码,并确保其端口符合需要(例如,如果使用AXI接口,则需符合AXI协议)。2.Vivado中,将Verilog代码添加到项目中。3.使用“CreateandPackageNewIP”向导将自定义Verilog模块打包为IP核。4.创建一个新的BlockDesign(BD)。5.在BD中,通过“AddIP”添加刚刚创建的自定义IP核,以及其他需要的IP核(如AXI互联、处理器系统等)。6.连接IP核之间的接口,并运行自动连接(如适用)。7.验证设计并生输出产品(包括HDLWrapper)。注意:如果用户希望用Verilog代码作为顶层来实例化BD中的系统,那么需要先生BD的顶层Wrapper(Verilog文件),然后在其上添加其他逻辑(如果需要)或者直接作为顶层。另外,用户引用[1]中提到“PasteyourVerilogcodetoyourIPdesignsources”,这意味着在创建自定义IP时,需要将Verilog代码粘贴到IP的设计源文件中。因此,我们总结如下:-自定义IP核的创建是通过将Verilog代码添加到IP核的源文件中来实现的。-BD的创建是在Vivado图形界面中手动添加IP核并连接,或者通过TCL脚本自动化完。-用户能直接用Verilog代码生BD,但可以通过将Verilog模块封装IP核,然后在BD中使用IP核。生相关问题:1.如何将自定义Verilog模块打包为VivadoIP核?2.VivadoBlockDesign中如何连接自定义IP核与AXI接口?3.如何为BlockDesign生顶层Verilog包装文件?现在,根据上述步骤,我们给出详细回答。</think>### 在Verilog中创建Vivado Block Design文件的方法 在Vivado中从IP核生Block Design (BD) 文件的核心流程是通过**自定义IP封装**实现的。以下是详细步骤: #### 步骤1:创建自定义IP核 1. **编写Verilog模块** 创建功能模块(如`my_custom_ip.v`): ```verilog module my_custom_ip( input clk, input rst_n, output [7:0] data_out ); // 自定义逻辑实现 endmodule ``` 2. **打包为IP核** - 在Vivado中:`Tools > Create and Package New IP` - 选择`Package your current project` - 添加Verilog源文件IP资源[^1] #### 步骤2:构建Block Design 1. **创建BD画布** - `Create Block Design` (命名如`system_bd`) - 通过`+`添加IP核: - 搜索你的自定义IP(如`my_custom_ip`) - 添加AXI GPIO等标准IP 2. **连接接口** ```tcl # 示例连接脚本 connect_bd_intf_net [get_bd_intf_pins axi_gpio_0/S_AXI] \ [get_bd_intf_pins axi_interconnect_0/M00_AXI] connect_bd_net [get_bd_pins my_custom_ip_0/clk] \ [get_bd_pins processing_system_0/FCLK_CLK0] ``` #### 步骤3:生顶层文件 1. **创建Wrapper** - 右键BD设计选择`Create HDL Wrapper` - 选择`Verilog`作为语言 - 生`system_bd_wrapper.v`(该文件实例化所有IP) 2. **手动集(可选)** 在自定义顶层模块中实例化Wrapper: ```verilog module top( input sys_clk, input reset_n ); system_bd_wrapper system_inst ( .sys_clk(sys_clk), .reset_n(reset_n) ); // 添加额外逻辑 endmodule ``` #### 关键注意事项 1. **接口标准化** - 自定义IP使用标准总线(如AXI-Lite)才能与其它IP互连 - 时钟/复位信号需全局连接 2. **自动化脚本** 可通过TCL脚本批量创建BD: ```tcl create_bd_design "my_design" create_bd_cell -type ip -vlnv xilinx.com:user:my_custom_ip my_ip_0 regenerate_bd_layout save_bd_design ``` [^1]: 创建自定义IP时需将Verilog源文件添加到IP资源目录中,Vivado会自动识别模块接口。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值