Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 05 13:29

    umarcor on top-subtype

    (compare)

  • Oct 05 13:28

    umarcor on master

    2008: ad tb_top_generic_subtype cosim: add ref to aguinet/drago… (compare)

  • Sep 24 20:07

    umarcor on top-subtype

    2008: ad tb_top_generic_subtype (compare)

  • Sep 24 19:59

    umarcor on top-subtype

    2008: ad tb_top_generic_subtype (compare)

  • Sep 24 19:54

    umarcor on top-subtype

    2008: ad tb_top_generic_subtype (compare)

  • Sep 23 01:45

    umarcor on style

    (compare)

  • Sep 23 01:44

    umarcor on run_08

    (compare)

  • Sep 21 23:02

    umarcor on merge-support

    (compare)

  • Sep 21 22:59

    umarcor on master

    merge run_support.py into run.py (compare)

  • Sep 21 22:51

    umarcor on merge-support

    merge run_support.py into run.py (compare)

  • Sep 21 22:34

    umarcor on master

    style deprecate Travis (compare)

  • Sep 21 22:10

    umarcor on style

    test (compare)

  • Sep 21 21:51

    umarcor on style

    deprecate Travis TMP -k (compare)

  • Sep 21 21:47

    umarcor on style

    style deprecate Travis TMP -k (compare)

  • Sep 21 21:32

    umarcor on style

    pathlib support (compare)

  • Sep 21 21:18

    umarcor on runner-string

    (compare)

  • Sep 21 21:18

    umarcor on style

    pathlib (compare)

  • Sep 21 21:12

    umarcor on style

    style (compare)

  • Sep 21 19:48

    umarcor on master

    vhdl_2008: style use type 'string' for top-level… (compare)

  • Sep 21 19:34

    umarcor on runner-string

    use type 'string' for top-level… (compare)

Unai Martinez-Corral
@umarcor

When are the meeting times again? I might be able to attend them going forward depending on when they are. I don't have much to contribute to them (yet) but I just want to listen and be a part of it.

@nobodywasishere:eowyn.net, typically every two weeks. During 2020 and 2021, it was on thursdays. Now we changed it to TUESDAYs. It's 11AM pacific time, 20:00 Central European Time, 19:00 in the UK (might change when some countries change summer/winter time before others).
During this summer, we met every three weeks. The last two meetings and the next one are weekly. Therefore, the period is kind of arbitrary.
If you, or anyone, has some topic to discuss in a meeting, please bring it in the GitLab repository. Thre are labels for marking issues/MRs.
We can also schedule meetings other days and at other times. We meet at 11AM/20:00 because that fits the "usual suspects". Yet, every once in a while we meet to work on something specific.

Marlon James
@marlonjames
@umarcor I think the main reason to have a TWIKI account at this point is for access to the dial in info. If we want to move that to one of the private GitLab repos, we wouldn't need to require a TWIKI account to participate.
Unai Martinez-Corral
@umarcor
@marlonjames, that is so obvious and still I had not realised :embarrassed:
We don't have any private repo which fits that purpose, though...
Maybe some GitLab-Jitsi (or gotomeeting, or zoom) integration exists which inherits access permissions from the gitlab org.
ktbarrett
@ktbarrett:matrix.org
[m]

Lol. I was just about to say if you are moving away from the TWiki, you could just move to private repos and Gitlab teams.

I know TFS, Azure, and Teams have some amount of integration. Github has "teams" and team wikis and chat, no video/voice chat though.

Jim Lewis
@JimLewis
@umarcor @marlonjames we still need a place to organize the protected documents. OTOH, maybe the protection would be better as with TWIKI if you know the direct link to the doc, you don't need a password anymore.
When you get an IEEE account (apparently no membership required), you also get an email with it and the Google meetings (what ever they call it). At least, I don't think there is an IEEE membership required for the email and meetings capability.
Richard Head
@trickyhead_gitlab

Hi All. VHDL 2019 question. Can an array using an index (natural range <>) be assigned to a generic array who range is declared as (integer range <>) ?
so if I had this generic:

generic (
      type element_array_t is array(integer range <>) of type is private;
    );

Could I assign std_logic_vector as the generic array type? what would element_array_t'left return ?

Kaleb Barrett
@ktbarrett
Is there any way to associate constants with a record? Imagine for a register interface you could do something like the following:
type Register is record
    constant INFO : RegisterInfo;
    signal data : std_logic_vector;
    signal be : std_logic_vector;
end record Register;
Patrick Lehmann
@Paebbels
elements of a record have no object class. When an object is created from a record type, all subelements have the same object class.
Kaleb Barrett
@ktbarrett
Also, is there a way to enforce additional constraints on record parameterization using an assert? I could imagine maybe you could put an assert in the record definition, or perhaps create a metafunction that can return a type, and the assert is in the body?
Patrick Lehmann
@Paebbels
you can attach constant meta information via user defined attributes to objects, types, ...
Kaleb Barrett
@ktbarrett
What about on entity instances? I would really like to be able to make constant information from an entity as instantiated available to the instantiator.
T. Meissner
@tmeissner
@ktbarrett There are some issues at Gitlab regarding such things. I remember of one to add things like asserts to com,posite types like records.
But I don't find the gitlab issue at the moment
Richard Head
@trickyhead_gitlab
@ktbarrett Allow constants in composite subtypes: IEEE-P1076/VHDL-Issues#242
@ktbarrett Asserts in record types: IEEE-P1076/VHDL-Issues#99
These are two existing proposals - give them a thumbs up if you like them.
Kaleb Barrett
@ktbarrett
@trickyhead_gitlab Thanks for the links. The first one isn't quite what I was looking for. I was looking for a compile-time value in the record.
I see the issue with what I asked for. It's the same issue with out generics. The language (as do many others, like C++) segregate compile-time and runtime code and data sections. Its a huge expressivity problem and not one I expect to ever be solved.
Jim Lewis
@JimLewis
@ktbarrett Records don't have signals or constants. However, if RegisterInfo is a scalar, then you could put a range constraint on it that only allows one value. :)
type Register is record
    INFO : integer range 2 to 2;
    data : std_logic_vector;
    be : std_logic_vector;
end record Register;
While it is not a constant, it will default to 2, and will only allow the value 2 to be written to it.
Jim Lewis
@JimLewis
Ranges can be used with any scalar, including enums
Patrick Lehmann
@Paebbels
even the examples in the presentation have been copied from the OSVVM classes
m-kru
@m-kru
Are there plans to introduce something like "library nesting" in VHDL?
Kaleb Barrett
@ktbarrett
@JimLewis RegisterInfo would be a compile-time value, as the register meta information would guide some generates (in the system I'm working on). Right now the type is split into a constant array of register info records and a runtime array of register interface records. I was wondering if I could possible combine them, which would make certain things easier. Even if constants were supported in records, because generics and ports are separated on entities there really isn't a good way to pass that in.
@Paebbels Who is "they"?
Patrick Lehmann
@Paebbels
Argh, I hit a bug of Gitter, sometime it shows messages from other chats here ...
Unai Martinez-Corral
@umarcor

Are there plans to introduce something like "library nesting" in VHDL?

@m-kru, do you mean the names of two libraries being aliased?

4 replies
Jim Lewis
@JimLewis
@m-kru You would be welcome to participate and work on that issue.
Jim Lewis
@JimLewis
@ktbarrett Have you looked at Ada and see if they have a solution for this? I think a discriminant on a record can set an initial value and I think under some conditions it can be static. I would have to read it again. In the mean time, maybe you want to look at that and see if it is suitable.
Kaleb Barrett
@ktbarrett
@JimLewis It looks like record discriminants are similar to what I'm asking for, but they suffer the same lack of expressivity as non-type templates in C++. For example, how do you create an array of heterogenously discriminated types? That's my use case after all.
tgingold
@tgingold
@ktbarrett This is possible in Ada: you can change the discriminant (with some restrictions). You can of course create an array of access to a discriminated type.
Kaleb Barrett
@ktbarrett
@tgingold How would synthesizers handle access types of bus interfaces? Is it possible only the discriminator can be made an access type?
tgingold
@tgingold
Usually access types are excluded from synthesis.
I suppose discriminant mutation would also be excluded.
So you would be allowed to use only static discriminant. Fine.
But then, you can already use a record with a first element acting as the discriminant, and all the elements you need. This fake discriminated type is less compact than a real one and don't provide check on existing elements.
Jim Lewis
@JimLewis
@tgingold Will that work for use with generate? I think that is what he is ultimately looking for.
std-max
@std-max

Hi! I've got a problem with a generic procedure.

    procedure convert_to_type generic (type t)
                              parameter (constant s : in string; variable v : out t) is
    begin
        v := t'value(s);
    end procedure;

    procedure parse(constant s : in string) is
        type value_t is (V1, V2, V3, V4);
        procedure convert_to_value is new convert_to_type generic map (t => value_t);

        variable v : value_t;
    begin
        convert_to_value("V1", v);
    end procedure;

Modelsim reports the following error Attribute "value" requires a scalar type mark prefix.
Is there a way to tell VHDL that the t type is going to be a scalar ? Or any tricks to overcome this issue ?
(I know I could have used directly value_t'value(v) but in my code, it's more complex that this MWE)
Thanks

Richard Head
@trickyhead_gitlab

@std-max Unfortunately not in VHDL 2008. on the convert_to_type procedure, type t could be literally any type - scalar, composite or access. So t'value cannot be used because it would be illegal for composite or access types. VHDL 2019 fixes this by allowing you to specify types to be scalar or composite (or just anything).
For example:

procedure some_proc generic( type t is array(natural range<>) of (type is <>) )

Here, you are specifying that the type must be array of a scalar type.

std-max
@std-max
oh that makes sense now, thank you
Richard Head
@trickyhead_gitlab
The above should be supported in ActiveHDL 13.0
std-max
@std-max
I dont have it unfortunately. don't you have any tips to convert a string to a generic enumeration value ?
Richard Head
@trickyhead_gitlab
unfortunately not. But Im wondering why you you need the procedure at all, what is wrong with simply: v := value_t'value("V1");
Patrick Lehmann
@Paebbels
I wonder if v := v'subtype'value("V1") could work as every object has a 'subtype, right?
Jim Lewis
@JimLewis
@Paebbels Same problem - don't know the type is scalar
dalex78
@dalex78
Hi, I have a question about multiple processes driving an array of records in VHDL-2008, would you mind taking a look ? https://stackoverflow.com/questions/69428650/multiple-processes-driving-an-array-of-records-in-vhdl-2008
Richard Head
@trickyhead_gitlab
@dalex78 answered
dalex78
@dalex78
Thank you, very clear answer
Jim Lewis
@JimLewis
Care to vote on linkedin: For a VHDL Verification methodology, is it ok to use constructs that have been deprecated and removed from the language?
https://www.linkedin.com/feed/update/urn:li:activity:6850469284003610624/
d3jones-metrics
@d3jones-metrics
Which features have been deprecated to date?