Hello Tristan,
I had some more thoughs on the signal selection for the waveform, and I
made an example of a wave signal file (is there a better english therm
for that ?) that reflects them :

    # version 1.5

    # Comments begin with #

    # Display every signals, variables and generics of
sub_entity_a_instance
    top_level_instance/sub_entity_a_instance/*
    # But exclude reset and clk
    ! top_level_instance/sub_entity_a_instance/{reset, clk}

Another way to select several signals in a hierarchy would be through
indentation:
top_level_instance/sub_entity_a_instance/
  reset
  clk
I am not convinced that this is a better way, it's just for the record.
When there is a long list of signals, it makes sense to have multiple lines.
I am still open with how will be the syntax of the list.

Here is an example of a multiline list of signals :

top_level_instance/sub_entity_a_instance/ {
  sub_sub_entity_instance/ {
      e, f, g }
  h }

Or with a more "python-like" approach :

top_level_instance/sub_entity_a_instance/
  sub_sub_entity_instance/
      e, f, g
  h

    # Display every input and output signals of sub_entity_b_instance
and all the signals and variables in its architecture
    top_level_instance/sub_entity_c_instance:ports.{in, out}
    top_level_instance/sub_entity_c_instance:architecture

Honestly, this becomes to complex to me.  I am not sure you need that
level of power. But you can still do feature design.
Ok, maybe :ports.in and :ports.out are too much detailed for users needs, but I believe that :ports and :architecture are useful features. Sometimes a user is writing some code to interface an entity supposed to be bug-free or coming from 3rd party. In this case, it makes sense to save the port signals of this entity and not its internal signals, because this doesn't need to be tested and investigated but the code that interfaces it.

2) The wave signal file showed above is the final picture as I have
planned, but at the beginning the file format supported will probably be
more basic.

Yes, that's important. No need to have a very powerful feature if nobody would use all of it. In order of importance:
1) Select a sub part of a design, ie:
top/sub1/sub2/***
2) Select signals at a level, ie:
top/sub1/*
3) Select a particular signal:
top/sub1/sub2/sig1
4) Regexp:
top/sub[1-3]/sig[a-z]
5) Negation
! top/sub2/sigk

Having only 1) would already be great!
I would switch 4 and 5. Both negation and regexp are nice feature to spare some lines of writing, but I believe negation has a bigger impact for that purpose and will probably be used more frequently.
If we have for example :
    top/***
    ! top/sub1/sub2/***
it will probably requires a lot more line to do it without the negation and it will be easy to forget some signals to be saved. Regexp can be really helpful with "for generates", but otherwise I believe that we can live without it in most designs. And the negation seems a lot easier to implement at first glance.

One future step could be to write also a GtkWave save file to have the signals displayed in the right order and right format without extra work for the user with the exception of the signal formatting that needs to be specified in the trace configuration file.

3) Here ":<category>" works like a filter that reduce the selection
result to <category>.

That's clear.  But then, what should be written:
top/sub1/arch:ports
top/sub1/arch/*:port
So you mean to write top/sub1/arch/*:ports instead of top/sub1/arch:ports ? Yes that looks more consistent to me.

Cheers,
Jonas
_______________________________________________
Ghdl-discuss mailing list
Ghdl-discuss@gna.org
https://mail.gna.org/listinfo/ghdl-discuss

Reply via email to