如何使用 `include 从外部文件导入参数?

How can I import parameters from external file using `include?

我想从外部文件导入一组 参数 值到我的 Verilog 源文件(不是 System Verilog)。 我正在尝试这个:

对于主模块:

        module temp (
        `include "file.vh"
        input [WIDTH:0] data_in,
        output reg [WIDTH:0] data_out,
        input clk
    );
        always @(posedge clk) begin
            data_out <= data_in;
        end
    endmodule

和一个 file.vh 文件:

    parameter WIDTH = 12;

请在此处纠正我,因为此代码无效。

参数要么在模块 body 中声明,要么在 header:

的单独部分中声明
module temp(...);
`include "parameters.vh"
...
endmodule

parameters.vh:

parameter WIDTH = 12; // Use semicolons to terminate the lines
parameter ANOTHER = 4;

或者:

module temp #(`include "parameters.vh") (...);
...
endmodule

parameters.vh:

parameter WIDTH = 12, // Use commas on each line except the last one
parameter ANOTHER = 4

因为包含文件就像复制粘贴包含文件中的代码,您需要确保末尾的代码是有效的 Verilog。

使用 verilog95 端口声明样式,您可以使用以下内容:

module temp (data_in, data_out, clk);
   `include "file.vh"
  input [WIDTH:0] data_in;
  output reg [WIDTH:0] data_out;
  input clk;
  ...
endmodule

在这种情况下,您可以在包含文件中使用分号分隔的参数状态。

使用 v2k 样式的端口声明,如您的示例所示,您必须使用 #(...) 声明语法在端口之前声明参数。您仍然可以在括号中使用 `include 语法作为 int @Unn 的示例:

module temp #(`include "file.vh") (...);

要求您的参数以逗号分隔。