在下面的代码中使用ModelSim时出现了一些编译错误。在编译器上弹出的错误是
near" assign&#34 ;:语法错误,意外分配,期待IDENTIFIER 或TYPE_IDENTIFIER或NETTYPE_IDENTIFIER。
`define WIDTH 8
module Parityfunc(input [`WIDTH-1:0] i_data, output o_parity_out, input parity_type);
function parity (input [`WIDTH-1:0] data, input parity_type);
begin
if (parity_type) // even parity
parity <= ^data;
else if (!parity_type) // odd parity
parity <= ~(^data);
end
endfunction :
assign o_parity_out = parity(i_data, parity_type);
endmodule // Parityfunc
答案 0 :(得分:1)
一种解决方案是在endfunction
后删除冒号。
`define WIDTH 8
module Parityfunc(input [`WIDTH-1:0] i_data, output o_parity_out, input parity_type);
function parity (input [`WIDTH-1:0] data, input parity_type);
begin
if (parity_type) // even parity
parity <= ^data;
else if (!parity_type) // odd parity
parity <= ~(^data);
end
endfunction
assign o_parity_out = parity(i_data, parity_type);
endmodule // Parityfunc
另一种解决方案是在冒号后添加函数名称:
endfunction : parity
请参阅IEEE Std 1800-2012,13.4 功能。