私が持っていたいVerilogファイルは、別のファイルのinclude "maths.v"
であるいくつかの計算を行うタスクです。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
私が最初にある1つのコンパイルエラーを取得していますtask mathsfunction;
これはGlobal declarations are illegal in Verilog 2001 syntax.
です。私がこれまでに学んだことから、ちょうどタスク(モジュールではない、私はそれがモジュールであることを望んでいない)であるVerilogファイルはうまくいくはずですか?なぜこれが機能しないのか分かりません。
すべてのヘルプは
さらに詳しい情報を提供する必要があります。グローバル空間でタスクを宣言できます。あなたのメッセージは他のものと関連しています。 – Serge
私はLRMを私の前には持っていませんが、Verilogのすべてのバージョンは、グローバルスペース(モジュール外)のシグナル、タスク、関数、またはパラメータの宣言をサポートしていないと思います。私はSystemVerilogがそうしていることを知っていますが、そうすることは悪い習慣と考えられます。共有タスク、関数などを定義することが推奨されるのは、それらをSystemVerilogパッケージに入れることです。 – Greg