Re: [sv-bc] Constant method calls

From: Surya Pratik Saha <spsaha_at_.....>
Date: Mon Feb 11 2008 - 22:00:13 PST
Hi Shalom,
The value of those methods are always an enum element which is always 
constant. So why do you think the variable also needs to be constant?

Regards
Surya



-------- Original Message  --------
Subject: Re:[sv-bc] Constant method calls
From: Bresticker, Shalom <shalom.bresticker@intel.com>
To: Surya Pratik Saha <spsaha@cal.interrasystems.com>
Cc: sv-bc@eda.org, sarani@cal.interrasystems.com
Date: Tuesday, February 12, 2008 11:27:32 AM
> No, because the value of the enum variable is not constant.
>
> Shalom 
>
>   
>> -----Original Message-----
>> From: owner-sv-bc@server.eda.org 
>> [mailto:owner-sv-bc@server.eda.org] On Behalf Of Surya Pratik Saha
>> Sent: Tuesday, February 12, 2008 7:39 AM
>> To: Greg Jaxon
>> Cc: sv-bc@server.eda.org; sarani@cal.interrasystems.com
>> Subject: Re: [sv-bc] Constant method calls
>>
>> 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.
>>
>>
>>     
> ---------------------------------------------------------------------
> Intel Israel (74) Limited
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
>
>
>
>
>
>   





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

This archive was generated by hypermail 2.1.8 : Mon Feb 11 2008 - 22:01:37 PST