Verilog 我应该在什么时候把;点“;在实例化模块时?

Verilog 我应该在什么时候把;点“;在实例化模块时?,verilog,system-verilog,Verilog,System Verilog,在这个例子中,当我在“enc_en”中输入一个点时出现了一个错误,我的实现有什么问题吗 module some_top_module(); .... logic [NOF_PORTS-1:0] wr_en_vec; logic [NOF_PORTS-1:0] rd_en_vec; logic enc_en; encoder #(.IN_W(ADDR_WIDTH)) enc(avalon_aligned_if.slave.ext, .enc_en, .wr_en_vec); ... endmodu

在这个例子中,当我在“enc_en”中输入一个点时出现了一个错误,我的实现有什么问题吗

module some_top_module();
....
logic [NOF_PORTS-1:0] wr_en_vec;
logic [NOF_PORTS-1:0] rd_en_vec;
logic enc_en;
encoder #(.IN_W(ADDR_WIDTH)) enc(avalon_aligned_if.slave.ext, .enc_en, .wr_en_vec);
...
endmodule

module encoder #(parameter IN_W = 2)(enc_in, enc_en, enc_out);

function integer expb2 (input [31:0] value);
for (expb2  = 1; value > 0; expb2  = expb2 << 1) begin
value = value -1;
end
endfunction

localparam OUT_W = expb2(IN_W);

input logic [IN_W-1:0] enc_in;
input logic enc_en;
output logic [OUT_W-1:0] enc_out;
 ...
 ...
 endmodule
modulesome_top_module();
....
逻辑[NOF_PORTS-1:0]wr_en_vec;
逻辑[NOF_PORTS-1:0]rd_en_vec;
逻辑工程师;
编码器#(.IN_W(ADDR_WIDTH))enc(avalon_aligned_if.slave.ext、.enc_en、.wr_en_vec);
...
端模
模块编码器(参数输入W=2)(enc输入、enc输入、enc输出);
函数整数expb2(输入[31:0]值);

对于(expb2=1;value>0;expb2=expb2您的语法是非法的。VCS会产生一个有用的错误:

  The two types of module port connections, by ordered list and by name, shall
  not be mixed.
如果没有前导的
,您将使用有序端口列表;如果前导的
,您将按名称使用端口列表

encoder #(.IN_W(ADDR_WIDTH)) enc(avalon_aligned_if.slave.ext, .enc_en, .wr_en_vec);
//                                 by-order                    by-name
参考IEEE标准1800-2017第23.3.2节模块实例化语法