Plus args are command-line switches supported by the simulator. Usually, they are application-specific. As per SystemVerilog LRM arguments beginning with the ‘+’ character will be available using the $test$plusargs and $value$plusargs PLI APIs. Plus args are very useful in controlling many things in your environment like controlling your debug mode or setting a value like the debug_level in your environment, set a value to select/deselect a particular field in your environment in your simulation.
What is the Syntax :
- $test$plusargs (string)
- $value$plusargs (string, variable)
This is a system function that searches the list of plusargs. For this system in build function, If a string is found the function returns the value 1’b1. If no strong is found matching, the function returns the value 1’b0, and the variable provided is not modified.
Let’s take an example, How should we use these functions in our environment to have control.
initial begin if ($test$plusargs("USER_TEST")) begin $display("Configuring User Test"); //Execute some code for this mode end end
Once you compile and later run the simulator with command-line argument: +USER_TEST , the output will be
Configuring User Test
Similarly, if you want to read values from the command line into variables the second system function will be handy
initial begin string testname; if ($value$plusargs("TEST=%s",testname)) begin $display(" Running TEST= %s.",testname); end end
Once you compile and pass some argument to the simulator as: +TEST=AXI_TEST , the output would be