SV-EC Meeting Minutes 20 October 2003 12:00 am. Monday (rrrrrrrrr) Voting Members (3/4 or > 75%) (aaaaaaaaa) Arturo Salz (Synopsys) (-aaaaaaaa) Brad Pierce (Synopsys) (--aaaa-aa) Cliff Cummings (IEEE 1364) (aaaaa-aaa) Dave Rich (Synopsys) (aaaaaaaaa) David Smith (Synopsys) (-aaa-aaa-) Dennis Brophy (ModelTech) (aaaaapaaa) Jay Lawrence (Cadence) (--a-aaa-a) Jeff Freedman (ModelTech) (aaa-aaaaa) Michael Burns (Motorola) (-aaaaaaaa) Mehdi Mohtashemi (Synopsys) (aa-aaaaaa) Neil Korpusik (Sun) (--aaaaaaa) Ray Ryan (ModelTech) |||||||||_ 20 October ||||||||__ 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-----) 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-29 (Arturo): Add the following list of changes to EXT-11. Section 4.14.1: Add "and rules except as defined below" to first sentance in section Section 4.14.1: Remove duplicate rule 4 (same as 2). Section 4.14.1: Add Z to the last two rules. Section 4.14.1: Fix typo of "then" in the next to last rule. Section 4.14.1: Is the use of "i.e." appropriate in the next to the last rule and should it be added to the last example. Section 4.14.1: Remove and from "argument passing and semantics" in NOTE. Section 4.14.7: Need to add argument to push_front. Section 4.15.1: Add new BNF for method that includes the with clause. Section 4.15.1: Add note to indicate difference with constraints. Section 4.15.1: Add note about order of evaluation not being defined and there side effects are unpredictable. Section 4.15.1: The "name" in "name item" in the last sentance in paragraph 5 needs to be emphasized (not clear what the emphasize should be). Section 4.15.1: Resolve first/last overload with associative array. Extend find_ to all methods. Section 4.15.1: remove "a" from 'value a or" in description of max function and change minimum to maximum in max function. Fix type of unique_inex in definition of unique_index method. Section 4.15.1: Define the type of the expression that can be used with the "with" clause. Section 4.15.2: Change it a semantic error to use with "with" clause with reverse and shuffle methods. Section 4.15.2: Change << 4 to << 8 in last example. Section 4.15.3: Add the following to each of the reduction methods (changing as appropriate for the method): ", or if a with clause is specified, returns the sum of the values yielded by evaluating the with expression for each of the array elements." Section 4.15.3: Add legal types of arrays for which array reduction is valid. Section 4.15.3 (second one): Change 4.15.3 to 4.15.4 (two of them). AI-30 (Arturo): Add the following list of changes to EXT-9. Section 12.14: Typos in BNF "task_portlist" goes to "tf_portlist" rs_case_item colon to optional. Section 12.14: Add BNF to A.6.12. Section 12.14: The display function is should have the closing brace replaced with a parenthesis on each of the examples. Section 12.14.1: weight description of positive to non-negative. Section 12.14.1: Add missing ; in example. Section 12.14.1: Add BNF section reference to BNF fragment. Section 12.14.1: Fix typo in "A weight is only meanigful". Section 12.14.1: Add "this implies..." to the last paragraph to clarify weight meaning. Section 12.14.2: Fix typo on "ensequence" in example. Minutes 10/20/03 taken by Mehdi Mohtashemi 1. Review of meeting minutes from 13 October 2003 meeting Neil: The erratas were approved instead of accepted, all the votes were correct but there are some types. ERR-14 was labeled ERR-7. David: Changed the minutes to correct. Motion: Accept the minutes from 13 October 2003 meeting as ammended Moved: Neil Second: Arturo Abstain: None Against: None Passed 2. Review of 3.1a Extensions and discussion: Review and approval: EXT-11: (Dynamic Queue) 4.14 Arturo: Based on Verilog arrays but it resizes automatically. Use of $ for index in declaration and to retrieve end of queue. Walk through of example in 4.14 and 4.14.1. An empty array declaration is now used as an empty queue (to clear the queue). Michael: Is it intended to allow queues of primitive types or other types? Arturo: You can have queues of anything. Dave: Any place where you can use an unpacked array you can use a queue. Brad: But you cannot have an empty unpacked array. David: Open Ray's question of limiting to a single dimension. Ray: Then if not one-dimension can the by multi-dimension? Can I have a 2-dimensional queue with $ for both dimensions. Dave: Why is that a limitation. Arturo: Can be multiple dimensional. Can have a queue of queues. Dave: This is the specification of an index so can be an index. Arturo: You can have a queue of dynamic arrays, queue of queues, etc. Ray: I have additional questions when we get to the appropriate sections. 4.14.1: Arturo discussed example plus slices. Dave: Need to add fact that a, b, and n are expressions. Neil: That was one of my questions. Lots of examples but not much text. Arturo: There are no new restrictions with respect to unpacked arrays. Dave: The key thing that is different is that the slice can have a variable width. The last section on page one is a set of rules and not examples. What is missing is defining that a, b, and n are expressions in the rules? Ray: c, d, and e can be handled by ... Neil: Yes rules, but did not answer my questions, looked at it in isolation, can look at it later, no need to duplicate everything. Ray: concatenation can answer some of Neil's questions Neil: maybe reinforcing the statement should be sufficient. all the same rules apply, should say this in there. Arturo: Every property of arrays still hold. Neil: If this is reempasized then it would be clear. So all of the same operations and rules apply. David: We should add to the first sentence that all of the same rules and operators apply, except as defined in the rules below. Action item AI-29 added based on discussion. Neil: Rules 2 and 4 seem to be the same Arturo: There is some redundancy here. Remove no 4. Action item AI-29 added based on discussion. Neil: Need to add support for Z in the last two rules. Neil: In the last rule, the word "then" is not needed. Action item AI-29 added based on discussion. Brad: Rather than saying what invalid index value, say what the valid ones are. Arturo: Replicating the existing LRM. The difference comes in with read and write. distinction there. Micheal: But it is not between read and write Brad: Then invalid depends on read and write operation. Ray: The paranthesis in example is defining. David: Not exactly true, you can write to +1,+2 but you can not ignore the first one. Arturo: Can do it in one shot, concatenation is done. David: Is $+2 is valid index value. Arturo: It is invalid, in read operation you get an empty queue. Ray: You can not say queue 10 is this value then the size is 10. Queue.10 is 5, to have 11 elements. Can target of queue assignment be slice of a queue? (Yes) If slice of queue is beyond the elements read (union of orig queu and empty element) How about target is beyond? left hand can be slice? Would like to define a queue of an explicit size with declaration with most of the items are undefined. Arturo: The left hand can be a slice but it has to exist. Michael: Bit select not the part select. Arturo: No difference we are using bit select for part select. Michael: Can go outside the existing range as long as it is only by one. Neil: Can I assign an array to a queue? Dave: With a casting operator covered in the bit stream casting. Neil: Array assignment? Dave: You will be able to with the casting proposal. Arturo: Section 4.7 discusses the arrays. For assignment like dynamic arrays. Static array and queue ... Michael: Last "and" is typo in the statement. Action item AI-29 added based on discussion. Ray: When asign a queue to another queue, if they are different size. Queue p empty, queue r 10 elements. Arturo: Yes, p will get 10 elements. Queues do not have to re-copy the entire array Micheal: The syntax is same for dynamic arrays and queues? Dave: Not exactly the same. Arturo: In dynamic array you can not reallocate some portion of array, have to re-allocate the whole array. Michael: Elements would shift when added, but implemntation. David: System Verilog has references, arguement references not declaration. Ray: Assign queues of different lengths does it matter? Arturo: A larger one extends new array and smaller one shrinks. Ray: Queue of queues does not have to be rectangular. Arturo: Correct. 4.14.7: Neil: Looks required argument missing in prototype of push_front (push_back is correct). Action item AI-29 added based on discussion. Ray: These are only defined for one-dimensional array. Arturo: They only operate on a queue. Michael: Need an example of queues of queues. 4.15.1: Neil: Shows list of arguments in method. Is it possible to have more than one argument? Arturo: There are no methods using list of arguments. Brad: This does not go into the BNF correct? Arturo: Covered by existing syntax. Need to add this to BNF due to "with". Action item AI-29 added based on discussion. Neil: Why are they inconsistent, {} in one place, () in another? Arturo: Constraints in one, then the other is part of expression. Add a note to indicate difference with constraints. Action item AI-29 added based on discussion. Ray: Can the with have side effects? Arturo: Not disallowing it but there are no guarantees. Not defining traversal order. Brad: Ususally do not describe areas where side-effects are allowed, vs describing where it is not allowed. Ray: Should state something about order of evaluation not being defined and therefore side effects are not predictable. Action item AI-29 added based on discussion. Dave: This is a general verilog rule. Neil: Bottom of page 3. Do the variables need to be declared when used with the with? Arturo: Example in page 4, x is not declared anywhere, type is known, scope is withing the with statement. x stands for array index expression. Neil: Is this an implicit declaration? Arturo: The scope of the x is only within the with rule. Dave: This is the same as the foreach. Arturo: It really is an alias. X is an alias for the queue in the first example. If you would like to think of declarations it is a reference to the element of that type. Neil: What kind of side effects? Arturo: There are none. Only the user code has side effects. Ray: "The name item" in the next to last sentance needs to be changed to. Put in courier. Action item AI-29 added based on discussion. Neil: First and last can be used on any arrays not just queues. First and last are already defined for associative arrays and are different. Arturo: Need to rename first and last to be something else. first_item and last_item? Action item AI-29 added based on discussion. Brad: find_first and find_last? Neil: There is a typo in max, extra and it should say maximum. Action item AI-29 added based on discussion. Neil: What if the type makes no sense? Arturo: It is a type error. David: What is the type of the expression that is legal? Ray: Does it not say expression has to evaluate to boolean? David: What is the legal definition for the expression? Michael: You need that operator for unique index. Arturo: The types that with a relational operator defined works. Action item AI-29 added based on discussion. Brad: Is < and > required? Arturo: Yes. C handles only one where it might be otherwise. 4.15.2 Neil: With clause ignored in reverse and shuffle. Why not an error? Arturo: Change to semantic error. Action item AI-29 added based on discussion. Neil: Last example shift by 4 or 8 bits? Action item AI-29 added based on discussion. Ray: Shuffle is not portable. Need to have algorithm and how it is used. Arturo: If we can define a mechanism it would be good. Not sure how to do it yet. 4.15.3 Neil: The array reduction methods do not seem that useful. Arturo: Sum method is used heavily. Xor for CRC calculation. The rest are there for completeness. Using reduction operators from bit vectors to upacked arrays. Need to do declaration and initilization. It would be a 4 line program. This is just simplification. Tests on RAMs this is used for. Neil: The sort routine is good to have but some of these are not necessarily needed. User can code it easily. Dave: Could we define the unary operators to work on these instead of new functions. Michael: for bitwise operator on say a byte element, do you end up with a bit or byte answer? Arturo: Byte answer. Arturo: Sum and product do not exist but the boolean do. I thought about it but would be changing some meaning. Arturo: This is convenience and less error prone. It is useful and people use quite a lot. Ray: This can be used any where not just in testbench? Arturo: Correct Ray: Add the same sort of description as on the other ones. Action item AI-29 added based on discussion. Ray: Do we need to say what the type consistency is? Ray: They must be defined for the element type or the expression type. Action item AI-29 added based on discussion. Ray: First two sentance of dimension ordering should be specified in 4.15.1. Nevermind. David: Any other issues? Michael: You mentioned that X is a reference to the element. Arturo: You could think of this as that. The type is the type of the array and users cannot declare a method like this. Michael: This looks like it is an iterator that does not need to be dereferenced. Arturo: No mechanism to define a method with a "with" clause. Michael: Users would be perfectly happy with this. Implementation wise will have to figure it out. Ray: The intent is clear. What is an X? Have to handle x.index as special case. Jay: Not declared anywhere? Neal: It is implicitely declared? Jay: Is this a list of thing? Arturo: There is only one argument to find (and related methods). Jay: Only matching one element at a time. David: Will create an updatge version and send to the reflector. We will then have some reflector based question/answer and then vote on it (either email or conference call depending on timing). EXT-9: (Stream Generation) Brief overview by Arturo 12.14: Neil: Shoud it be endrandsequence? Brad: Consistent with endcase for randcase Arturo: Sequence and properties both have endequence. Brad: There are two types in BNF, "task_portlist" should be "tf_portlist", because there is no taskportlist. In rs_case item the : should be optional on default. default:[.. Action item AI-30 added based on discussion. Ray: Where is the rule for productions? Where is it allowed? One other change, where does randsequence occur. Arturo: Randsequence is the statement, it defines and executes. Michael: Production identifier just specifies the starting production. There is no name for the sequence. Ray: There is no instantiation of the randsequence. Arturo: Just a statement, that is correct. Michael: It is a procedural statement. Placed in always, it will execute over and over, either run through the rules, or break. Arturo: Brad has been consolidating function and task BNF. Cliff: Does this exist only in a program block? Arturo: No, anywhere, any other rtl. Does not have any states, It does not have internal state. It is the rules that are defined. Ray: It could have state if it has global variables. Brad: It can have an infinite loop. Arturo: Yep. Jay: This goes where in the grammer? David: In the BNF, in (behavioral statements) A.6.12 is possible. Action item AI-30 added based on discussion. Neil: Example in page 2. popf pushf defined in sequence not consistent. parens vs curly braces. Action item AI-30 added based on discussion. Michael: Could be useful to have define instantiate. Arturo: Can do by defining in class. 12.14.1 Neil: The integral values of weights say positive. Should we say non-negative. Arturo: Yes. Neil: Need ; in example? Arturo: It is missing. Action item AI-30 added based on discussion. Ray: Question on rs_rule. What does the weight specified apply to? Arturo: Only makes sense with the "or" statement for the distribution. Neil: There is a specification on this in the paragraph after the BNF. Arturo: a b c :=30 | x y z :=40 is meaningfull. Michael: No weight then it means 1. some weight leave some blank, Action item AI-30 added based on discussion. Start 12.14.2 next meeting. Typo on "ensequence" in example. Action item AI-30 added based on discussion. 3. Meeting Logistics David: Need to have meeting during week of ICCAD (Nov. 9-13). Two decisions required. 1/2 or full day. and Tuesday (Nov. 11) or Wednesday (Nov.12). This will replace the Nov. 10 meeting. Michael: Full day is difficult to do on the phone. Jay: Tuesday David: The meeting will be Nov 10, Tuesday from 1:00-4:00pm Pacific October 27 EXT-10: Functional Coverage (18 pages) 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: 27 October 2003 from 11:00am to 1:00pm Pacific time. 8. Close of meeting at 2:03pm.