我尝试在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
答案 0 :(得分:0)
您尚未定义返回类型,或者您需要从package
导入定义。您还要将类型名称与函数体内的函数名称混合使用。
答案 1 :(得分:0)
正如塞尔所说,至少,你似乎在引用一个错误的文件/模块(两个“rr”)。另外,请记住,Systemverilog / verilog区分大小写的Divider / = divider