SV-EC Meeting Minutes 3 November 2003 11:00 am. Monday (rrrrrrrrrrx) Voting Members (3/4 or > 75%) (aaaaaaaaaaa) Arturo Salz (Synopsys) (-aaaaaaaaaa) Brad Pierce (Synopsys) (--aaaa-aaa-) Cliff Cummings (IEEE 1364) (aaaaa-aaaa-) Dave Rich (Synopsys) (aaaaaaaaaaa) David Smith (Synopsys) (-aaa-aaa-a-) Dennis Brophy (ModelTech) (aaaaapaaaaa) Jay Lawrence (Cadence) (aaa-aaaaaaa) Michael Burns (Motorola) (-aaaaaaaaaa) Mehdi Mohtashemi (Synopsys) (aa-aaaaaaaa) Neil Korpusik (Sun) (--aaaaaaaaa) Ray Ryan (ModelTech) |||||||||||_ 3 November ||||||||||__ 27 Octobter |||||||||___ 20 Octobter ||||||||____ 13 October |||||||_____ 29 September ||||||______ 15 September |||||_______ 2 September ||||________ 18 Aug |||_________ 4 Aug ||__________ 21 July |___________ 7 July Non-Voting Members (attendance based) (------a----) Chris Spear (Synopsys) (-----s-----) Francoise Martinolle (Cadence) (--a-aaa-a--) Jeff Freedman (ModelTech) (---a-------) Stefen Boyd (IEEE 1364) (-a---a-----) Stu Sutherland (IEEE 1364) (----------a) Tom Fitzpatrick (Synopsys) Guests (non-voting) (--a-a-a----) Don Mills (LCDM Engineering) (-----a-----) James Young (HP) (-a---------) Kevin Cameron (National) r => Regular meeting x => Extra meeting (Presence counts for attendance, absence does not) a => Attended p => Attended by proxy s => Attended as proxy - => Missed Action Items: [identified with AI (#) in this text, # refers to AI number] Added this week (please see the site for existing action items): AI-34 (Arturo): Changes to EXT-10. In section 20.1: Change to "Often the validation must be ..." In Syntax 20-1 (Section 20.2). Change the last line to something like type_name variable_identifier = new (...). In Section 20.3 remove first example using xyz and reword description to refer to single example. In Section 20.3 reword paragraph starting "When a covergroup is defined within a class" that when no explicit instantiation is present then an implicit instantation is created. There can only be one instantiation of a covergroup within a class. In Section 20.4 Syntax 20-3 restructure bins_or_options and range_list so braces show in bins_or_options (as do parens). In Section 20.4 clarify that discussion on clocking does introduce new semantics. In Section 20.4.1 add reference to Annex G. In Section 20.4.4 for there is a closing brace instead of paren. In Section 20.4.4 reword last paragraph to remove cross products and select expressions. AI-35 (????): Add covergroup to packages and local root when seperate compilation proposal is approved. AI-36 (Arturo): Look at the requirement for getting access to the bins within the language for controlling stimulus generation,etc... . AI-37 (Jay): Write up objection on use of -> in 20.4.1. AI-38 (????): Look into the definition of standard defined attributes. Minutes 11/3/03 taken by Mehdi Mohtashemi 1. Review of meeting minutes from 27 October 2003 meeting Motion: Accept the minutes from 27 October 2003 meeting Moved: Brad Second: Michael Abstain: None Against: None Passed 2. Review of Vote Results ERR-09 (BNF for port_type) Passed but had correction during vote David: Does anyone want to change their vote that was registered during the email vote? Jay: Everyone that voted is present? David: Dave and Dennis are not here but, even if they chose to vote againt it the outcome would be that it would pass. No changes to vote. ERR-09 has passed (with the correction that was posted during last weeks vote). ERR-31 (remove endfunction) - Everyone voted against so it is killed. ERR-32 (virtual method clarification) - Neil voted against with the comment that the new text was more confusing David: Any one wish to change their vote? Neil: Did not follow what it was trying to say in virtual method. Arutro: Change you want to make? Neil: What does it mean when 'virtual method overrides the method'? Arturo: It goes with the next part, only one method. Neil: Your conclusion, one implementation, is fine, but the words do not say the same thing. If that is removed then it is fine. Arturo: Question is to agree on what to change and make it work., this is Thomas' wording. Neil: What is the difference when compared with normal-non-virtual method. Ray: This is not declaration of virtual method. Virtual method provided with a body, overrides. Neil: But this does not say that . David: Someone needs to propose a change to it, if no one changes their votes, it still passes. Brad: But Neil has problem with this. Neil: What is the other one, 'normal method overrides its class and its decendants"..the way it is worded does not explain. Jay: Can I suggest that Arturo and Neil work on it later. David: Does anyone want to change their votes, If not, even with people not here, it passes with 6 to 9. No changes to vote ERR-32 has passed. EXT-11 (Queues) - Jay voted against with comments on lots of queues, use dynamic data structures to do this, should use a package, methods should only be on classes. David: This was a company vote and all of the companies are represented. Does anyone wish to change their votes? No changes to vote EXT-11 has passed. Change question? No changes Question: Any one wish to change their vote? 3. Review of 3.1a Extensions and discussion: EXT-10: Discuss rewrite of Section 20.1. Additional information added. Neil: Removed a couple of sentences. One of which Arturo wanted to leave in. Believe it should be removed. Small changes mostly tweaks. Arturo: I agree with most of Neil's changes, they made it better. David: Any comments on these changes? The only remaining items was the sentence that Neil and Arturo disagreed on. Neil: "The validation must be comprehensive without redundant effort". Do not believe this is a requirement. Arturo: Added back in to connect with following sentence. Ray: The "must be" sounds like a requirement. Maybe we can modify the "must be". Neil: Change to often would be better. David: Then change to "Often the validation must be ..." David: Let's continue review starting at 20.2 20.2 David: Jay sent out a couple of comments. First one is in the BNF in syntax 20-1 (Section 20.2). The last line should be something like type_name variable_identifier = new (...) Arturo: Agreed. Michael: Is there a reason covergroups cannot be declared in the top level? Jay: Do you mean in $root? Michael: Yes. You have the capability to pass in formal parameters. You do not need a context. In $root or whatever the top is you should be able to declare. Arturo: You could, depending on what you are going to be covering. This is similar to sequence at the root level has to be generic. This could also be done here with the appropriate semantic restriction. Michael: You do not have to have any special rules, normal rules about identifiers should work. Arturo: There is no problem putting at $root level, semantically make sure it does not refer to anything else. David: Since that other proposal is in the process of becoming, we can reconcile it with the other proposal ones it is approved. Ray: Or you can say put it in package proposal. David: Once it is available we can put it in . I will create an action item to add it as the other proposal becomes available. Jay: It talks about this being a type declaration and these act more like a class then a type. Arturo: Correct. This is more like a class; it is instantiated and takes arguments. Jay: This gets back to discussion about static instances of classes, if you are not doing OO, just a cover group, and only static instance of this, rather than going through instantiation. Arturo: I would be happy to get a proposal that does that for items that are not passed arguments at run-time. Jay: If you are using covergroups that are dynamic yes. But if this is created as a static instance. Arturo: I did not want to create two mechanisms that do the same thing. The way it is written the 'constructor' is evaluated at the time it is created. Jay: The arguments could still be passed. Arturo: This is somewhat more complicated. Michael: What is difficult about this? Arturo: This would result in instantiation at both elaboration time and at dynamic. You would need a way to specify both. Michael: This could be taken care of by the context. Jay: We had this same discussion on classes and static classes. I may work with you on this. If we solved the issues for classes in the same way then we could handle this the same. Arturo: I am not opposed to that but it can create other problems. Ray: Can you have an expression as a ref argument? Arturo: No. 20.3 Neil: Why is xyz shown twice? It does not seem to add anything. Arturo: This was meant to show both. Neil: Not a big thing. Ray: it looks a bit extra. Jay: I did take a double-take. Arturo: Maybe we should take it out and leave only on xyz definition. Michael: When you mentioned instantiating the cover group in the class (paragraph starting with "When a covergroup is defined", it seemed like an extra rule. It seems that doing an instance of the covergroup would be only one extra line. Arturo: This would then allow the ability to create arrays. We wanted to disallow this so that the name of the instance and covergroup are the same. Otherwise there are a bunch of issues without having any benefit. Ray: This can lead to confusion of types and instances by users. Arturo: I agree with that but it is embedded inside. Michael: I would prefer to add another rule to have only one covergroup in order to make it easier. Arturo: Then you force the user to think of two names (both definition and the instance). The problem is that the class itself is instantiable object. Jay: I did not understand the problem well enough to form the question. Arturo: We did not know how to deal with other problems. The class itself can be instantiated several times, class is dynamic, then this becomes dynamic. Where does the memory for cover-group live? Arturo: I am trying to avoid having a handle to within the class. There are a number of semantic issues. Jay: You are creating one static version. Arturo: There is one instance only this is not static. Jay: This is due to the instantiation of the covergroup being dyanamic. Arturo: The class is dynamic therefore the covergroup is dynamic. Michael: This is not classlike since the footprint is not a handle when used within a class. This is difference if outside of a class. Arturo: Correct. Michael: This is since classes are dynamically instantiable? Arturo: Correct. Ray: Why is it not useful to have multiple instances of a covergroup within a class? How is this different outside of the class? Arturo: It introduces lots of problems when you have multiple instances? Can I create A and B covergroups and then switch them around? Jay: What you are really trying to avoid is handles to the class. Arturo: Correct. There would be a lot of semantic restrictions which are plugged up by doing this (as part of the class instead of as an instance). Ray: Are there any other restrictions? Arturo: It is the only limitation. You cannot get a handle to it, assuming that you have a type and a variable declaration of that type, could we allow the same on the type and variable? This would be ambifuous. Arturo: What happens if you have multiple variables of the type? Ray: Declaring a variable of type covergroup, you do not have to call new, implicitly calls the new. Arturo: Except when it takes arguement, that is new. Unless we want to create two mechanisms, like what Jay was suggesting. Jay: This is the same as datatypes in all other languages. Arturo: This is more than a datatype. Michael: I still do not see why you can not declare cover-group and initialize it. It would be ok to instantiate it. Aruto: You would like to have a variable name of covergroup not just type. I do not have any objection to what you are suggesting, but the users would like this capability. Ray: If we have the shorthand then I would like it to be explictely allowed and then describe the shorthand as an implicit declaration. Arturo: I guess that would be ok. Motion: Reword paragraph starting "When a covergroup is defined within a class" that when no explicit instantiation is present then an implicit instantation is created. There can only be one instantiation of a covergroup within a class. Moved: Michael Second: Ray Abstain: None Against: None Passed Neil: I assumed that I can have a handle to covergroup within a class. Arturo: No. Neil: The problem of assignment still exists. Arturo: There is no assignment supported. We do not have implementation of multiple covergroup inside the class. You can set option on it, What does it mean to have a handle to a covergoup? Ray: It is the instance name of a covergroup. Arturo: The global covergroup is a short hand to not having to create a class around the covergroup. No operations are defined. Michael: Once I instantiate a covergroup there is no way to create and reassign? Arturo: No. In an automatic it would be destroyed. The data collected is retained. Michael: The data collected by the covergroup is related to the definition and not the instance. Ray: Is there a case where covergroups are created late in simulation? Arturo: Yes. Transactions are like that. Ray: The coverage starts when the instance is created and stops accumulating when it disappears. Neil: Pg. 4 next to last paragraph. It must be in the new method of the class and no other class. Arturo: Correct. When in a class it is dynamic instantiation and outside the class it is created at elaboration time. Neil: But you have to use the new method. How is this? Arturo: The enclosing scope is created at elaboration time. 20.4 Neil: Seems strange to use braces and parenthesis for distinguishing the difference between range and transitions. Arturo: You cannot use the same syntax since it is ambiguous. The choice was this or to create a new keyword with bins. Neil: For the transition you have to use >. Cannot this be used? Arturo: This is too late in the grammer. You need to decide earlier to make the choice. Vera used another keyword but we decided to minimize keywords. Neil: This could be confusing. Ray: In the BNF you, you could range_list without parens. Arturo: I need to create a new range_list. David: Jay, you had an item here on transition, clock domain? Jay: Why is the discussion on clocking domain here? Arturo: Nothing new just clarification. I added this since there were questions about how to do this kind of sampling. Let's add comment that there is nothing new here. Neil: What are the bins used for? One seems to be to accumulate values, another is in cross product. Is there a way to query the bins? Arturo: In Table 20-5 on page 18 (20-7). You can call on covergroup, etc.. Neil: But not on bins. Why do we need bins? Why do I need the individual bins (using the array notation). Arturo: In a bus with 20 values you may want to know that something is covered or individual. This is available from the report. Michael: So you cannot use the bins to tune stimulus generation? Arturo: You can use the effect using the coverpoint/covergroup per instance, cross, group, etc... but not the bins. There is an option for automatic bins (the most common case) which becomes ambiguous if you wish to access the bin. Neil: Why not in the report? Arturo: The bin uses the bins not the variables. Neil: You are saying only with post-process tools, Arturo: Usually users are interested on the effect of the bins, you can do it per instance, cover-group, option of using automatic bin names, report talks about bins, some bin names uses [], ranges, etc, Neil: a bit of surprise. Arturo: I could investigate adding access to the bins but the query of specific bin at run time is not implemented. Jay: I agree with Arturo, we have not seen a need for this. Arturo: We have not had this as a requirement. 20.4.1 Jay: Use of ## instead of ->? -> could be confused with implication. Arturo: If we use the complete syntax for sequences then we will have problems. Reuse of the implication was simpler than ##[1]. Jay: This is a next operator and should be such. Arturo: We did look at using ## (the concatenation operator on sequences). Motion: Change -> to ## in trans_set Moved: Jay Second: No second. Neil: In these transitions does it mean the very next cycle? Arturo: It is unless you use one of the other operators. I almost seconded the above motion but need to see the example. These are subset of assertion. Jay: If you want to recognize the transition, writing assertion and this side-by-side looks silly. I will generate a description of the objection of the use of ->. Davi: Since we do not have a second on this, no vote is taken, you need to review and then can come back with another motion. Ray: What is the last non-consectutive repetition? Arturo: Straight from the section of the LRM on assertions. The formal definition explains these better. For example, this follwed by nothing, or when you see the three and the next three is not there. We should tell users to read the formal definition. David: Do we need to put a point to Section G? Looking at Section 17 will send you to Section G. Jay: The example using {}, (), [] is very confusing. The description after the example was required. I would prefer new keywords. I do not have a better suggestion. Arturo: It uses the same syntax as the constraint language. Arturo: This is not very different than Vera syntax which has been accepted by customers. 20.4.2 Ray: Clarification, if do not declare any bin name then no automatic binning. Is binning a word. Discussion concluded it was. 20.4.3 Jay: Are the x's supposed to be ?? Arturo: The x's are treated as wildcards. Neil: Is the wildcard keyword required? Jay: You have used an attribute to do something similar. Arturo: If you use an attribute then the meaning of the statement changes. The way we are using attributes is not changing the simulation behavior. The only other option was to use a keyword since ? already means z for a number. 20.4.4 Neil: In bad_trans there is a closing brace instead of paren. Arturo: Need to correct it. Jay: Since attributes are being used we could use these for many other things. Arturo: The reason is that these do not change the semantics of the simulation. If we wish to add a keyword we could. These are standard attributes. Ray: How does this not change the simulation. Jay: This is a fine line since it generates a warning and not an error. Arturo: You cannot change the attribute at run time. This restricts how they can be used. Jay: I will request a whole section on system/standard defined attributes. In 1364 we created a new name space that begins with $. For example (* $illegal *). We can look at the new proposal for standard namespace to reduce the conflict between user and standard attributes. David: The real suggestion is to look at this in more detail. Jay: We can take a look at it, in more detail. I am in favour of using attributes here. Arturo: People were opposed to standard attributes since they could be ignored. In this case they are ignored for simulation purposes. Jay: We can bring in the proposal to 1364 here, despite the cadence licenses, donation etc. If we wanted to explore that concept, I can bring it. Arturo: I do not have a problem with that, any procedural issues? Jay: We need to make sure this language is acceptable to 1364. David: Let's talk Vassilios next week, Any action off of this, besides discussion outside. Are you willing to define the standard attributes Jay? Jay: No. David: I will take it as an action item and look for an owner. I will ask Arturo. Jay: For instance can we use the attribute illegal any where else in the language and what does it do? Ray: In the last paragraph. What cross products and select expressions are being referred to. Arturo: Yes, need to revise it. 20.5 Neil: First paragraph. The implicit coverpoint is only created if it does not already exist? Arturo: If the coverpoint V is already defined then it will use it. It will create a new coverpoint for the variable. If a variable V already exists then you cannot create a coverpoint named V. Ray: What name occus in the cross? Arturo: If you have a variable V, with another coverpoint, the it would create a coverpoint. Label coverpoint p:coverpoint V, then cross v, with something else, there is no coverpoint V. You can create many coverpoints for variables and then use them for different crosses. Michael: There is a reason to create multiple coverpoints for the same variable. Arturo: Yes to look at the same data in different ways. David: We will start with 20.5 at the Face-to-face meeting. 4. Meeting Logistics Reminder on Face-to-Face meeting on 11 November from 1:00pm until 5:00pm. November 3 12:00 to 2:00 (Pacific) EXT-10: Functional Coverage (18 pages) (completion) November 11 EXT-10: Start on 20.5 and complete. EXT-3: Virtual Interfaces/ports (5 pages) November 17 EXT-7: Reacting to Assertions (3 pages) EXT-12: Bitsream support (6 pages) November 24 Complete errata action items. 7. Next meeting: 11 November 2003 from 1:00pm to 5:00pm Pacific time. 8. Close of meeting at 2:00pm