Go to any object's definition

Edaphic Studio provides SystemVerilog aware, built-in navigation that allows you to go to the definition of any code object quickly. It's easy to use, and once you get used to it, you will use it all the time. It makes understanding any code so much easier.

The keymap [Ctrl]+b ([Command]+b on the Mac) takes you to the definition of any code object be it a variable, class, module, task, function, etc. Code navigation also works in reverse - If you hit [Ctrl]+b while standing on a definition, it brings up a list of all usages of the current object.

The code navigation is syntax, scope, and hierarchy aware which means it will always take you to the correct definition. Code navigation is dynamically updated and is not dependent on external tools or regular expressions lists.

When you place the cursor on an object, the editor automatically highlights all usages of it in the same file which makes it easy to glance its usages quickly.

Below are a few examples of how it all works

 
 

Simple navigation example

This short animation highlights how easy it is to go to the definition of any SystemVerilog object. Merely place the marker on any code object and hit ctrl-b.

You will also want to learn the keymap for navigating back. On Linux it's [Alt][Shift][Left Arrow], on Windows it's [Ctrl][Alt][Left Arrow] and on the Mac [Command]+[

 

Correct code navigation based on syntax understanding

Syntax aware navigation

It is not uncommon, and legal, in SystemVerilog to name a module instantiation the same name as the module. Since Edaphic Studio understands SystemVerilog syntax, it correctly knows what objects refer to the instance and what refers back to the original module. In the screenshots above you can see that the editor resolves the usages correctly.

 

Edaphic.Studio understand variable scope and shadowing.

Scope aware navigation

Edaphic Studio correctly understands object scoping. It's bad coding practice to have one variable shadow another variable, but Edaphic Studio will still go to the correct definition as can be seen in the examples above.

This understanding of scope makes it easy to rename variables even when they have the same name.

 

Edaphic.Studio follows class inheritance rules to find definitons of functions

Class based navigation

Edaphic Studio will follow class inheritance rules to figure out what class members are available. Becuase of this it correctly identifies the function referred to for variable instance as can be seen in this basic example.

Edaphic Studio does this resolution on the fly for real-world projects using UVM or other packages.