Go to Symbol
Use Go to Symbol when you know the name of a module, class, function or macro but not the file it lives in. Choose Navigate | Symbol… (⌥⌘O on macOS, Ctrl+Alt+Shift+N on Windows/Linux) and start typing: the list shows the matching declarations in your project, and Enter opens the one you select. A symbol here is a name of one of the kinds listed under What is listed: a module, interface, program, package, class, checker, primitive, function, task or macro.
Try it
Section titled “Try it”The steps use the sample project; open it and wait for indexing first. Nothing is edited, so there is nothing to undo.
- Press ⌥⌘O (Windows/Linux: Ctrl+Alt+Shift+N) and type
my_driver. The classmy_driverfromuvm/my_pkg.svis listed; press Enter. The editor opensuvm/my_pkg.svat the class, and the popup closes (Escape closes it without opening). - Open the popup again and type
is_done: the function inrtl/counter_pkg.svis listed. Press Enter: the file opens at the function. - Open the popup again and type
LANES, thenCOUNTER: each macro defined inrtl/defines.svhis listed. Matching ignores case, so other names that contain the same letters (such as the modulecounterforCOUNTER) may be listed too: choose the row that showsrtl/defines.svh. Press Enter to open its`define(the line that starts with`define LANESor`define COUNTER), or Escape to close the popup. - Open the popup again and type
state: no row is listed for the variablestateinrtl/counter.sv, because variables, types (state_t) and enum values (IDLE,COUNT,DONE) are not in the list, even though functions of the same package are. Other names that contain “state” may appear; the point is that none of them is the variable inrtl/counter.sv.
If a name you expect is missing, see If it doesn’t work.
What is listed
Section titled “What is listed”- Listed: modules, interfaces, programs, packages, classes, checkers, user-defined primitives (UDPs), functions, tasks and
macros (
`define). That includes functions and tasks declared inside modules, packages and classes, and checkers declared inside modules and packages. - Not listed: signals, ports, parameters, variables, types (typedefs), enum values, class properties and other names inside a scope. For those use Find Usages or Go to Declaration.
The IDE keeps a background index of these names, so the list appears without opening files, in large projects too (once the first indexing has finished).
An out-of-block method body (function void my_class::f(), a method written outside its class) is listed by its method
name. DPI imports (functions imported from C), constructors (new) and prototypes without a body (extern,
pure virtual) are not listed.
If it doesn’t work
Section titled “If it doesn’t work”| You see | Likely cause | What to do |
|---|---|---|
| The popup is empty or a name is missing | The project is still indexing | Wait for the progress bar at the bottom right to finish |
| A name is missing | The file is not inside the opened project folder | Open the folder that contains it (Your first project) |
| A name is missing | It is in code an `ifdef switches off |
See Conditional compilation |
| A variable or port is not found | Only declarations of the kinds above are listed | Use Find Usages or Go to Declaration |
| The shortcut does nothing | Your keymap differs, or on a laptop you must hold Fn | Use Navigate | Symbol… |