Gordon, Thanks for the detailed explanation. I agree totally and understand your assessments of the situation. I wrote an email to the vendor that accepts the import of packages within a class, recommending that that be disallowed. Since vendors see this email, I hope that those that are not compliant to this mantis start to make implement the change for their next release. Thanks Gordon, Ben --------------------------------------------------------------------------- Ben Cohen http://www.systemverilog.us/ -----Original Message----- From: gordonv@model.com To: vhdlcohen@aol.com Cc: sv-ec@server.eda.org Sent: Sun, 5 Nov 2006 8:47 PM Subject: Re: [sv-ec] Mantis 1609: New updates? Ben, The basic point is that the interaction of name resolution rules involving import and inheritance becomes very muddled. For example, class C; int x; endclass package p; int x; endpackage class D extends C; import p::*; function f(); return x; // is this this.x (from C) or p::x endfunction endclass class E extends D; function int g(); return x + super.x; // what is "x"? what is "super.x"? endfuntion endclass C++, in order to avoid this issue, also disallows using a namespace in a class scope. Either outside the class or in a method there is never confusion between inheritance and package (namespace) visibility. Mixing the two is very confusing in practice and can lead to very subtle issues. Complicating the issue is the question of whether imported visibility is inherited. If not, then the meaning of "x" in a class E derived from D reverts back to the inherited member, not the package element. That sounds pretty scary (no override of "x" but the meaning changes). If one would say that the package visibility is inherited then how is it inherited? Is an overriding declaration now an error (as it would be in D following function f)? Does that mean that an import is a way of saying that an identifier can no longer be overridden? What about interactions with virtual functions? Pure virtual functions? There are many awkward questions here. If a vendor allows this right now, it may be an oversight or may not have intended consequences in the areas that I have raised. If it is intentional, the vendor should step up and offer a sensible set of rules if they don't want it disallowed. No one has done so yet. The feedback from both Synopsys reps so far has been that the current LRM text overlooked this case and that such imports should be disallowed. Cadence didn't object to this view in SV-BC; I don't know if that will change in SV-EC. In terms of the status, I had filed this as an SV-BC item (due to the imports) but BC felt that EC should address the issue. So it is in the hands of EC. Due to the face-to-face and on-going discussions regarding other areas, I don't know where this will fall in the agenda. If you consider this to be pressing, you could ask Mehdi to elevate this in the agenda. At this point, given that I haven't heard anything negative from any of the vendors, I am expecting this to be approved when it does come up. In terms of overall language interpretation and compliance issues, yes, we are all aware of many issues in that space. There are numerous ambiguities and issues that are (slowly) being resolved. I am working with a sub-group of SV-BC to work through name resolution issues; interpretation differences in that area tend to cause compatibility issues but there are many interactions that have not been carefully defined so progress is slow. When there is disagreement, progress tends to stop until issues are resolved. Only once point issues are resolved can a comprehensive write-up really have much of a chance; you can go back in SV-BC/EC archives to see a writeup that I did quite a while ago describing a basic framework. And that is all just on name resolution.... My hope is that vendors are being aggressive about complying with approved Mantis items since that will aid in reaching consensus and common interpretations more quickly. Past experience however suggests that not everyone follows that philosophy. If you are aware of vendors that don't comply with the restrictions proposed in Mantis 1609, it might be worthwhile to ask them how they intend to respond to it. If there is disagreement, the community is far better off if the disagreement is raised early. Gord. vhdlcohen@aol.com wrote: > > Mantis 1609 states > Quote: > It shall be illegal to have an import statement directly within a class > scope. > > > 1, What is the status of this mantis? Still under discussion? > 2. If the import is outside the class and at root, then the only need > for the import would be for synthesis of RTL since the import of a > package would be seen by the RTL anyway from root. > 3. Currently not all vendors have abided by current P1800 that allows > the import within a class. > What about backward compatibility since current P1800 LRM allows import > within a class? Users will need to make the necessary changes. > 3. As of today there are several differences in tool support and > understanding (or interpretation) of the LRM. Code that compiles and > runs on one tool would most likely not execute on another tool, > particularly when the advanced feature of the language are used. This > import issue is only one of them. > [...] -- -------------------------------------------------------------------- Gordon Vreugdenhil 503-685-0808 Model Technology (Mentor Graphics) gordonv@model.com ________________________________________________________________________ Check out the new AOL. Most comprehensive set of free safety and security tools, free access to millions of high-quality videos from across the web, free AOL Mail and more.Received on Mon Nov 6 07:48:41 2006
This archive was generated by hypermail 2.1.8 : Mon Nov 06 2006 - 07:50:03 PST