我尝试在 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
最佳答案
您尚未定义返回类型,或者您可能需要从 package
导入定义.此外,您将类型名称与函数体内的函数名称混合在一起。
关于function - Verilog 函数 - 无法找出我的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49724372/