System Verilog のエラーを理解できない
-
26-09-2019 - |
質問
コードをコンパイルしてみました
module counter(
input clk,
input upSignal,
input downSignal,
output [7:0] count
);
always_ff @(posedge clk) begin
if (upSignal)
count <= count + 1;
else if (downSignal)
count <= count - 1;
end
endmodule
しかし、エラーが発生します
Error (10170): Verilog HDL syntax error at counter.v(7) near text "@"; expecting ".", or "("
それはどういう意味ですか?
解決
Quartus は一部の systemverilog をサポートしています。詳細はこちらのリンクをご覧ください >Quartus ヘルプ
システム Verilog を使用していることを quartus が自動的に認識するには、ファイルを something.sv と呼ぶ必要があります。
したがって、この場合、おそらく、 カウンタ.sv
ファイルが次のように呼ばれる場合 カウンタ.v, 、するとエラーが発生します。実際に Quartus II v10.0 でコンパイルできることが確認できました。
モジュールの出力ポートを reg に変更することをお勧めします。Quartus では問題は発生しませんでしたが、シミュレーターでは問題が発生します。
output reg [7:0] count
どうやってうまくいくのか教えてください。
乾杯
他のヒント
私は(こんにちはジョージ!ファンシーここであなたを見て)ジョージは正しいと思う、ファイルは、Verilog(ないSystemVerilogの)として解釈され、それがalways_ff理解できないようにします。
出力値の種類、IはSystemVerilogの内のロジックを使用することを好みます。その効果は同じですが、それゆえ、それは人々をつかまえることができるレジスタの思考だ。「その宣言 『REG』から離れる。
また、あなたがその特定のエラーメッセージが表示されました理由は、それがalways_ffだったかわからなかったので、それはそれはモジュール/インターフェース/機能の名前だったと仮定ということでした。モジュールは、「」で始まる可能性がポートマップを持つことができ、そして他のすべてがオープンブラケットが必要になります。
このコードのもう一つの問題。
カウント変数は、変数の型、このSystemVerilogのコードの典型的な論理型として宣言する必要があるので、は、カウント変数は手続きブロック(always_ff)から割り当てられます。宣言が含まれるべきである:出力のロジックをの[7:0]のカウント