Sigasi Studio 5.4

Released on 2023-12-15
Last modified on 2024-02-13

Sigasi 5.4 introduces many new UVM linting rules, simpler linting rule configuration, as well as VS Code diagrams and documentation generation.

As usual, Veresta  and our VS Code extension  benefit from all the changes not explicitly marked as Eclipse.

TL;DR

The Sigasi 5.4 release introduces a range of new XPRT linting rules specifically for UVM. For a limited time, we would like to offer our Sigasi Studio XL license users a chance to enjoy these UVM linting rules through our new ✨ XPRT preview. As of the 5.5 version, these features will be available only to Sigasi Studio XPRT users.
Want to know more about our UVM features, or would you like to upgrade your license? Contact us.

To complement these UVM linting rules, we added a bonus general Verilog linting to prohibit certain macros.

Meanwhile, we gave VHDL a highly configurable linting rule to flag missing labels.

Keeping with the theme of linting rules, their configuration just got simpler and safer in Eclipse. The preference page contains a search field to quickly find the rule to configure. Parameter values are now validated when configuring rules. On top of that, you will find the multi-text editor is more streamlined.

Eclipse is not the only IDE favored in this release; VS Code has received many new features, too. It gained linting rule configurability through a new preference page, though, more importantly, we added full diagram support and documentation generation for our VS Code users, too.

Finally, this release sees a wide range of over 60 bug fixes and improvements.

P.S.: For consistency and ease of use, we updated some default linting rule severities. As a result, you might see a different number of linting violations at differing severity levels in your projects after upgrading to Sigasi 5.4. Learn more

UVM Linting Rules

Note that these rules are temporarily available to Sigasi Studio XL users in this 5.4 release through ✨ XPRT preview. As of 5.5, they will only be available to Sigasi Studio XPRT license holders.

Unregistered UVM Object

To fully utilize UVM’s functionality, objects and components need to be registered with the factory through one of the utility macros.

This rule can be configured to allow unregistered virtual UVM objects.

Learn more

Incorrect Utility Macro

UVM objects are registered through uvm_object_utils. However, UVM components have to be registered using uvm_component_utils.

my_object is a uvm_object so it requires uvm_object_utils. There is a Quick Fix for these kinds of small oversights.

Learn more

UVM Object Name Does Not Match Variable Name

To facilitate debugging, the variable name in a create method should equal the UVM object name.

In this instance, the variable name m_sequencer does not match the object’s name “sequencer1”. Such a mismatch can be confusing, especially when debugging.

Learn more

Type Argument Value Does Not Match Containing Class

Some UVM macros require the first argument to equal the containing class.

Due to copy-pasting code from my_component to my_other component, the incorrect class is passed to the uvm_component_utils macro.

Learn more

Unexpected Output System Task

To prevent overloading your simulations, you should use UVM’s granular logging.

$display will indiscriminately log at all times, while `uvm_info allows for control over the logging verbosity.

This rule can be configured to report file output system tasks such as $fdisplay and $fwrite too.

Learn more

UVM Phase Method Does Not Call Superclass Method

Whenever you subclass a user-defined class, the superclass’ phase method should be called when they are overridden.

leaf_comp::build_phase overrides middle_comp::build_phase, and thus the former should call the latter.

Learn more

Incorrect Instantiation of UVM Object

Instead of calling the raw constructor new(), UVM objects and components must be instantiated by the factory to allow UVM to use overloaded types.

Learn more

Incorrect Override of UVM Object

When overriding UVM objects or components, the overriding type needs to be a subclass of the overridden type.

In this case, my_component is not a subclass of base_object.

Learn more

Deprecated UVM API

With the many UVM versions come many deprecations.

For example, the uvm_do_with macro was deprecated in UVM 1.2 and was subsequently removed in UVM 2017.

This rule can be configured to target a specific UVM version, allowing you to gradually prepare for UVM upgrades.

Learn more

Incorrect Constructor for UVM Object or Component

UVM mandates that a UVM component has a constructor with a string name and uvm_component parent argument. The implicit constructor does not have these.

A similar constraint is validated for UVM objects.

Learn more

Bonus: Prohibited Macro

In UVM and Verilog in general, some macros are often discouraged, whether because of deprecation, coding style, or company guidelines. It is now possible to flag such prohibited macros in Sigasi.

In UVM, for example, you can choose to create transactions manually. Prohibiting `uvm_do would then be a good idea.

Learn more

Missing Label

In VHDL, coding guidelines often enforce the use of labels for certain constructs.

This highly configurable linting rule allows you to do just that. You can differentiate between labels, end labels, names, and end names where applicable.

Learn more

Simpler Linting Rule Configuration

In this release, we made linting rule configuration simpler through changes to the preference page.

  • Added a search bar
  • Added validation for all rule configuration values
  • Improved usability of the multi-text input fields
Learn more

VS Code Sneak Peek

Our VS Code extension is picking up steam. This release adds full diagram support, documentation generation, and linting rule configurability. Read up on all the new changes in the changelog .

Full Diagram Support

All the diagrams in Sigasi Studio for Eclipse are now available in VS Code: Block Diagram, State Machines, and Dependencies. Learn more

Note that a Sigasi Studio XPRT license is required for these.

Documentation Generation

With diagram support added, generating and exporting the documentation from VS Code is also possible.
Learn more

Linting Rule Configuration

All Sigasi linting rules are now fully configurable per file, folder, or project.
Learn more

Quality of Life

  • Lowered priority for formatter tags autocomplete suggestions
  • VHDL Fixed Auto Indentation following function prototype declarations and assignment statements with when clauses
  • VHDL Show units of measurement in a well-known unit instead of using the smallest one, e.g., 10000 fs10 ps
  • VHDL Added formula and solution to hovers when constant propagation is applied
  • Improved Hierarchy View
    • VHDL Removed redundant No constants/generics nodes
    • VHDL Added missing labels for positional generic associations in instantiations
    • Verilog Added missing branches for conditional statements
    • Verilog Added missing labels for assignments to arrays
    • Eclipse Adopted a new icon Hierarchy icon to differentiate from the Class Hierarchy View
  • Verilog Eclipse Improved Class Hierarchy View
    • Added differentiating icons for variables, tasks, classes, constructors, enums, and more
    • Added a visual indication of member visibility and whether a member is static or overridden
  • Eclipse Fixed issue with inconsistent sizing of hovers on Linux
  • Eclipse Improved the initial selection of export wizards
  • Eclipse Improved the available information on the License Preference Page
  • Eclipse Pick up renamed VUnit tests when rerunning a test suite

Further New and Noteworthy

  • Added Quick Fixes to suppress problems file-, library-, or project-wide
  • Added automatic building following a change to the contents of the .settings folder
  • Extended the Verilog Keywords in VHDL linting rule with entity ports and generics
  • VHDL Added vertical alignment to Template Autocomplete suggestions
  • VHDL Added support for VHDL 2019 attributes
  • VHDL Added constant propagation in hovers and linting rules for the 'reverse_range attribute
  • Verilog Improved preprocessor syntax error messages
  • Verilog Added formatting rules for
    • typedef
    • constraint
    • anonymous program
    • randsequence
    • randcase
    • primitive
    • module parameters
    • covergroup
  • Eclipse Add to build adds the selected resource to the parent library instead of work
  • Eclipse Improved VUnit support
    • Added link to VUnit documentation in its preference page
    • Support using a run.py within the Common Libraries folder
    • The VUnit JSON library is now automatically linked when it is used in the run.py
  • Eclipse Handle extended identifiers (\RT L\ and \sv$module ) in the Sigasi CSV Auto Export
  • Eclipse Added the ${sigasi_toplevel:alt} variable
  • Eclipse Capitalized menu items consistently
  • Eclipse Started using Cadence XCelium binaries instead of the deprecated Cadence NCsim ones when Cadence is selected as Toolchain

Updates and Deprecations

  • Removed the Naming convention configuration uses syntax which is deprecated validation
  • Eclipse JustJ  - Sigasi Studio ships with JustJ JRE 17.0.9.

Updated Linting Rule Severity

Some VHDL linting rules had their default severity adjusted. If you did not specify a custom severity for them, you might see fewer (or more) problems in existing projects.

RuleOldNew
Deprecated IEEE Packages and Non-Standard Packageswarninginfo
Space Before the Physical Unitwarninginfo
Incomplete Port Maps and Generic Mapswarningignore
Capitalization of Identifierswarningignore
Positional Association in Instantiationswarningignore
Order of Associationswarningignore
Type validationwarningerror
Unconstrained Signal or Variable of Integer Typeignorewarning for RTL

Talkback Changes

  • Added the Sigasi version to every Talkback message

Bug Fixes

  • Fixed the up and down icons in the Net Search in the presence of duplicate nodes
  • Improved Block Diagram View
    • Fixed missing update when changing only a port direction
    • Fixed missing connections after collapsing a block
    • VHDL Added a P character in the otherwise empty block of unnamed processes
  • Improved the Dependencies View
    • Removed self-references
    • Fixed the initial state of the Show all files in project button
  • Improved Autocomplete
    • VHDL Fixed empty argument names and types in procedure suggestions
    • VHDL Removed invalid entity instantiation suggestions
    • VHDL Fixed missing autocomplete in the configuration construct
    • Verilog Fixed rare missing preprocessor autocomplete
    • Eclipse Fixed overriding of the selected text when holding Ctrl while applying an autocomplete suggestion
  • Improved Formatting
    • VHDL Added missing formatting for parameter types
    • Verilog Fixed leading whitespace during formatting of included files
    • Verilog Fixed rare case where formatting produced invalid code
  • VHDL Improved Quick Fixes
    • Fixed the addition of a trailing comma when applying the Add missing associations Quick Fix
    • Fixed the addition of an empty line when applying the Missing generic map Quick Fix
    • Fixed rare cases where the Add missing associations Quick Fix was not applied
  • VHDL Fixed false positive No matching subprogram when using VHDL 2008 or 2019
  • Verilog Fixed highlighting of backticks in preprocessor directives
  • Verilog Added missing links (Ctrl+click) when two conditional blocks have the same label
  • Verilog Removed duplicate naming convention warning when using enum element ranges e.g. enum {A[0:100]} e
  • Verilog Eclipse Fixed missing updates to the Class Hierarchy
  • Eclipse Fixed qualified name in the Find References title
  • Eclipse Fixed missing updates to the Libraries View
  • Eclipse Fixed incorrect project name shown in the Project Explorer
  • Eclipse Renamed references from Intel Quartus II to Intel Quartus
  • Eclipse Fixed severity editing on the linting rule preference page on the Turkish locale
  • Eclipse Fixed small inconsistencies in the tutorial project

Thank you for all the bug reports and for enabling Talkback. All your reports have helped us fix many issues that would otherwise have gone unnoticed.

Sigasi Studio 5.4.1 Point Release

On December 22, we released Sigasi Studio 5.4.1. This release contains the following changes and bug fixes:

Sigasi Studio 5.4.2 Point Release

On February 13, we released Sigasi Studio 5.4.2. This release contains the following changes and bug fixes:

System Requirements

  • Sigasi Studio standalone is supported on:
    • Windows 10 or Windows 11 64-bit
    • RedHat Enterprise Linux RHEL 7.9 64-bit or newer, including RHEL 8 and 9
      • Sigasi Studio depends on libXss.so which can be obtained by installing libXScrnSaver
      • Sigasi Studio depends on webkit2gtk4.0 which can be installed through your package manager of choice
    • More information on supported Linux OSes can be found on the Eclipse website 
  • Sigasi Studio as a plugin in your Eclipse installation:
    • Eclipse IDE 2021-03 up to and including Eclipse IDE 2023-03
    • Java JRE 11 or 17
  • Sigasi Studio extension  for VS Code:
    • Windows 10 or Windows 11 64-bit
    • RedHat Enterprise Linux RHEL 8 or 9 64-bit
    • VS Code >= 1.77 and < 2.0
    • Java JRE 11 or 17 (shipped with the extension)
  • Veresta 
    • Windows 10 or Windows 11 64-bit
    • RedHat Enterprise Linux RHEL 7.9 64-bit or newer, including RHEL 8 and 9
    • Java JRE 11 or 17 (shipped with Veresta)

We recommend having at least 4GB of memory and about 1GB of free disk space available for Sigasi Studio.

comments powered by Disqus