我正在尝试学习Verilog并且我有一个Verilog模块,然后我想做的就是调用另一个文件并从我当前的模块中运行它。
所以我的模块如下:
module maths();
//register etc details
initial begin
`include "add.v"
end
endmodule
我从maths模块调用的add.v文件就像:
task add;
A = $random;
B = $random;
C = A + B;
$display("Answer: %d", C);
endtask
但我收到任务文件near "task": syntax error, unexpected "task"
和near "endtask": syntax error, unexpected "endtask"
中的错误。
我在How to call tasks from a separate module in Verilog?阅读了答案,但那里给出的答案是需要在初始或总是阻塞内调用任务,因为它在模块的初始块内。
我在哪里错了?
答案 0 :(得分:0)
`include "add.v"
module maths();
//register etc details
initial begin
add;
end
endmodule
至于问题,您在添加任务中缺少初始结束语句。任务总是需要这两个语句来包装您的任务代码。
所以,这应该有效:
reg A, B, C;
task add;
begin
A = $random;
B = $random;
C = A + B;
$display("Answer: %d", C);
end
endtask
不要忘记A,B,C声明:)!