Re: How do you handle build variants in VHDL?



Mike Treseler wrote:

I agree. If some of my "switched off" code does not elaborate,
that means I have changed or eliminated the target of some identifier
that previously make the code usable.
I would either fix up the option or take it all out.

I have a project suite that I've been attempting to perfect for some time.
It consists of a "framework" if you like, comprising a hierarchy of
entities, some of which may be substituted with project-specific variants,
whilst others may be provided by generic, cross-project architectures. The
suite itself is used in "many" projects, each of which may be targeted to
"many" hardware platforms.

I use records as far as possible when defining the ports of entities
within the framework. Each entity can have up to a dozen records as ports,
as each record contains only closely-related signals.

In general thus far, record declarations are "global" across projects -
they never change. Recently however, I've introduced a record that may be
defined on a per-project basis. This record is used in a number of
entities throughout the suite. This doesn't cause problems with entity
ports so much - it's when, for example, those (variable) record members
are accessed directly in "generic" modules within the framework.

Now, this is all very much WIP, and I'm not claiming that the problem
can't better be solved (I've tried to use configurations but either they
just don't seem to suit my purpose, result in redundant coding effort
which complicates maintenance, or I can't work out how to use them
properly), but it is in these cases that it would be very useful to be
able to exclude code segments, based on a constant or generic or compiler
directive, that wouldn't - for this project - pass compilation.

And again, this is only one example.

Anyway, I offer this explanation not for any justification of my methods,
but merely an explanation of what I am trying to achieve. I would
acknowledge that this is far from the typical or perhaps even intended use
of VHDL.

Regardless, I'm not convinced that my goal is ultimately realisable using
current VHDL standards and current-gen tools (happy to be proven wrong).
What I _do_ know is that I could easily achieve this in software.

Regards,

--
Mark McDougall, Engineer
Virtual Logic Pty Ltd, <http://www.vl.com.au>
21-25 King St, Rockdale, 2216
Ph: +612-9599-3255 Fax: +612-9599-3266
.



Relevant Pages

  • Re: Host identification
    ... Initiating Parallel DNS resolution of 1 host. ... Scanning HOSTNAME (TARGET) [1714 ports] ...
    (Security-Basics)
  • Host identification
    ... I recently started scanning the /24 subnets I get assigned ... Scanning HOSTNAME (TARGET) [1714 ports] ...
    (Security-Basics)
  • RE: Going to BSD 8 from RELENG_7
    ... change my cvsup target from RELENG_7 to CURRENT I believe. ... and the make delete-old-libs before you have rebuild your ports. ... If you do the make delete-old and make delete-old-libs runs, ... Checked by AVG - www.avg.com ...
    (freebsd-stable)
  • Re: Porting from CE to Desktop
    ... when run against the .NET Framework. ... Do you know if this provides debug capabilities across both platforms? ... once you chose a mobile platform, ... The .NET CF target builds your assemblies with the retargetable ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: Using XPC Target to run RS232 device
    ... Interrupts from UARTs ... don't share an interrupt so you want to choose com1/none. ... the block to get rid of the warnings about unconnected ports. ... We have drivers for xPC Target for these boards. ...
    (comp.soft-sys.matlab)