SV-EC Meeting Minutes 27 October 2003 11:00 am. Monday (rrrrrrrrr) Voting Members (3/4 or > 75%) (aaaaaaaaaa) Arturo Salz (Synopsys) (-aaaaaaaaa) Brad Pierce (Synopsys) (--aaaa-aaa) Cliff Cummings (IEEE 1364) (aaaaa-aaaa) Dave Rich (Synopsys) (aaaaaaaaaa) David Smith (Synopsys) (-aaa-aaa-a) Dennis Brophy (ModelTech) (aaaaapaaaa) Jay Lawrence (Cadence) (aaa-aaaaaa) Michael Burns (Motorola) (-aaaaaaaaa) Mehdi Mohtashemi (Synopsys) (aa-aaaaaaa) Neil Korpusik (Sun) (--aaaaaaaa) Ray Ryan (ModelTech) ||||||||||_ 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) 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-31 (Arturo): Modifications to EXT-9 from meeting 12.14: Add note on hierarchical reference not being support to randomsequence. 12.14: Add note on recursion causing looping. 12.14: Change rs_type_declration production to use "function_data_type" instead of "type_identifier" 12.14: Investigate adding the return type before the production instead of as a separate declaration. 12.14.4: Change positive to non-negative. 12.14.4: The "break" from the repeat production statement takes out of the randsequence (forward reference to 12.14.6). 12.14.5: Add clarification that the order maintained is relative not exact. 12.14.5: In last sequence example CADB is duplicated - replace first with CABD. 12.14.6: Add comment that "break" works as normal within the loop procedural statement. 12.14.6: Add statement that only one default can be used in case. 12.14.7: Update the examples use of popf and pushf to be consistent with example in 12.14. 12.14.7: Fix production LIST where closing brace is incorrectly a parenthesis. 12.14.7: Remove "is" from "in function GenQueue is executes,". 12.14.7: Add comment that "int ITEM" is a production return type declaration and not a variable declaration. Also add the comment to "DSL PACKET" declaration in the last example. AI-32 (Neil): Rework 20.1 in EXT-10 to simplify and reduce. Font on "a" in second sentence is incorrect. Mark 20.1 as information. DUT is used but not defined. AI-33 (Arturo): Modifications to EXT-10 from meeting 20.2: Add "be" to "instance can created" 20.2, 20.3, 20.4: Examples have incorrect font usage 20.5.1, 20.6, 20.6.1: Replace endcovergroup with endgroup 20.6: Change comments from italics to regular to match LRM Minutes 10/27/03 taken by Mehdi Mohtashemi 1. Review of meeting minutes from 20 October 2003 meeting Ray: Correct the Face to Face meeting being on Tuesday Nov. 11 from 1-4. Motion: Accept the minutes from 20 October 2003 meeting with correction. Moved: Ray Second: Michael Abstain: None Against: None Passed 2. Review of Open Action Items AI-5 (Arturo & Cliff): No progress AI-18 (Unassigned): No progress AI-23 (David): No progress AI-26 (Arturo): No progress David: All other action items are closed. 3. Review of Inter-committee dependencies Semantics of disable as applied to task/func. arguments. Further conversation with Swapnajit indicate that this has been moved to SV-BC and we do not need to handle it. 4. Review of Errata list Open: ERR-42: Schedule region questions and problems (from SV-BC) Arturo: This is the same as AI-5 and we do not need to do anything here. David: Looking for volunteer to handle. Arturo: This is the original message from Cliff and is AI-5 Assigned: ERR-4 (Arturo): Automatic variables in fork/join_none ERR-8 (Dave): Using event control with methods ERR-19 (Brad): Automatic outside of tasks/fcns/blocks illegal? ERR-20 (Arturo): Fix example in Section 9.9 dependent on ERR-4 ERR-21 (Arturo): Fix example in Section 9.9 for wait on all processes ERR-41 (Dave): Scheduling region questions and problems Proposed: David: Any questions on the Erratas listed for email vote, we are not going through each one, mainly through questions. Voting ends: Friday October 31st, 5:00pm PST. Jay: As we add these, we should probabely discuss it further in face-to-face, consolidate these discussions there. David: Since there are no issues and questions, lets move to the extensions.... 5. Review of 3.1a Extensions and discussion: EXT-9: Stream Generation (45 minutes) Continue review starting at 12.14.2 Jay: Generic comment. Queues are a good example of issue we will run up against. Packages will bring in new types and classes that could be consolidated. Jay: One point of confusion was when it executes (continuously when hit). Should we call it randloop since it can run forever? Arturo: Only if you write it that way. It does not have to loop. It does not seem quite accurate. Jay: I am not sure if it is the name name, or it should look different, such as describing how long do we stay in the state. Arturo: Not-necessarily. Jay: Second thing, for putting these in task and passing arguement, whether it is useful to parametrize them. Use it in a task and tell it when to start, if you have seen a need for it. Some need to have these labels so as to be able to pass them. Lables only, we may need a way to declare them. Have you run into this need. Mehdi: Some capability of controlling these productions through parameterization or through state assignment. Arturo: On where to begin? Mehdi: Not for each production. They have asked to control when to start. Discussion for more elaborate productions. Ray: There is a different way without making the production visible. For example to give them probability and making it explicit, switch statement for the metastate. Arturo: But it is there, case statement should do it (12.4.3). Jay: Was going down the route of making randcase a special case of randsequence. I surrendered at some point. Arturo: Maybe we should add a comment that this can loop. Also a repeat shorthand. David: AI to add a comment, for explaining the looping, 12.14.3 case statement. Neil: Intended to have case to be the same, for example x,z, length, number of default case item, none is described here, is it the same? Arturo: It is a subset of that, it is not executible, but productions only, it is a little different. Ray: is the ambiguity shown by the < procedural code, Arturo: In that procedural code you can have casez and/or casex. Michael: essentially redoing these procedural constructs, except in this context, are we doing this for foreach, labels and goto statement, how about labeling any statement and introduce goto. Arturo: Goto was rejected in 3.0, Ray: Purpose is more convenient, than capability. Arturo: If you had a grammer, you can redo this, you have to rewrite the grammer, it is what Ray says, convenient. Jay: What makes it strange, it is the context, where these productions occur. Without adding gotos into the language if there were declaration of these productions. Ray: Actually it is more than goto, it is a call. Michael: Randsequences, are sort of task declaration, more than that, each productions is task, David: You can look at like you execute the first 'task', return., not the overhead of tasks. It does not fit into what exist today... David: what does it mean to have one production refer to another production. Brad: So a nonterminal is now a label? Jay: maybe need to add some stuff., Ray: Now, if you have a main, lose the scope for function calls. Looks like a grammer, used in reference. Brad: Yacc produces derivation based on flat text, this generates .. you do not need a stack, looking ahead, go forward, yacc builds state machine to take care of that, here you do not need it. Neil: One comment about scope, different task and this, there is scope created. Arturo: Just like the rest of system verilog. Michael: The code block creates the scope. Jay: Why not begin...end for code segments. Arturo: You could do this, but it looks uglier, does not add to clarity. Jay: What does it mean, can you name object, .. otherwise we can use begin end, if it has a name . Arturo: My conclusion was not to use begin/end, the {}, to show .. Jay: Are we adding new code block to the language, we can make one caveat, equivalent to begin/end block and label them. Arturo: How do you get to the labled blocks? Michael: How do you get to the randsequence? Arturo: You have to give it a name, and then get to it. Jay: Both the randsequence and inside, are creating new blocks. David: No heirarchical references to randsequence. Jay: If you do want it, where does it go, statement label on randsequence to allow the heirarchical references. Dave: The defenition of labeled sequence would allow R0: Arturo: The first statement of randsequence should be label. Brad: How do you know you are in one of them? Jay: Have to maintain the state and note that the statement is valid. Arturo: What is the mechanism? Jay: If the scope comes to existance, can it have a name? Ray: Would a reasonable name be the production name? Arturo: Just like yacc. Ray: It could only have one code block? Arturo: There is a probability that you can have one code block after that. David: Have not heard any answer, no consensus on what is proposed. Arturo: You can not have heirarchical references, Ray: Heirarchical names, maybe an issue for example in gui where you want to see where we are. Arturo: Valid issue for debugging, Jay: As generating stimulus, it is legitimate, but writing state machine in their design, it does not allow it. Brad: Would people do random state machine with this? Arturo: No you do not. Michael: You would not write it like this, but you would for example not write or construct. You would use the special if or special case, to write it. Arturo: You can parametrize them, it can be a system level stimulus, the control is not explicit, but in the probability, it would be stretched to do it without random. Not a statemachine generation mechanism.. David: how can we make progress? Jay: Ther is a heirachical name issue, if answer is no, then we need to say this.. Second item is the control statments, and what we do with those, if there is someway we can make productions explicit so we can use the regular control statements within the language. David: Does this mean that case statement with some prductions, some with statements. Ray: Sounds like 'lightweight tasks', Arturo: What would be the name, the thing on the left? Jay: On the right handside you do not need {}. Arturo: You can do this today, Dave: What is being said that randsequence is creating combination of labels. Arturo: But that is not what it does, it returns values, you can pass parameters to them, they are not just gotos. Michael: They are things here that looks like other things in the language, to satisfy me i need to redo this whole thing, David: No one has any proposals to do this, implementable proposals. Important thing that is brought up, heirarchical names, etc, will take a while. Jay: There is another alternative, not to take it, not ready, do not have any more sepcific comments. David: Idea of adding heirarchical reference, would have to be proposed to add it in, since it is not in the proposal. When we go into 14.3, 14.4, sections on control structures, somewhat different semantics/syntax constraints possibly, any other issues with those. 12.4.4: Neil: On the repeat, same points comes up, integral values, non-negative, etc. David: If it includes 0, it should be non-negative, Arturo: I could see including 0. David: So we have to make the changes. 12.14.5 randjoin, Neil: Making the order of each sequence, it should say the 'relative' order of each sequence. Arturo: Length is known each time, deterministic order. Neil: There maybe a typo in the last example. First one should be CABD. Ray: Couple of questions, effect of doing prioritizing, you tend to stay with the sequence, if the original length of sequence is same. priority.. What motivates this? Arturo: If length is same you do get that. This is from writing transactions, different boundary conditions, queues as many transactions, the other one many transactions from different nodes. When length is same, probability to switch between one to another, Ray: Do priorities 0 and 1, does it give you probability of selection or priority of selection. One takes the longest, does the value correspond to the probability choice? 1 more unlikely than 1.75? Arturo: The useful values are 0, 1, and 0.5 David: There is nothing to be changed in the description. 12.14.6 Neil: The use of break is different than procedural breakl; it breaks out of the whole sequence, another place where incosistency of usage of break. This is inside the code block, so we can loop inside, Arturo: If you have loop, you are breaking out of loop. Ray: Is there an advantage to re-using the same keyword. Neil: It could end the current production, granted the return keyword does this. Brad: You can put a break in there, inside begin/end. David: It would have to be inside the structure, the break does the closest enclosing control structure. Neil: With the clarifications today, it becomes more consistent. Michael: Repeat is control structure, is there a way to break out of the repeat loop? Arturo: No, break out of the entire randsequence, where should the explanation go, in repeat or break? Michael: I would prefer to see a forward reference in the description of repeat. David: AI to add the clarification on 12.4.6, as well as the forward reference to break. Brad: Is there language that case statement that there has to be one default statement. BNF can not limit it. David: AI to add statement on single default statement. 12.14.7 Neil: First example is re-write of page 2 example, intent was to be consistent. Also typo on page 7 in first example, list middle paragraph, also variable called ITEM, production called ITEM, page 7, could be confusing. Paragraph after example has extra is. Arturo: It is the declaration that defines the production return type. It is defined in the previous example. David: Lets repeat the comment, Ray: In the previous example the operator is production return statement. Brad: Can you put void to declare them all, production return type to be called void? Arturo: It would be ok, need to think about it. Is void a type identifier? Brad: Looks like a type identifier is something you typedefs. Do you want any data type? Function_data_type allows you to use void. Arturo: Clarifying. Brad: You may put void if you wish, it can not return an expression. Ray: Why not put the return type infront of production name, where it is declared? Arturo: May make the grammer more complicated. Neil: It may simplify the understading of it, ambiguity of this being a parameter. David: Any need for more discussion? We will vote on this at the face-to-face meeting, but would like to get the questions available and on the reflector before the meeting so we can just vote. AI on the above EXT-9 will be brought up for a vote at the face to face meeting. dial ins will be provided on face-to-face EXT-10: Functional Coverage (30 minutes) David: Has anybody had a chance to look at? Is everybody familiar with the concepts discussed in proposal? Michael: Yes Neil: Yes David: Then we can go into the language constructs instead of providing background. 20.1 Neil: It seems to be long winded, more informative. David: Will you take the action item to reword it? Neil: I can take a look at where it should be. David: It is intended to be informative. Neil: There seems to be 6 new keywords, did make it through whole item once. Michael: DUT is used but not defined. 20.2 Neil: Typo on endcovergroup vs endgroup on pg. 11 Discussion indicating a number of typos or formatting issues captured in action items. Neil: Font problems as well, page 4 last two examples, Brad: Page 13, comments are italicized, not like the rest of LRM. Ray: First paragraph of page, a is different fonts.. David: Looks like we need a new version of this document, fixing typos, incompletes, etc. Will try and get it out before the next meeting. David: section 20.1 to Neil in source .doc, to re-arrange. 6. Meeting Logistics Discussion of going to weekly meetings. David: Would like to propose we have a weekly meetings in November. Jay: I would prefer not to have the weekly meetings. Vassilios indicated that if we do not have time we would adjust the schedule. David: That is what i am doing, looking at the schedule and trying to work with the time frame, this would mean two additional meetings, the 3rd and 17th, Next week, Monday November 3rd, 12 to 2:00pm pacific time, mainly on functional coverage, would not count towards attendance. Please send out more questions on these by email. Reminder on Face-to-Face meeting on 11 November from 1:00pm until 3:00pm. October 27 EXT-9: Stream Generation (7 pages) (completion) EXT-10: Functional Coverage (18 pages) November 3 12:00 to 2:00 (Pacific) EXT-10: Functional Coverage (18 pages) (completion) November 10 EXT-3: Virtual Interfaces/ports (5 pages) November 24 EXT-7: Reacting to Assertions (3 pages) EXT-12: Bitsream support (6 pages) 7. Next meeting: 3 November 2003 from 12:00pm to 2:00pm Pacific time. 8. Close of meeting at 12:58pm