Vivado-Synthesis:在实例化中重写的Verilog参数失败,出现“ERROR:[Synth 8-3438]”-Xilinx-AMD社区-FPGA CPLD-ChipDebug

Vivado-Synthesis:在实例化中重写的Verilog参数失败,出现“ERROR:[Synth 8-3438]”

描述

在实例化中重写的Verilog参数失败,出现以下错误:

错误:[Synth 8-3438]模块’async_fifo’在’async_fifo.v:4’中声明没有任何参数’param_test’用作命名参数override [“FifoBuffer.v”:28]

下面是在模块语句之外定义参数“param_test”的代码。

————————————————-
module async_fifo#(
参数DEVICE =“7SERIES”,

FIFO_RAM_TYPE =“BLOCK_RAM”)
(输入[FIFO_WIDTH-1:0] din,

输出prog_full
);

参数param_test = 1;
……
endmodule
————————————————–

模块实例化如下,其中值2传递给参数param_test:

async_fifo#(。param_test(2))buffer_fifo(.din(din),……);

为什么会这样?

这是预期的行为。

当使用两种样式声明参数时会出现此问题 – 在模块语句中(例如上面代码中的DEVICE)和模块语句外部(例如param_tesst)。

根据Verilog LRM,当您使用两种参数样式时,在模块语句之外声明的参数将成为本地参数,因此无法覆盖它们。


您可以通过在一种样式中声明所有参数来克服错误。

要么将它们全部放在模块语句中,要么将它们全部移出模块语句。

下面的任何一个都可以

module async_fifo#(
参数DEVICE =“7SERIES”,

FIFO_RAM_TYPE =“BLOCK_RAM”,
param_test = 1)
(输入[FIFO_WIDTH-1:0] din,

输出prog_full
);

要么

模块async_fifo
(输入[FIFO_WIDTH-1:0] din,

输出prog_full
);
参数DEVICE =“7SERIES”;

参数FIFO_RAM_TYPE =“BLOCK_RAM”;
参数param_test = 1;

请登录后发表评论

    没有回复内容