我有一个verilog文件,我想要的是一个数学任务,然后我在另一个文件中执行include "maths.v"
,然后在mathsfunction;
中写入mathsfunction;
在其他文件initial begin - end
块,应该在这一点上运行的任务,如果我理解正确的话,代码如下:Verilog 2001语法中全局声明是非法的任务
Maths.v
task mathsfunction;
reg [0:31] x;
reg [0:31] y;
reg [0:31] z;
begin
x = $urandom;
y = $urandom;
z = x + y
end
#200
endtask
我得到一个编译错误,这是对第一行task mathsfunction;
这是Global declarations are illegal in Verilog 2001 syntax.
从我迄今为止学到的,有一个verilog文件只是一个任务(不是一个模块,我不希望它是一个模块)应该没问题?所以不知道为什么这不起作用。
任何帮助将是巨大的
您需要提供更多信息。任务可以在全局空间中声明。所以,你的信息与别的东西有关。 – Serge
我没有LRM在我面前,但我相信所有版本的Verilog都不支持在全局空间(即模块外部)声明信号,任务,函数或参数。我知道SystemVerilog的确如此,但这样做被认为是不好的做法。推荐的是定义共享的任务,功能等,是将它们放入SystemVerilog包中。 – Greg