Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > generate statement inside a process (conditional variable declaration)

Reply
Thread Tools

generate statement inside a process (conditional variable declaration)

 
 
Nicolas Matringe
Guest
Posts: n/a
 
      04-18-2007
Hello
I think it is not possible to use a generate inside the declarative
part of a process.
I would need it just now so it seems a good idea, but maybe it is not.
Any argument ?

Nicolas

 
Reply With Quote
 
 
 
 
Jonathan Bromley
Guest
Posts: n/a
 
      04-18-2007
On 18 Apr 2007 01:02:35 -0700, Nicolas Matringe <(E-Mail Removed)>
wrote:

>Hello
>I think it is not possible to use a generate inside the declarative
>part of a process.
>I would need it just now so it seems a good idea, but maybe it is not.
>Any argument ?


Nicolas,

I don't really see the problem. All variables are initialised
anyhow - to the 'LEFT value of their subtype - so surely it is
OK simply to create a generic that defaults to this value,
and use that generic as the initialiser?

entity Foo is
generic (initval: SOME_TYPE := SOME_TYPE'left);
port ....
end;
architecture A of Foo is
begin
process
variable V: SOME_TYPE := initval;
begin
end process;
end;

Now, if I leave the generic "initval" at its default
value, the process behaves exactly as though V had
no explicit initialisation.

Have I missed the point of your problem?

regards
--
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
http://www.velocityreviews.com/forums/(E-Mail Removed)
http://www.MYCOMPANY.com

The contents of this message may contain personal views which
are not the views of Doulos Ltd., unless specifically stated.
 
Reply With Quote
 
 
 
 
Ben Jones
Guest
Posts: n/a
 
      04-18-2007

"Jonathan Bromley" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> On 18 Apr 2007 01:02:35 -0700, Nicolas Matringe <(E-Mail Removed)>
> wrote:
>>I think it is not possible to use a generate inside the declarative
>>part of a process.
>>I would need it just now so it seems a good idea, but maybe it is not.
>>Any argument ?


> I don't really see the problem. All variables are initialised
> anyhow - to the 'LEFT value of their subtype - so surely it is
> OK simply to create a generic that defaults to this value,
> and use that generic as the initialiser?
>
> Have I missed the point of your problem?


I'm not sure what Nicolas's problem actually was, but I assumed that he
wanted to surround some declaration at the start of a process - for example
the declaration of some unwieldy variable - with an IF... GENERATE block so
that it's only created under certain conditions. I can see how that might
make certain code more efficient.

However, I can't think of anything that you actually *cannot* do unless you
have that feature.

It's entirely possible that I've missed the point as well. Probably in the
opposite direction. So on average, the problem is solved

-Ben-


 
Reply With Quote
 
Andy
Guest
Posts: n/a
 
      04-18-2007
On Apr 18, 7:11 am, "Ben Jones" <(E-Mail Removed)> wrote:
> "Jonathan Bromley" <(E-Mail Removed)> wrote in message
>
> news:(E-Mail Removed)...
>
> > On 18 Apr 2007 01:02:35 -0700, Nicolas Matringe <(E-Mail Removed)>
> > wrote:
> >>I think it is not possible to use a generate inside the declarative
> >>part of a process.
> >>I would need it just now so it seems a good idea, but maybe it is not.
> >>Any argument ?

> > I don't really see the problem. All variables are initialised
> > anyhow - to the 'LEFT value of their subtype - so surely it is
> > OK simply to create a generic that defaults to this value,
> > and use that generic as the initialiser?

>
> > Have I missed the point of your problem?

>
> I'm not sure what Nicolas's problem actually was, but I assumed that he
> wanted to surround some declaration at the start of a process - for example
> the declaration of some unwieldy variable - with an IF... GENERATE block so
> that it's only created under certain conditions. I can see how that might
> make certain code more efficient.
>
> However, I can't think of anything that you actually *cannot* do unless you
> have that feature.
>
> It's entirely possible that I've missed the point as well. Probably in the
> opposite direction. So on average, the problem is solved
>
> -Ben-


If there was a generate around the variable declaration, there would
also have to be one around the subsequent code that called it. Since
generate statements have their own declarative region, it would be
better to put the generate in the statement region, rather than one in
the declarative region and one in the statement region. Note that
generate statements are not currently allowed in ANY declarative
region either.

In sequential code there is very little need of a generate capability
that cannot be met with static conditions on if/case/loop statements,
that a decent optimizing compiler would not handle well anyway.

On the other hand, if a variable or constant had a complex, time-
consuming initialization (via a function call), compilers may not be
able to take that out just because it never gets used (due to static
conditions). In such a case, I'd be inclined to create separate
versions of the same process, each wrapped in a generate statement.
Perhaps through the use of common procedures and/or functions, the
amount of duplicate code in these process versions could be minimized.

Andy

 
Reply With Quote
 
Mike Treseler
Guest
Posts: n/a
 
      04-18-2007
Nicolas Matringe wrote:

> I think it is not possible to use a generate inside the declarative
> part of a process.
> I would need it just now so it seems a good idea, but maybe it is not.
> Any argument ?


If I have alternate or optional blocks of code,
I declare procedures in process scope.
These can be conditionally called after the BEGIN.

Sometimes I even preserve unused code this
way in case I change my mind. Unlike a commented
block of code, an uncalled procedure gets
analyzed at each compile.

-- Mike Treseler
 
Reply With Quote
 
Nicolas Matringe
Guest
Posts: n/a
 
      04-19-2007
On 18 avr, 13:51, Jonathan Bromley <(E-Mail Removed)>
wrote:
> On 18 Apr 2007 01:02:35 -0700, Nicolas Matringe <(E-Mail Removed)>
> wrote:
>
> >Hello
> >I think it is not possible to use a generate inside the declarative
> >part of a process.
> >I would need it just now so it seems a good idea, but maybe it is not.
> >Any argument ?

>
> Nicolas,
>
> I don't really see the problem. All variables are initialised
> anyhow - to the 'LEFT value of their subtype - so surely it is
> OK simply to create a generic that defaults to this value,
> and use that generic as the initialiser?

[...]
> Now, if I leave the generic "initval" at its default
> value, the process behaves exactly as though V had
> no explicit initialisation.
>
> Have I missed the point of your problem?


Well yes )

My problem was quite simple. I have an interrupt controller that must
handle interrupt priority (nothing fancy)
Now I am not sure what this priority must be because the documents I
have are not clear on this point. An easy way I have come up with was
to declare an std_logic_vector variable with ascending or descending
range, depending on the priority order (my priority decoder is hard-
coded because synthesis tool did not give me a fast enough result, it
is not possible to use a for ... loop)

Anyway I know I can use a for ... loop to revert my vector and make
this dependant on a generic but I also wanted to check if my idea was
good, bad, or utterly stupid.

Thank you all for your answers
Nicolas

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
wait for statement inside a process carbon9 VHDL 1 05-19-2008 08:02 PM
break inside of case- statement inside of loop Alexander Korsunsky C Programming 25 02-27-2007 05:39 AM
different variable in generate statement sanborne VHDL 7 04-25-2006 01:34 AM
How to generate variable labels for same component within a generate loop Weng Tianxiang VHDL 5 02-16-2006 01:45 PM
datagrid to generate additional querystring collection item to pull off on the target page for input into a condition statement test variable...?? Hazzard ASP .Net 1 04-02-2004 06:48 PM



Advertisments