Discussion:
[Ghdl-discuss] Collaboration in the GHDL project
Jonas Baggett
2016-06-12 22:07:57 UTC
Permalink
Hello,

I am thinking about collaborating in this project. My name is Jonas
Baggett, I am an electronic engineer and I have 2 years of practice
working on VHDL projects. When I started to understand the programming
philosophy behind VHDL, I really find it interesting. At that period I
discovered Ada and I naturally liked this language because of its
similar programming philosophy.
I have already made simulations under GHDL of some of my projects some
time ago and really find that it is a promising software. So I would
like to participate in the improvement of this software. Where do you
think I can help you ? I believe this could be an interesting challenge
for me and as now I have only a temporary job not related to my field,
it will keep myself active in the field.

Cheers,
Jonas Baggett
Tristan Gingold
2016-06-13 18:21:39 UTC
Permalink
Post by Jonas Baggett
Hello,
I am thinking about collaborating in this project. My name is Jonas
Baggett, I am an electronic engineer and I have 2 years of practice
working on VHDL projects. When I started to understand the programming
philosophy behind VHDL, I really find it interesting. At that period I
discovered Ada and I naturally liked this language because of its
similar programming philosophy.
I have already made simulations under GHDL of some of my projects some
time ago and really find that it is a promising software. So I would
like to participate in the improvement of this software. Where do you
think I can help you ? I believe this could be an interesting challenge
for me and as now I have only a temporary job not related to my field,
it will keep myself active in the field.
Hello,

if you look at https://github.com/tgingold/ghdl there are many open
issues: some are bugs to be fixed and others are enhancements.
You can start from any of them.
You can also work on the FST waveforms dumper, or something very
different like interfacing with Python.

Do not hesitate to subscribe to this mailing list and to ask any
question.

Regards,
Tristan.
Andrey Gursky
2016-06-14 09:41:30 UTC
Permalink
On Mon, 13 Jun 2016 20:21:39 +0200
Post by Jonas Baggett
Post by Jonas Baggett
Hello,
I am thinking about collaborating in this project. My name is Jonas
Baggett, I am an electronic engineer and I have 2 years of practice
working on VHDL projects. When I started to understand the programming
philosophy behind VHDL, I really find it interesting. At that period I
discovered Ada and I naturally liked this language because of its
similar programming philosophy.
I have already made simulations under GHDL of some of my projects some
time ago and really find that it is a promising software. So I would
like to participate in the improvement of this software. Where do you
think I can help you ? I believe this could be an interesting challenge
for me and as now I have only a temporary job not related to my field,
it will keep myself active in the field.
Hello,
if you look at https://github.com/tgingold/ghdl there are many open
issues: some are bugs to be fixed and others are enhancements.
You can start from any of them.
You can also work on the FST waveforms dumper, or something very
different like interfacing with Python.
Do not hesitate to subscribe to this mailing list and to ask any
question.
Tristan,

since you've pointed only to the new github page, do you plan to migrate
the tickets from sourceforge [1]?

Regards,
Andrey


[1] https://sourceforge.net/p/ghdl-updates/tickets/


P.S. BTW, Tristan, I looked over closed bugs on github and I'd like
to kindly ask you to reference a git commit in your last closing
message. This is very helpful when browsing through this stuff later.
Thanks!
Tristan Gingold
2016-06-14 16:47:32 UTC
Permalink
Post by Andrey Gursky
On Mon, 13 Jun 2016 20:21:39 +0200
Post by Jonas Baggett
Post by Jonas Baggett
Hello,
I am thinking about collaborating in this project. My name is Jonas
Baggett, I am an electronic engineer and I have 2 years of practice
working on VHDL projects. When I started to understand the programming
philosophy behind VHDL, I really find it interesting. At that period I
discovered Ada and I naturally liked this language because of its
similar programming philosophy.
I have already made simulations under GHDL of some of my projects some
time ago and really find that it is a promising software. So I would
like to participate in the improvement of this software. Where do you
think I can help you ? I believe this could be an interesting challenge
for me and as now I have only a temporary job not related to my field,
it will keep myself active in the field.
Hello,
if you look at https://github.com/tgingold/ghdl there are many open
issues: some are bugs to be fixed and others are enhancements.
You can start from any of them.
You can also work on the FST waveforms dumper, or something very
different like interfacing with Python.
Do not hesitate to subscribe to this mailing list and to ask any
question.
Tristan,
since you've pointed only to the new github page, do you plan to migrate
the tickets from sourceforge [1]?
No, as I don't know an easy way to do it.

But I don't forget them too.
Post by Andrey Gursky
P.S. BTW, Tristan, I looked over closed bugs on github and I'd like
to kindly ask you to reference a git commit in your last closing
message. This is very helpful when browsing through this stuff later.
Indeed. Do you know how to do that automatically. I suppose I can
reference an issue in a commit.

Tristan.
Lehmann, Patrick
2016-06-14 16:56:02 UTC
Permalink
Hello,

a pull request or issue can be referenced by its number.
E.g. #26 for issue/PR 26. A commit is referenced by posting
the full SHA hash into the message. It's displayed as a short
hash. Users can be referenced by @Username

More details on GitHubs auto linking:
https://help.github.com/articles/autolinked-references-and-urls/#


Regards
Patrick

-----------------------------------
Wissenschaftliche Hilfskraft

Technische UniversitÀt Dresden
FakultÀt Informatik
Institut fÃŒr Technische Informatik
Lehrstuhl VLSI-Entwurfssysteme, Diagnostik und Architektur
01062 Dresden

-----Original Message-----
From: Ghdl-discuss [mailto:ghdl-discuss-***@gna.org] On Behalf Of Tristan Gingold
Sent: Tuesday, June 14, 2016 6:48 PM
To: GHDL discuss list <ghdl-***@gna.org>
Subject: Re: [Ghdl-discuss] Collaboration in the GHDL project
Post by Andrey Gursky
On Mon, 13 Jun 2016 20:21:39 +0200
Post by Jonas Baggett
Post by Jonas Baggett
Hello,
I am thinking about collaborating in this project. My name is Jonas
Baggett, I am an electronic engineer and I have 2 years of practice
working on VHDL projects. When I started to understand the
programming philosophy behind VHDL, I really find it interesting. At
that period I discovered Ada and I naturally liked this language
because of its similar programming philosophy.
I have already made simulations under GHDL of some of my projects
some time ago and really find that it is a promising software. So I
would like to participate in the improvement of this software. Where
do you think I can help you ? I believe this could be an interesting
challenge for me and as now I have only a temporary job not related
to my field, it will keep myself active in the field.
Hello,
if you look at https://github.com/tgingold/ghdl there are many open
issues: some are bugs to be fixed and others are enhancements.
You can start from any of them.
You can also work on the FST waveforms dumper, or something very
different like interfacing with Python.
Do not hesitate to subscribe to this mailing list and to ask any
question.
Tristan,
since you've pointed only to the new github page, do you plan to
migrate the tickets from sourceforge [1]?
No, as I don't know an easy way to do it.

But I don't forget them too.
Post by Andrey Gursky
P.S. BTW, Tristan, I looked over closed bugs on github and I'd like to
kindly ask you to reference a git commit in your last closing message.
This is very helpful when browsing through this stuff later.
Indeed. Do you know how to do that automatically. I suppose I can reference an issue in a commit.

Tristan.
Andrey Gursky
2016-07-15 11:14:41 UTC
Permalink
Hi Tristan,

On Tue, 14 Jun 2016 18:47:32 +0200
Post by Tristan Gingold
Post by Andrey Gursky
On Mon, 13 Jun 2016 20:21:39 +0200
Post by Jonas Baggett
Post by Jonas Baggett
Hello,
I am thinking about collaborating in this project. My name is Jonas
Baggett, I am an electronic engineer and I have 2 years of practice
working on VHDL projects. When I started to understand the programming
philosophy behind VHDL, I really find it interesting. At that period I
discovered Ada and I naturally liked this language because of its
similar programming philosophy.
I have already made simulations under GHDL of some of my projects some
time ago and really find that it is a promising software. So I would
like to participate in the improvement of this software. Where do you
think I can help you ? I believe this could be an interesting challenge
for me and as now I have only a temporary job not related to my field,
it will keep myself active in the field.
Hello,
if you look at https://github.com/tgingold/ghdl there are many open
issues: some are bugs to be fixed and others are enhancements.
You can start from any of them.
You can also work on the FST waveforms dumper, or something very
different like interfacing with Python.
Do not hesitate to subscribe to this mailing list and to ask any
question.
Tristan,
since you've pointed only to the new github page, do you plan to migrate
the tickets from sourceforge [1]?
No, as I don't know an easy way to do it.
But I don't forget them too.
Good to know. Please, feel free to sketch a plan, where to should look
in the ghdl sources to improve the generic issue in the ticket 40 [1].
Post by Tristan Gingold
Post by Andrey Gursky
P.S. BTW, Tristan, I looked over closed bugs on github and I'd like
to kindly ask you to reference a git commit in your last closing
message. This is very helpful when browsing through this stuff later.
Indeed. Do you know how to do that automatically. I suppose I can
reference an issue in a commit.
As Patrick already mentioned, the way you're using now "Fixes #xxx" is
exactly what I've been asking for. Thanks!

Regards,
Andrey


[1] https://sourceforge.net/p/ghdl-updates/tickets/40/
Tristan Gingold
2016-07-18 04:32:31 UTC
Permalink
Hello,
Post by Andrey Gursky
Good to know. Please, feel free to sketch a plan, where to should look
in the ghdl sources to improve the generic issue in the ticket 40 [1].
You can try to remove the call to sem_case_choices in
sem_case_statement: that would remove the checks that all choices are
locally static and that all choices are covered.

And then you have to change translate_case_statement in trans-chap8.adb
(and its callees) so that not locally static values are allowed.

This isn't a simple change.
Post by Andrey Gursky
Post by Tristan Gingold
Post by Andrey Gursky
P.S. BTW, Tristan, I looked over closed bugs on github and I'd like
to kindly ask you to reference a git commit in your last closing
message. This is very helpful when browsing through this stuff later.
Indeed. Do you know how to do that automatically. I suppose I can
reference an issue in a commit.
As Patrick already mentioned, the way you're using now "Fixes #xxx" is
exactly what I've been asking for. Thanks!
You're welcome!

Tristan.
Jonas Baggett
2016-06-15 15:17:27 UTC
Permalink
Hello,


I can have a look at the bug tracker and work on the FST waveforms dumper. What needs to be done ?

If I understand well, making à python interface will allow to simulate a system with some parts written in vhdl and other parts written in
python. And also if there would be a simulink clone written in python, you could for example modelize à motor with it and then simulate the
motor with its controller written in vhdl, right ?

Jonas


On Mon, 13 Jun 2016 20:21:39 +0200
Post by Jonas Baggett
Post by Jonas Baggett
Hello,
I am thinking about collaborating in this project. My name is Jonas
Baggett, I am an electronic engineer and I have 2 years of practice
working on VHDL projects. When I started to understand the programming
philosophy behind VHDL, I really find it interesting. At that period I
discovered Ada and I naturally liked this language because of its
similar programming philosophy.
I have already made simulations under GHDL of some of my projects some
time ago and really find that it is a promising software. So I would
like to participate in the improvement of this software. Where do you
think I can help you ? I believe this could be an interesting challenge
for me and as now I have only a temporary job not related to my field,
it will keep myself active in the field.
Hello,
if you look athttps://github.com/tgingold/ghdl there are many open
issues: some are bugs to be fixed and others are enhancements.
You can start from any of them.
You can also work on the FST waveforms dumper, or something very
different like interfacing with Python.
Do not hesitate to subscribe to this mailing list and to ask any
question.
Lehmann, Patrick
2016-06-15 16:22:55 UTC
Permalink
Hello Jonas,

do you mean Python interface as in GHDL + Cocotb?

I think many of the GHDL users (including me :) ) are looking
forward to use Cocotb testbenches with GHDL again. As far as
I know, the Cocotb interface uses new, yet unimplemented,
VHPI features.

Another open idea (and not filed as an issue in the bug tracker)
is to specify which signals should be dumped into waveform files.
Reducing the signal count saves disk space, speeds up simulation
(less I/O work) and speeds up waveform viewers like GTKWave :).

Regards
Patrick

-----------------------------------
Wissenschaftliche Hilfskraft

Technische UniversitÀt Dresden
FakultÀt Informatik
Institut fÃŒr Technische Informatik
Lehrstuhl VLSI-Entwurfssysteme, Diagnostik und Architektur
01062 Dresden

-----Original Message-----
From: Ghdl-discuss [mailto:ghdl-discuss-***@gna.org] On Behalf Of Jonas Baggett
Sent: Wednesday, June 15, 2016 5:17 PM
To: Andrey Gursky <***@e-mail.ua>; GHDL discuss list <ghdl-***@gna.org>
Subject: Re: [Ghdl-discuss] Collaboration in the GHDL project

Hello,


I can have a look at the bug tracker and work on the FST waveforms dumper. What needs to be done ?

If I understand well, making à python interface will allow to simulate a system with some parts written in vhdl and other parts written in python. And also if there would be a simulink clone written in python, you could for example modelize à motor with it and then simulate the motor with its controller written in vhdl, right ?

Jonas


On Mon, 13 Jun 2016 20:21:39 +0200
Post by Jonas Baggett
Post by Jonas Baggett
Hello,
I am thinking about collaborating in this project. My name is Jonas
Baggett, I am an electronic engineer and I have 2 years of practice
working on VHDL projects. When I started to understand the
programming philosophy behind VHDL, I really find it interesting. At
that period I discovered Ada and I naturally liked this language
because of its similar programming philosophy.
I have already made simulations under GHDL of some of my projects
some time ago and really find that it is a promising software. So I
would like to participate in the improvement of this software. Where
do you think I can help you ? I believe this could be an interesting
challenge for me and as now I have only a temporary job not related
to my field, it will keep myself active in the field.
Hello,
if you look athttps://github.com/tgingold/ghdl there are many open
issues: some are bugs to be fixed and others are enhancements.
You can start from any of them.
You can also work on the FST waveforms dumper, or something very
different like interfacing with Python.
Do not hesitate to subscribe to this mailing list and to ask any
question.
Tristan Gingold
2016-06-15 16:37:36 UTC
Permalink
Post by Lehmann, Patrick
Hello Jonas,
do you mean Python interface as in GHDL + Cocotb?
I think many of the GHDL users (including me :) ) are looking
forward to use Cocotb testbenches with GHDL again. As far as
I know, the Cocotb interface uses new, yet unimplemented,
VHPI features.
That just be fixed now.

Tristan.
Post by Lehmann, Patrick
Another open idea (and not filed as an issue in the bug tracker)
is to specify which signals should be dumped into waveform files.
Reducing the signal count saves disk space, speeds up simulation
(less I/O work) and speeds up waveform viewers like GTKWave :).
Regards
Patrick
-----------------------------------
Wissenschaftliche Hilfskraft
Technische Universität Dresden
Fakultät Informatik
Institut für Technische Informatik
Lehrstuhl VLSI-Entwurfssysteme, Diagnostik und Architektur
01062 Dresden
-----Original Message-----
Sent: Wednesday, June 15, 2016 5:17 PM
Subject: Re: [Ghdl-discuss] Collaboration in the GHDL project
Hello,
I can have a look at the bug tracker and work on the FST waveforms dumper. What needs to be done ?
If I understand well, making à python interface will allow to simulate a system with some parts written in vhdl and other parts written in python. And also if there would be a simulink clone written in python, you could for example modelize à motor with it and then simulate the motor with its controller written in vhdl, right ?
Jonas
On Mon, 13 Jun 2016 20:21:39 +0200
Post by Jonas Baggett
Post by Jonas Baggett
Hello,
I am thinking about collaborating in this project. My name is Jonas
Baggett, I am an electronic engineer and I have 2 years of practice
working on VHDL projects. When I started to understand the
programming philosophy behind VHDL, I really find it interesting. At
that period I discovered Ada and I naturally liked this language
because of its similar programming philosophy.
I have already made simulations under GHDL of some of my projects
some time ago and really find that it is a promising software. So I
would like to participate in the improvement of this software. Where
do you think I can help you ? I believe this could be an interesting
challenge for me and as now I have only a temporary job not related
to my field, it will keep myself active in the field.
Hello,
if you look athttps://github.com/tgingold/ghdl there are many open
issues: some are bugs to be fixed and others are enhancements.
You can start from any of them.
You can also work on the FST waveforms dumper, or something very
different like interfacing with Python.
Do not hesitate to subscribe to this mailing list and to ask any
question.
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Tristan Gingold
2016-06-15 16:37:03 UTC
Permalink
Post by Jonas Baggett
Hello,
I can have a look at the bug tracker and work on the FST waveforms
dumper. What needs to be done ?
I have just started to work on dumping enums in FST.
But records are still missing. It would also be nice to be able to
select signals to be dumped.
Post by Jonas Baggett
If I understand well, making à python interface will allow to simulate a
system with some parts written in vhdl and other parts written in
python. And also if there would be a simulink clone written in python,
you could for example modelize à motor with it and then simulate the
motor with its controller written in vhdl, right ?
My first idea was to expose the semantic of a VHDL design in python, so
that users could write their own tools in python.
But there are many other possibilities.

Tristan.
Jonas Baggett
2016-06-15 21:29:56 UTC
Permalink
Post by Tristan Gingold
Post by Jonas Baggett
Hello,
I can have a look at the bug tracker and work on the FST waveforms
dumper. What needs to be done ?
I have just started to work on dumping enums in FST.
But records are still missing. It would also be nice to be able to
select signals to be dumped.
My first thoughts about signals selection would be to let the user
create a file containing a list of the signals he wants to be displayed
like this :
top_level_instance/sub_entity_instance/sub_sub_entity_instance/the_signal.
He could also display all the signals of an entity like this :
top_level_instance/sub_entity_instance/*. To display all the signal of
an entity and recursively to all of it's sub entities :
top_level_instance/sub_entity_instance/**. Maybe I can add the
possibility to write something like this :
top_level_instance/sub_entity_instance/<port> versus
top_level_instance/sub_entity_instance/<architecture> to show all the
signals only in port respectively only in architecture.

That's only the first ideas, the format may change. Then I will create a
simulation option to allow the user to pass the file in parameter. The
--disp-tree simulation option will help the user to find the full path
of a signal or an entity instance.
Post by Tristan Gingold
Post by Jonas Baggett
If I understand well, making à python interface will allow to simulate a
system with some parts written in vhdl and other parts written in
python. And also if there would be a simulink clone written in python,
you could for example modelize à motor with it and then simulate the
motor with its controller written in vhdl, right ?
My first idea was to expose the semantic of a VHDL design in python, so
that users could write their own tools in python.
But there are many other possibilities.
Do you mean creating an interface to allow a tool in python to access
e.g. signals deep inside the design and let it read or write it's value ?

Jonas
Tristan Gingold
2016-06-16 06:09:15 UTC
Permalink
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
Hello,
I can have a look at the bug tracker and work on the FST waveforms
dumper. What needs to be done ?
I have just started to work on dumping enums in FST.
But records are still missing. It would also be nice to be able to
select signals to be dumped.
My first thoughts about signals selection would be to let the user
create a file containing a list of the signals he wants to be displayed
top_level_instance/sub_entity_instance/sub_sub_entity_instance/the_signal.
top_level_instance/sub_entity_instance/*. To display all the signal of
top_level_instance/sub_entity_instance/**. Maybe I can add the
top_level_instance/sub_entity_instance/<port> versus
top_level_instance/sub_entity_instance/<architecture> to show all the
signals only in port respectively only in architecture.
That looks good. I like the use of '*' and '**'.
Post by Jonas Baggett
That's only the first ideas, the format may change. Then I will create a
simulation option to allow the user to pass the file in parameter. The
--disp-tree simulation option will help the user to find the full path
of a signal or an entity instance.
Post by Tristan Gingold
Post by Jonas Baggett
If I understand well, making à python interface will allow to simulate a
system with some parts written in vhdl and other parts written in
python. And also if there would be a simulink clone written in python,
you could for example modelize à motor with it and then simulate the
motor with its controller written in vhdl, right ?
My first idea was to expose the semantic of a VHDL design in python, so
that users could write their own tools in python.
But there are many other possibilities.
Do you mean creating an interface to allow a tool in python to access
e.g. signals deep inside the design and let it read or write it's value ?
Yes, but not only during simulation. Being also possible to generate a
C interface from an entity, to extract sensitivity from a process...
Something like VHPI but in python.

Tristan.
Martin Strubel
2016-06-16 13:27:27 UTC
Permalink
Hi there,
Post by Tristan Gingold
Post by Jonas Baggett
Post by Tristan Gingold
My first idea was to expose the semantic of a VHDL design in python, so
that users could write their own tools in python.
But there are many other possibilities.
Do you mean creating an interface to allow a tool in python to access
e.g. signals deep inside the design and let it read or write it's value ?
Yes, but not only during simulation. Being also possible to generate a
C interface from an entity, to extract sensitivity from a process...
Something like VHPI but in python.
It would be very powerful, if a simulation could be started from within
MyHDL and speak with it. Currently, I have to do loads of workarounds
with ghdlex and netpp to 'export' VHDL entities to the network. This
could all be nicely offloaded to Python and pickled instances can be
transferred over the network as well.
Especially if Python objects could be constructed at runtime.
For example, a Wishbone Bus entity could then be accessed as:

w = ghdl_export.entities['Wb_inst0'] # Access by name
w.addr.set(0x80002)
w.data.set(0xdeadbeef)
w.write_strobe()


However, if a working entity is present, the signals will of course
collide/interfere. I kinda hacked this with a gated clock which is
interrupted, whenever the external software probe connects. Not nice,
there has to be a proper "way to do it".

This just for inspiration...maybe there is a better concept.

Scanning the hierarchy actually works as of now, but using the VPI
interface which I found less powerful, there's issues with threading and
I couldn't figure a way to make it work synchronously (to the VHDL
simulation) unlike the VHPI side.

Cheers,

- Martin
Christopher Felton
2016-06-16 14:29:59 UTC
Permalink
Post by Martin Strubel
Hi there,
Post by Tristan Gingold
Post by Jonas Baggett
Post by Tristan Gingold
My first idea was to expose the semantic of a VHDL design in python, so
that users could write their own tools in python.
But there are many other possibilities.
Do you mean creating an interface to allow a tool in python to access
e.g. signals deep inside the design and let it read or write it's value
?
Post by Tristan Gingold
Yes, but not only during simulation. Being also possible to generate a
C interface from an entity, to extract sensitivity from a process...
Something like VHPI but in python.
It would be very powerful, if a simulation could be started from within
MyHDL and speak with it.
It sounds like the myhdl team needs to revisit the VHPI interface,
when we last looked (many years ago) it was incomplete. It
seems probable that the latest GHDL VHPI would support the
MyHDL cosimulation requirements.

Regards,
Chris
Martin Strubel
2016-06-16 19:56:36 UTC
Permalink
Hi Chris,
Post by Christopher Felton
It sounds like the myhdl team needs to revisit the VHPI interface,
when we last looked (many years ago) it was incomplete. It
seems probable that the latest GHDL VHPI would support the
MyHDL cosimulation requirements.
I think it should cover the most, but I don't know how far you wanna go.
The easiest is for example the virtual COM port implementation, the more
advanced stuff from ghdlex is for instance looping in a virtual bus, so
a MyHDL CPU can mess with the ghdl virtual HW.
The tricky part is to get the async behaviour right. I'm currently using
a separate thread for the I/O in ghdl. Works safe via VHPI, but not
without mutex modifications with VPI.

Cheers,

- Martin
Tristan Gingold
2016-06-20 05:59:31 UTC
Permalink
Jonas,

I have pushed my changes to handle enumerations in the fst dumper.
I don't plan to work in this area in order not to trouble you.

There is also a new ticket (#87) on autoflush. That's even easier.

Do not hesitate to ask for help!

Tristan.
Jonas Baggett
2016-06-20 21:13:53 UTC
Permalink
Hi Tristan,

I didn't have time these previous days to work on the project, but now I
will have some time.
I have one question : is there some documentation about ghdl internal
structure ? I can work without it but if it is available it can be still
helpfull.

Jonas
Post by Lehmann, Patrick
Jonas,
I have pushed my changes to handle enumerations in the fst dumper.
I don't plan to work in this area in order not to trouble you.
There is also a new ticket (#87) on autoflush. That's even easier.
Do not hesitate to ask for help!
Tristan.
Jonas Baggett
2016-06-20 21:20:41 UTC
Permalink
I think I will rather start with the signal selection feature as I have
planned to do.
And thanks for taking care of me, but I should move on in order not to
block you :).
Post by Jonas Baggett
Hi Tristan,
I didn't have time these previous days to work on the project, but now
I will have some time.
I have one question : is there some documentation about ghdl internal
structure ? I can work without it but if it is available it can be
still helpfull.
Jonas
Post by Lehmann, Patrick
Jonas,
I have pushed my changes to handle enumerations in the fst dumper.
I don't plan to work in this area in order not to trouble you.
There is also a new ticket (#87) on autoflush. That's even easier.
Do not hesitate to ask for help!
Tristan.
Tristan Gingold
2016-06-21 01:05:19 UTC
Permalink
Post by Jonas Baggett
I think I will rather start with the signal selection feature as I have
planned to do.
And thanks for taking care of me, but I should move on in order not to
block you :).
No, you don't block me. I just want to avoid duplicate work.

Tristan.
Tristan Gingold
2016-06-21 01:04:28 UTC
Permalink
Post by Jonas Baggett
Hi Tristan,
I didn't have time these previous days to work on the project, but now I
will have some time.
I have one question : is there some documentation about ghdl internal
structure ? I can work without it but if it is available it can be still
helpfull.
No, there is no such doc.
Maybe it's time to create an internal.md file ?

Tristan.
Jonas Baggett
2016-06-23 05:43:49 UTC
Permalink
Hi Tristan,

I if understand well, what needs to be done is to add the possibility
that each write to either the console or a file can be unbuffered, right
? Or maybe writes to the console is already unbuffered. This feature can
be done with the the C function fflush which is already imported in
grt-stdio.ads and then call it at the end of the Put procedures in
grt-astdio.adb, right ?

Have a nice day
Jonas
Post by Lehmann, Patrick
Jonas,
I have pushed my changes to handle enumerations in the fst dumper.
I don't plan to work in this area in order not to trouble you.
There is also a new ticket (#87) on autoflush. That's even easier.
Do not hesitate to ask for help!
Tristan.
Tristan Gingold
2016-06-23 06:01:39 UTC
Permalink
Post by Jonas Baggett
Hi Tristan,
I if understand well, what needs to be done is to add the possibility
that each write to either the console or a file can be unbuffered, right
? Or maybe writes to the console is already unbuffered. This feature can
be done with the the C function fflush which is already imported in
grt-stdio.ads and then call it at the end of the Put procedures in
grt-astdio.adb, right ?
I would simply call setvbuf() (or setbuf) on stdout/stderr and after
fopen. That would be slightly more efficient.

Tristan.
Jonas Baggett
2016-06-23 18:40:18 UTC
Permalink
Post by Tristan Gingold
Post by Jonas Baggett
Hi Tristan,
I if understand well, what needs to be done is to add the possibility
that each write to either the console or a file can be unbuffered, right
? Or maybe writes to the console is already unbuffered. This feature can
be done with the the C function fflush which is already imported in
grt-stdio.ads and then call it at the end of the Put procedures in
grt-astdio.adb, right ?
I would simply call setvbuf() (or setbuf) on stdout/stderr and after
fopen. That would be slightly more efficient.
Tristan.
I think I will start with this issue, finally. Should the unbuffered
option be passed during elaboration ?

Jonas
Tristan Gingold
2016-06-23 18:43:56 UTC
Permalink
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
Hi Tristan,
I if understand well, what needs to be done is to add the possibility
that each write to either the console or a file can be unbuffered, right
? Or maybe writes to the console is already unbuffered. This feature can
be done with the the C function fflush which is already imported in
grt-stdio.ads and then call it at the end of the Put procedures in
grt-astdio.adb, right ?
I would simply call setvbuf() (or setbuf) on stdout/stderr and after
fopen. That would be slightly more efficient.
Tristan.
I think I will start with this issue, finally. Should the unbuffered
option be passed during elaboration ?
No, at execution time. There are already an infrastructure to handle
options, see grt-options.adb

Tristan.
Jonas Baggett
2016-06-25 09:00:59 UTC
Permalink
Hi Tristan,

I have already made an --unbuffered option work. It disable buffering on
stdout, and does line buffering on stderr. Should I also completely
disable buffering on stderr ?
Currently, a C function is called to disable buffering after reading the
--unbuffered option in grt-options.adb. Does it work that way or should
I call setvbuf()/setbuf() before each write to stdout/stderr ?
What is remaining to do is to make this option work also when a file is
open in write mode in VHDL.

Jonas
Post by Tristan Gingold
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
Hi Tristan,
I if understand well, what needs to be done is to add the possibility
that each write to either the console or a file can be unbuffered, right
? Or maybe writes to the console is already unbuffered. This feature can
be done with the the C function fflush which is already imported in
grt-stdio.ads and then call it at the end of the Put procedures in
grt-astdio.adb, right ?
I would simply call setvbuf() (or setbuf) on stdout/stderr and after
fopen. That would be slightly more efficient.
Tristan.
I think I will start with this issue, finally. Should the unbuffered
option be passed during elaboration ?
No, at execution time. There are already an infrastructure to handle
options, see grt-options.adb
Tristan.
Jonas Baggett
2016-06-25 09:52:24 UTC
Permalink
Now it's done.
Post by Jonas Baggett
What is remaining to do is to make this option work also when a file
is open in write mode in VHDL.
Lehmann, Patrick
2016-06-25 12:49:23 UTC
Permalink
As far as I know it from ANSI C and some other language APIs, writing to stderr
is always unbuffered, so all error message are immediately written, so mostly
all messages are out before an application crashes.

Writing to stderr is rare, so the slow down for unbuffered I/O can be ignored.

Regards
Patrick

-----------------------------------
Wissenschaftliche Hilfskraft

Technische UniversitÀt Dresden
FakultÀt Informatik
Institut fÃŒr Technische Informatik
Lehrstuhl VLSI-Entwurfssysteme, Diagnostik und Architektur
01062 Dresden

-----Original Message-----
From: Ghdl-discuss [mailto:ghdl-discuss-***@gna.org] On Behalf Of Jonas Baggett
Sent: Saturday, June 25, 2016 11:01 AM
To: Tristan Gingold <***@free.fr>; GHDL discuss list <ghdl-***@gna.org>
Subject: Re: [Ghdl-discuss] Collaboration in the GHDL project

Hi Tristan,

I have already made an --unbuffered option work. It disable buffering on stdout, and does line buffering on stderr. Should I also completely disable buffering on stderr ?
Currently, a C function is called to disable buffering after reading the --unbuffered option in grt-options.adb. Does it work that way or should I call setvbuf()/setbuf() before each write to stdout/stderr ?
What is remaining to do is to make this option work also when a file is open in write mode in VHDL.

Jonas
Post by Tristan Gingold
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
Hi Tristan,
I if understand well, what needs to be done is to add the
possibility that each write to either the console or a file can be
unbuffered, right ? Or maybe writes to the console is already
unbuffered. This feature can be done with the the C function fflush
which is already imported in grt-stdio.ads and then call it at the
end of the Put procedures in grt-astdio.adb, right ?
I would simply call setvbuf() (or setbuf) on stdout/stderr and after
fopen. That would be slightly more efficient.
Tristan.
I think I will start with this issue, finally. Should the unbuffered
option be passed during elaboration ?
No, at execution time. There are already an infrastructure to handle
options, see grt-options.adb
Tristan.
Jonas Baggett
2016-06-25 17:51:27 UTC
Permalink
Hello Patrick,

Ok, I made the changes you suggested. I asked Walter, the guy who asked
for unbuffered output support to try the patch because I don't have a
test case. The patch is available on the related issue ticket. If
everything works, I will make a pull request.

Jonas
Post by Lehmann, Patrick
As far as I know it from ANSI C and some other language APIs, writing to stderr
is always unbuffered, so all error message are immediately written, so mostly
all messages are out before an application crashes.
Writing to stderr is rare, so the slow down for unbuffered I/O can be ignored.
Regards
Patrick
-----------------------------------
Wissenschaftliche Hilfskraft
Technische UniversitÀt Dresden
FakultÀt Informatik
Institut fÃŒr Technische Informatik
Lehrstuhl VLSI-Entwurfssysteme, Diagnostik und Architektur
01062 Dresden
-----Original Message-----
Sent: Saturday, June 25, 2016 11:01 AM
Subject: Re: [Ghdl-discuss] Collaboration in the GHDL project
Hi Tristan,
I have already made an --unbuffered option work. It disable buffering on stdout, and does line buffering on stderr. Should I also completely disable buffering on stderr ?
Currently, a C function is called to disable buffering after reading the --unbuffered option in grt-options.adb. Does it work that way or should I call setvbuf()/setbuf() before each write to stdout/stderr ?
What is remaining to do is to make this option work also when a file is open in write mode in VHDL.
Jonas
Post by Tristan Gingold
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
Hi Tristan,
I if understand well, what needs to be done is to add the
possibility that each write to either the console or a file can be
unbuffered, right ? Or maybe writes to the console is already
unbuffered. This feature can be done with the the C function fflush
which is already imported in grt-stdio.ads and then call it at the
end of the Put procedures in grt-astdio.adb, right ?
I would simply call setvbuf() (or setbuf) on stdout/stderr and after
fopen. That would be slightly more efficient.
Tristan.
I think I will start with this issue, finally. Should the unbuffered
option be passed during elaboration ?
No, at execution time. There are already an infrastructure to handle
options, see grt-options.adb
Tristan.
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Tristan Gingold
2016-06-26 08:40:43 UTC
Permalink
Post by Jonas Baggett
Hello Patrick,
Ok, I made the changes you suggested. I asked Walter, the guy who asked
for unbuffered output support to try the patch because I don't have a
test case. The patch is available on the related issue ticket. If
everything works, I will make a pull request.
The code is correct, but you could simplify it: instead of adding two
new functions to grt-cbinding.c, you can simply export setbuf in
grt-stdio.ads, and call it directly from Ada code.

Also, don't forget to document this new option in Simulation_and_runtime.rst

Thanks!
Tristan.
Jonas Baggett
2016-06-26 20:42:02 UTC
Permalink
Done. Just in case, I also moved my changes to a new branch called
unbuffered in my repo.

Jonas
Post by Tristan Gingold
The code is correct, but you could simplify it: instead of adding two
new functions to grt-cbinding.c, you can simply export setbuf in
grt-stdio.ads, and call it directly from Ada code.
Also, don't forget to document this new option in
Simulation_and_runtime.rst
Tristan Gingold
2016-06-27 18:04:19 UTC
Permalink
Post by Jonas Baggett
Done. Just in case, I also moved my changes to a new branch called
unbuffered in my repo.
Jonas,

this is almost perfect. But you can also remove
__ghdl_disable_stream_buffering and call directly setbuf from
grt-files.adb, that would make the code slightl shorter.

Do not hesitate to do a pull request.

Thanks,
Tristan.
Jonas Baggett
2016-06-27 21:49:47 UTC
Permalink
Ok, I made the changes you suggested and did a pull request.

Jonas
Post by Lehmann, Patrick
Post by Jonas Baggett
Done. Just in case, I also moved my changes to a new branch called
unbuffered in my repo.
Jonas,
this is almost perfect. But you can also remove
__ghdl_disable_stream_buffering and call directly setbuf from
grt-files.adb, that would make the code slightl shorter.
Do not hesitate to do a pull request.
Thanks,
Tristan.
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Jonas Baggett
2016-06-26 20:52:38 UTC
Permalink
If I do my work in a new branch instead in master, no change to master
should trouble me, right ? But you may need to resolve conflicts when
you pull my work.
Post by Tristan Gingold
I have pushed my changes to handle enumerations in the fst dumper.
I don't plan to work in this area in order not to trouble you.
j***@tranquille.ch
2016-06-22 05:08:29 UTC
Permalink
Hi Tristan,

I have a question : is it possible to add debugging symbols in the simulation executable or at least to show the stacktrace of one particular point of the code ?

Jonas

Jonas,

I have pushed my changes to handle enumerations in the fst dumper.
I don't plan to work in this area in order not to trouble you.

There is also a new ticket (#87) on autoflush. That's even easier.

Do not hesitate to ask for help!

Tristan.
Tristan Gingold
2016-06-22 05:59:45 UTC
Permalink
Post by Jonas Baggett
Hi Tristan,
I have a question : is it possible to add debugging symbols in the
simulation executable or at least to show the stacktrace of one
particular point of the code ?
Yes. If you use the llvm or gcc backend, simply analyze and elaborate
using '-g', and then you can debug the executable.

If you simply want to debug the runtime, be sure it is built with -g
(that should be the default).

Tristan.
Jonas Baggett
2016-06-22 22:11:41 UTC
Permalink
Hello Tristan,

Thanks for your answer, that was what I needed.

I started looking at the ghw waveform generation and I have found the
procedure Wave_Put_Hierarchy_1 in grt-waves.adb where all signals are
extracted from the instance given in parameter. This instance contains
the hierarchy of the design. Before that there is something called hooks
that initialize all the waveform generators (vcd, ghw, etc) and call the
initialisation procedure of all the waveform generators (Wave_Start for
the ghw generator which is on the stacktrace of the call to
Wave_Put_Hierarchy_1).

My idea was to find the place were the instance is generated before
being available to the waveform generators and to create there another
instance with only the hierarchy of what needs to be displayed as
specified in a text file. The next step is to make the waveform
generators use this instance instead of the instance with everything. I
believe I have to put this new instance in the Grt.Rtis package. At
grt-main.adb, there is a call to Ghdl_Elaborate which execute some code
coming from I don't know where. This code will generate the instance (as
I believe) and eventually call procedure Ghdl_Rti_Add_Top in
grt-rtis.adb with the generated instance as input parameter.

What I would like to know is where is the code that generate the
instance with the hierarchy of the design and if you think that my
approach is good.

And thanks again for your help
Jonas
Post by Tristan Gingold
Post by Jonas Baggett
Hi Tristan,
I have a question : is it possible to add debugging symbols in the
simulation executable or at least to show the stacktrace of one
particular point of the code ?
Yes. If you use the llvm or gcc backend, simply analyze and elaborate
using '-g', and then you can debug the executable.
If you simply want to debug the runtime, be sure it is built with -g
(that should be the default).
Tristan.
Tristan Gingold
2016-06-23 06:15:13 UTC
Permalink
Hello,
Post by Jonas Baggett
I started looking at the ghw waveform generation and I have found the
procedure Wave_Put_Hierarchy_1 in grt-waves.adb where all signals are
extracted from the instance given in parameter. This instance contains
the hierarchy of the design. Before that there is something called hooks
that initialize all the waveform generators (vcd, ghw, etc) and call the
initialisation procedure of all the waveform generators (Wave_Start for
the ghw generator which is on the stacktrace of the call to
Wave_Put_Hierarchy_1).
Correct.
Post by Jonas Baggett
My idea was to find the place were the instance is generated before
being available to the waveform generators and to create there another
instance with only the hierarchy of what needs to be displayed as
specified in a text file.
That's what I would do too: create an instance tree from the text file.
Or maybe annotate the existing one with a flag, that would be simpler.
Post by Jonas Baggett
The next step is to make the waveform
generators use this instance instead of the instance with everything.
Here I would differ: pass both trees to the waveform generator and it
will only select the enabled signals.
Post by Jonas Baggett
I believe I have to put this new instance in the Grt.Rtis package.
You shouldn't change grt.rtis as it defines the interface with the
compiler. Create a new package.
Post by Jonas Baggett
At
grt-main.adb, there is a call to Ghdl_Elaborate which execute some code
coming from I don't know where. This code will generate the instance (as
I believe) and eventually call procedure Ghdl_Rti_Add_Top in
grt-rtis.adb with the generated instance as input parameter.
What I would like to know is where is the code that generate the
instance with the hierarchy of the design and if you think that my
approach is good.
The elaboration code is generated by the compiler.

I think you approach is correct.

Tristan.
Tristan Gingold
2016-06-23 06:44:14 UTC
Permalink
Post by Jonas Baggett
Hello,
Post by Jonas Baggett
I started looking at the ghw waveform generation and I have found the
procedure Wave_Put_Hierarchy_1 in grt-waves.adb where all signals are
extracted from the instance given in parameter. This instance contains
the hierarchy of the design. Before that there is something called hooks
that initialize all the waveform generators (vcd, ghw, etc) and call the
initialisation procedure of all the waveform generators (Wave_Start for
the ghw generator which is on the stacktrace of the call to
Wave_Put_Hierarchy_1).
Correct.
Post by Jonas Baggett
My idea was to find the place were the instance is generated before
being available to the waveform generators and to create there another
instance with only the hierarchy of what needs to be displayed as
specified in a text file.
That's what I would do too: create an instance tree from the text file.
Or maybe annotate the existing one with a flag, that would be simpler.
Thinking twice, I am not sure the existing instances can be modified,
they are rodata.

Tristan.
Post by Jonas Baggett
Post by Jonas Baggett
The next step is to make the waveform
generators use this instance instead of the instance with everything.
Here I would differ: pass both trees to the waveform generator and it
will only select the enabled signals.
Post by Jonas Baggett
I believe I have to put this new instance in the Grt.Rtis package.
You shouldn't change grt.rtis as it defines the interface with the
compiler. Create a new package.
Post by Jonas Baggett
At
grt-main.adb, there is a call to Ghdl_Elaborate which execute some code
coming from I don't know where. This code will generate the instance (as
I believe) and eventually call procedure Ghdl_Rti_Add_Top in
grt-rtis.adb with the generated instance as input parameter.
What I would like to know is where is the code that generate the
instance with the hierarchy of the design and if you think that my
approach is good.
The elaboration code is generated by the compiler.
I think you approach is correct.
Tristan.
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Jonas Baggett
2016-07-03 15:20:48 UTC
Permalink
Hello,

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}

# Display every generics and port signals of sub_entity_b_instance
top_level_instance/sub_entity_b_instance:generics
top_level_instance/sub_entity_b_instance:ports
# But exclude inout signals
! top_level_instance/sub_entity_b_instance:ports.inout
# Or should it be
"top_level_instance/sub_entity_b_instance:ports:inout" instead ?

# 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

# Display recursively every signals, variables and generics of
every entity instanciated in sub_entity_c_instance,
# but it won't display anything at first level of
sub_entity_c_instance :
top_level_instance/sub_entity_c_instance/**
# Display a_mem_x and b_mem_y, but not c_mem_x :
top_level_instance/sub_entity_c_instance/[a-b]_mem_*
# Display my_variable from process X1
top_level_instance/sub_entity_c_instance:processes.X1/my_variable
# Or should it be
"top_level_instance/sub_entity_c_instance:processes.X1.my_variable"
instead ?

# Display everything of sub_entity_d_instance recursively,
including what is at first level (*** = * + **) :
top_level_instance/sub_entity_d_instance/***
# But exclude everything from the processes of sub_sub_entity_instance
!
top_level_instance/sub_entity_d_instance/sub_sub_entity_instance:processes

Remarks :

1) The wave signal file should better begin with a version, but it isn't
mandatory. Here is how I plan to do the versioning : First start with
1.0, then 1.1, 1.2, etc as long as the new versions are backward
compatible with the older version. When I do a change in the format that
will break compatibility with an older wave signal file, I will
increment the major version number.

In short :

Currently supported format input file format result
1.5 1.3 OK
1.2 1.4 Error
2.1 1.4 Error
2.1 2.0 OK

Thanks to the versioning, we can give an insighful error to the user in
case of an unsupported input file format version.

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.

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

4) I didn't check if GHDL has support for displaying variables from a
process to the waveform


PS : Many thanks to Patrick Lehmann for his helpful advices !

Cheers,
Jonas
Post by Tristan Gingold
Post by Jonas Baggett
Hello,
Post by Jonas Baggett
I started looking at the ghw waveform generation and I have found the
procedure Wave_Put_Hierarchy_1 in grt-waves.adb where all signals are
extracted from the instance given in parameter. This instance contains
the hierarchy of the design. Before that there is something called hooks
that initialize all the waveform generators (vcd, ghw, etc) and call the
initialisation procedure of all the waveform generators (Wave_Start for
the ghw generator which is on the stacktrace of the call to
Wave_Put_Hierarchy_1).
Correct.
Post by Jonas Baggett
My idea was to find the place were the instance is generated before
being available to the waveform generators and to create there another
instance with only the hierarchy of what needs to be displayed as
specified in a text file.
That's what I would do too: create an instance tree from the text file.
Or maybe annotate the existing one with a flag, that would be simpler.
Thinking twice, I am not sure the existing instances can be modified,
they are rodata.
Tristan.
Post by Jonas Baggett
Post by Jonas Baggett
The next step is to make the waveform
generators use this instance instead of the instance with everything.
Here I would differ: pass both trees to the waveform generator and it
will only select the enabled signals.
Post by Jonas Baggett
I believe I have to put this new instance in the Grt.Rtis package.
You shouldn't change grt.rtis as it defines the interface with the
compiler. Create a new package.
Post by Jonas Baggett
At
grt-main.adb, there is a call to Ghdl_Elaborate which execute some code
coming from I don't know where. This code will generate the
instance (as
I believe) and eventually call procedure Ghdl_Rti_Add_Top in
grt-rtis.adb with the generated instance as input parameter.
What I would like to know is where is the code that generate the
instance with the hierarchy of the design and if you think that my
approach is good.
The elaboration code is generated by the compiler.
I think you approach is correct.
Tristan.
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Tristan Gingold
2016-07-03 16:08:56 UTC
Permalink
Hello,
Post by Jonas Baggett
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
# 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.
Post by Jonas Baggett
# Display every generics and port signals of sub_entity_b_instance
top_level_instance/sub_entity_b_instance:generics
Generics aren't dumped in waveforms as they don't change.
Post by Jonas Baggett
top_level_instance/sub_entity_b_instance:ports
# But exclude inout signals
! top_level_instance/sub_entity_b_instance:ports.inout
# Or should it be
"top_level_instance/sub_entity_b_instance:ports:inout" instead ?
Or should it be:
top_level_instance/sub_entity_b_instance/*:ports:inout
In that case, the meaning of ':' is simply filter out.
Post by Jonas Baggett
# 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.
Post by Jonas Baggett
# Display recursively every signals, variables and generics of every
entity instanciated in sub_entity_c_instance,
# but it won't display anything at first level of
top_level_instance/sub_entity_c_instance/**
top_level_instance/sub_entity_c_instance/[a-b]_mem_*
# Display my_variable from process X1
top_level_instance/sub_entity_c_instance:processes.X1/my_variable
# Or should it be
"top_level_instance/sub_entity_c_instance:processes.X1.my_variable"
instead ?
# Display everything of sub_entity_d_instance recursively, including
top_level_instance/sub_entity_d_instance/***
# But exclude everything from the processes of sub_sub_entity_instance
!
top_level_instance/sub_entity_d_instance/sub_sub_entity_instance:processes
1) The wave signal file should better begin with a version, but it isn't
mandatory. Here is how I plan to do the versioning : First start with
1.0, then 1.1, 1.2, etc as long as the new versions are backward
compatible with the older version. When I do a change in the format that
will break compatibility with an older wave signal file, I will
increment the major version number.
Currently supported format input file format result
1.5 1.3 OK
1.2 1.4 Error
2.1 1.4 Error
2.1 2.0 OK
Thanks to the versioning, we can give an insighful error to the user in
case of an unsupported input file format version.
Make sense.
Post by Jonas Baggett
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!
Post by Jonas Baggett
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/*:ports
Post by Jonas Baggett
4) I didn't check if GHDL has support for displaying variables from a
process to the waveform
No, only signals and ports are dumped.
Post by Jonas Baggett
PS : Many thanks to Patrick Lehmann for his helpful advices !
Nice teamwork!

Tristan.
Lehmann, Patrick
2016-07-04 07:23:25 UTC
Permalink
Hello,

a short remark do generics and constants.
Of cause these signals do not change and in many designs they are fixed values,
but generics might change from instance level to instance level or be different
in instances created within a for... generate loop.

Waveform viewers like iSim and xSim allow the user to display constants and generics, too.
ModelSim has a tool window to display them, but GHDLs primary viewer GTKWave has no
constants window for debugging. Especially, recursive instantiated designs are hard to debug
if one can't see the generic's/constant's values :).

Writing a constant value to VCD like files has no big impact on the file size, because the value
is given as an initial value.

So maybe it's no bad idea, if a user can explicitly enable generic/constant dumping. I see the
biggest problem in displaying such a value, so it doesn't look like a signal in the waveform view.

So as an optional feature, I would vote yes :).

Regards
Patrick

-----------------------------------
Wissenschaftliche Hilfskraft

Technische UniversitÀt Dresden
FakultÀt Informatik
Institut fÃŒr Technische Informatik
Lehrstuhl VLSI-Entwurfssysteme, Diagnostik und Architektur
01062 Dresden
Tel.: +49 351 463-38451
Fax: +49 351 463-38324
Raum: APB-1020
E-Mail: ***@tu-dresden.de
WWW: http://vlsi-eda.inf.tu-dresden.de


-----Original Message-----
From: Ghdl-discuss [mailto:ghdl-discuss-***@gna.org] On Behalf Of Tristan Gingold
Sent: Sunday, July 03, 2016 6:09 PM
To: ghdl-***@gna.org
Subject: Re: [Ghdl-discuss] Collaboration in the GHDL project

Hello,
Post by Jonas Baggett
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
# 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.
Post by Jonas Baggett
# Display every generics and port signals of sub_entity_b_instance
top_level_instance/sub_entity_b_instance:generics
Generics aren't dumped in waveforms as they don't change.
Post by Jonas Baggett
top_level_instance/sub_entity_b_instance:ports
# But exclude inout signals
! top_level_instance/sub_entity_b_instance:ports.inout
# Or should it be
"top_level_instance/sub_entity_b_instance:ports:inout" instead ?
Or should it be:
top_level_instance/sub_entity_b_instance/*:ports:inout
In that case, the meaning of ':' is simply filter out.
Post by Jonas Baggett
# 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.
Post by Jonas Baggett
# Display recursively every signals, variables and generics of
every entity instanciated in sub_entity_c_instance,
# but it won't display anything at first level of
top_level_instance/sub_entity_c_instance/**
top_level_instance/sub_entity_c_instance/[a-b]_mem_*
# Display my_variable from process X1
top_level_instance/sub_entity_c_instance:processes.X1/my_variable
# Or should it be
"top_level_instance/sub_entity_c_instance:processes.X1.my_variable"
instead ?
# Display everything of sub_entity_d_instance recursively,
top_level_instance/sub_entity_d_instance/***
# But exclude everything from the processes of sub_sub_entity_instance
!
top_level_instance/sub_entity_d_instance/sub_sub_entity_instance:proce
sses
1) The wave signal file should better begin with a version, but it
isn't mandatory. Here is how I plan to do the versioning : First start
with 1.0, then 1.1, 1.2, etc as long as the new versions are backward
compatible with the older version. When I do a change in the format
that will break compatibility with an older wave signal file, I will
increment the major version number.
Currently supported format input file format result
1.5 1.3 OK
1.2 1.4 Error
2.1 1.4 Error
2.1 2.0 OK
Thanks to the versioning, we can give an insighful error to the user
in case of an unsupported input file format version.
Make sense.
Post by Jonas Baggett
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!
Post by Jonas Baggett
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/*:ports
Post by Jonas Baggett
4) I didn't check if GHDL has support for displaying variables from a
process to the waveform
No, only signals and ports are dumped.
Post by Jonas Baggett
PS : Many thanks to Patrick Lehmann for his helpful advices !
Nice teamwork!

Tristan.
Tristan Gingold
2016-07-04 18:00:18 UTC
Permalink
Post by Jonas Baggett
Hello,
a short remark do generics and constants.
Of cause these signals do not change and in many designs they are fixed values,
but generics might change from instance level to instance level or be different
in instances created within a for... generate loop.
Waveform viewers like iSim and xSim allow the user to display constants and generics, too.
ModelSim has a tool window to display them, but GHDLs primary viewer GTKWave has no
constants window for debugging. Especially, recursive instantiated designs are hard to debug
if one can't see the generic's/constant's values :).
Writing a constant value to VCD like files has no big impact on the file size, because the value
is given as an initial value.
So maybe it's no bad idea, if a user can explicitly enable generic/constant dumping. I see the
biggest problem in displaying such a value, so it doesn't look like a signal in the waveform view.
So as an optional feature, I would vote yes :).
Makes sense.

Tristan.
Jonas Baggett
2016-07-05 20:37:30 UTC
Permalink
Hello Tristan,
Post by Tristan Gingold
Post by Jonas Baggett
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
# 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
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
Post by Tristan Gingold
Post by Jonas Baggett
# 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.
Post by Tristan Gingold
Post by Jonas Baggett
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
top/sub1/sub2/***
top/sub1/*
top/sub1/sub2/sig1
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.
Post by Tristan Gingold
Post by Jonas Baggett
3) Here ":<category>" works like a filter that reduce the selection
result to <category>.
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
Tristan Gingold
2016-07-06 04:17:07 UTC
Permalink
Post by Jonas Baggett
Hello Tristan,
Post by Tristan Gingold
Post by Jonas Baggett
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
# 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
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.
top_level_instance/sub_entity_a_instance/ {
sub_sub_entity_instance/ {
e, f, g }
h }
That's a very good syntax: clear and compatible with the regexp one.
Post by Jonas Baggett
top_level_instance/sub_entity_a_instance/
sub_sub_entity_instance/
e, f, g
h
Humm, I prefer the syntax with curly braces.
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
# 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.
Yes, but this is already handled by: top/sub1/*
So I don't see a real need for :ports.
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
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
top/sub1/sub2/***
top/sub1/*
top/sub1/sub2/sig1
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.
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.
Ok. I don't have a strong opinion of the 4/5 order.
Post by Jonas Baggett
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.
I think the opposite would be better: be able for ghdl to read a gtkwave
save file and dump only the needed signals.
I think this is more natural for the users: they dump all signals and
then to speed-up simulation, select only a subset of signals.
Everything is done graphically. That's also the reason why I think
the syntax of the selection file should be simple, because they will be
generated by waveform display tools rather than written by users.

Parsing the .gtkw files is easy: just discard uninteresting lines and
chars.
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
3) Here ":<category>" works like a filter that reduce the selection
result to <category>.
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.
Yes.

Tristan.
Jonas Baggett
2016-07-07 16:50:44 UTC
Permalink
Hello Tristan,

There is also the case of signals in a package : I would suggest the
following syntax : pkg.the_signal. It seems better to me than
/pkg/the_signal.
Post by Tristan Gingold
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
# 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.
Yes, but this is already handled by: top/sub1/*
So I don't see a real need for :ports
Could you explain me that a little more ? Because top/sub1/* will select
all signals from sub1, which means port and internal signals. So without
:ports, I don't see a way to display only port signals of an entity
without indicating explicitely all of them. :ports and :architecture
aren't anyway a top priority feature in my eyes.
Post by Tristan Gingold
Post by Jonas Baggett
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.
I think the opposite would be better: be able for ghdl to read a
gtkwave save file and dump only the needed signals.
I think this is more natural for the users: they dump all signals and
then to speed-up simulation, select only a subset of signals.
Everything is done graphically. That's also the reason why I think
the syntax of the selection file should be simple, because they will
be generated by waveform display tools rather than written by users.
Parsing the .gtkw files is easy: just discard uninteresting lines and
chars.
I believe that the ideal solution would be to use gtkwave as a library
so that GHDL can have control on it. It could launch gtkwave and
directly add waves to it. In the end, no .gtkw file would be needed :
GHDL will load trace options in a human readable format, give them to
gtkwave, then when the user changes trace options on gtkwave and save
them, GHDL will receive these changes and store them in its human
readable format. How do you think about that ? And is it possible to do
that with gtkwave ?

PS : Good luck for France tonight ;).

Jonas
Tristan Gingold
2016-07-07 17:19:06 UTC
Permalink
Post by Jonas Baggett
Hello Tristan,
There is also the case of signals in a package : I would suggest the
following syntax : pkg.the_signal. It seems better to me than
/pkg/the_signal.
Why ? /pkg/the_signal is more regular.
Note you can have two packages with the same name in two different
libraries, so maybe it should be /lib/pkg/the_signal. It is also
possible for an entity to have the name of a library, so maybe it
should be /@lib/pkg/the_signal. At this point we almost follow
the syntax of external path names except '/' is used instead of '.'.
Post by Jonas Baggett
Post by Tristan Gingold
Yes, but this is already handled by: top/sub1/*
So I don't see a real need for :ports
Could you explain me that a little more ? Because top/sub1/* will select
all signals from sub1, which means port and internal signals. So without
:ports, I don't see a way to display only port signals of an entity
without indicating explicitely all of them. :ports and :architecture
aren't anyway a top priority feature in my eyes.
Yes, you're right. I have forgotten internal signals.
Post by Jonas Baggett
Post by Tristan Gingold
I think the opposite would be better: be able for ghdl to read a
gtkwave save file and dump only the needed signals.
I think this is more natural for the users: they dump all signals and
then to speed-up simulation, select only a subset of signals.
Everything is done graphically. That's also the reason why I think
the syntax of the selection file should be simple, because they will
be generated by waveform display tools rather than written by users.
Parsing the .gtkw files is easy: just discard uninteresting lines and
chars.
I believe that the ideal solution would be to use gtkwave as a library
so that GHDL can have control on it. It could launch gtkwave and
GHDL will load trace options in a human readable format, give them to
gtkwave, then when the user changes trace options on gtkwave and save
them, GHDL will receive these changes and store them in its human
readable format. How do you think about that ? And is it possible to do
that with gtkwave ?
That's very ambitious! I don't know gtkwave well enough to comment
about that. But having an integrated IDE would be nice.
Post by Jonas Baggett
PS : Good luck for France tonight ;).
Usually France looses against Germany :-(

Tristan.
Jonas Baggett
2016-07-09 04:59:21 UTC
Permalink
Hello Tristan,
Post by Tristan Gingold
Post by Jonas Baggett
Hello Tristan,
There is also the case of signals in a package : I would suggest the
following syntax : pkg.the_signal. It seems better to me than
/pkg/the_signal.
Why ? /pkg/the_signal is more regular.
Note you can have two packages with the same name in two different
libraries, so maybe it should be /lib/pkg/the_signal. It is also
possible for an entity to have the name of a library, so maybe it
the syntax of external path names except '/' is used instead of '.'.
Because it's with this synthax that we access the signal in VHDL. So I
thought that when someone reads lib.pkg.the_signal, it will be clear to
him at first glance that we are accessing a signal inside a package.
Nevertheless, with the /@lib/pkg/the_signal synthax, it's also clear.
Then if you prefer this synthax, it's fine to me too.

Now I have finished to do the file parser and the tree builder. I have
one question : I tried to use the Types package located in src/types.ads
from my package located in src/grt but I get a compile error as the
compiler can't find it because it is at level - 1. Is it possible to
achieve that ?
Post by Tristan Gingold
Post by Jonas Baggett
PS : Good luck for France tonight .
Usually France looses against Germany
Except this time ;).

Cheers,
Jonas
Tristan Gingold
2016-07-09 05:20:10 UTC
Permalink
Post by Jonas Baggett
Hello Tristan,
Post by Tristan Gingold
Post by Jonas Baggett
Hello Tristan,
There is also the case of signals in a package : I would suggest the
following syntax : pkg.the_signal. It seems better to me than
/pkg/the_signal.
Why ? /pkg/the_signal is more regular.
Note you can have two packages with the same name in two different
libraries, so maybe it should be /lib/pkg/the_signal. It is also
possible for an entity to have the name of a library, so maybe it
the syntax of external path names except '/' is used instead of '.'.
Because it's with this synthax that we access the signal in VHDL. So I
thought that when someone reads lib.pkg.the_signal, it will be clear to
him at first glance that we are accessing a signal inside a package.
Then if you prefer this synthax, it's fine to me too.
/ or . is ok with me. I just didn't understand why package signal names
were different.
Post by Jonas Baggett
Now I have finished to do the file parser and the tree builder. I have
one question : I tried to use the Types package located in src/types.ads
from my package located in src/grt but I get a compile error as the
compiler can't find it because it is at level - 1. Is it possible to
achieve that ?
No, it is not possible. The files in src/grt are the one for the
runtime (used during simulation). They are completely independent from
compiler files (src and src/vhdl).

I agree it is not very clear as grt/ is within src/. Maybe grt/ should
be moved ?
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
PS : Good luck for France tonight .
Usually France looses against Germany
Except this time ;).
Surprises happen.

Tristan.
Jonas Baggett
2016-07-19 10:10:18 UTC
Permalink
Hello Tristan,

Now I have a first working version of signal selection. Currently it
supports only full name signals, meaning that wildcards aren't supported
yet (that's number 3 in your list of important features). And currently
it works only for the ghw wave format, but before I extend it to all
formats, do you prefer that I make a pull request now to let you review
my code or should I first add the support for all formats ? And I still
need to add a help description and the new option I made
(--wave-option-file).

Some open questions :

- Currently when the same signal is written several times in the wave
option file, this is silently ignored. Does it worth it to add a tag to
my tree in order to be able to catch that and make it an error/warning ?

- When the wave option file is void of any signal, then all the signals
will be displayed just like if no wave option file was provided. Should
it instead display no signals at all ?

Regards,
Jonas
Post by Tristan Gingold
Post by Jonas Baggett
Hello Tristan,
Post by Tristan Gingold
Post by Jonas Baggett
Hello Tristan,
There is also the case of signals in a package : I would suggest the
following syntax : pkg.the_signal. It seems better to me than
/pkg/the_signal.
Why ? /pkg/the_signal is more regular.
Note you can have two packages with the same name in two different
libraries, so maybe it should be /lib/pkg/the_signal. It is also
possible for an entity to have the name of a library, so maybe it
the syntax of external path names except '/' is used instead of '.'.
Because it's with this synthax that we access the signal in VHDL. So I
thought that when someone reads lib.pkg.the_signal, it will be clear to
him at first glance that we are accessing a signal inside a package.
Then if you prefer this synthax, it's fine to me too.
/ or . is ok with me. I just didn't understand why package signal
names were different.
Post by Jonas Baggett
Now I have finished to do the file parser and the tree builder. I have
one question : I tried to use the Types package located in src/types.ads
from my package located in src/grt but I get a compile error as the
compiler can't find it because it is at level - 1. Is it possible to
achieve that ?
No, it is not possible. The files in src/grt are the one for the
runtime (used during simulation). They are completely independent
from compiler files (src and src/vhdl).
I agree it is not very clear as grt/ is within src/. Maybe grt/
should be moved ?
Post by Jonas Baggett
Post by Tristan Gingold
Post by Jonas Baggett
PS : Good luck for France tonight .
Usually France looses against Germany
Except this time ;).
Surprises happen.
Tristan.
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Tristan Gingold
2016-07-19 16:41:24 UTC
Permalink
Hello,
Post by Jonas Baggett
Now I have a first working version of signal selection. Currently it
supports only full name signals, meaning that wildcards aren't supported
yet (that's number 3 in your list of important features).
Great!
Post by Jonas Baggett
And currently
it works only for the ghw wave format, but before I extend it to all
formats, do you prefer that I make a pull request now to let you review
my code or should I first add the support for all formats ?
Why not starting review now ?
Post by Jonas Baggett
And I still
need to add a help description and the new option I made
(--wave-option-file).
- Currently when the same signal is written several times in the wave
option file, this is silently ignored. Does it worth it to add a tag to
my tree in order to be able to catch that and make it an error/warning ?
Not sure. With wildcards duplicate may be more common.
Post by Jonas Baggett
- When the wave option file is void of any signal, then all the signals
will be displayed just like if no wave option file was provided. Should
it instead display no signals at all ?
I think this is ok. Displaying no signals is not very interesting!
Might worth emitting a warning.

Thank you for all your efforts!
Tristan.
Jonas Baggett
2016-07-20 21:27:09 UTC
Permalink
Hello,
Post by Tristan Gingold
Post by Jonas Baggett
And currently
it works only for the ghw wave format, but before I extend it to all
formats, do you prefer that I make a pull request now to let you review
my code or should I first add the support for all formats ?
Why not starting review now ?
Ok, I am just doing some finitions, then I will update my remote
(probably tomorrow) so you can review my work.
Post by Tristan Gingold
Post by Jonas Baggett
And I still
need to add a help description and the new option I made
(--wave-option-file).
- Currently when the same signal is written several times in the wave
option file, this is silently ignored. Does it worth it to add a tag to
my tree in order to be able to catch that and make it an error/warning ?
Not sure. With wildcards duplicate may be more common.
I finally added a warning in case of duplicate lines which is clearly a
mistake, but it won't display a warning in the following case, after I
will add wildcards support :
/top/*
/top/a # useless because of /top/*
But at least it is less choking for the eyes and I can still think about
that in the future.
Post by Tristan Gingold
Post by Jonas Baggett
- When the wave option file is void of any signal, then all the signals
will be displayed just like if no wave option file was provided. Should
it instead display no signals at all ?
I think this is ok. Displaying no signals is not very interesting!
Might worth emitting a warning.
Done.
There is still a case when it is possible that no signals will be
displayed. It is when the user makes a typo like :
/too/* # instead of /top/*
A warning should be emitted that /too/a wasn't in the design. I am
planning to add tomorrow the necessary checks to see if each signal on
the list corresponds to a signal in the compiled design. And in the
example above, if /too/* was the sole line, then we will end up with no
signal at all to display.
Post by Tristan Gingold
Thank you for all your efforts!
And thanks for your support !

Greetings,
Jonas
Jonas Baggett
2016-07-22 21:44:11 UTC
Permalink
Hello Tristan,

I have just pushed my work in my github remote. Branch name is
jonsba/signals_selection, so now you can review it.
Here is an example of a wave option file :

$ version 1.0 # $version 1.0 works too
/top/signal_a
/top/sub # Currently it doesn't display a warning telling that /top/sub
isn't a signal, but I don't think it worths the complication
/top/sub/signal_b
my_pkg.signal_c
# end of file

Then you can launch the simulation with :
ghdl -r <exec> --wave-option-file=<the file> --wave=wave.ghw

As I have previously said, it works only with the ghw waveform format
and no wildcard is supported yet.

Cheers,
Jonas
Post by Jonas Baggett
Hello,
Post by Tristan Gingold
Post by Jonas Baggett
And currently
it works only for the ghw wave format, but before I extend it to all
formats, do you prefer that I make a pull request now to let you review
my code or should I first add the support for all formats ?
Why not starting review now ?
Ok, I am just doing some finitions, then I will update my remote
(probably tomorrow) so you can review my work.
Post by Tristan Gingold
Post by Jonas Baggett
And I still
need to add a help description and the new option I made
(--wave-option-file).
- Currently when the same signal is written several times in the wave
option file, this is silently ignored. Does it worth it to add a tag to
my tree in order to be able to catch that and make it an
error/warning ?
Not sure. With wildcards duplicate may be more common.
I finally added a warning in case of duplicate lines which is clearly
a mistake, but it won't display a warning in the following case, after
/top/*
/top/a # useless because of /top/*
But at least it is less choking for the eyes and I can still think
about that in the future.
Post by Tristan Gingold
Post by Jonas Baggett
- When the wave option file is void of any signal, then all the signals
will be displayed just like if no wave option file was provided. Should
it instead display no signals at all ?
I think this is ok. Displaying no signals is not very interesting!
Might worth emitting a warning.
Done.
There is still a case when it is possible that no signals will be
/too/* # instead of /top/*
A warning should be emitted that /too/a wasn't in the design. I am
planning to add tomorrow the necessary checks to see if each signal on
the list corresponds to a signal in the compiled design. And in the
example above, if /too/* was the sole line, then we will end up with
no signal at all to display.
Post by Tristan Gingold
Thank you for all your efforts!
And thanks for your support !
Greetings,
Jonas
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Tristan Gingold
2016-07-23 03:30:56 UTC
Permalink
Post by Jonas Baggett
Hello Tristan,
I have just pushed my work in my github remote. Branch name is
jonsba/signals_selection, so now you can review it.
Why not creating a pull-request ? It simplifies the review process.
Post by Jonas Baggett
$ version 1.0 # $version 1.0 works too
/top/signal_a
/top/sub # Currently it doesn't display a warning telling that /top/sub
isn't a signal, but I don't think it worths the complication
/top/sub/signal_b
my_pkg.signal_c
# end of file
ghdl -r <exec> --wave-option-file=<the file> --wave=wave.ghw
As I have previously said, it works only with the ghw waveform format
and no wildcard is supported yet.
Great!

Tristan.
Jonas Baggett
2016-07-23 06:42:11 UTC
Permalink
Hello,

Ok, I made a pull-request and now I am correcting errors and integrating
your suggestions. I found out that it was less complicated than expected
to display a warning when a path in the wave option file is not a signal
(/top/sub in the example below), so I have made it.

Jonas
Post by Tristan Gingold
Post by Jonas Baggett
Hello Tristan,
I have just pushed my work in my github remote. Branch name is
jonsba/signals_selection, so now you can review it.
Why not creating a pull-request ? It simplifies the review process.
Post by Jonas Baggett
$ version 1.0 # $version 1.0 works too
/top/signal_a
/top/sub # Currently it doesn't display a warning telling that /top/sub
isn't a signal, but I don't think it worths the complication
/top/sub/signal_b
my_pkg.signal_c
# end of file
ghdl -r <exec> --wave-option-file=<the file> --wave=wave.ghw
As I have previously said, it works only with the ghw waveform format
and no wildcard is supported yet.
Great!
Tristan.
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Jonas Baggett
2016-07-23 09:21:57 UTC
Permalink
Hello,

I made a roadmap for the signal selection feature :

Version 1.0 :
- Finishing code review with Tristan
- Add signal selection support for other format than ghw
- Add a help description in Simulation_and_runtime.rst and grt-options.adb
- Should I add a wave option file example in doc/ too ?

Version 1.1 :
- Create an option that works like --disp-tree but prints the design tree in
the wave option file format (could be in 1.0 too).
- Simple wildcards (/top/sub1/*, /top/sub*/*)
- Double wildcards (/top/**, top/sub*/**))
Remark : *** is no more needed since ** will have it's behavior and the old
behavior of ** can be achieve with */** (top/*/**) which makes more
clear that
we aren't displaying any signals in the first level of /top

Version 1.2 :
- Simple regexp (top/sub[1-3]/sig[a-z])
- Negation (! top/sub2/sigk)

Version 1.3 :
- Selecting element in an array (/top/sub3/my_array(5))
- Selecting element in a record (/top/sub3/my_record.field)

Version 1.4
- Selection of port and architecture signals
(top/sub1/arch/*:port and top/sub1/arch/*:architecture)

Tell me if you have any suggestion.

Jonas
Rene Doss
2016-07-24 13:26:23 UTC
Permalink
Post by Jonas Baggett
Post by Jonas Baggett
Tell me if you have any suggestion.
yes I have something, but I do not know if this the correct discussion
round.

I say something what I have seen for long time. This information is from
my deeper brain.

Gtkwave has included shared memory functions. (I think it is only
possible under linux)
If ghdl can store the signal in a shared memory the current signals can
be refreshed by gtkwave directly into the screen. This is interacting
process. The use can follow the simulation online.


Rene
Post by Jonas Baggett
Hello,
- Finishing code review with Tristan
- Add signal selection support for other format than ghw
- Add a help description in Simulation_and_runtime.rst and
grt-options.adb
- Should I add a wave option file example in doc/ too ?
- Create an option that works like --disp-tree but prints the design tree in
the wave option file format (could be in 1.0 too).
- Simple wildcards (/top/sub1/*, /top/sub*/*)
- Double wildcards (/top/**, top/sub*/**))
Remark : *** is no more needed since ** will have it's behavior and the old
behavior of ** can be achieve with */** (top/*/**) which makes more
clear that
we aren't displaying any signals in the first level of /top
- Simple regexp (top/sub[1-3]/sig[a-z])
- Negation (! top/sub2/sigk)
- Selecting element in an array (/top/sub3/my_array(5))
- Selecting element in a record (/top/sub3/my_record.field)
Version 1.4
- Selection of port and architecture signals
(top/sub1/arch/*:port and top/sub1/arch/*:architecture)
Tell me if you have any suggestion.
Jonas
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Jonas Baggett
2016-07-25 19:09:37 UTC
Permalink
Hello Rene,

That's an interesting feature for long simulations, thanks for the
information. Do you also know if gtkwave could be used as a library ? So
that ghdl could directly launch gtkwave and add signals to it and then
when the user makes some changes in gtkwave and save them, ghdl will be
able to receive these changes.

Jonas
Post by Rene Doss
Post by Jonas Baggett
Tell me if you have any suggestion.
yes I have something, but I do not know if this the correct discussion
round.
I say something what I have seen for long time. This information is from
my deeper brain.
Gtkwave has included shared memory functions. (I think it is only
possible under linux)
If ghdl can store the signal in a shared memory the current signals can
be refreshed by gtkwave directly into the screen. This is interacting
process. The use can follow the simulation online.
Rene
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
René Doß
2016-07-26 20:42:40 UTC
Permalink
Post by Jonas Baggett
Hello Rene,
That's an interesting feature for long simulations, thanks for the
information.
I have missed this feature, as I wrote some state machines. Often I had
a state and waiting for for a condition that never come. I could stop my
simulation earlier.
Post by Jonas Baggett
Do you also know if gtkwave could be used as a library ?
I do not know this. I think not. The source code is open source.
Post by Jonas Baggett
So that ghdl could directly launch gtkwave and add signals to it and
then when the user makes some changes in gtkwave and save them, ghdl
will be able to receive these changes.
You want a use gtkwave as manipulator. Interesting idea.
This is total new feature. great idea.

René
Post by Jonas Baggett
Jonas
Post by Rene Doss
Post by Jonas Baggett
Tell me if you have any suggestion.
yes I have something, but I do not know if this the correct discussion
round.
I say something what I have seen for long time. This information is from
my deeper brain.
Gtkwave has included shared memory functions. (I think it is only
possible under linux)
If ghdl can store the signal in a shared memory the current signals can
be refreshed by gtkwave directly into the screen. This is interacting
process. The use can follow the simulation online.
Rene
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Jonas Baggett
2016-08-03 19:54:01 UTC
Permalink
Hello,

So here is an updated roadmap for signal selection in wave.

+ When the wave option file given to the command line doesn't exist,
it should be created with all the signals of the design.

+ Version 1.1 :
- Simple wildcards (/top/sub1/*, /top/sub*/*)
- Double wildcards (/top/**, top/sub*/**, top/*/**)

+ Version 1.2 :
- Simple regexp (top/sub[1-3]/sig[a-z])
- Negation (! top/sub2/sigk)

+ Signals in shared memory (as suggested by René)

+ Version 1.3 :
- Selecting element in an array (/top/sub3/my_array(5))
- Selecting element in a record (/top/sub3/my_record.field)

+ Version 1.4 :
- Selection of port and architecture signals (top/sub1/arch/*:port
and top/sub1/arch/*:architecture)

+ When possible :
- gtkwave used as a library ?

Thanks for your comments.

Jonas
Post by René Doß
Post by Jonas Baggett
Hello Rene,
That's an interesting feature for long simulations, thanks for the
information.
I have missed this feature, as I wrote some state machines. Often I had
a state and waiting for for a condition that never come. I could stop my
simulation earlier.
Post by Jonas Baggett
Do you also know if gtkwave could be used as a library ?
I do not know this. I think not. The source code is open source.
Post by Jonas Baggett
So that ghdl could directly launch gtkwave and add signals to it and
then when the user makes some changes in gtkwave and save them, ghdl
will be able to receive these changes.
You want a use gtkwave as manipulator. Interesting idea.
This is total new feature. great idea.
René
Post by Jonas Baggett
Jonas
Post by Rene Doss
Post by Jonas Baggett
Tell me if you have any suggestion.
yes I have something, but I do not know if this the correct discussion
round.
I say something what I have seen for long time. This information is from
my deeper brain.
Gtkwave has included shared memory functions. (I think it is only
possible under linux)
If ghdl can store the signal in a shared memory the current signals can
be refreshed by gtkwave directly into the screen. This is interacting
process. The use can follow the simulation online.
Rene
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
René Doß
2016-08-03 20:34:02 UTC
Permalink
Hallo Jonas,

sounds good your plan.
What are double wildcard?

My human opinion
V1.4 ports are always important. This feature comes to late.
V1.3 selection of an element in array is not needed. If I have an array
I have an address and a write signal. Then I research contents in an
array I have a look on this address an write signal.
Post by Jonas Baggett
Hello,
So here is an updated roadmap for signal selection in wave.
+ When the wave option file given to the command line doesn't exist,
it should be created with all the signals of the design.
- Simple wildcards (/top/sub1/*, /top/sub*/*)
- Double wildcards (/top/**, top/sub*/**, top/*/**)
- Simple regexp (top/sub[1-3]/sig[a-z])
- Negation (! top/sub2/sigk)
+ Signals in shared memory (as suggested by René)
- Selecting element in an array (/top/sub3/my_array(5))
- Selecting element in a record (/top/sub3/my_record.field)
- Selection of port and architecture signals
(top/sub1/arch/*:port and top/sub1/arch/*:architecture)
- gtkwave used as a library ?
Thanks for your comments.
Jonas
Post by René Doß
Post by Jonas Baggett
Hello Rene,
That's an interesting feature for long simulations, thanks for the
information.
I have missed this feature, as I wrote some state machines. Often I had
a state and waiting for for a condition that never come. I could stop my
simulation earlier.
Post by Jonas Baggett
Do you also know if gtkwave could be used as a library ?
I do not know this. I think not. The source code is open source.
Post by Jonas Baggett
So that ghdl could directly launch gtkwave and add signals to it and
then when the user makes some changes in gtkwave and save them, ghdl
will be able to receive these changes.
You want a use gtkwave as manipulator. Interesting idea.
This is total new feature. great idea.
René
Post by Jonas Baggett
Jonas
Post by Rene Doss
Post by Jonas Baggett
Tell me if you have any suggestion.
yes I have something, but I do not know if this the correct discussion
round.
I say something what I have seen for long time. This information is from
my deeper brain.
Gtkwave has included shared memory functions. (I think it is only
possible under linux)
If ghdl can store the signal in a shared memory the current signals can
be refreshed by gtkwave directly into the screen. This is interacting
process. The use can follow the simulation online.
Rene
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Adrien Prost-Boucle
2016-08-03 21:51:15 UTC
Permalink
Hi,

These are great features, the kind that will probably put GHDL/GTKWave in much better place among simulation tools :-)
Here are my comments.

V1.1: Double wildcards
I understand /top/**, top/sub*/**, top/*/**
But it means we have to set something for each path "depth" to select "leaf" signals.
So these would also be very useful: /top/**/data*, **/instance_i/*

V1.3: Selecting of element in an array
Yes it is important IMO.
Most often for debug, when a design embeds a memory you are only interested in a subset of the cells.
Also, with generics it's very frequent the have large signals/ports with size WIDTH*NB,
and similarly we are often interested in a subset of that large width.
For very long simulations this can save a notable amount of waveform data.

V1.4: selection of ports
Yes they are always extremely important.
However I don't unserstand why a specific syntax is needed?
As far as I know, port names and signal names can't be same.

GTKWave used as a library:
For this to be done the right way I suspect GKWave developers have their word to say ;-)

Best regards,
Adrien
Post by René Doß
Hallo Jonas,
sounds good your plan.
What are double wildcard?
My human opinion 
V1.4 ports are always important. This feature comes to late.
V1.3 selection of an element in array is not needed. If I have an array
I have an address and a write signal. Then I research contents in an
array I have a look on this address an write signal.
Post by Jonas Baggett
Hello,
So here is an updated roadmap for signal selection in wave.
+ When the wave option file given to the command line doesn't exist,
    it should be created with all the signals of the design.
     - Simple wildcards (/top/sub1/*, /top/sub*/*)
     - Double wildcards (/top/**, top/sub*/**, top/*/**)
     - Simple regexp (top/sub[1-3]/sig[a-z])
     - Negation (! top/sub2/sigk)
+ Signals in shared memory (as suggested by René)
     - Selecting element in an array (/top/sub3/my_array(5))
     - Selecting element in a record (/top/sub3/my_record.field)
     - Selection of port and architecture signals
(top/sub1/arch/*:port and top/sub1/arch/*:architecture)
     - gtkwave used as a library ?
Thanks for your comments.
Jonas
Post by René Doß
Post by Jonas Baggett
Hello Rene,
That's an interesting feature for long simulations, thanks for the
information.
I have missed this feature, as I wrote some state machines. Often I had
a state and waiting for for a condition that never come. I could stop my
simulation earlier.
Post by Jonas Baggett
Do you also know if gtkwave could be used as a library ?
I do not know this. I think not. The source code is open source.
Post by Jonas Baggett
So that ghdl could directly launch gtkwave and add signals to it and
then when the user makes some changes in gtkwave and save them, ghdl
will be able to receive these changes.
You want a use gtkwave as manipulator. Interesting idea.
This is total new feature. great idea.
René
Post by Jonas Baggett
Jonas
Post by Rene Doss
Post by Jonas Baggett
Tell me if you have any suggestion.
yes I have something, but I do not know if this the correct discussion
round.
I say something what I have seen for long time. This information is from
my deeper brain.
Gtkwave has included shared memory functions. (I think it is only
possible under linux)
If ghdl can store the signal in a shared memory the current signals can
be refreshed by gtkwave directly into the screen. This is interacting
process. The use can follow the simulation online.
Rene
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Jonas Baggett
2016-08-06 13:12:16 UTC
Permalink
Hi Adrian,
Post by Adrien Prost-Boucle
V1.1: Double wildcards
I understand/top/**, top/sub*/**, top/*/**
But it means we have to set something for each path "depth" to select "leaf" signals.
So these would also be very useful:/top/**/data*, **/instance_i/*
Thanks for pointing me that. I am almost ready with those features :-),
exept with wilcards inside names which is planned for 1.2.
Post by Adrien Prost-Boucle
V1.4: selection of ports
Yes they are always extremely important.
However I don't unserstand why a specific syntax is needed?
As far as I know, port names and signal names can't be same.
V1.4 will only add a way to differentiate them. /top/sub1/* will still
select both ports and architectures signals.
Post by Adrien Prost-Boucle
For this to be done the right way I suspect GKWave developers have their word to say
I didn't want to do research on that too early, but maybe it is still a
good idea to start a discussion with gtkwave developers soon.

Jonas
Jonas Baggett
2016-08-06 13:39:17 UTC
Permalink
I just saw that in the wikipedia page of gtkwave :

˝Coupled with the GtkPlug mechanism, this allows for the viewer to be
integrated with other simulators in order to provide an interactive
environment all in one window.Tcl
<https://en.wikipedia.org/wiki/Tcl>scripting and callback capability
allow for remote control by other applications. Starting with the 3.3
series,Bluespec <https://en.wikipedia.org/wiki/Bluespec>Workstation is
able to start GTKWave from the workstation, send signals from the
workstation to the waveform viewer, and display mnemonics for enumerated
types, structured buses, etc.˝

It seems that is exactly what I need :-).
Post by Adrien Prost-Boucle
<...>
For this to be done the right way I suspect GKWave developers have their word to say ;-)
<...>
Jonas Baggett
2016-11-02 16:47:22 UTC
Permalink
Hello everyone,

Support is added for * and ** in the last git version, and the current
version of the wave option file format is now set to 1.1.
Please note that wildcards inside names like /top/sub*/... are not
supported yet, only synthax like /top/*/... works for now. As I have
found it more convenient, support for wildcards inside names will be
added on version 1.2, at the same time as simple regexp support.


So here are detailed examples using the new * and ** features :

# Dump every signals named reset in first level sub entities of top
top/*/reset

# Dump every signals named reset in recursive sub entities of top
top/**/reset

# Dump every signals of sub2 which could be anywhere in design except on
top level
/**/sub2/*

# Dump every signals of sub3 which must be a first level sub entity of
the top level
/*/sub3/*

# Dump every signals of the first level sub entities of sub3 (but not
those of sub3)
/**/sub3/*/*


Cheers,
Jonas

Jonas Baggett
2016-08-03 21:54:18 UTC
Permalink
Hello René,

Double wildcards are for recursive search, I should have precised that.
To respond your concern about ports, /top/sub1/* will select both ports
and architectures signals. V1.4 will only add a way to differentiate them.

And for arrays, I believe that selection of an element could be useful
if there is a 'for generate' and you want to dump only the signals
corresponding to one particular index of the arrays. If the 'for
generate' creates a good number of entity instanciations, it may worth it.

Bye,
Jonas
Post by René Doß
Hallo Jonas,
sounds good your plan.
What are double wildcard?
My human opinion
V1.4 ports are always important. This feature comes to late.
V1.3 selection of an element in array is not needed. If I have an array
I have an address and a write signal. Then I research contents in an
array I have a look on this address an write signal.
Post by Jonas Baggett
Hello,
So here is an updated roadmap for signal selection in wave.
+ When the wave option file given to the command line doesn't exist,
it should be created with all the signals of the design.
- Simple wildcards (/top/sub1/*, /top/sub*/*)
- Double wildcards (/top/**, top/sub*/**, top/*/**)
- Simple regexp (top/sub[1-3]/sig[a-z])
- Negation (! top/sub2/sigk)
+ Signals in shared memory (as suggested by René)
- Selecting element in an array (/top/sub3/my_array(5))
- Selecting element in a record (/top/sub3/my_record.field)
- Selection of port and architecture signals
(top/sub1/arch/*:port and top/sub1/arch/*:architecture)
- gtkwave used as a library ?
Thanks for your comments.
Jonas
Post by René Doß
Post by Jonas Baggett
Hello Rene,
That's an interesting feature for long simulations, thanks for the
information.
I have missed this feature, as I wrote some state machines. Often I had
a state and waiting for for a condition that never come. I could stop my
simulation earlier.
Post by Jonas Baggett
Do you also know if gtkwave could be used as a library ?
I do not know this. I think not. The source code is open source.
Post by Jonas Baggett
So that ghdl could directly launch gtkwave and add signals to it and
then when the user makes some changes in gtkwave and save them, ghdl
will be able to receive these changes.
You want a use gtkwave as manipulator. Interesting idea.
This is total new feature. great idea.
René
Post by Jonas Baggett
Jonas
Post by Rene Doss
Post by Jonas Baggett
Tell me if you have any suggestion.
yes I have something, but I do not know if this the correct discussion
round.
I say something what I have seen for long time. This information is from
my deeper brain.
Gtkwave has included shared memory functions. (I think it is only
possible under linux)
If ghdl can store the signal in a shared memory the current signals can
be refreshed by gtkwave directly into the screen. This is interacting
process. The use can follow the simulation online.
Rene
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Adam Jensen
2016-07-03 18:47:19 UTC
Permalink
Post by Jonas Baggett
Hello,
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
Have you considered embedding a Tcl interpreter?

History:

"In the early 1980s John Ousterhout, then at the University of
California at Berkeley, was working with a group that developed hardware
design tools. They found that they kept inventing a new scripting
language with each new tool they developed. It was always added as an
afterthought and poorly implemented. John decided to create a
general-purpose scripting language that could be reused when developing
new tools. He called the language Tcl, for tool command language."


*** http://jim.tcl.tk/ ***

"...an opensource small-footprint implementation of the Tcl programming
language."

Goals:

"...to provide a powerful language implemented in roughly 10k lines of
code. ...is designed to be easily embedded in applications as a
scripting language or configuration file syntax without depending on
external libraries or other big systems."

"...written in portable ANSI-C, and is very small both in both binary
size and memory requirements."

In addition to configuration file parsing/interpretation, this approach
also brings the possibility of having: an interactive shell to control
and monitor the simulation; scripted interaction with the host system
(e.g., Linux) and other applications.

...something worth considering, IMHO.
Lehmann, Patrick
2016-07-04 15:48:28 UTC
Permalink
Hello Adam,

I'm not implementing this feature, so it's not my choice, but Tcl is a horrible language ;)

I know it was originally designed as an embedded scripting language especially for CAE
(EDA, CAD, ...) tools, but there are way better and easier embedded or embeddable
scripting language available. For example:
- Python can be embedded in a few lines of C code. Its giving you access to a very big
standard library and an easy to learn syntax. Having a Python interface for GHDL
(longterm wish from me) could ease the handling of testbench interfaces (Cocotb,
VUnit, ...)
- LUA is used in many projects under the hood as scripting and configuration language.
See for example LuaTeX, Logitech keyboard scripting, ...

Even a big EDA vendor is considering Python as new scripting interface...

So in my personal option: having a scripting interface could be a new big feature for GHDL,
but Tcl would be my first and second choice.


Regards
Patrick

-----------------------------------
Wissenschaftliche Hilfskraft

Technische UniversitÀt Dresden
FakultÀt Informatik
Institut fÃŒr Technische Informatik
Lehrstuhl VLSI-Entwurfssysteme, Diagnostik und Architektur
01062 Dresden
Tel.: +49 351 463-38451
Fax: +49 351 463-38324
Raum: APB-1020
E-Mail: ***@tu-dresden.de
WWW: http://vlsi-eda.inf.tu-dresden.de


-----Original Message-----
From: Ghdl-discuss [mailto:ghdl-discuss-***@gna.org] On Behalf Of Adam Jensen
Sent: Sunday, July 03, 2016 8:47 PM
To: ghdl-***@gna.org
Subject: Re: [Ghdl-discuss] Collaboration in the GHDL project
Post by Jonas Baggett
Hello,
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
Have you considered embedding a Tcl interpreter?

History:

"In the early 1980s John Ousterhout, then at the University of California at Berkeley, was working with a group that developed hardware design tools. They found that they kept inventing a new scripting language with each new tool they developed. It was always added as an afterthought and poorly implemented. John decided to create a general-purpose scripting language that could be reused when developing new tools. He called the language Tcl, for tool command language."


*** http://jim.tcl.tk/ ***

"...an opensource small-footprint implementation of the Tcl programming language."

Goals:

"...to provide a powerful language implemented in roughly 10k lines of code. ...is designed to be easily embedded in applications as a scripting language or configuration file syntax without depending on external libraries or other big systems."

"...written in portable ANSI-C, and is very small both in both binary size and memory requirements."

In addition to configuration file parsing/interpretation, this approach also brings the possibility of having: an interactive shell to control and monitor the simulation; scripted interaction with the host system (e.g., Linux) and other applications.

...something worth considering, IMHO.
Tristan Gingold
2016-07-04 17:58:45 UTC
Permalink
Post by Lehmann, Patrick
Hello Adam,
I'm not implementing this feature, so it's not my choice, but Tcl is a horrible language ;)
I know it was originally designed as an embedded scripting language especially for CAE
(EDA, CAD, ...) tools, but there are way better and easier embedded or embeddable
- Python can be embedded in a few lines of C code. Its giving you access to a very big
standard library and an easy to learn syntax. Having a Python interface for GHDL
(longterm wish from me) could ease the handling of testbench interfaces (Cocotb,
VUnit, ...)
- LUA is used in many projects under the hood as scripting and configuration language.
See for example LuaTeX, Logitech keyboard scripting, ...
Even a big EDA vendor is considering Python as new scripting interface...
So in my personal option: having a scripting interface could be a new big feature for GHDL,
but Tcl would be my first and second choice.
I agree. Yes to scripting, but maybe not with tcl.
(Although it would be better to have a generic scripting infrastructure
to support any language).

Tristan.
Paul Koning
2016-07-04 18:21:24 UTC
Permalink
Post by Tristan Gingold
Post by Lehmann, Patrick
Hello Adam,
I'm not implementing this feature, so it's not my choice, but Tcl is a horrible language ;)
I know it was originally designed as an embedded scripting language especially for CAE
(EDA, CAD, ...) tools, but there are way better and easier embedded or embeddable
- Python can be embedded in a few lines of C code. Its giving you access to a very big
standard library and an easy to learn syntax. Having a Python interface for GHDL
(longterm wish from me) could ease the handling of testbench interfaces (Cocotb,
VUnit, ...)
- LUA is used in many projects under the hood as scripting and configuration language.
See for example LuaTeX, Logitech keyboard scripting, ...
Even a big EDA vendor is considering Python as new scripting interface...
So in my personal option: having a scripting interface could be a new big feature for GHDL,
but Tcl would be my first and second choice.
I agree. Yes to scripting, but maybe not with tcl.
(Although it would be better to have a generic scripting infrastructure to support any language).
Generic is fine, but i agree with Patrick that Tcl is a "language" to be avoided at all costs. Python is good. Note that GDB adopted Python as its scripting language some time ago after considering a bunch of alternatives. It has the advantage of substantially cleaner syntax than most if not all competitors. And yes, embedding it is pretty simple. Note though that there is some complexity in supporting both Python 2 and Python 3 since the internals are slightly different, and not as well documented as they ought to be. (If you want to support only one of the two, make it Python 3.)

paul
Adam Jensen
2016-07-04 18:37:30 UTC
Permalink
Post by Paul Koning
Post by Tristan Gingold
I agree. Yes to scripting, but maybe not with tcl.
(Although it would be better to have a generic scripting infrastructure to support any language).
Generic is fine, but i agree with Patrick that Tcl is a "language" to be avoided at all costs. Python is good. Note that GDB adopted Python as its scripting language some time ago after considering a bunch of alternatives. It has the advantage of substantially cleaner syntax than most if not all competitors. And yes, embedding it is pretty simple. Note though that there is some complexity in supporting both Python 2 and Python 3 since the internals are slightly different, and not as well documented as they ought to be. (If you want to support only one of the two, make it Python 3.)
Wow, I would not have guessed that this community would have such a
strong aversion to Tcl. Is it the syntax? Or the Tcl culture? Are there
issues with a particular implementation? I, personally, have no vested
interest; it just seemed to fit the design requirements...
Paul Koning
2016-07-04 18:42:55 UTC
Permalink
Post by Adam Jensen
Post by Paul Koning
Post by Tristan Gingold
I agree. Yes to scripting, but maybe not with tcl.
(Although it would be better to have a generic scripting infrastructure to support any language).
Generic is fine, but i agree with Patrick that Tcl is a "language" to be avoided at all costs. Python is good. Note that GDB adopted Python as its scripting language some time ago after considering a bunch of alternatives. It has the advantage of substantially cleaner syntax than most if not all competitors. And yes, embedding it is pretty simple. Note though that there is some complexity in supporting both Python 2 and Python 3 since the internals are slightly different, and not as well documented as they ought to be. (If you want to support only one of the two, make it Python 3.)
Wow, I would not have guessed that this community would have such a
strong aversion to Tcl. Is it the syntax? Or the Tcl culture?
I don't know anything about Tcl culture. In my case, the answer is most emphatically the messed up syntax. I have had to write substantial code in Tcl; it was the implementation language of the system management interface of a router I worked on some years ago. I still remember it with horror; as a result, Tcl is one of only two programming languages I've ever worked on (out of about 40) that I refuse ever to touch again.

paul
Adam Jensen
2016-07-04 18:54:48 UTC
Permalink
Post by Paul Koning
I don't know anything about Tcl culture. In my case, the answer is most emphatically the messed up syntax. I have had to write substantial code in Tcl; it was the implementation language of the system management interface of a router I worked on some years ago. I still remember it with horror; as a result, Tcl is one of only two programming languages I've ever worked on (out of about 40) that I refuse ever to touch again.
***@scripting-language PTSD. This mailing list community is awesome!
Torsten Meißner
2016-07-04 18:44:38 UTC
Permalink
Tcl isn’t a bad language, but you won’t find many people which are good at it.
And it’s an old language, which you can see when you look at it’s design.

Python (and other languages) support many different programming concepts from the start
and there are far more people which know the language pretty good.

So, if there are plans to integrate such a scripting language, my choice would also be Python(3).


Greetings,
Torsten
Post by Adam Jensen
Post by Paul Koning
Post by Tristan Gingold
I agree. Yes to scripting, but maybe not with tcl.
(Although it would be better to have a generic scripting infrastructure to support any language).
Generic is fine, but i agree with Patrick that Tcl is a "language" to be avoided at all costs. Python is good. Note that GDB adopted Python as its scripting language some time ago after considering a bunch of alternatives. It has the advantage of substantially cleaner syntax than most if not all competitors. And yes, embedding it is pretty simple. Note though that there is some complexity in supporting both Python 2 and Python 3 since the internals are slightly different, and not as well documented as they ought to be. (If you want to support only one of the two, make it Python 3.)
Wow, I would not have guessed that this community would have such a
strong aversion to Tcl. Is it the syntax? Or the Tcl culture? Are there
issues with a particular implementation? I, personally, have no vested
interest; it just seemed to fit the design requirements...
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Adrien Prost-Boucle
2016-07-04 21:35:33 UTC
Permalink
I agree.  Yes to scripting, but maybe not with tcl.
(Although it would be better to have a generic scripting infrastructure 
to support any language).
Tristan.
I agree with that. Here is my point.

TCL can certainly easily become a nightmare, but it depends on the application.
GHDL lives very well without scripting, so the needs are probably light.
In terms of number of commands to implement and complexity of those, I mean.

The presence of TCL is still very strong in the EDA world,
and seriously switching to anything else is't going to happen soon,
so TCL is somewhat unavoidable.

I'm just wondering, if support of TCL + Python is needed/wanted,
how should that be implemented, point of view of link to TCL/Python runtimes?
99% of times the interpreters won't be used, so I would hate to see a hard link.

Plugins then?
That implies something generic to plug command interpreters, linked to Tristan statement.

I don't really know the solution, as I'm not GHDL developer...

Regards,
Adrien
w***@f-cpu.org
2016-07-04 21:44:52 UTC
Permalink
Post by Adrien Prost-Boucle
Post by Tristan Gingold
(Although it would be better to have a generic scripting
infrastructure 
to support any language).
Tristan.
I agree with that.
I second this : if you leave the freedom to implement any language,
the user can choose and use what fits best to each given problem.
From the GHDL perspective, it becomes "only a matter of interfacing".
VHPI is already a vital feature for me and many others, GHDL provides
some safety in this domain and this boosts GHDL as a whole.
The same could happen too with a scripting extension interface.

yg
Adam Jensen
2016-07-04 22:49:39 UTC
Permalink
Post by Adrien Prost-Boucle
Post by Tristan Gingold
I agree. Yes to scripting, but maybe not with tcl.
(Although it would be better to have a generic scripting infrastructure
to support any language).
Tristan.
I agree with that. Here is my point.
TCL can certainly easily become a nightmare, but it depends on the application.
GHDL lives very well without scripting, so the needs are probably light.
In terms of number of commands to implement and complexity of those, I mean.
Off the top of my head (and with a couple of beers in me (Independence
Day barbecue (woohoo))), I imagine what might be needed/useful would be
a facility to:

1) configure a trace file
2) configure IPC/RPC
3) a shell to explore the model and set values (maybe)
4) [a shell/]config-file to control the simulation

It seems like any serious co-simulation can/should be done in a separate
process, interacting via some kind of IPC or RPC, using whatever
language/runtime that is most appropriate for the problem domain.

For the most part, it seems like almost all of this can be done
[currently] in an ad-hoc fashion (except for the trace file config). The
embedded light-weight Tcl interpreter seems like a way to consolidate
these four facilities with a uniform, documented syntax in a
self-contained, manageable code-base. I still haven't gotten my mind
around the strongly adverse reaction people on his list have to the Tcl
syntax. Perhaps people are imagining the intention is to use it for
serious programming workloads rather than using it as a configuration
file syntax with light-weight scripting capabilities(?).
Lehmann, Patrick
2016-07-05 07:09:49 UTC
Permalink
There was a *NOT* missing... SORRY!

So my personal opinion is NO Tcl :)

And P.S.
I didn't intent to start a Python vs. Tcl fire :)

Regards
Patrick

-----------------------------------
Wissenschaftliche Hilfskraft

Technische UniversitÀt Dresden
FakultÀt Informatik
Institut fÃŒr Technische Informatik
Lehrstuhl VLSI-Entwurfssysteme, Diagnostik und Architektur
01062 Dresden
Tel.: +49 351 463-38451
Fax: +49 351 463-38324
Raum: APB-1020
E-Mail: ***@tu-dresden.de
WWW: http://vlsi-eda.inf.tu-dresden.de


-----Original Message-----
From: Ghdl-discuss [mailto:ghdl-discuss-***@gna.org] On Behalf Of Tristan Gingold
Sent: Monday, July 04, 2016 7:59 PM
To: ghdl-***@gna.org
Subject: Re: [Ghdl-discuss] Collaboration in the GHDL project
Post by Lehmann, Patrick
Hello Adam,
I'm not implementing this feature, so it's not my choice, but Tcl is a horrible language ;)
I know it was originally designed as an embedded scripting language
especially for CAE (EDA, CAD, ...) tools, but there are way better and
- Python can be embedded in a few lines of C code. Its giving you access to a very big
standard library and an easy to learn syntax. Having a Python interface for GHDL
(longterm wish from me) could ease the handling of testbench interfaces (Cocotb,
VUnit, ...)
- LUA is used in many projects under the hood as scripting and configuration language.
See for example LuaTeX, Logitech keyboard scripting, ...
Even a big EDA vendor is considering Python as new scripting interface...
So in my personal option: having a scripting interface could be a new
big feature for GHDL, but Tcl would be my first and second choice.
I agree. Yes to scripting, but maybe not with tcl.
(Although it would be better to have a generic scripting infrastructure to support any language).

Tristan.
Rene Doss
2016-07-09 19:19:13 UTC
Permalink
I see in the mailing list a discussion around scripting,

can you first implement the "hierarchical instance name", this is part
of VHDL2008?

This would help for some tricky testbenches like too check some internal
signals.

This is also a standard name - interfacename to other script languages.

René Doß
Tristan Gingold
2016-07-10 08:43:07 UTC
Permalink
Post by Rene Doss
I see in the mailing list a discussion around scripting,
can you first implement the "hierarchical instance name", this is part
of VHDL2008?
Well, both are completely independent.
I still plan to implement external names, but that first require some
important preliminary work.
Post by Rene Doss
This would help for some tricky testbenches like too check some internal
signals.
This is also a standard name - interfacename to other script languages.
Why do you mean by that ?

Tristan.
Adam Jensen
2016-07-04 18:29:21 UTC
Permalink
Post by Lehmann, Patrick
I'm not implementing this feature, so it's not my choice, but Tcl is a horrible language ;)
I know it was originally designed as an embedded scripting language especially for CAE
(EDA, CAD, ...) tools, but there are way better and easier embedded or embeddable
- Python can be embedded in a few lines of C code. Its giving you access to a very big
standard library and an easy to learn syntax. Having a Python interface for GHDL
(longterm wish from me) could ease the handling of testbench interfaces (Cocotb,
VUnit, ...)
- LUA is used in many projects under the hood as scripting and configuration language.
See for example LuaTeX, Logitech keyboard scripting, ...
Even a big EDA vendor is considering Python as new scripting interface...
The feature-creep slippery-slope can be a fun [speculative] ride.
Personally, I thought the light-weight [Jim]Tcl suggestion was a little
excessive for the immediate need. The current design decision is: should
a custom syntax and parser be developed for the signal-trace
configuration file? (and ultimately, that's the decision of whoever
writes something (open-source projects are grand)).

An alternative approach, somewhere between a custom configuration file
syntax/parser and an interpreted language, might be to use something
like libconfig.

http://www.hyperrealm.com/libconfig/libconfig.html

In any case, documentation will probably be needed. If it already
exists, that seems like a significant factor in the decision process.
Post by Lehmann, Patrick
So in my personal option: having a scripting interface could be a new big feature for GHDL,
but Tcl would be my first and second choice.
Did you mean to say that Tcl would *not* be your first or second choice?
(i.e., you do not like Tcl as a scripting/configuration syntax).
Tristan Gingold
2016-07-05 06:12:21 UTC
Permalink
Post by Adam Jensen
Post by Jonas Baggett
Hello,
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
Have you considered embedding a Tcl interpreter?
Can you clarify why an interpreter would help to select signals ?
The file format is so simple that 'parsing' it manually would be very
simple too.

Tristan.
Adam Jensen
2016-07-05 18:13:18 UTC
Permalink
Post by Tristan Gingold
Post by Adam Jensen
Post by Jonas Baggett
Hello,
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
Have you considered embedding a Tcl interpreter?
Can you clarify why an interpreter would help to select signals ?
The file format is so simple that 'parsing' it manually would be very
simple too.
A custom syntax/parser for a signal-trace configuration file seems like
a perfectly valid way to implement a very useful function. If that is
the only goal, then libconfig is probably overkill and jimTcl is
certainly excessive.

I've been imagining that one day GHDL might have richly structured HDF5
signal-trace capabilities, and that simulations might be configured with
elaborate IPC/RPC (for interaction with Octave, R, SciPy, etc.), and a
few other slightly more unusual deployments. It seems like much of this
might benefit from a [scriptable] embedded shell with access to both the
simulation-model and the OS.

But these suggestions [from me] are all just "what if..." and "would it
be nifty if..." type remarks. I'm not implementing anything and the
decisions are ultimately going to be made by the people who actually
build things. Viva la open-source! ;)
Jonas Baggett
2016-07-05 21:08:59 UTC
Permalink
Hello Adam,

Thanks for your suggestions. Yes, I am going for the custom
syntax/parser, as I believe in the KISS philosphy :). As far as I know,
we don't have a clear goal of a more complex simulation that requires a
scripting language interpretor, but here I am not the most informed
person ;). And if in several years we finaly find out that we need a
scripting language interpretor, we will probably take different
decisions than if we would do the choice today, because we will better
know what would be our needs and new scripting languages may emerge
until then.

Yes libconfig is too much for only signal selections. I can imagine that
in some day the trace configuration file could also include simulation
options like the duration of the simulation, but even in this case,
maybe broadly 95% of the file will still be about signal selection. So
the file synthax should still be in this case optimized for the 95% of
lines about signal selection.

And sorry that you didn't receive here more enthousastic answers for
your proposition about a tcl interpretor ;).

Cheers,
Jonas
Post by Adam Jensen
Post by Tristan Gingold
Post by Adam Jensen
Post by Jonas Baggett
Hello,
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
Have you considered embedding a Tcl interpreter?
Can you clarify why an interpreter would help to select signals ?
The file format is so simple that 'parsing' it manually would be very
simple too.
A custom syntax/parser for a signal-trace configuration file seems like
a perfectly valid way to implement a very useful function. If that is
the only goal, then libconfig is probably overkill and jimTcl is
certainly excessive.
I've been imagining that one day GHDL might have richly structured HDF5
signal-trace capabilities, and that simulations might be configured with
elaborate IPC/RPC (for interaction with Octave, R, SciPy, etc.), and a
few other slightly more unusual deployments. It seems like much of this
might benefit from a [scriptable] embedded shell with access to both the
simulation-model and the OS.
But these suggestions [from me] are all just "what if..." and "would it
be nifty if..." type remarks. I'm not implementing anything and the
decisions are ultimately going to be made by the people who actually
build things. Viva la open-source! ;)
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
t***@free.fr
2016-08-06 01:09:55 UTC
Permalink
Hello,

also requested by some users: possibility to suspend and resume dumps.

Tristan.


----- Mail original -----
Post by Jonas Baggett
Hello,
So here is an updated roadmap for signal selection in wave.
+ When the wave option file given to the command line doesn't exist,
it should be created with all the signals of the design.
- Simple wildcards (/top/sub1/*, /top/sub*/*)
- Double wildcards (/top/**, top/sub*/**, top/*/**)
- Simple regexp (top/sub[1-3]/sig[a-z])
- Negation (! top/sub2/sigk)
+ Signals in shared memory (as suggested by René)
- Selecting element in an array (/top/sub3/my_array(5))
- Selecting element in a record (/top/sub3/my_record.field)
- Selection of port and architecture signals
(top/sub1/arch/*:port
and top/sub1/arch/*:architecture)
- gtkwave used as a library ?
Thanks for your comments.
Jonas
Post by René Doß
Post by Jonas Baggett
Hello Rene,
That's an interesting feature for long simulations, thanks for the
information.
I have missed this feature, as I wrote some state machines. Often I
had
a state and waiting for for a condition that never come. I could
stop my
simulation earlier.
Post by Jonas Baggett
Do you also know if gtkwave could be used as a library ?
I do not know this. I think not. The source code is open source.
Post by Jonas Baggett
So that ghdl could directly launch gtkwave and add signals to it
and
then when the user makes some changes in gtkwave and save them,
ghdl
will be able to receive these changes.
You want a use gtkwave as manipulator. Interesting idea.
This is total new feature. great idea.
René
Post by Jonas Baggett
Jonas
Post by Rene Doss
Post by Jonas Baggett
Tell me if you have any suggestion.
yes I have something, but I do not know if this the correct
discussion
round.
I say something what I have seen for long time. This information
is from
my deeper brain.
Gtkwave has included shared memory functions. (I think it is only
possible under linux)
If ghdl can store the signal in a shared memory the current
signals can
be refreshed by gtkwave directly into the screen. This is
interacting
process. The use can follow the simulation online.
Rene
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Jonas Baggett
2016-08-06 13:16:50 UTC
Permalink
Hi Tristan,

Noted. Then setting a variable like start_dump_time and stop_dump_time
inside the wave option file should do that.

Jonas
Post by Jonas Baggett
Hello,
also requested by some users: possibility to suspend and resume dumps.
Tristan.
----- Mail original -----
Post by Jonas Baggett
Hello,
So here is an updated roadmap for signal selection in wave.
+ When the wave option file given to the command line doesn't exist,
it should be created with all the signals of the design.
- Simple wildcards (/top/sub1/*, /top/sub*/*)
- Double wildcards (/top/**, top/sub*/**, top/*/**)
- Simple regexp (top/sub[1-3]/sig[a-z])
- Negation (! top/sub2/sigk)
+ Signals in shared memory (as suggested by René)
- Selecting element in an array (/top/sub3/my_array(5))
- Selecting element in a record (/top/sub3/my_record.field)
- Selection of port and architecture signals
(top/sub1/arch/*:port
and top/sub1/arch/*:architecture)
- gtkwave used as a library ?
Thanks for your comments.
Jonas
Post by René Doß
Post by Jonas Baggett
Hello Rene,
That's an interesting feature for long simulations, thanks for the
information.
I have missed this feature, as I wrote some state machines. Often I
had
a state and waiting for for a condition that never come. I could
stop my
simulation earlier.
Post by Jonas Baggett
Do you also know if gtkwave could be used as a library ?
I do not know this. I think not. The source code is open source.
Post by Jonas Baggett
So that ghdl could directly launch gtkwave and add signals to it
and
then when the user makes some changes in gtkwave and save them,
ghdl
will be able to receive these changes.
You want a use gtkwave as manipulator. Interesting idea.
This is total new feature. great idea.
René
Post by Jonas Baggett
Jonas
Post by Rene Doss
Post by Jonas Baggett
Tell me if you have any suggestion.
yes I have something, but I do not know if this the correct
discussion
round.
I say something what I have seen for long time. This information
is from
my deeper brain.
Gtkwave has included shared memory functions. (I think it is only
possible under linux)
If ghdl can store the signal in a shared memory the current
signals can
be refreshed by gtkwave directly into the screen. This is
interacting
process. The use can follow the simulation online.
Rene
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
_______________________________________________
Ghdl-discuss mailing list
https://mail.gna.org/listinfo/ghdl-discuss
Loading...