Vivado生成HDL例化模板

下面这种方式其实并不好用,每次都要先点击’Open Elaborated Design’后才能使用(很慢),而且生成的例化模板接口顺序也并不是按照原始HDL中的接口顺序,用了一次后基本就没再用过,所以就自己写了一个生成例化文件的Python 脚本。

详见:生成Verilog HDL例化模板

-----------------------------以下是原文-----------------------------------

  在ISE的开发中,可以很方便的生成HDL文件的例化模板,但vivado中,很多同学并没有找到这个功能,其实功能还是有的,只不过在vivado中很多功能可以通过tcl脚本实现,因为Xilinx就把这些功能从图形化中去除了。下面我们看vivado中怎么生成HDL的例化模板。

  1. 首先要安装Design Utilities, 点击Tools->Xilinx Tck Store选项,如下图所示。
    图1

  2. 点击Install, 安装Design Utilities,如下图所示。

图2

之后再生成例化模板时就不需要再安装了,直接进行下面的步骤就行。

  1. 把要生成例化模板的HDL文件设置为top文件,并点击Open Elaborated Design,如下图所示。

图3

  1. Tcl Console中执行xilinx::designutils::write_template -template -verilog指令,就可以看到下图4所示,根据提示内容,去对应位置找到生成的例化模板文件即可。

在这里插入图片描述
如果没有执行第3步操作,就会出现下面的情况

在这里插入图片描述

可以看出,提示了Warning,并且生成了一个没有名字的.v文件。如果打开文件的话,会发现文件中并没有有用内容。

好,到这里,就已经正确生成了HDL例化模板了。但每次都需要输入tcl指令还是略显麻烦,我们可以设置一个tcl的按钮,一键生成。操作如下:

点击Tools->Custom Commands->Customize Commands,如下图6所示。

在这里插入图片描述

进去之后,按照下图的操作步骤,生成tcl指令。

在这里插入图片描述

操作完后,就可以在vivado的菜单栏中看到tcl的按钮标志,如下图8所示。

在这里插入图片描述

以后在敲指令的步骤就可以替代为直接点击该按钮即可。

OK,以上就是全部操作步骤了。但这种方式生成的例化模板,是按照接口类型排序的,前面是input,中间是output,最后是inout,并不是按照我们原始的端口排序,这可能会造成一点不便。

微信公众号:Quant_Times

Vivado中进行IP核的参数传递和覆盖是一项常见的设计任务。Vivado提供了多种方法来实IP核并传递参数,以便在设计中灵活地配置和覆盖默认参数。 1. **参数传递**: - **直接传递**:在实IP核时,直接在实语句中传递参数值。如: ```verilog my_ip_core #( .PARAM1(VALUE1), .PARAM2(VALUE2) ) my_instance ( .CLK(clk), .RESET(reset) ); ``` - **参数文件**:将参数定义在一个单独的文件中,并在实时引用该文件。如,可以创建一个参数文件`my_params.vh`,内容如下: ```verilog `define PARAM1_VALUE VALUE1 `define PARAM2_VALUE VALUE2 ``` 然后在实时引用该文件: ```verilog `include "my_params.vh" my_ip_core #( .PARAM1(`PARAM1_VALUE), .PARAM2(`PARAM2_VALUE) ) my_instance ( .CLK(clk), .RESET(reset) ); ``` 2. **覆盖默认参数**: - **全局覆盖**:在顶层设计中,通过实时传递新的参数值来覆盖默认参数。如: ```verilog my_ip_core #( .PARAM1(NEW_VALUE1), .PARAM2(NEW_VALUE2) ) my_instance ( .CLK(clk), .RESET(reset) ); ``` - **局部覆盖**:在模块内部,通过局部参数定义来覆盖默认参数。如: ```verilog module top_module ( input wire clk, input wire reset ); my_ip_core #( .PARAM1(NEW_VALUE1), .PARAM2(NEW_VALUE2) ) my_instance ( .CLK(clk), .RESET(reset) ); endmodule ``` 3. **自动脚本**: - 使用TCL脚本自动参数传递和覆盖过程。如,可以通过编写TCL脚本来修改IP核的参数值: ```tcl set_property -dict [list CONFIG.PARAM1 {NEW_VALUE1} CONFIG.PARAM2 {NEW_VALUE2}] [get_ips my_ip_core] ``` 通过这些方法,可以在Vivado中灵活地进行IP核的参数传递和覆盖,从而实现不同的设计需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值