Generics, packages, and VHDL-2008

R

Rob Gaddi

Hey y'all --

If I have an entity with a generic, call it DATA_WIDTH. And I want
that entity to use a package that has a DATA_WIDTH generic, in this
specific case the package provides for a queue, implemented on shared
variables, that the package would use.

Is there any way to call out the instantiated package using the
DATA_WIDTH that was passed into the entity?

Thanks,
Rob
 
A

Andy

Rob,

You can put a Package Instantiation Declaration in the declarative region of the entity, architecture, block, or several other declarative regions (not process).

If the generic you wish to use is visible where the PID is, then that generic can be used in the PID's generic map aspect.

You can include a use statement after the PID to access declarations within it.

Andy
 
R

Rob Gaddi

Rob,

You can put a Package Instantiation Declaration in the declarative region of the entity, architecture, block, or several other declarative regions (not process).

If the generic you wish to use is visible where the PID is, then that generic can be used in the PID's generic map aspect.

You can include a use statement after the PID to access declarations within it.

Andy

Thanks, Andy.

I added the following line into the architecture declaration:

package ldq is new data_queue
generic map (
DATA_WIDTH => DATA_WIDTH
);

But during compilation I got the message:
Local instantiation of packages is not supported yet. Please contact
Aldec Support to receive the latest status.

Any clever workarounds, or am I subject to Aldec's implementational
whims / my willingness to copy and paste code that should be nicely
compartmentalized.

Also, wasn't VHDL-2008 five years ago?
 
R

Rob Gaddi

Thanks, Andy.

I added the following line into the architecture declaration:

package ldq is new data_queue
generic map (
DATA_WIDTH => DATA_WIDTH
);

But during compilation I got the message:
Local instantiation of packages is not supported yet. Please contact
Aldec Support to receive the latest status.

Any clever workarounds, or am I subject to Aldec's implementational
whims / my willingness to copy and paste code that should be nicely
compartmentalized.

Also, wasn't VHDL-2008 five years ago?

Found a workaround, at least for the special case of this issue. I was
under the impression for some reason that you couldn't take a pointer
to an incomplete type, and so I needed to make
subtype t_element is std_logic_vector(DATA_WIDTH-1 downto 0);

if I wanted to do dynamic structures with it.

Turns out I'm just wrong, and I can use
subtype t_element is std_logic_vector;

and eliminate the need for DATA_WIDTH as a generic entirely.
 
A

Andy

I think the large number of changes in 2008, combined with poor user-knowledge of the new features, and therefore little input from customers clamoring for them, all contributed to the delay in implementing these changes.

Regardless of whether you find/use a work-around, let them know you need this feature. It helps them prioritize their efforts.

Also, if you know of a competitor that supports the feature you need already, let Aldec know that too. That often helps.

Andy
 
R

Rob Gaddi

I think the large number of changes in 2008, combined with poor user-knowledge of the new features, and therefore little input from customers clamoring for them, all contributed to the delay in implementing these changes.

Regardless of whether you find/use a work-around, let them know you need this feature. It helps them prioritize their efforts.

Also, if you know of a competitor that supports the feature you need already, let Aldec know that too. That often helps.

Andy

Just to follow up on this, Aldec says that version 9.3 should come out in August and fix this issue.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,906
Latest member
SkinfixSkintag

Latest Threads

Top