$value$plusargs (string, variable)
This system function searches the list of plusargs (like the
$test$plusargs system function) for a user specified string. If a string is
found, the remainder of the string is converted to the type specified in the
user string and the resulting value stored in the variable provided. If a string
is found the function returns the value 1'b1. If no string is found matching,
the function returns the value 1'b0 and the variable provided is not modified.
The user string must be of the form:
"'plusarg_string''format_string'". The plusarg string is a name followed by
either = or + . The format strings are the same as the $display system tasks.
These are the only valid ones (upper and lower case as well as a leading 0 forms
are valid):
%b - binary conversion
%d - decimal conversion
%e - real exponential conversion
%f - real decimal conversion
%g - real decimal or exponential conversion
%h - hexadecimal conversion
%o - octal conversion
%s - string (no conversion)
%x - (undergound equivalent for %h)
%d - decimal conversion
%e - real exponential conversion
%f - real decimal conversion
%g - real decimal or exponential conversion
%h - hexadecimal conversion
%o - octal conversion
%s - string (no conversion)
%x - (undergound equivalent for %h)
The first string, from the list of plusargs provided to the
simuator, that matches the plusarg_string portion of the string specified by the
user will be the plusarg string available for conversion. The remainder string
of the matching plusarg (the remainder is the part of the plusarg string after
the portion that matches the users plusarg_string) will be converted from a
string into the format indicated by the format string and stored in the variable
provided.
If the size of the variable is larger than the value after
conversion, the value stored is zero padded to the width of the variable. If the
variable can not contain the value after conversion, the value will be
truncated. If the value is negative, the value shall be considered larger than
the variable provided. If characters exist in the string available for
conversion that are illegal for the specified conversion, the register should be
written with the value 'bx.
2. Examples:
<simulator> +FINISH=10000 +TESTNAME=this_test +FREQ=5.6666
+FREQUENCY
// Get clock to terminate simulation if specified.
if ($value$plusargs("FINISH=%d", stop_clock))
begin
repeat (stop_clock) @(posedge
clk);
$finish;
end
// Get testname from plusarg.
if ($value$plusargs("TESTNAME=%s", testname))
begin
$display("Running test %0s.",
testname);
startTest();
end
// Get frequency from command line; set default if not specified.
if (!$value$plusargs("FREQ=%0F", frequency))
frequency = 8.33333; // 166MHz;
forever begin
#frequency clk = 0;
#frequency clk = 1;
end
This code would have the following effects:
1. The variable 'stop_clock' obtains the value 10000.
2. The variable 'testname' obtains the value 'this_test'.
3. The variable 'frequency' obtains the value '5.6666'; note the final plusarg +FREQUENCY does not affect the value of the variable 'frequency'.
2. The variable 'testname' obtains the value 'this_test'.
3. The variable 'frequency' obtains the value '5.6666'; note the final plusarg +FREQUENCY does not affect the value of the variable 'frequency'.