SV-EC Meeting Minutes 13 January 2003 Active (At one or more of last 4 meetings) (-----a----aaaaas) v Arturo Salz (Synopsys) (-----aa-aaaaaaas) v Brad Pierce (Synopsys) (a-aaaa-aaa-aaaam) v Cliff Cummings (Sunburst) (aaaaa-aaaa-aaaas) v David Smith (Synopsys) (---aaa-a-aaaaaas) v Francoise Martinolle (Cadence) (aaaaaaaaaaaa---m) v Karen Pieper (Synopsys) (------------aaas) v Jay Lawrence (Cadence) (aaa-aaaaaaaaaaas) v Kevin Cameron (National) (aaaapaaaaaaaaaas) v Mehdi Mohtashemi (Synopsys) (-aaaaaaaa-aaaaas) v Neil Korpusik (Sun) (-aaaaaaa-aaaaaam) v Stefen Boyd (Boyd Technology, Inc.) (-aaa-a-aaaa---am) n Dennis Brophy (ModelTech) (---------aa-a-as) n Don Mills (LCDM Engineering) (--------aa-a-a-s) n Stu Sutherland (Sutherland-HDL) (---a-aa-----a--m) n Kurt Takara (0-in) (-----a-a-a-a---m) n Tim Corcoran (WHDL) Inactive (Missed last 4 meetings) (--a------------m) n Adam Krolnik (LSI Logic) (---a-a---------m) n Alec Stanculescu (Fintronic) (-aaa-----------m) n Dave Kelf (Co-Design) (aa-aa----------m) n Heath Chambers (HMC) (--a--a-a-------m) n Michael McNamara (Verisity) (aaa------------m) n Paul Graham (Cadence) (aapaa----------m) n Peter Flake (Co-Design) (a--------------m) n Roy Armoni (Intel) (aapa-a---------m) n Simon Davidmann (Co-Design) (aa---a---------m) n Steven Sharp (Cadence) (-----a---------m) n Stephen Meier (Synopsys) (-aaaaa--a------m) n Tom Fitzpatrick (Co-Design) (-----a---------m) n Zeev Kirshenbaum (Verisity) a => Attended s => Attended but does not count to voting rights (extra meeting) m => Missed but does not count against voting rights (extra meeting) p => Attended by proxy - => Missed v => Eligible to vote at next meeting (based on attendance only) n => Not eligible to vote at next meeting (based on attendance only) Note: This is an extra meeting. No votes may be taken and attendance does not affect voting rights. Action Items: 1. Committee: Approve minutes from 6 and 13 January. 2. Francoise: find all types with ranges on them. Check to see if shorthand notation can be specified and if it's already present. 3. Committee: Review and approve Arturo's document on "Scalar Definition Item". 4. Arturo: Add count (or similar consistent name) method to section 3.10.5. 5. Arturo: Add discussion of optional use of () to 7.10. 6. David: Make sure in 4.6.1 to have bold used for [] around size. 7. Arturo: In 4.7 make change on compiler error in comment to be a prose description. 8. David: Add at end of first paragraph of 4.7, "Compatible types are types are assignment compatible.". 9. David: Get clarification of use of slice notation with unpacked arrays from SV-BC. 10: Arturo: Define the order of evaluation for the new operator when used with dynamic arrays. 11. Arturo: Add a short sentance at the start of 4.8 that specifies dynamic arrays passed by value are passed a copy. 12. David: Create change for removing "including integers ..." from sentance in Section 4.9.1. 13. Arturo: Add discussion of use of canonical form for ints in determining an index. 14. Jay: Define order of 01xz and define both integer and in indices for associative arrays. 15. Arturo: Clean-up Table 4-5 so it is clearer. 16. David: Change "compiler error" to "type check error" in all sub-sections of Section 4.9 17. David: In Section 10.4.2 change task to a function void. 18. David: Replace Section 4.7: "Unlike assigning to a fixed size array, " with "Unlike assigning with a fixed-size array,". Minutes taken by David Smith. Please be patient with the notes (did not always get peoples names on comments). 1. Review minutes from the 6 January meeting Issue raised that in the minutes the list of methods for section 3.10.5 did not include count (although discussed in meeting). 2. Review Action items (see minutes from 16 December meeting) 1) Arturo: provide builtin operator method section in Section 7. Set groundwork for builtin operator methods. Use guidelines discussed during meeting. (left over from last meeting). A description has been sent to the reflector. Will be added to change list and approved at next meeting. Has been added as CH-33. 2) Francoise: find all types with ranges on them. Check to see if shorthand notation can be specified and if it's already present. No action 3) David: provide information on Jan 21 meeting. Email sent out with meeting information and agenda. Only change will be to swap morning and afternoon topics to focus on simulation cycle related issues. 4) David: raise issue with BC of enumerated type strong typing vs. static cast vs. dynamic cast. Issue raised. No response. 5. Arturo: incorporate Jay's proposal into formal proposal for LRM. This is the removal of increment and decrement on enums replaced with prev, next, first, and last methods (with offset arguments as appropriate). Completed. Added as CH-32. Suggestion was made to add a count method. 6. Arturo: provide better use (or term) for the term "scalar" (or handle conflict with the use of scalar in 1364). Arturo provided discussion on reflector to use "singular" instead of "scalar". Kevin raised issue that "singular" is also used in Verilog-AMS. No other suggestions provided to replace "scaler". Added as CH-34. 7. David: raise issue of shared namespace of system tasks and system functions ($cast) with Stu Email was sent and Stu responded with similar issues as were discussed in the committee. 8. Arturo: hold discussion on reflector and propose solution for system task/system function namespace problem. Arturo presented issues. Need to vote on it at next meeting. 3. Review LRM (my notes here try to capture the intent of the discussion and may not be the exact words used - please correct if you feel it is important). Section 4.6 Francoise - Are dynamic arrays different than unconstrained arrays? Arturo - They are dynamically allocated. Francoise - Can dynamic arrays be passed to a function? Jay - Yes Arturo - Should use same syntax for the unconstrained arrays. Discussion insued about SV-CC desire to have a mechanism in SV to declare "unsized arrays" when communicating with C through function calls. Requested Francoise to have SV-CC raise the issue with SV-EC through a request and requirements definition. Kevin: Why use (*) instead of () for dynamic array declarations? Arturo: Need some way to identify difference with respect to associative arrays. Not important which is (*) and which is (), but must be different. David: Kevin, if you wish to change the usage please make a motion at the next committee meeting to swap the usage. Section 4.6.1 Jay (through email) - Is the 'size' specification is an argument to new then () should be used. Arturo (through email) - This is similar to C++ syntax. The size specification is specified using [] while the optional arguments to the constructor use (). Francoise - Square brakcjets are ok? Jay - Need different notation to avoid conflict later. Francoise - How to change the size of a dynamic array. Arturo - call new again. Jay - see example in 4.6.1. Francoise - Is size optional in new? Arturo - No. What would it mean? Francoise - Issue is BNF confusion. [] are part of the expression and also used to indicate conditional parts of the statement. David - Need to make sure the [] are in bold where they are part of the language. Section 4.7 Jay - Problem requiring the error mentioned in the example to be a compile time error. What about if it is interpreted? Should be stated that it is an error but not restricted to compile time. David: Does 1364 have run-time vs compile time distinction on errors? Some disagreement on the answer to this question as to whether it is part of the language or just in notes. Jay - Needs to be defined in prose instead of a comment. Define it as an error, let the implementer describe when it will be used. Arturo: Change to note with "may"? Francoise: What is a compatible type in the first paragraph of the section? Arturo: Like Verilog it means assignment compatible. Kevin: What about 2D arrays? Arturo: Dynamic arrays are one dimensional only. Francoise: Is example at the end of 4.7 allowed? The use of the slice notation with unpacked arrays. Arturo: This is the only example of unpacked arrays using the slice notation. It was part of SuperLog but not clear in System Verilog. Kevin/Jay/Arturo had a discussion on Function initializers and their order of evaluation when used with the new method. Arturo: New takes 2 arguments. The order of evaluation does matter. The side effect is ambiguous. Does Verilog enforce an order? Jay: Yes on a function. Arturo: Then define it the same. Francoise: 1364 defines the order as being undefined. Action on Arturo to define order for the new operator. Brad: The sentance "Unlike assigning to a fixed size array, " should be changed to "Unlike assigning with a fixed-size array,". Section 4.8 Jay (by email) - Should state that a copy of a dynamic array is passed. Arturo (by email) - OK. Add at the start of 4.8. Section 4.9 Jay: Need to define a way to define the ordering method for associative arrays. Arturo: User can always do a sort based on the contents of the elements in the array. The problem is that the user cannot count on the contents of the element being unique (unless he makes sure of it himself). Need to use a key not based on the contents. Jay: Issue is non-deterministic across vendors for the class. Arturo: Ordering is not important for classes (in general). Mehdi: If ordering is important then use a different container (queue). Jay: Understand. This is a hard problem. (more words said but...) Section 4.9.1 Jay: In sentance starting with "The array can be indexed" remove the rest of the sentanfce starting with "including integers". Arturo: OK. Neil: Is the next sentance "Non-integral index types ..." redundant Arturo: No, it defines the restriction to integral data types. Jay: The length of an index expression seems to be significant (leading zeroes). Arturo: Not meant to be. It is supposed to be a computation of the canonical representation regardless of the size. Section 4.9.3 Francoise: Should the "shall result" be changed to "may result". Discussion about compiler errors followed. Arturo: Change the "compiler error" to "type check error" for all cases in 4.9. Section 4.9.4 Jay: WHy not index of '01xx'? Arturo: No order is specified for 01xz. Jay: Why not define one. Make a distinction between int and integer. Can use integer with static arrays. Arturo: LRM states that it is an error. Kevin: Would like to have this. Neil: What about integers being 32 bits or bigger while int are limited to 32? Kevin: No limit on strings. Jay: I will take an action to define this. Section 4.9.6 Francoise: Table 4-5 is confusing. It is not clear what the "default initial value" is. Arturo: Will clean-up. Section 4.10.2 Francoise: Delete does not fail when the index is invalid. Arturo: True. The item is deleted (does not exist) so it does not need to fail. Can make it a function if desired. Francoise: Why a task and not a function that returns void? Arturo: Could be. Will do. Section 4.10.5-4.10-7 Francoise: These all use pass-by-reference. Would like to see a C-like syntax and in/out. David: This should be discussed when we cover pass-by-reference in general. Jay had suggested using a CONST form to indicate read-only semantic. 5. Next Meeting David - Will meet next on Jan 21st at all day meeting. No meeting on Monday the 20th. 6. Meeting closed