SV-EC Meeting Minutes 14 March 2003 10:00 am. Friday Voting Members (3/4 or > 75%) (rrrrrrrrrrrrrrrxrxrrxrrr) (-----a----aaaaaaaaaaaaaa) Arturo Salz (Synopsys) (-----aa-aaaaaaaaa-a--aaa) Brad Pierce (Synopsys) (a-aaaa-aaa-aaaa-a-aa---a) Cliff Cummings (IEEE 1364) (aaaaa-aaaa-aaaaaaaaaaaaa) David Smith (Synopsys) (-aaa-a-aaaa---a-aaaa-aaa) Dennis Brophy (ModelTech) (---aaa-a-aaaaaaaaaaaaaaa) Francoise Martinolle (Cadence) (------------aaaaaaaa-aaa) Jay Lawrence (Cadence) (-------------------a-aaa) Jeff Freedman (ModelTech) (-------------------aaa-a) Michael Burns (Motorola) (aaaapaaaaaaaaaaaaaaaaaaa) Mehdi Mohtashemi (Synopsys) (-aaaaaaaa-aaaaaaaaaaaaaa) Neil Korpusik (Sun) (-aaaaaaa-aaaaaa-aaaa-aaa) Stefen Boyd (IEEE 1364) (--------aa-a-a-aaa-a--a-) Stu Sutherland (IEEE 1364) Non-Voting Members (attendance based) (----------------a------a) Chris Spear (Synopsys) (----------------a-------) Jayant Nagda (Synopsys) (aaaaaaaaaaaa-------a----) Karen Pieper (Synopsys) (---a-aa-----a-----------) Kurt Takara (0-in) (aapaa----------ma----a--) Peter Flake (Synopsys) Guests (non-voting) (--a---------------------) Adam Krolnik (LSI Logic) (---a-a----------a-------) Alec Stanculescu (Fintronic) (----------------a-------) Alex Zamfirescu (ASC) (---------aa-a-aa-a-a----) Don Mills (LCDM Engineering) (aa-aa-------------------) Heath Chambers (HMC) (aaa-aaaaaaaaaaaaaaaaaa-a) Kevin Cameron (National) (-----a-a-a-a------------) Tim Corcoran (WHDL) Inactive Members (Missed last 4 meetings) (-aaa--------------------) Dave Kelf (Synopsys) (--a--a-a----------------) Michael McNamara (Verisity) (aaa---------------------) Paul Graham (Cadence) (a-----------------------) Roy Armoni (Intel) (aapa-a---------------a--) Simon Davidmann (IEEE) (aa---a------------------) Steven Sharp (Cadence) (-----a------------------) Stephen Meier (Synopsys) (-aaaaa--a---------------) Tom Fitzpatrick (Synopsys) (-----a------------------) Zeev Kirshenbaum (Verisity) r => Regular meeting x => Extra meeting (Presence counts for attendance, absence does not) a => Attended p => Attended by proxy - => Missed Action Items: [identified with AI (#) in this text, # refers to AI number] AI-87: 20.9: Arturo: Clarify and correct the use of the implication operator. AI-88: David: Add Event propsal (include changes to Section 3), Non-blocking Trigger proposal, remove [] in cycle delay in LRM. AI-89: 13.2: Arturo: Reword definition of signal_identifier to clarify usage with other than port. AI-90: 13.14: Arturo: Reword the second form of NBA, for consistency with NBA. Delay and then evaluate, or evaluate and then delay, but Not block. AI-91: Arturo: Raise issue with Peter about use of <> on 'import. AI-92: 11.20: Arturo: Take a look at c++ and the class/type protection to see if clarification needed. AI-93: 3 or 11: Arturo: Clarify usage of const with class. Minutes 3/14/03 taken by Mehdi Mohtashemi [from 10:30am] 1. Minutes: Motion to approve Vote: Moved: Neil Second: Arturo Abstain: Cliff, Michael Against: None Passed 2. Review of Email Vote 5. All changes except CH-111 and CH-116 passed in the email vote. CH-111: Reviewed Jay's comments. Asked for any changes in vote (or additions for those that did not vote. Vote: Abstain: Cliff, Michael Against: Jay, Neil Motion passed with 7 for, 2 against, and 2 abstain. CH-116: Long discussion on the meaning of implication and its usage within assertions and constraints. The result was agreement on what implication meant (p->q is fals only when p is true and q is false otherwise it is true). It was clear from the discussion that the meaning in Section 20.9 was not clear and an action item was taken to clarify it consistent with the above definition. David: We can create a new AI for changing. Jay: I would vote yes on 116 with the above item. Vote (with understanding that item AI-87 is completed): Abstain: Cliff, Jeff, Michael, Neil Against: None Motion passed with 7 for, 4 abstain, and none against. 3. Event David: Next approving event handle, there were two items that seem to be outstanding with respect to events: 1. Francoise inclusion of handle events 2. discussion on wait_order Fracoise: The wait_order seems more like an assertion, redefining some thing that is defined in assertion. Arturo: Semantics looks like assertion, but assertions are clocked and accept events as well as blocking statement. Micael: 3 states for events: blocked/waiting, true and error. When the wait_order does its job. David: When it is out of order. Neil: what about my proposal this morning. ... Arturo: the assertion sub-group is also looking at it as well. Jay: I would be satisfied to drop it here and wait for assertion creating one to satisfy both. Michael made the motion: We accept latest propsoal from Arturo, plus modification that event wait_order condition handling be consistent with the result of assertion syntax committe. Arturo: Second it. Francoise: We are creating handles to synch queues, they should not be called events. Jay: Same problem with event world, this is backward compatible, new operator on event, assignment, more of a queue operator, not only signal glitch. Kevin: Argument for static classes vs dynamic classes. Jay: I am not saying in the future we would not allocate dynamic objects with dynamic object. David: Does not mean references to syntaticallay distinguish it. Kevin: Can say a=c, b.... reference to events. David: No way to take a reference to the event, both handles to objects. Kevin: But the event is declared, How is it created? Arturo: Do not know what you mean. Is passing event to the task needed if so then I have aliased two events. Francoise: This is going to be confusing for compiler. Arturo: In an example, you can fork join_none processes to wait on event, you can pre-determine sensitivity list, for static determination of sensitivity list, that is optimization. Event is a variable that is Kevin: I only have a handle, foo= null., not clear. David: Stopping the conversation, would want to get back to the motion to accept the event proposal, latest 6.05pm. Jay: I am not going to oppose it. Vote (We accept latest propsoal from Arturo, plus modification that event wait_order condition handling be consistent with the result of assertion syntax committe): Motion: Michael Second: Arturo Abstain: None Against: Francoise, Stefen For: All other in favor. Motion passed with 9 for, 0 abstain, and 2 against. It passes as it is with the modification made earlier. 4. Non-blocking Event Trigger David: Propose to accept Section 12 Jay: How about the non-blocking event operator proposal, ->> to give more determinsim. Cliff: ->> originally proposed for state-machine transition identifier, operator, it may Michael: Is there a difference between this and #0? Jay: Event trigger immediately, with the non-blocking event, it gets assigned next non-blocking phase. Vote (accept the nonblocking event trigger as in latest email): Motion: Jay Second: Arturo Abstain: Mehdi, Cliff Against: Neil For: All other in favor. Motion passed with 8 for, 2 abstain, and 1 against. David: what is your objection Neil? Neil: I do not see any use for it. David: It has to be included in Chapter 12. 5. Section 12 David: Comapanies that can vote are Sun, Motorola, Cadence, Modeltech, Synopsys, IEEE reps. Vote (accept Section 12, company based vote, semantics on chapter 12, as a whole with agreed upon changes): Motion: David Second: Dennis Abstain: None Against: None For: All Motion passed unanimously 6. Section 13 David: Next clocking domain, Section 13. Neil: One issue, I would like to remove the [] from the syntax of ##[] syntax. (delay syntax) Neil: I do not see a requirement on this syntax in the assertion, Jay: Assertion committee may get rid of ## any case. Vote (Remove [] from cycle delay operator): Motion: Neil Second: Arturo Abstain: Jeff Against: None For: All other in favor. Motion passed with 10 for, 1 abstain, and 0 against. Jay: I have some notes on this chapter13, some maybe wording. In section 13.2, ec-ch80, under editor note. Identifier does not have to be a port, it can be a reg? correct? Neil: page 104, 3 paragraphs below editor's note. AI-89 created to clarify. Jay: Section 13.14 non-blocking assignment, expressions evaluated, you have to create a temporary one for assignment and blocking. If it looks like: NBAssingment, evaluates the expression at the time. Arturo: There is no way to evaluate and then block. Create AI-90 to clarify. Jay: Editorial comments, on the chapter, also one action item, on 104, to put wording in the chapter on 1step. David: Already in ch117. David: With that modification, Vote (accept Section 13, company based vote, semantics on chapter 13, with the above action items): Vote: Motion: David Second: Neil (Sun) Abstain: None Against: Stefen (IEEE) For: All other in favor (Cadence, Synopsys, Sun, Mentor/ModelTech, Motorola) Motion passed with 5 for, 0 abstain, and 1 against. Jay: We will work with the assertion world to unify the semantics here and in that world.. 7. System Include David: Next inclusion semantics. Jay: "" does not change at all, the old way and <> are provided for Arturo: Goes into compiler directive, Peter's proposal to add 'import directive, to BC. we should make sure that 'import accept this syntax. Vote (pass the inclusion (version 2) of proposal): Motion: Jay Second: Arturo Abstain: None Against: None For: All Motion passed unanimously 8. Changes 117 and 118. David: Mext, Action Items in ch117 47, to 73 [removing editors note., section 10.4 Any issues: AI-47: Jay: this change is not true, in AI 47, semantics.... Arturo: it should be global. Jay: just eliminate the global. Fixed during meeting in CH-117. David: any other items on AI47? AI 48, ok AI 56: .... Discussion followed Jay: discussion on the declaration of object, if object in declaration. data is hidden, how about the type. Arturo: The type is hidden, type declaration and variable declaration. Jay: class foo, class bar inside of foo, can have foo::bar, since class is not able to be local, some one can be. Artruo: In c++ everything is private. Michael: I have done declaration of class inside class as protected, is there any main reason not to allow it, embedded class in c++, how uniformly implemented? Arturo: the reason for type public, not messing with integrity of it Michael: another words, the client code may break your original code is intact. Arturo: there is no reason we should not allow it. Michael: embedded class are written for that purpose not to be touched by outside. Neil: i do not see anything in the main c++ book indicating this. Arturo: C++ primer plus: page 642. private/protected/public section indicates that it works as described in 11.20. No more items on AI 56. AI70: AI73/84: David: Section 2.2 does bnf, section 13.2 defines step usage, and Section 17.6 defines step. Jay: Can we then use it in delay statements such as #0 with #step? Arturo: Do not see any reason to restrict it. Of course ill-advised. David: Comment can be added that this is to be used in clock domain. Arturo: restriction will cause more confusion. David: No other discussion on this. AI 80: Michael: question. certain random variable local. Can you use rand_mode to turn on/off? not directly? Arturo: yes. Vote (Accept CH-117 with change above): Motion: David Second: Michael Abstain: None Against: None For: All Motion passed unanimously Vote: (Accept to CH-118) Motion: David Second: Dennis Abstain: None Against: None For: All Motion passed unanimously 9. Alternative class proposal Jay: Only thing effected would be ref addition to the declaration. David: Question, comment about const on class definition, lifetime of that, difference between that and static class. Jay: No difference at this time. David: Initialization of the class and life-time aspect of class. Jay: At all the default value elaboration of static object. Francoise: Every variable in static class be static and available at elaboration. Arturo: Those other things David: The usage of ref is different. Jay: The semantics of pass by reference (ref) is same as declaring ref for constructs, then the pass by reference ref should be be similar usage. if we disagree then word handle. Michael: Dynamic objects management using reference counts? Arturo: Not discussed reference counts. It is passing reference or a handle to object vs. refernce to handle then, you do need a dereferncer operator with ... Jay: Keep the default the same for all constructs the same, not make class different. Neil: The const for class, Arturo: In 3.0 you can define const the class. only the reference, Neil: To chpater 11, that const can be used. Arturo: The handle can not be assigned, not synthesizable. would not be observable static or dynamic. rule in 3.0, also from the program block that should be added to.. Create action item AI-93 to clarify usage of const with class. Stefen: Have to make sure the bnf has the correct one. David: Yes, it has to be. Neil: When users view it, view it from handle point of view. Michael: Motorola would like to view synthesizability of testbenches in the future. Jay: ...as move into usage of SV, users will want to use segments in both. Vote (accept the version 1.1 alternative class proposal from Jay): Motion: Jay Second: Stefen Abstain: Cliff Against: Arturo, Michael, Neil, Brad, Mehdi, Dennis For: Francoise, Jay, Stefen Motion failed with 3 for, 1 abstain, and 6 against. 10. Synchronous Interface David: Last item on agenda, synchronous proposal from Stefen. Stefen: Idea to use this syntax rather than the ones passed, so you do not accidentally miss clocking domain name, leave the door open, for example .* colapses the name space. Cliff: Of interest to me was the interfaces, Stefen: Also extensibility and re-usability, i.e, 24port ethernet switch, you do not have proposal is to add the clock domain modport in the interface. Cliff: Jay, what do you think of the clocking domain idea. Jay: I like the clocking domain, used in different form, system level model, synchronous view, sampled assertions, Arturo: I agree with Jay's comment, there are some usefull concept here in the proposal. David: There are some good points here, looks like we need to pursue it for beyond 3.1. Any action do we need to take with it? No. 11. Other David: There are 2 activities, besides action items today. 1. extern/export from CC committee with a recomendation/proposal. There is an issue about extern vs external that is being discussed between SV-CC and SV-EC. question: anyone wants to be part of that discussion? I would propose that, since SV-CC has already approved the syntax and the semantics that we only deal with it by helping them to get it into the LRM. We do not have to vote on it. Jay: The process question, what is the resolution process while we are reviewing all of the LRM. David: Nothing concrete, send in all issues from SV-EC to the sv-ec and discuss it here as well as other committees. Try to deal one at a time. I will send out the text version of the CC proposals for you to review. Send me any items/issues/questions on this so we can collect it here. 2. There are 8 action items for Arturo on word usage on Section 15. It should be complete early next week and is limited to editorial to make everything consistent. Jay has some action items; deal with them next week. 12. Meeting Schedule Cancel Monday's meeting since we accomplished our goals for this week. Will hold email vote on outstanding action items once complete (must be complete by end of next week). Schedule meeting for Monday 24th, 11:00 am.-1:00pm to handle any open items. BNF should be updated by then, with assertions and latest changes. 13. Meeting adjorned 1:05 pm.