VHDL Emacs navigation using ctags are broken

As I have announced earlier, we want to demonstrate that Emacs VHDL mode is becoming outdated. I do this by comparing relevant and technical features of the Emacs VHDL mode and Sigasi. (I also realize that relevant and technical comparison will not be enough to convince those who are deeply infatuated.)

Today: finding a declaration

Finding a declaration is useful. Anybody who has access to this features uses it all day long, every day. People who do not have access to this feature do it manually. Imagine finding the declaration of a datatype or a constant. Even in a modest project (say 20 files of 500 lines) it is hard to keep track of all declarations in your head.

Emacs VHDL mode

Emacs cleverly uses ctags / etags. This tool creates an index of all declarations in a project. If you want to navigate to a declaration, Emacs searches this index to find out in which file and on which line something is declared. Ctags was a great innovation in its day, but it is becoming obsolete. Ctags finds declarations based on regular expressions (regex). It does not take proper scoping rules into account. Problems arise when the same name gets used more than once, or when your coding style happens to confuse the regexes.

Sigasi

Any modern VHDL design entry tool should use a proper VHDL analyser (or: parser). Only a full analysis of the source code can provide robust navigation. I've posted a screencast about VHDL code navigation a while ago.

Demoing Emacs

Here is a screencast that demonstrates what works and what does not work with Emacs VHDL mode and etags.
Should there be anything technically incorrect in this post, please feel free to correct me in the comments section below.

Comments

As far as finding a

As far as finding a declaration, I tend to use a slightly modified search word feature that mimics the vi * command. Once can search the EmacsWiki for Search At Point and there are a few options available for this ability. Creative use of the multi-window features of Emacs can also be useful (keeping a buffer open to a package, or to the top of the same file, etc.)

Best of luck with the Sigasi vs. Emacs crusade :-). I observe with interest.

(edited because I went back and re-read your previous vhdl-mode entry and felt what I wrote was redundant.)