Skip to content

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.

The steps use the sample project; open it and wait for indexing first.

  1. Open rtl/top.sv and put the caret right after .count( in the instance u_counter. Press ⌘P (Ctrl+P): the popup shows the ports of counter, input logic clk, input logic rst_n, output logic [7:0] count, output logic done, with output logic [7:0] count in bold.
  2. Put the caret right after counter #( on the same line and press ⌘P (Ctrl+P): the popup shows the parameter int MAX = 10 (the declared default; this instance overrides it with 20).
  3. Open rtl/counter.sv, put the caret right after is_done( in the assign line and press ⌘P (Ctrl+P): the popup shows the argument of the package function, state_t s (no direction is shown because is_done declares none).
  4. In rtl/counter.sv, put the caret at the end of the line state_t state;, press Enter and type initial $display(. No shortcut is needed: the popup opens by itself and shows args…, 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.

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
  • 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>.

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.

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.