Views

Checks View

The Checks View presents all the check that, expect, assert and assume constructs in the project.

Open the view from menu Window > Show View > Other… > DVT > Checks

Double click on a check and jump to the source location.

../../_images/check_obj.png

check that

../../_images/assert_obj.png

assert

../../_images/expect_obj.png

expect

../../_images/assume_obj.png

assume

../../_images/edt_checks_view_notes.png
  1. Quick Search. You can use CamelCase, Simple Regex or Hierarchical Search to locate a specific element. By default, hierarchical search will show all descendants:

../../_images/edt_checks_view_quick_search_all_descendants.png
  1. Check Kind Filters. You may choose to hide assertions, assumptions, checks or expects - see the image below:

../../_images/edt_checks_view_filter_menu.png

Code Templates View

The Code Templates is located near the Navigator and Hierarchy views or you can open it from Window > Show View > Other… > DVT > Code Templates.

To insert a template in a code editor, you can either:

  • drag and drop it in the editor at a specific location

  • double click on it

  • click on Insert into editor button

  • right-click on it > Insert

Note

If you choose one of the last three actions mentioned above, the template will be inserted in the current editor at the current cursor’s positon. Please make sure you have an opened editor and the cursor is at the right position before adding the template!

../../_images/code-templates-view.png
  1. Insert the selected template into the current editor

  2. Create a new template

  3. Edit the selected template

  4. Remove the selected template (NOTE: you cannot undo this operation!)

  5. Refresh the view (if it doesn’t automatically update when you modify templates/projects etc.)

  6. Collapse/expand all

  7. Filter templates (you can filter them by: nature, context, name, project, description)

  8. Templates’ natures

  9. A global template

  10. A project template

  11. Templates’ contexts

  12. Preview the template’s pattern (it automatically updates when clicking on a template)

To create a new template, click on Create a New Template button on the toolbar:

../../_images/code-templates-view-new-template.png
  1. Template’s name

  2. Check Automatically insert if you want the template to expand automatically on Ctrl+Space when there is no other matching template available. It is usually good idea to leave the checkbox checked, otherwise you would get a template proposal “popup”

  3. Each template must be created under a project available in the current workspace (select [ global ] for a global template)

  4. Assign a nature - only natures relevant to the selected project will be displayed

  5. Template’s context - only contexts relevant to the selected nature will be displayed

  6. Templates’s description

  7. Code Pattern - embed variables in ${} e.g. ${variable_name} to enable the template proposal wizard when inserting the template into an editor

  8. Insert variables - here you can find some useful misc. predefined variables

Compile Order view

The Compile Order View presents the hierarchy of compiled files as it results from the `include compiler directives, starting from the project top files.

Open the view from menu Window > Show View > Other… > DVT > Compile Order.

Double click on a file to open it.

You can use CamelCase or Simple Regex to locate a specific element.

../../_images/edt_compile_order_view.png
../../_images/e_file_gray_obj.png

A file that is not part of the current project (files are not under the project directory).

../../_images/e_file_obj.png

A file in your project.

Right click on a module then Go To Import to jump to the import location. If the module is imported multiple times, a file selection dialog will pop-up.

Build Config Hierarchy

Press Show Build Config button to open the build config hierarchy as it results from the ‘-f’ compile directives, starting from the active build configuration.

../../_images/compile_order_build_config_hierarchy_button.png

Note

Each invocation section will be added under the coresponding build configuration file.

../../_images/compile_order_build_config_config_hierarchy.png

Quick Compile Order View

Press Ctrl+I to quickly open a compiled file.

The Quick Compile Order View will pop-up and and present a filterable list of all the compiled files in the project.

You can use CamelCase or Simple Regex to locate a specific element.

Select a file and press Enter or click to open it.

../../_images/edt_quick_compile_order_view.png

Console View

Any invocation (for example a DVT Generic run) output is dumped to the Console View.

The Console View is automatically raised at any invocation.You can also go to menu Window > Show View > Other… > General > Console to open the Console View.

Click on hyperlinks in the Console View to jump directly to the to source location.

../../_images/edt-console-hyperlinks.png

Coverage View

The Coverage View presents all the coverage groups and items in your project.

Open the view from menu Window > Show View > Other… > DVT > Coverage.

Double click on a group or item and jump to the source location.

../../_images/coverage_obj.png

cover group

../../_images/coverage_item_obj.png

simple item

../../_images/coverage_cross_obj.png

cross item

../../_images/coverage_transition_obj.png

transition item

../../_images/edt_coverage_view_notes.png
  1. Quick Search. You can use CamelCase, Simple Regex or Hierarchical Search to locate a specific element. By default, hierarchical search will show all descendants:

../../_images/edt_coverage_view_quick_search_all_descendants.png
  1. Cover Group.

  2. Cover Items.

Call Hierarchy View

The Call Hierarchy view presents the call tree of a method or TCM.

Place the editor cursor on a method definition or method call, right-click, and choose Show > Call Hierarchy, or press Ctrl+Alt+H.

../../_images/e_call_hierarchy_trigger_editor.png

You can expand nodes in the tree to further inspect the hierarchy.

../../_images/e_call_hierarchy_general.png

Tip

Double click on any node to jump to the method call.

Tip

Use Up and Down arrow keys to navigate the view, Left to collapse and Right to expand.

Tip

Right-click on a node to:

  • Remove from View Remove selected node from the tree.

  • Expand Children Expand all children of the selected node.

  • Expand Multiple Levels Expand a custom number of levels from the selected node.

  • Go to Declaration Jump to the declaration of the selected method.

Toolbar

../../_images/ch_callers.gif

Caller Hierarchy

Switch strategy to caller (disabled, only available for SystemVerilog).

../../_images/ch_callees.gif

Callee Hierarchy

Switch strategy to callee. Also refreshes the view.

../../_images/refresh_template.png

Refresh View

Recompute the call tree if dirty (see below).

../../_images/synced.png

Link with editor

Link tree selection with editor.

../../_images/history_list.png

History

Shows a list of methods on which Call Hierarchy was most recently called.

../../_images/prepend_package.png

Prepend Package Name

Show package name in labels.

../../_images/expand_tree.png

Expand Multiple Levels

Expand a custom number of levels.

../../_images/inspect_layout.png

Toggle Inspect Panel

Show/hide the inspect panel embedded in the view.

../../_images/layers.png

Analyze all root method extensions

Analyzes root method extensions.

Icons

../../_images/method_obj.png

Method call or method definition

../../_images/predefined_method_obj.png

Predefined method call

../../_images/edt-tcm-icon.png

TCM

Refresh

The Call Hierarchy view is not automatically updated at incremental build.

When you decide it’s time to recompute the view contents, simply click the Refresh toolbar button.

../../_images/e_call_hierarchy_needs_refresh.png

Note

Refresh may not retain the state of the method call tree.

Inspect View

Inspect View shows detailed information about various elements in DVT.

Open the view from menu Window > Show View > Other… > DVT > Inspect.

To inspect an element, simply select it in a view or click on its name in the editor.

Information about the selected element will be presented in the view.

Each element shown in the Inspect View starts with an information line regarding the file and line number of the element.

The Inspect View highlights the relevant source code lines of the selected element. These lines may be surrounded with additional source code to provide a context, if necessary.

You can customize the number of lines shown by going to Window > Preferences > DVT > Maximum Inspect View context lines, or by using the key mappings detailed in the Hotkeys chapter below.

WaveDrom Timing Diagrams

../../_images/e_inspect_view_standalone.png

Hotkeys

The following key mappings are available while interacting with the Inspect View.

CTRL+ALT+[

Decrease the number of context lines shown

CTRL+ALT+]

Increase the number of context lines shown

CTRL+K

Cycle through highlighted inputs shown inside the view

WaveDrom is a tool that draws timing diagrams (waveforms) from a simple textual description written in JSON. DVT renders WaveDrom waveforms in the Inspect View. The waveform diagram is updated on the fly (as you type).

../../_images/wavedrom_overview.png

The waveform description can be:

  • either embedded in comments, surrounded by @WAVEDROM_START…@WAVEDROM_END pragmas

  • or in files with *.json or *.json5 extensions

When the waveform description is found in a file with a valid extension, the Inspect View will process it’s content and render the diagram when opened. The waveform description file can also be embedded in comments using the @WAVEDROM_FILE pragma, followed by its location. The location of the file will be solved relatively to the project root.

To save the diagram as an SVG file, right-click on it in the Inspect View.

DVT offers the ability to view WaveDrom diagrams through tooltips, by hovering over any waveform written inside DVT editors.

Tip

The WaveDrom documentation is available here.

Note

To specify additional file extensions, use the +dvt_wavedrom_file_ext_add+<extension> build config directive. To clear the extensions list use +dvt_wavedrom_file_ext_clear.

Note

To specify additional search file locations to use in junction with @WAVEDROM_FILE pragma, use the +dvt_wavedrom_files_location_add+<location> build config directive. To clear the extensions list use +dvt_wavedrom_files_location_clear.

Note

By default, only waveform descriptions of maximum 5000 characters are rendered. You can change this threshold from menu Window > Preferences then DVT > Editors.

Note

DVT uses WaveDrom version 3.5.0.

Layers View

The e Language aspect oriented programming (AOP) capabilities allows you to “extend” some entities, for example a struct using extend or when, a method using is also, is first etc.. The definition of some entity might end up being spread over multiple files.

The Layers View provides a compact presentation of all the extensions (layers) of a specific entity. The layers are ordered according to the compile order as computed from imports in top files and test files.

Position the cursor on the entity name and press Shift+F3 or right click and chose Show > Layers from the menu.

The Layers View is automatically raised at any invocation. You can also open it from Window > Show View > Other… > DVT > Layers.

Double click on a layer and jump to the corresponding source location.

You can use CamelCase or Simple Regex to locate a specific element.

../../_images/edt_layers_view_method_notes.png
  1. Collect Layers. Applicable only for methods. Collects the source code from all method layers and dumps it to a temporary file.

  2. Show History List. Click to see the previously inspected layers (see the image below):

../../_images/edt_layers_view_history.png

In case of layers for a struct/unit you can right click and further inspect the Type Hierarchy View or the Verification Hierarchy View.

Sometimes you might want see the layers of the type of a field, the layers of the return type of a method or the layers of the type of the elements in a list. Just place the cursor on the element and press Shift+F3 twice (first time you will see the layers of the element, and second time the layers of its “associated” type, as defined above).

Quick Layers View

Position the cursor on the element’s name and press Ctrl+Shift+O.

The Quick Layers View will pop-up and present a filterable list with all of the selected element’s layers.

You can use CamelCase or Simple Regex to locate a specific element.

Select a layer and press Enter or click to jump to the corresponding source location.

../../_images/edt_quick_layers_view.png

Similar to the layers view, you can quickly inspect the “associated” type of an element by pressing the shortcut key twice.

Macros View

The Macros View presents all the preprocessing macros in the project (including define as and define as computed).

Open the view from menu Window > Show View > Other… > DVT > Macros.

Double click on a macro to jump to its definition.

Right click on a macro to view its Layers and Usages.

You can use CamelCase or Simple Regex to locate a specific element.

../../_images/preproc_define.png

Preprocessing define

../../_images/preproc_undefine.png

Preprocessing undefine

../../_images/preproc_ifdef.png

Preprocessing ifdef, ifndef

../../_images/preproc_define_as.png

Define As Macro

../../_images/preproc_define_as_computed.png

Define As Computed Macro

../../_images/preproc_define_as_inst.png

Define As Macro Match

../../_images/preproc_define_as_computed_inst.png

Define As Computed Macro Match

../../_images/edt_macros_view.png

Quick Macros View

Press Ctrl+Shit+D to quickly jump to a specific macro definition.

The Quick Macros View will pop-up and and present a filterable list of all the preprocessing macros in the project associated with the active editor or the current selected project from the Navigator (if no editor is open).

You can use CamelCase or Simple Regex to locate a specific element.

Select a macro and press Enter or click to jump to its definition.

../../_images/edt_quick_macros_view.png

Outline View

The Outline View presents an overview of the editor contents.

Open the view from menu Window > Show View > Other… > General > Outline.

You can click on an entity to jump to its location inside the current file.

You can use CamelCase or Simple Regex to locate a specific element.

../../_images/edt-reference-views-outline_view.png
../../_images/filter1.png

Filters…

Select what elements to show

../../_images/alphab_sort.png

Alphabetical Sort

If alphabetical sort is on, all the entities are sorted by name. By default the entities are presented in the definition order.

../../_images/category_sort.png

Category Sort

If category sort is on, entities are arranged by categories (fields, methods etc.), instead of being mixed as they appear in the file.

../../_images/expand_tree.png

Expand All

../../_images/collapse_tree.png

Collapse All

Quick Outline View

Press Ctrl+O to open the Quick Outline dialog. It presents an overview of your file.

You can use CamelCase or Simple Regex to locate a specific element.

../../_images/edt-reference-views-quick_outline_view.png

Outline View Preferences

You can configure the Outline View contents from menu Window > Preferences > DVT > e Language > Outline View.

../../_images/edt-reference-views-outline_view_prefs.png

Problems View

If a project contains errors, for example syntax errors, it will be indicated using decorators:

../../_images/edt-get_started-browse_err-navigator.png

You can use the Problems View to inspect the errors. Open the view from menu Window > Show View > Other… > General > Problems. Double clicking on some error will jump to the source location.

../../_images/edt-get_started-browse_err-fullscreen.png

Tasks View

../../_images/edt-reminders-CodeTasksView.png

You can embed reminders in your source files by adding comments prefixed by certain “keywords” called task tags.

There are three predefined tags:

  • FIXME - high priority

  • TODO - normal priority

  • XXX - low priority

All reminders are listed in the Tasks View. If it is not visible, open the view from menu Window > Show View > Other > General > Tasks.

Double click on a task to jump to the marker definition.

You can define custom reminder tags and assign them priorities:

  • Navigate to Window > Preferences > DVT > Task Tags :

../../_images/tasktag-preferences.png
  • You can specify if the tags should be considered case-sensitive and if the tag name should be displayed in Tasks View.

  • Click the Add… button on the right, enter the name of your tag and select its priority

../../_images/reminders-new_tag.png
  • Click OK in the New Task Tag and Preferences dialogs

DVT will recognize the new tag and highlight it in code comments.

Note

It is recommended to rebuild the project so that DVT rescans all files for reminders.

Types View

The Types View presents all the types (classes, structs, units, entities etc.) defined in your project.

Open the view from menu Window > Show View > Other… > DVT > Types.

Click on the Show Members button to show the Members pane.

Double click on a type or type member to jump to its definition.

Right click on a type or type member to search for Search for References (Usages, Readers or Writers) or further inspect the Type Hierarchy View or the Verification Hierarchy View, where applicable.

You can perform Search for Members.

Toolbar

../../_images/show_hide_ports.png

Show/Hide Members

Toggles the visibility of the members pane. Use the drop-down to chose placement (to the right side or below the types tree).

../../_images/category_sort.png

Sort by Category

Click to sort by category. Default sort order is alphabetical.

../../_images/expand_tree.png

Expand All

Expand all nodes in types tree.

../../_images/collapse_tree.png

Collapse All

Collapse all nodes in types tree.

Note

Type containers are also shown in the view, for example libraries, generate statements, etc. See this for more information on Types, Type Containers and Type Members.

../../_images/edt_types_view.png

Quick Types View

Press Ctrl+Shift+T to quickly open a specific type definition for the project associated with the active editor or the current selected project from the Navigator (if no editor is open).

The Quick Types View will pop-up and and present a filterable list of all the types in the project associated with the active editor or the current selected project from the Navigator (if no editor is open).

You can use CamelCase or Simple Regex to locate a specific element.

Select and press Enter or click to jump to its definition.

../../_images/edt_quick_types_view.png

Type Hierarchy View

The Type Hierarchy View presents the like-inheritance and the members of a struct or unit.

Position the cursor on the element name and press F4 or right click and choose Type Hierarchy from the menu.

The Type Hierarchy View is automatically opened at any invocation. You can also open it from Window > Show View > Other… > DVT > Type Hierarchy.

You can right click in the inheritance tree and further inspect the Type Hierarchy or see Usages.

You can use CamelCase or Simple Regex to locate a specific element.

../../_images/edt_type_hierarchy_view.png

history-list Show History List

Click to see the previously inspected types:

../../_images/edt_type_hierarchy_view_history.png

filter-diagrams Filters…

Select what members to show (methods, fields, events etc.):

../../_images/edt_type_hierarchy_view_members_filter.png

Quick Type Hierarchy View

You can quickly inspect and jump to a specific parent or child in the hierarchy. Press Ctrl+T with the cursor positioned on the element name.

The Quick Type Hierarchy View will pop-up and present a filterable list with all of the selected element’s hierarchy.

You can use CamelCase or Simple Regex to locate a specific element.

Select and press Enter or click to jump to the corresponding source location.

Tip

While the Quick Type Hierarchy View is open you can press Ctrl+T to switch between Full type and Supertype hierarchy.

../../_images/edt_quick_type_hierarchy_view.png

For methods you can also see the implementations along the hierarchy (icons are not grayed).

../../_images/edt_quick_type_hierarchy_view_method.png

UVM Browser View

The UVM Browser View is an intuitive entry point for exploring the components of a UVM-based or eRM-based verification environment.

It allows you to explore UVM-based types grouped by categories, like agents, monitors, BFMs, drivers or sequences and easily inspect the UVM flow specific API, like sub-instances, overridden phases or TLM ports.

Open the view from menu Window > Show View > Other… > DVT > UVM Browser.

You can use CamelCase or Simple Regex to locate a specific element.

../../_images/e-uvm-browser-presentation.png

Toolbar

../../_images/prepend_package.png

Prepend Package Name

Prepend the enclosing package name to the name of each element, useful when you explore for example all agents across packages.

../../_images/package.png

Group By Package

Group categories by package. You may chose to see for example all agents across packages or to explore all categories in a specific package.

The top panel presents all the UVM-based structs and units defined in your verification environment. For convenience they are grouped by categories like agents or monitors.

The inheritance hierarchy between elements is shown up to the UVM base type and down to when subtypes.

The categories and their corresponding base types are the following:

Category

Base type

Methodology

Agents

uvm_agent

UVM e

Agent Configs

uvm_agent_config

UVM e

BFMs

uvm_bfm

UVM e

Collectors

uvm_collector

UVM e

Config Params

uvm_config_params

UVM e

Drivers

any_sequence_driver

eRM

Envs

any_env / uvm_env

eRM / UVM e

Env Configs

uvm_env_config

UVM e

Items

any_sequence_item

eRM

Memories

vr_ad_mem

vr_ad

Monitors

uvm_monitor

UVM e

Ports

any_port

eRM

Registers

vr_ad_reg

vr_ad

Register Files

vr_ad_reg_file

vr_ad

Register Maps

vr_ad_map

vr_ad

Scoreboards

uvm_scoreboard

UVM e

Sequences

any_sequence

eRM

Signal Maps

uvm_signal_map

UVM e

Virtual Drivers

any_sequence_driver (of a virtual sequence)

eRM

Virtual Sequences

any_sequence (no item)

eRM

Phases

tf_phase_t

UVM e

Phase domains

tf_domain_t

UVM e

The bottom Members Panel panel displays members of the type selected in the top panel. You can toggle the UVM Members Mode on/off using the uvm-btn button.

In UVM Members Mode it displays the following members:

  • All unit instances

  • Fields whose type is or inherits from one of the base types defined in the table above

  • Fields whose type is or inherits from a type defined in the uvm_e, uvm_scbd and vr_ad libraries

  • Fields whose type is or inherits from uvm_accel_input_pipe_proxy or uvm_accel_output_pipe_proxy

  • Extensions of fields, events and methods introduced by calls to macros defined in the uvm_e, uvm_scbd and vr_ad libraries

  • Extensions of UVM Scoreboard Data Transformation methods

  • Extensions of UVM Scoreboard Match Process Customization methods

  • Extensions of e Language Phases and Predefined Methods, like run(), connnect_pointers(), pre and post_generate() etc.

  • Extensions of body(), pre_body() and post_body() methods of any_sequence

When the UVM Members Mode is off, the Members Panel behaves exactly like the Members Panel of the Type Hierarchy View.

UVM Sequence Tree View

The UVM Sequence Tree View presents the call tree of a sequence.

Place the editor cursor on a sequence, right click and choose Show > UVM Sequence Tree or press Ctrl+Alt+Shift+S.

../../_images/e_uvm_sequence_tree_editor_right_click_menu.png

The view is automatically raised and populated with the call tree of the selected sequence.

The call tree is made of all sub-sequences that are triggered by the selected sequence, in order, recursively down to leaf items.

../../_images/e_uvm_sequence_tree_view.png

The pre_body(), body() and post_body() methods of each sequence are analyzed, along with all TCMs called directly or indirectly from any of these methods.

Note

All relevant layers (extensions) of each TCM are analyzed according to their type (is also, is first, is only). A TCM layer is relevant if it belongs to a struct layer whose determinant is the same or included by the determinant of the sequence layer where the view was called.

Note

Only the modules loaded up to and including the module where the view is triggered are analyzed. For example, when triggered from a particular test, sequence calls in other tests are not analyzed. See also how DVT handles e Language Test Files and the Compile Order view.

Note

all of, first of and start actions are also shown.

Note

A sub-sequence may be called using a do action or started using the seq.start_sequence() function.

Tip

Double click on any node to jump to the sequence call.

Tip

Right-click on a sequence node to Show UVM Sequence Tree of the selected sequence. Practically set the selected sequence as root.

Toolbar
../../_images/history_list.png

Show History List

Click to see the previously inspected sequence call trees.

../../_images/prepend_package.png

Prepend Package Name

Prepend the enclosing package name to the name of each class.

Icons
../../_images/sequence_obj.png

Sequence.

../../_images/sequence_item_obj.png

Sequence item.

../../_images/fork_join_obj.png

All of/first of block.

../../_images/fork_join_process_obj.png

All of/first of branch, or start action.

Verification Hierarchy View

The Verification Hierarchy View presents the unit instance tree.

Position the editor cursor on the name of a unit and press Shift+F6 or right-click and choose Show > Verification Hierarchy from the context menu.

The Verification Hierarchy View opens with the chosen unit set as the top of the hierarchy. You can also go to Window > Show View > Verification Hierarchy to open the view.

../../_images/e-verification-hierarchy-presentation.png
  • verification_hierarchy_top Select Top drop-down menu/pop-up dialog to select from top units. By default, tops are considered all units that instantiate other units and are not themselves instantiated, such as the unit sys. You can specify the list of tops in the project’s build configuration using the directive +dvt_e_vtop+”pkg_name::SUBTYPE unit_name”.

  • history-list History List Click to see the previously inspected tops.

  • show_hide_ports Show/Hide Ports Shows or hides the ports of the selected unit. You can set the ports panel to the right or below the hierarchy.

  • alphab_sort Alphabetical Sort Sort instances and ports alphabetically. By default it is off, which means that the instances and the ports are presented in their declaration order from the source files.

The view label shows the current project, the current top unit and the number of instances in the hierarchy.

../../_images/e-verification-hierarchy-info-label.png

You can double-click on any unit or on any port to go to its declaration.

Right-click on a unit instance in the hierarchy and you have the following options :

../../_images/e-verification-hierarchy-menu.png
  • Show Usages (References) Search for the references of the selected instance. More details Search for References (Usages, Readers or Writers)

  • Show Layers Show the layers of the selected instance. More details Layers View.

  • Show Type Hierarchy Show the type hierarchy for the selected instance type. More details Type Hierarchy View.

  • Show Verification Hierarchy Set the selected instance as the top of the hierarchy and update the view.

  • Show Diagram Generate the UVM Component Diagram of the selected instance. More details UVM Components Diagrams.

  • Copy Copy the label text of the selected instance to clipboard.

  • Copy Hierarchy Path Copy the hierarchy path of the selected instance to clipboard. You can change the segment separator from Window > Preferences > DVT.

  • Open Type Declaration Go to the unit declaration of the selected instance.

Right-click on a port and you have the option to search for its usages or for its layers and show the constraints, also you can copy its name and the full hierarchy path of the selected port.

../../_images/e-verification-hierarchy-view-port-menu.png

You can use the filters to locate a specific instance or port. You may use slash ‘/’ characters to filter hierarchically one level and ‘//’ to filter hierarchically all the levels. You may use the dot ‘.’ character to filter instances that contain a specific port. See Quick Search in Views for more details.

For example, filtering hierarchically all the levels for a specific port name :

../../_images/e-verification-hierarchy-filtering-filter-hierarchy-and-port.png