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 执行此操作