Re: [sv-bc] Constant method calls

From: Surya Pratik Saha <spsaha_at_.....>
Date: Mon Feb 11 2008 - 21:38:33 PST
Hi Greg,
I re-read the LRM regarding 'next'. It indeed does not say about the no. 
of iteration. So I think it can be considered as 'constant'. Does it 
mean method on any enum variable to be constant. I think so, but your 
earlier mail mentions that the variable also has to be constant though. 
What do you think?

Regards
Surya



-------- Original Message  --------
Subject: Re:[sv-bc] Constant method calls
From: Greg Jaxon <Greg.Jaxon@synopsys.com>
To: Surya Pratik Saha <spsaha@cal.interrasystems.com>, sv-bc@eda.org
Cc: sarani@cal.interrasystems.com
Date: Tuesday, February 12, 2008 12:37:19 AM
> Surya,
>
>    You keep bringing up the idea that the result of an enum next() method
> depends on the number of calls made to it.  I don't see any support for
> that idea in the LRM or in the committee's discussions.  The Next() method
> does not update the variable (or constant) to which it applied.  It has
> no static storage with which it might "remember" how often it has been called.
> It is simply a function of two arguments - an enum and an optional (positive?)
> integer count, N.  It locates the enum's value in the list of legal values, then
> it steps forward in that (declaration-ordered) list "N" places and returns that
> as its functional result.
>
>    The existing definition is incomplete in not specifying how negative values
> of N affect Next().  The special case of Next() for an out-of-range enum value
> is also not clear - is the answer the same as .First() for /all/ values of N,
> or only for N=1 (the default)?  Is V.Next(0) == V for all V, or only for legal
> value of the enum type of V?
>
> typedef enum { A,B,C } Enum_t;
> Enum_t V = Enum_t'(5);
>
> $display( V.Next, V.Next(-1), V.Next(2) );
>
> But it would have mentioned depending upon previous calls to Next if that
> influenced the result.
>
> Greg Jaxon
>
>
>
> Surya Pratik Saha wrote:
>   
>> Hi Steven,
>> Even 'e' is a constant like parameter -
>> parameter enum {A, B, C} e = A;
>>
>> then also I think 'next' should not be a constant, because the result
>> will depend on the no. of call which is not constant. What do you think?
>>
>> Regards
>> Surya
>>
>>
>>
>> -------- Original Message  --------
>> Subject: Re:[sv-bc] Constant method calls
>> From: Steven Sharp <sharp@cadence.com>
>> To: Greg.Jaxon@synopsys.com, spsaha@cal.interrasystems.com
>> Cc: sharp@cadence.com, sarani@cal.interrasystems.com, sv-bc@eda.org,
>> sv-ec@eda.org
>> Date: Saturday, February 09, 2008 6:56:05 AM
>>     
>>>> From: Surya Pratik Saha <spsaha@cal.interrasystems.com>
>>>>     
>>>>         
>>>  
>>>       
>>>> module top;
>>>>    enum {A, B, C} e;
>>>>    initial begin
>>>>       for (int i = 0; i < e.next(); i ++) begin:b
>>>>          reg[e.next(): 0] r;
>>>>       end
>>>>    end
>>>> endmodule
>>>>     
>>>>         
>>> Surya, e.next cannot be a constant expression because e is not a
>>> constant. The case that could possibly be allowed would be something
>>> like A.next, whose result would be the constant B (if it is legal to
>>> apply an enum method to an enum literal, which is unclear).
>>>
>>> Steven Sharp
>>> sharp@cadence.com
>>>
>>>
>>>
>>>
>>>
>>>   
>>>       
>>
>>
>>
>>     
>
>
>
>
>
>   





-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Mon Feb 11 21:39:28 2008

This archive was generated by hypermail 2.1.8 : Mon Feb 11 2008 - 21:40:04 PST