Verilog功能 - 无法弄清楚我的错误

时间:2018-04-09 01:19:01

标签: function compiler-errors syntax-error verilog system-verilog

我尝试在Modelsim中编译此代码并继续收到错误:

** Error: (vlog-13069) q3.sv(2): near "Dividerr": 
syntax error, unexpected IDENTIFIER, expecting ';' or '('.

该错误引用了我的代码的第2行。我不确定我做错了什么。有人可以启发我或突出我在这里缺少的东西吗?我想编译这个模块并能够为它编写一个测试平台并最终进行模拟,但是这个错误让我很难过。我习惯了verilog,但不是systemverilog,我觉得这很容易解决。

以下是代码:

module integerDiv#(parameter width=16)();
    function Divider Divide;
        input [width-1:0] A, B;
        reg signed [width-1:0] D;
        reg [width-1:0] Result, Remainder;
        integer i;
        divider.Result_ = {width{1'b0}};
        for (i=width-1; i>=0; i=i-1) begin
            Result = (divider.Result_ << 1 ) + A[i];
            Remainder = divider.Result_<<1;
            Remainder = {Remainder[width-1:1], A[i]};
            D = Remainder - B;
            if ( D < 0 ) begin
                divider.D_[i] = 1'b0;
                divider.Result_ = Result;
            end else begin
                divider.D_[i] = 1'b1; 
                divider.Result_ = D;
            end
        end
    endfunction
endmodule

2 个答案:

答案 0 :(得分:0)

您尚未定义返回类型,或者您需要从package导入定义。您还要将类型名称与函数体内的函数名称混合使用。

答案 1 :(得分:0)

正如塞尔所说,至少,你似乎在引用一个错误的文件/模块(两个“rr”)。另外,请记住,Systemverilog / verilog区分大小写的Divider / = divider