Re: [sv-bc] system functiions in constant expressions

From: Brad Pierce <Brad.Pierce_at_.....>
Date: Tue Aug 22 2006 - 12:37:27 PDT
What are the reasons to not allow any pure system functions in constant
expressions, or at least any that are defined in the LRM and have not
been redefined by the user?

-- Brad
 

-----Original Message-----
From: Steven Sharp [mailto:sharp@cadence.com] 
Sent: Tuesday, August 22, 2006 12:34 PM
To: sv-bc@eda-stds.org; Brad.Pierce@synopsys.COM
Subject: Re: [sv-bc] system functiions in constant expressions

>According to 1364, Clause 5 --
> 
>      "The system functions that may be used in constant system 
>function calls are pure functions, i.e., those whose value depends only

>on their input arguments and which have no side effects."
 
Note that this sentence says that the allowed functions are pure, not
that all pure functions are allowed.  The second half of the sentence
implies something stronger, which is not surprising since I think it is
true for the functions allowed in 1364.  The next sentence specifically
calls out the system functions that are allowed, which does not include
anything in 1800. 

This sentence gives some guidance about minimum requirements for a
system function to be allowed in constant system function calls, which
would be applicable to specifying a set in 1800.  However, it was not
intended to directly apply to anything in 1800.

I believe that 1800 specifies that some of the system functions such as
$bits and the array query functions can be used in constant expressions.
This is more ad hoc than the definition of broader categories of
constant system functions in 1364.  I agree with Shalom that it should
follow 1364, and define this more broadly and explicitly.

Steven Sharp
sharp@cadence.com
Received on Tue Aug 22 12:37:34 2006

This archive was generated by hypermail 2.1.8 : Tue Aug 22 2006 - 12:37:39 PDT