UVM macros & variable code-completion
This release fixes a couple of issues with define and macro compiler directives and enables scoped code-completion for variables and objects.
- Fix for #8 an issue with code completion for
module
,interfaces
, andpackage
- Fix for #12 an issue with inline contraints in defines (i.e
foo.randomize() with ...
) - Fix for #13 an issue with expansion of cross-file nested defines
The compile directives issues made UVM macros not expand correctly and also incorrectly reported syntax errors in some cases. Read on to see UVM macros like you have not seen them before :-)
This release also enables scoped based code-completion for all code objects. Code-completion happens automatically as you type [Ctrl]+[Space]
also invokes it (with a more in-depth search). I need your help to track down issues! First, please look for places where code-completion doesn't work and report it. Secondly, code-completion is bare bones at the moment. It does respect scope but doesn't look for other clues so please report examples where code-completion suggest incorrect options - for example a module
reference inside a function
. It's relatively easy to restrict what code-completion reports depending on the scope, but I need help with examples!
UVM macros like you haven't seen them before!
One of my pet-peeves with UVM is its over-reliance on macros. I can't for the life of me remember what all the UVM macros do and trying to parse through them is head-ache inducing. There are macros within macros within macros! Argh!
With this release, Edaphic Studio supports UVM macros better. Just hover over any macro to see the actual expanded code the macro generates. Like this:
This expansion happens while you type and errors are reported directly in the editor. Take a look at this example video for details:
A common issue with macros is cryptic syntax error messages - linking errors back to provided arguments is hard. Edaphic Studio error messages are no better than your compiler at the moment, but at least the error checking is done live as you type. Advanced Live error checking saves compile cycles!
Finally here is a short video highlighting my issue with UVM. There has to be a better way to implement whatever this is! At least my editor provides some clues to what it does if you happen to forget: