我有一個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