In section 11.6, there is text that says that variables declared in a fork..join/join_any/join_none block shall be initialized whenever execution enters their scope. This text used to say "Automatic variables" in an earlier draft, but this changed to just "Variables" in the standard. This seems to imply that static variables declared there would also be initialized at that time. It is bad enough that the text just says variables, but the actual dropping of "automatic" from the older draft really seems to imply a change. I assume that this was a mistake, and that the word "automatic" should be added back. Section 6.4 still says that statics should be initialized at the start of simulation. The paragraph also says that reference arguments can be used in the initialization values of variables in such blocks. This only makes sense for initializers executed on entry. If static variables are initialized at the start of simulation, it would make no sense for the initializer to refer to a reference argument at that point. So that should specify automatic variables also. I would also like to raise with the SV-EC another issue with static variable initializers. There used to be a requirement inserted by the SV-BC that a static variable with an initializer had to be declared with an explicit "static" keyword. This requirement was deliberate, to help avoid users becoming confused and thinking that the initializer would be executed every time the block was entered. This confusion could easily happen, given that identical syntax could be either a static or automatic variable declaration, depending on context. Apparently this requirement was removed by the SV-EC, without the SV-BC being aware of it. We need to understand why this was done. Steven Sharp sharp@cadence.comReceived on Sun Sep 24 14:00:10 2006
This archive was generated by hypermail 2.1.8 : Sun Sep 24 2006 - 14:01:29 PDT