Parameter info
You do not have to open a declaration to remember the order of the arguments, the names of the ports or the parameters:
a popup lists them as you type, and the one at the caret (the text cursor) is shown in bold. Inside the parentheses of a
call, an instance or a parameter list, View | Parameter Info (⌘P on macOS, Ctrl+P on Windows/Linux) opens it.
It also opens by itself shortly after you type (, and after you choose from the completion list a function, task, system
task or macro that takes arguments.
Try it
Section titled “Try it”The steps use the sample project; open it and wait for indexing first.
- Open
rtl/top.svand put the caret right after.count(in the instanceu_counter. Press ⌘P (Ctrl+P): the popup shows the ports ofcounter,input logic clk, input logic rst_n, output logic [7:0] count, output logic done, withoutput logic [7:0] countin bold. - Put the caret right after
counter #(on the same line and press ⌘P (Ctrl+P): the popup shows the parameterint MAX = 10(the declared default; this instance overrides it with 20). - Open
rtl/counter.sv, put the caret right afteris_done(in theassignline and press ⌘P (Ctrl+P): the popup shows the argument of the package function,state_t s(no direction is shown becauseis_donedeclares none). - In
rtl/counter.sv, put the caret at the end of the linestate_t state;, press Enter and typeinitial $display(. No shortcut is needed: the popup opens by itself and showsargs…, which means any number of arguments. Press Escape, then ⌘Z (Ctrl+Z) until the line you typed is gone.
If no popup appears, see If it doesn’t work.
What it shows
Section titled “What it shows”| Inside | Example | Shows |
|---|---|---|
| A function or task call | add(1, , obj.run(, pkg::twice( |
Its arguments with direction, type and default: input byte data, output bit ok, input int retries = 3 |
| A constructor call | super.new(, h = new(, my_item it = new( (also through a typedef of the class), h = my_item::new( |
The arguments of the class’s own new; <no parameters> if it declares none (its implicit new() takes no arguments; constructors are not inherited) |
| A system task or function | $fopen(, $display( |
Its arguments, as listed in IEEE 1800-2017 (filename, [type]; args… for any number) |
| A macro call | `MAX(1, |
The macro’s formal arguments |
| An instance’s port list | counter u(.clk(clk), .count(, counter u(clk, , counter u[3:0]( |
The ports of the module, interface or program |
| A parameter value list | counter #(, registry #(.T(, pkg::registry #( |
The parameters that can be overridden (not the localparams), with their defaults |
Which entry is bold
Section titled “Which entry is bold”- By position: the commas before the caret at the list’s own level count; commas inside an argument’s parentheses, brackets or braces do not.
- By name: in a list connected by name, the one named after the
.you are in (.count(, also while you are still typing the name:.cou). In such a list a position after a comma highlights nothing. - A
.inside an argument (s.lhs,bus.data) is member access, not a connection. - When there are more arguments than parameters, nothing is bold and the signature is greyed out.
- In nested calls it shows the innermost one (inside a parenthesized expression or a cast in an argument, the call around it). A popup open on a call stays while you type a nested call in its arguments, keeping its own bold argument.
- A function without arguments shows
<no parameters>.
When it does not open
Section titled “When it does not open”It does not open in comments and strings (an open one stays while the caret is in a string argument), in a declaration’s
own header (function int f(, module m #(), or when the name before ( does not resolve.
If it doesn’t work
Section titled “If it doesn’t work”| You see | Likely cause | What to do |
|---|---|---|
| No popup after ⌘P (Ctrl+P) | The name before ( does not resolve: the module, function or package is not in the project (or in its compile file, the .f list of sources such as sim.f in the sample project), or the project is still indexing |
Wait for the progress bar at the bottom right; check the declaration with Go to Declaration (⌘B / Ctrl+B) |
| No popup | The caret is in a comment or string, or in a declaration’s own header | Move into a call, an instance or a parameter list |
| The shortcut does nothing | Your keymap differs, or on some laptops you must hold Fn with the shortcut | Use View | Parameter Info |
The call is in inactive `ifdef code |
Inactive code is not resolved | See Conditional compilation |
See also Known limitations and Troubleshooting.