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.comReceived 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