Verilog函数应用程序

时间:2018-03-23 15:16:54

标签: verilog modelsim

在下面的代码中使用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

1 个答案:

答案 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 功能