vivado中ip核实例化时传参
Pass parameter during instantiation of ip core in vivado
虽然从研究上看来是不可能的:
Passing parameter to xci core
我正在设计一个使用 Xilinx FIFO 实例的自定义内核。但是,顶层模块的参数暴露在 IP Packager 中,应该修改包含的 FIFO 内核。
module top();
parameter C_FIFO_DEPTH = 256
xilinx_fifo_core #(
.FIFO_DEPTH(C_FIFO_DEPTH)
) my_fifo_instance (...);
这样,当有人实例化我的模块时,通过覆盖参数 C_FIFO_DEPTH,他们也会更改嵌入式 FIFO 的深度。
虽然这适用于用户编写的模块,但它不适用于 IP 内核实例 (xci),它似乎只能通过 "Customize IP" gui 配置。
我已经禁用了 Out-of-context 生成,但仍然没有骰子。
我目前正在研究一个(非常混乱的)解决方案,在打包的核心中使用 tcl 脚本,但是迫切需要一个优雅的解决方案。
我想不出任何优雅的解决方案,但这里有三个更乱的:
(1) 只需使用您需要的最大 FIFO。 (显然很可能是浪费空间。)
(2) 创建一系列不同大小的 FIFO,然后使用 generate case
选择正确的一个。 (只有在有用尺寸的范围受到合理限制的情况下才有用。)
(3) 不要使用 IP 块 - 设计您自己的 FIFO。 (你可能已经想到了。)
您可以使用 XPM_FIFO_xxx
个内核来执行此操作。在 UG953 库指南中查找文档和示例。您也可以使用 XPM_MEMORY_xxx
.
为 RAM 执行此操作
虽然从研究上看来是不可能的: Passing parameter to xci core
我正在设计一个使用 Xilinx FIFO 实例的自定义内核。但是,顶层模块的参数暴露在 IP Packager 中,应该修改包含的 FIFO 内核。
module top();
parameter C_FIFO_DEPTH = 256
xilinx_fifo_core #(
.FIFO_DEPTH(C_FIFO_DEPTH)
) my_fifo_instance (...);
这样,当有人实例化我的模块时,通过覆盖参数 C_FIFO_DEPTH,他们也会更改嵌入式 FIFO 的深度。
虽然这适用于用户编写的模块,但它不适用于 IP 内核实例 (xci),它似乎只能通过 "Customize IP" gui 配置。
我已经禁用了 Out-of-context 生成,但仍然没有骰子。
我目前正在研究一个(非常混乱的)解决方案,在打包的核心中使用 tcl 脚本,但是迫切需要一个优雅的解决方案。
我想不出任何优雅的解决方案,但这里有三个更乱的:
(1) 只需使用您需要的最大 FIFO。 (显然很可能是浪费空间。)
(2) 创建一系列不同大小的 FIFO,然后使用 generate case
选择正确的一个。 (只有在有用尺寸的范围受到合理限制的情况下才有用。)
(3) 不要使用 IP 块 - 设计您自己的 FIFO。 (你可能已经想到了。)
您可以使用 XPM_FIFO_xxx
个内核来执行此操作。在 UG953 库指南中查找文档和示例。您也可以使用 XPM_MEMORY_xxx
.