SV-EC Errata Meeting Minutes Monday 6 December 2004 11:00 am. to 1:00pm [Distribued, for approval at next sv-ec errata meeting] Attendees: ---------- (a--AAAA) Alex Wakefield (AA-AAAA) Arturo Salz (----AA-) Bill Paulsen (AAAAAAA) Brad Pierce (-AAA---) Cliff Cummings (A-AAAAA) Dave Rich (A------) David Smith (--a-AA-) Don Mills (A------) Dennis Brophy (AAA----) Eugene Zhang (AAAAAAA) Francoise Martinolle (A-A----) Karen Pieper (AAAAAAA) Mehdi Mohtashemi (AAAAAAA) Neil Korpusik (AAAAAAA) Ray Ryan (--AAAA-) Steven Sharp (A------) Stu Sutherland (aAAAAAA) Surrendra Dudani (-Aa--A-) Yogesh Pandey ||||||| |||||||_ 6 December 2004 ||||||__ 22 November 2004 |||||___ 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 December 6, 2004: ----------------------------------- 1. Brad: open a new erratum in place of 9 and assign it to Stu. 2. Neil: Upload a new pdf with the agreed to changes for erratum 252. 3. Arturo: Upload a new pdf with the agreed to changes for erratum 334. 4. All: send feedback to svec reflector on the updated LRM. Minutes 6 December 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 [November 22 2004 meeting] http://www.eda.org/sv-ec/Minutes.html Motion: to approve minutes of November 22, 2004: Arturo Second: Surrendra Abstain: Opposed: Passed 3) Review/discuss and vote on Errata in the database. a) The errata on the email ballot Erratum 4 Add rs_rule precedence and example in Section 12.16 NOTES: An updated proposal (1-page pdf was uploaded to the database). The issue is that a '|' could be interpreted as a bitwise-or in a weight expression or it could be a production separator. The new proposal requires the use of () to enclose an expression, unless a single literal or identifier is specified. Arturo: ambiguity in usage '|'; use syntax rather than the precedence, single literal value or single identifier. proposal shows the bnf changes. Ray: having the option of not requiring parentesis, makes sense, in 90% of cases. Motion: to approve the new proposal for erratum 4: Neil Second: Arturo Abstain: Opposed: Passed Erratum 25 Pass by reference behavior of dynamically allocated objects NOTES: There was an apparent misunderstanding of the proposal which led to a negative email vote. The concept of not releasing an element of a dynamically allocated array until there are no longer any references to it was discussed. It was pointed out that it is possible to break the association of an object that is passed by reference and the array that initially held it. Breaking this association can not cause the data to be lost nor does it require it to be copied. The original data continues to exist until all references to it are gone. Section 11.26 of the LRM discusses memory management. Dave: pass by referecne would make a copy, object that is being passed around. Francoise: something that is dynmaically allocated is gone, you are copying the referecne. outside the function i allocate the object. Arturo: You can not deallocate the reference, just association to the data and reference that it points to. destroy the references and data gets destroyed. Allocating a dynamic array, you create an associiation with data and this array. Dave: it is not copying the reference. Francoise: is it copying the data? Arturo: that would be by input/or inout. Francoise: can you still access these outdated reference. can you access these Ray: yes within the lifetime of the function. Francoise: if data changes then you should not see it. How do you change a reference. Arturo: You can allocate a new or set it to Null. In one of the reference you should see null, the others give you data. Francoise: pass an element of dynamic array by reference. Dave: dynamic array of integers, passing first element by reference. the function that has this maybe pointing to the old first element while the new is done, the first one would be somewhere else. Surrendra: suppose you pass the full array as a reference. Dave: Is it static object. Resolution should be the first element in the array, it is the new one. you have not reallocated the dynamic array as a whole. Surrendra: within a function if we pass the whole array, and an element. Dave: it is possible to get two different values. Francoise: it is for element of dynamic storage sent by refrence. Do we provide any error message or warning if the element is not there. Dave: it does exist, for example a queue of transactions, it is needed and used outside. Neil: section 11.26 discusses memory management, it does not go into this detail. Motion: to approve erratum 25: Dave Second: Neil Abstain: Opposed: Passed Erratum 9: Brad: Need to leave the conf. call early, bringing up the issues with erratum 9, The LRM doesn't appear to have been updated properly. He also felt that the original proposal may not be complete. this was not done right, we need to look at them, hence do not close it, [AI] Brad: open a new erratum, and mark it re-assigned to Stu, Erratum 172 assignment of values to fixed bins is not specified NOTES: Sandeep from Cadence had expressed some concerns with the proposal. He was suggesting that implementations uniquify the entries. It was pointed out that re-arranging the values in any way could make it difficult for users to relate to what they had actually specified. Francoise: why should we have it in two should be different. Ray: there are other differences between automatic and fixed bins. If we sort/remove it takes away from user any controlabilty. Artuo: controlbility. and predictiblity. Francoise: another objection, you can not create an equal distribution, Ray: that is another issue. the algorithm, the remainder into the last bin. Arturo: the main reason is predictability, user. Motion: to approve erratum 172: Arturo Second: Surrendra Abstain: Francoise [Sandeep, expert on coverage, he wanted to have it differently] Opposed: Passed Note for champions: Francoise abstained since she didn't feel as though she had the expertise to cast an informed vote. Erratum 252 Default bin of a coverpoint in cross Neil: wanted to see minor changes, in section 20.5, cross product, to cross coverage bins. The changes specified by Neil in the email vote were proposed. http://www.eda.org/sv-ec/hm/2235.html Motion: to approve erratum 252 with the proposed changes: Neil Second: Arturo Abstain: Opposed: Passed [AI] Neil: Upload a new pdf with the agreed to changes. Erratum 317 Class as bit-stream type NOTES: In the email vote several people voted against the erratum since they preferred to leave in this functionality rather than remove it and then try to add it back in later. It was suggested that perhaps a builtin method might be preferable. It was noted that if class inheritance were involved the base classes would come first when using a class a a bit-stream type. Using a null handle would be an error. It was also noted that existing text in 3.16 excludes handles within classes. Dave: example, context of the class, did not include the class handle. my suggestion was to get rid of that example. objection was that it was useful functionality, why remove it. Would rather see a precise proposal for this. Arturo: In section 3.16 says class of the above type. when you pass a handle it is shallow copy. Dave: You can not use the handle itself not the content Arturo: that only requires a friendly ammendment. Dave: how about inheritance, how would it work. if you are packing a class into another type you need to order of the bits. does the driver class goes in back or front. Arturo: it is obvious, ofcourse we need to add more clarification. if a class contains a handle. in 3.16 is exclusionary. Dave: the syntax and mechanism may not be correct syntax. Ray: virtual function maybe useful to put class to bit stream. Arturo: Users can already do this, what should the virtual function do? dave is not removing functionality. Dave: I do not think we have worked through issues to make sure syntax works in all classe. referring to class handle as something different, everywhere in the LRM we have not done so (to the content of the class). I should be able to take a handle and cas it with bit-stream cast. construct that we have not defined in the LRM, Arturo: It is defined, it lacks specifity in some areas. Alex: it maybe to do a job better with virtual function. Motion: to approve erratum 317 as written: Dave Second: Francoise Abstain: Opposed: Arturo, Surrendra, Alex, Neil (In favor: Dave, Ray, Francoise) Erratum 317 did not Pass Motion: to move erratum 317 to lower priority: Surrendra Second: Arturo Abstain: Opposed: Passed NOte for champions: This is lowered in priority, remains open for the next phase of LRM edits. b) High priority listed errata. Errata 261/262 -Proposal was not approved, move priority to low? Motion: to move erratum 261/262 to lower priority: Surrendra Second: Neil Abstain: Opposed: Passed Erratum 275 string place holder -- move priority to low? This erratum is collection of items on Strings. Dave will not have time to put together a proposal for this erratum on short notice. Motion: to move erratum 275 to lower priority: Dave Second: Neil Abstain: Opposed: Francoise Passed Erratum 334 [as replacement for Erratum 203-replacement:] Null bytes in string variables NOTES: Arturo provided a proposal for this erratum. - NUL bytes are not allowed in string variables. - The proposal makes a distinction between NUL bytes at the beginning of a string versus in the middle of a string. The reasoning behind this was to try to make it easy for existing Verilog string vectors to be moved to System Verilog string variables. Verilog users tend to pad out string vectors with NUL bytes on the left-hand side. NUL bytes within a string variable are not an issue for SVCC, the user needs to deal with it in those situations. Neil: you are not allowing a null byte to be part of string at all. Arturo: It makes it consistent with old verilog. Neil: is it not inconsistent with STL c++, string itself is allowed to contain null-byte. Arturo: there is nothing left, it is empty string, or you find the null byte, there is no 0 byte inside the string. What should it do when you display a 0 byte. Surrendra: with STL there is problem, with vpi there will be issue. Dave: in cc has said that user has to deal with it. Arturo: when you do pass a string type, string type is terminated with null byte. Franciose: the mechanism for embedding null byte, is array of bytes. both: two different types, Neil: I know that STL allows it, just want to make sure we are doing it correctly. Arturo: three reasons, one with dpi/vpi compatibiilty, second with old-verilog. putting integral values to string you need a cast. Dave: you then truncate the embedded null byte. instead of ignore, i would say remove. Ray: to replace them with blank it is not changing the right hand-side. Arturo: alternative is to copy them to blank. Dave: take two integral value, embedded null-byte in the middle is removed. if we have to have that functionality. intermediate null bytes. Arturo: we could have many different mechanism for stripping functions. we want to nail down the default behaviour. the second change if you try to force it Neil: if you have null byte, change it to null string. Surrendra: that is for casting register. Neil: interpreting a null byte in the string literal. just be consistent. Arturo: but people have used string some different way. Neil: I do not agree with htat. Dave: some PLI code, writing registers. they will have null byte ins array the way they use readmem, contatenate to get multiple readmems. we should retain all null bytes. Arturo: string literals, you already do this using $display, this is a built in system task. Defining those semantics is much harder than disallowing. Ray: can array syntax be used. Arturo: if the right hand side is 0. degenerate case,. support disallowing null bytes. Dave opposing, for removing null bytes. Ray: how to handled embeded null bytes. Dave: a change to the proposal where NUL bytes are always ignored (i.e. skipped over). If a user attempts to write a NUL byte to a string variable, nothing happens. Straw poll on not allowing NUL bytes in a string variable. Neil - abstain, all others approve. Three proposals were suggested for how to deal with the default case. 1. strip leading NUL bytes and stop at first embedded NUL byte 2. treat all NUL bytes as a string terminator 3. skip over all NUL bytes A partial straw poll revealed that all 3 of these proposals were acceptable but that the third one had the most support. There are 3 changes required to the original proposal: 1) first bullet replace any leading 0, to all 0 (Any leading with all and intermediate all 0 characters,) 2) third bullet truncate the sentence to. otherwise the string is assinged to the remaining characters. [drop last part of sentence starting with "until reaching"] 3) remove the sentence after the third bullet. ("Thus ...") third bullet needs to be changed. string is assigned any remaining character. Motion: to accept erratum 334 with change number 3: Arturo Second: Dave Abstain: Opposed: Passed [AI] Arturo: Upload a new pdf with the agreed to changes listed above. (data base ref: http://www.eda.org/svdb/ ) 4) Review of draft 1800 LRM b) SV-EC members will need to review the modifications done on the p1800 draft LRM based on approved errata. The site for specifications is: http://www.eda.org/sv-ieee1800/Specifications/ Currently draft 2 is placed as well. [AI] All: send feedback to svec reflector. -------------------------------------------------------------------------- SV-EC Errata: proposals approved by the committee -------------------------------------------------------------------------- 4 [Ray] Add rs_rule precedence and example in Section 12.16 6 [Surrendra] Description of query and inst_query methods 7 [Surrendra] Clarification to 20.4.1, new 20.10 8 [Ray] Randsequence grammar issues 9 [Dave R] Erratum Queue Methods 10 [Ray] Typo in 12.16.7 11 [Brad] Typos in BNF 17 [Brad] extra semicolons in method_prototype (LRM-292) 18 [Brad] const_identifier missing from A.9.3 22 [Dave R] $length is now $size, but two occurrences are not updated 25 Pass by reference behavior of dynamically allocated objects 33 [Brad] Inconsistent semantics for null events 71 [Brad] Extra semicolon in covergroup_declaration (LRM-229) 83 [Brad] Indentation wrong in D.5.11 example 84 [Brad] for_step_assignment should allow subroutine_call 85 [Brad] Typo in 12.12.3 86 [Brad] Keywords 'string' and 'while' should be bold in examples 90 [Brad] Keywords 'cross' and 'coverpoint' should be bold in 20.2 135 [Brad] typo 140 [Surrendra] typo in section 20 141 [Surrendra] Typo in section 20 165 [Surrendra] covergroup_declaration' missing as a 'class_item' 172 [Ray] assignment of values to fixed bins is not specified 173 [Ray] is the order of declaration in a covergroup significant? 174 [Ray] Split bullet describing a random variable into 2 separate bullets 175 [Ray] Ambiguous ordering of random variables (Ray) 197 [Ray] Is a String an array 224 [Neil] Grammar typo in Table 9-1 231 [Surrendra] Clarify the second paragraph in Section 16.5 233 [Brad] table is a keyword and other typos 235 [Neil] wait_order BNF 250 [Neil] bug in 8.5.2 example code 252 [Neil] Default bin of a coverpoint in cross 260 [Francoise] distributions and constraints solving 271 [Surrendra] Incorrect example of assigning a string to a register in Section 3.7 334 [Surrendra] Null bytes in string variables 5) Next Meeting 20 December 2004 - we will hold this date for a possible meeting. 17 January 2004 - scheduled meeting. 11:00 am-1:00pm. [AI] Mehdi: send the logistics, agenda. 6) Meeting adjourned at: 1:07 p.m.