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',它是一個變量並導致此錯誤。 但是,您可以通過http://www.project-veripage.com/plusarg.php查看'$ value $ plusarg'的使用情況 – Krouitch
您的模擬器應該支持'$ value $ plusargs';它在IEEE1364-2001中增加了,所以2005年以後的所有模擬器都應該支持它。檢查上面的行。 '真正的READ_FREQ'缺少一個';' – Greg