1
私は、以下譲るとして「$の値$ plusargs」を使用する
module top();
...
reg data;
real READ_FREQ
initial begin
if (!$value$plusargs("READ_FREQ=%0F", READ_FREQ))
READ_FREQ = 197;
end
parameter wclk = 300;
parameter rclk = READ_FREQ;
always #(rclk/2.0) i_rclk = ~i_rclk;
...
endmodule
が欲しいが、私は上記のコードのコンパイル時に、私は私がどのように
irun: *E,VLGERR: An error occurred during parsing. Review the log file for errors with the code *E and fix those identified problems to proceed. Exiting with code (status 1).
irun(64): 12.10-p001: (c) Copyright 1995-2012 Cadence Design Systems, Inc.
file: ./top.v
parameter rclk = READ_FREQ;
|
ncvlog: *E,NOTPAR (./top.v,197|41): Illegal operand for constant expression [4(IEEE)].
ようなエラーをすることができます持っていますVerilogで$ value $ plusargsを使用しますか?
「$ value $ plusarg」はエラーの原因ではありません。パラメータは定数式、すなわち定数値または他のパラメータに対する演算しか取ることができない。 変数であり、このエラーの原因となる実際の 'READ_FREQ'を渡しました。 しかし、あなたは '$ value $ plusarg'の使用についてhttp://www.project-veripage.com/plusarg.phpを確認することができます – Krouitch
あなたのシミュレータは' $ value $ plusargs'をサポートする必要があります。 IEEE1364-2001に追加されたので、2005年以降のすべてのシミュレータがサポートします。上記の行を確認してください。 '本当のREAD_FREQ'には'; 'がありません。 – Greg