我试图将字符串作为参数传递给模块并收到此错误:
无法绑定变量
module dut #(parameter string CONFIG_FILE)
(
input logic clk
);
endmodule
module main;
localparam string CONFIG_FILE = "Config.txt";
logic clk;
dut
# (.CONFIG_FILE (CONFIG_FILE))
dut_inst
(.clk(clk));
endmodule
用伊卡洛斯编译:
> iverilog -g2012 tb2.sv
------
tb2.sv:12: error: Unable to bind variable `CONFIG_FILE' in `main'
1 error(s) during elaboration.
我在 EDA Playground 上也遇到了
iverilog
错误。错误消息与您的不同,这可能意味着 iverilog
的版本不同。
上编译没有错误
module dut #(parameter CONFIG_FILE="file.txt")
(
input logic clk
);
endmodule
module main;
localparam CONFIG_FILE = "Config.txt";
logic clk;
dut
# (.CONFIG_FILE (CONFIG_FILE))
dut_inst
(.clk(clk));
endmodule
该版本显然不喜欢
string
与参数一起使用。但是,在这种情况下,没有必要使用 string
关键字。
它还需要参数的默认值。
iverilog
不支持所有 SystemVerilog 功能 (IEEE Std 1800-2017)。