SV-EC Errata Meeting Minutes Monday 8 November 2004 11:00 am. to 1:00pm [Distribued, for approval at next sv-ec errata meeting] Attendees: ---------- (a--AA) Alex Wakefield (AA-AA) Arturo Salz (----A) Bill Paulsen (AAAAA) Brad Pierce (-AAA-) Cliff Cummings (A-AAA) Dave Rich (A----) David Smith (--a-a) Don Mills (A----) Dennis Brophy (AAA--) Eugene Zhang (AAAAA) Francoise Martinolle (A-A--) Karen Pieper (AAAAA) Mehdi Mohtashemi (AAAAA) Neil Korpusik (AAAAA) Ray Ryan (--AAA) Steven Sharp (A----) Stu Sutherland (aAAAA) Surrendra Dudani (-Aa--) Yogesh Pandey ||||| |||||_ 8 November 2004 ||||__ 25 October 2004 ||| |||___ 27 September 2004 ||____ 13 September 2004 |_____ 31 August 2004 A => Attended (Present for both roll calls: beginning and end of meeting) a => Present for roll call at beginning, absent at end meeting roll call - => Missed Action items from November 8, 2004: ----------------------------------- 1. Surrendra - errata 203, check for compatibility with sv-cc and compatibility with C++ stl. Also specify how strlen handles an embedded null byte. 2. Surrendra - errata 271, change the example to use a typedef plus a cast. 3. Dave Rich - errata 275, put together a proposal and post it on the web site. 4. Surrendra and Ray - errata 4, discuss this off-line and resolve before the next meeting. 5. Ray - errata 175, send out a proposal. 6. Ray - errata 211, respond to the comments from Cadence. 7. Francoise - errata 260, come up with a proposed clarification. 8. Steven - errata 261, make a proposal. 9. Steven/Bill - errata 262 make a proposal. [261/262 may be combined] Minutes 8 November 2004 taken by Neil Korpusik 1) Review the IEEE patent policy ref: http://standards.ieee.org/board/pat/pat-slideset.ppt We agreed to assume that the policy was read since everyone is familiar with it. 2) Approve the minutes of the last meeting [October 25 2004 meeting] http://www.eda.org/sv-ec/Minutes.html Motion: to approve minutes of October 25, 2004: Ray Second: Surrendra Abstain: Opposed: Passed 3) Next meeting schedule and p1800 proposed deadline guidance. The P1800 will be having their next meeting on Nov. 22, 2004. This is the same day that the next SV-ec meeting is scheduled for. It was decided that there wouldn't be much of a conflict with people that attend this meeting. We will hold our next meeting as originally scheduled. Next Meeting - November 22, 2004. 11:00am - 1:00pm [PST] 4) Review/discuss and vote on Errata in the database. a) String questions: Errata: 197, 203 (Per Dave Rich request to delay for next meeting) 271 Incorrect example of assigning a string to a register in Section 3.7 275 Several issues with section 3.7 String data type Errata 197: Is string an array? - section 3.7 first paragraph Dave: objected to the use of the word character contained in the re-wording of this paragraph. Surrendra: character is defined in the table 3.1, byte or ASCII character. Table 3-1 in section 3.3 contains a list of "Integer data types". For byte it states "2-state SystemVerilog data type, 8 bit signed integer or ASCII character". Arturo: Section 2.6, it talks about characterfirst paragraph. "Non-printing and other special characters are preceded with a backslash." Dave: Why was the dynamically allocated array of bytes not correct. Surrendra: string is not really an array. Dave: the fourth paragraph was deleted. If everyone is ok with character. Other places we talk about dynamic array of bytes for the purposes of bit-stream. Ray: it does say if you read it you get a byte. Neil: Section 3.16 also talks about byte. Arturo: Character implies more than byte, it has ASCII notion. Dave: The reason character is not there because of unicode. Fransoice: What is ordered list. Arturo: You can implement it as a list, for implementation purposes. Brad: Is it indexable, looks like unpacked-array. Ray: Is there anything that you can do to array that can not do string. Dave: Slice of string Surrendra: slice is not really defined. Neil: the methods associated with array is different from array. Ray: Is it any different from collection of bytes. Fransoice: We should remove character from the definition, since it is not defined. We need to provide the definition of character. Neil: The methods use the word character. Surrendra: it defines the operation, without going to detail Ray: Character is a concept but not a data-type. Francoise: should we include order collection of ascii characters. BNF says string literal is ascii character. Arturo: String literal is not string data-type. It should not be limited to ASCII. Neil: It returns a byte, in the table it is ascii, Arturo: the question is the 8th bit. Ray: All 8th bits are usable. NOTE: The 8th bit of an ASCII character is not defined. Leaving off the word ASCII was intentional. Motion: to accept errata 197 proposal Move: Surrendra Second: Arturo Abstain: Dave (I like to see string behave more like array) Oppose 197 passes Errata 203: String data type, Table 3-2: String operators, relational operators "The comparison behaves like the ANSI C strcmp function (or the compare string method) (with regard to the lexical ordering) and embedded null bytes are included." Ray: Strings list of bytes, it can have 0. Surrendra: If you allow null, then it is not consistent with ANSI C. makes it incompatible with c-functions, also vpi and dpi taking c as main interfaces. It will not work properly. Ray: The null bytes have additional semantics than c. Dave: they will terminate if you use c function. you can still pass a string. Francoise: the string will be terminated. Dave: Some simulators will change null to space. Ray: This is $display command-- null to blank space. Brad: In c you can pass out register with null embedded in them, c-functions are not usable on them. Francoise: You have to know the size. Surrendra: Users do not allocate any bytes. In c you have full control over the array. As soon as string, you can not have null. Dave: The original spec, has no restriction about null bytes. This is a change that is not needed. Ray: If we declare a string variable 8, put a null character in second byte, what would the size be. Surrendra: it will get 1, Ray: I think it should be 8. Surrendra: In c you have complete control. Francoise: The simulator always know the size. Surrendra: The string size can become smaller, Ray: It would only get resized if only re-assigned. Access an array of Lvalue, can we access something beyond the size of array. Arturo: If you allow this. Francoise: I would like to have strings behave like c/c++. No null bytes in the middle of it. The only way you know, then you need the size of the string. Surrendra: The user will not know the notion of size. Ray: the length function would give size. Francoise: The vpi does not work. they would need the size of string in addition. Arturo: would you not have the same problem with dynamic array. you have to pass the lenght. Francoise: String would be assumed to be mapped. Dave: The user has to be aware of this issue. Surrendra: What advantage does the user get out of null byte in the middle of string. Arturo: These are consistent with c++, in c you can put anything in it. there is only char in c no string. Surrendra: In c++ if you use stl library, problems in using string with null bytes. Dave: Two areas would be interesting. Concatenation of two, with null byte. Also string as verification construct to pass a null. Also this is a feature of 3.1a. If we make the proposed change it would be removing existing 3.1a functionality. . Surrendra: It makes it incompatible with vpi Ray: Semantics of storing a null does that change the meaning of string. If you set it to null, then again to a character, Neil: Does the implementation allow reclaiming of memory back. Francoise: If you allow null byte, the lenght does is not known. [AI] Surrendra: 1) check for compatibility with sv-cc committee. 2) how should a null byte in the middle of a string be handled? Is the last portion of the string reclaimed? 3) how does strlen handle an embedded null byte? Errata 271: Incorrect example of assigning a string to a register in Section 3.7 Surrendra: Is this doable. Brad: You need a typeof, $typeof, we do not know. Surrendra: we can define a typedeff a reg. Not a dynamic type assignment to a reg. Arturo: You can assign a dynamic assignment to static. Dave; You can not assign a dynamic to static types Arturo: Section 4.7 shows the rules for dynamic-static assigment. Now that strings are not arrays, we do not need to define it in terms of array. reg [15:0] r; string b=""; string a={"Hi",b}; r=a; // should be r=reg'(a); <---- proposal in the errata NOTES: A dynamically sized object can't be directly assigned to a fixed size data object without using a cast. [AI] Surrendra: change the example to use a typedef, make the foraml proposal in the data-base Errata 275: Several issues with section 3.7 String data type This errata contains a list of all the other issues that were raised during a series of recent emails. [AI] Dave Rich: this errata has been assigned to Dave. He will put together a proposal and post it on the web site. b) Randomization/constraints/randcase Errata 4 Add rs_rule precedence and example in Section 12.16 Surrendra: Item 4, may create some problems for constraints. The same := is used for dist operators, the expression. If we change the precedence that will not work. Ray: These are randsequences. Surrendra: It will change it over in the dist operators inside the constraint definition of the class. Ray: If the expression for the weight is expression not a value, if treated := first, Arturo: The syntax will take care of it. Surrendra: you are treating them differently in two places. Ray: In the original example, has the ambiguity to it. can you write up an example that breaks it. := is the operator. Surrendra: It is not an expression operator, it will not bind to it, the expression will get rid of | as an expression. The rule does not allow (), it would have been able to distinguish current BNF does not allow it. [AI] Surrendra and Ray: discuss this off-line and resolve before the next meeting. Errata 175 175 Ambiguous ordering of random variables Ray: We agreed on, does not have any effect on solution space, once that is defined, choosing the solution in the solution space. The statement in the LRM, states for groups. The previous paragraph has ordered set. Arturo: Are you saying that we are partitioning the set. Ray: Yes, Arturo: That is not correct. Ray: Solving for the solution space. You can have a partial ordering. Why not leave it completely up to the implementation. If you do not care about probability, then solve-before does not do anything. Distribution is implementation dependent? Arturo: Partitioning into sets, then you do not need to do it. Ray: If I have solve before statement, for example x,y and a,b. you can get a case where the distribution can be effected by partial ordering. Arturo: Why do you want to delay it. Ray: If 4 variables, a,b,c,d. a before b, b before c, d. Arturo: Ordering without constraining, Ray: if you put some constraints, a