Navigate VHDL Signals

The idea of having a power feature for tracking signals throughout a design is almost as old as Sigasi software itself. A recent support question from a customer put this feature request back at the top of our minds.

This is the scenario: you see a signal in a certain component and you wonder who drives it and who reads it. In real life, there are no guarantees that the name of this signal is preserved throughout the design hierarchy. You want to know about all the different names for the signals because you might consider cleaning things up. After all, you do have a nice tool that can do automatic rename refactorings!

So, what should the user interface look like? Triggering the search command will be easy. We'll define a configurable keyboard shortcut, and you'll be able to right-click on the signal and select a search function. The hard part is how to display the search results.
Block DiagramBlock Diagram

Which results do you want to see?

  • All places where this signal is written and read?
  • All declarations of relevant ports and signals?
  • All relevant port associations in corresponding instantiations?

How should this be structured? Hierarchically? Per file?

There are some optional commands that might be useful. On the other hand, they might clutter up the user interface:

  • Find drivers
  • Find loads (what is the correct name here?)
  • Rename across hierarchy

Let us know what you think: would you give a high priority to this feature? How should we display the results?

Here are some proposals for the output:
Find Signals per FileFind Signals per File Find Signals in HierarchyFind Signals in Hierarchy

Do it like Synplify (or Planahead?)

Synplify's graphical RTL view has things like "goto driver" "show me all the destinations" - those are the things I am usually interested in on signals, not "where they are defined" or "instantiated".

So, my thoughts would be:

  • Signal definitions as "pop-ups on hover".
  • A "goto driver(s)" shortcut which populates the search results. This could also be intelligent - if there's only one drivers (and 99% of the time that's true) just "goto driver" straight, without going via the search box.
  • A "goto load(s)" shortcut which also populates search results.
  • And maybe "goto ultimate driver" for when a signal is assigned from one place to another so you can find the "first" driver.
  • Also cool, (but might put you into full-synthesis territory) "show me the synchronous sources..." and even "...and their clock domains" so you can "trace back" avoiding simple (or complex!) combinatorial logic.
  • And the converse - "show me all the synchronous reads" of a signal (and their clock domains)

Awesome feature

I spend most of my time tracing signals around designs to see where they come from and where they are used so for me this is a very high priority feature which I would use all the time and would justify the license fee on it's own!

Martin hit most of the features I believe.

A block diagram that shows where the signal is driven from and used would be fantastic as long as it is clickable to jump to the relevant part of the design.

It would also be good to have a hierarchical text output for cases where a block diagram becomes too unwieldy.

In term of sorting, I think the signals should be displayed in terms of design hierarchy with the filenames also being displayed so the file can be easily opened too.

Great feature that is often requested

I have proposed Sigasi to a number of engineers in the past year and many of them desire to have a feature similar to this available. When working with a large code base, or an unfamiliar one--Signal renaming is a problem. Navigation of a signals purpose would be greatly aided by being able to see its progression through a code base.

This would help with that and be very welcome.

I hope you implement it, it is a great idea!

IF vs WHEN

We will implement this for sure. The question is just how to prioritize. But your input helps us put this feature higher on the wish list!

Thanks

Post new comment

The content of this field is kept private and will not be shown publicly.
By submitting this form, you accept the Mollom privacy policy.