System Verilog
LRM Changes
On
Status Legend: Open, Remove Note, Change, No Change
ID Committee Section Description Status Changes
LRM-1 SV-EC 1 4.6.1 4.8 10.5.2 10.5.4 12.6 13.3.5 13.4 13.8 15.2 15.3 Editor’s Note: "parameter" is a Verilog keyword, and "parameterized" models refer to the usage of Verilog "parameters" (see Sections 11.21, 19.6 and 20). Use of the word "parameterized" in this context is not consistent with the Verilog LRM. Suggest using "arguments" (as in Verilog LRM), "formal arguments" or "formals". 13.3.5, 13.4, 15.3 are left unchanged Section  1
Section 4.6.1 4.8
Section 10.5.2 10.5.4
Section 12.6
Section 13.1, 13.8
Section 15.2
Section 8.9
LRM-2 SV-BC 18.7 Editor’s Note: "parameter" is a Verilog keyword, and "parameterized" models refer to the usage of Verilog "parameters" (see Sections 11.21, 19.6 and 20). Use of the word "parameterized" in this context is not consistent with the Verilog LRM. Suggest using "arguments" (as in Verilog LRM), "formal arguments" or "formals". No Change Section 18.7
LRM-3 SV-BC 2.5 The time literal is interpreted as a realtime value scaled to the current time unit and rounded to the current time precision. Note that if a time literal is used as an actual parameter to a module or interface instance, the current time unit and precision are those of the module or interface instance. No Change Section 2.5
Editor’s Note: What is meant by "actual parameter" in the preceding paragraph? Is it referring to the Verilog parameter data type?
LRM-4 SV-BC 2.8 Editor’s Note: Both BC62a and BC65 added the following description of structural literals. I used BC62a. No Change Section 2.8
LRM-5 SV-BC 2.8 Structure literals can also use member name and value, or data type and default value (see Section 7.13): No Change Section 2.8
Editor’s Note: Is the cross reference above correct?
LRM-6 SV-BC 3.4 Editor’s Note: BC08-05 says to "Remove section 3.4.1". There is no such section, and the change order does not have the requisite details of which version it referred to, or what text is to be deleted. Change Section 3.4
LRM-7 SV-EC 3.8.9 function integer atoi() No Change Section 3.8.9
function integer atohex()
function integer atooct()
function integer atobin()
Editor’s Note: "integer" or "int"?
LRM-8 SV-EC 3.10 A typedef inside a generate may not define the actual type of a forward definition that exists outside the scope of the forward definition. Change Section 3.10
Editor’s Note: Does "may not" in the preceding paragraph indicate a mandatory rule or an optional rule? If mandatory, then change to "shall". If optional, the sentence needs to be rephrased to not be ambiguous.
LRM-9 SV-BC 7.12 7.13 7.14 7.15 Editor’s Note: Both BC62a and BC65 added this new section. I used BC62a. Change Section 7.12 7.13 7.14 7.15
LRM-10 SV-EC 8.10 Editor’s Note: This new operator needs to be added to the operator precedence table and other sections describing operator rules (signed/unsigned/2-state/4-state/real operands, etc.). No Change Section 8.10
LRM-11 SV-EC 10.1 — Importing and exporting functions through the Direct Programming Interface (DPI) No Change Section 10.1
Editor’s Note: Previous bullet added by the editor. It was not actually specified in EC-C120.
LRM-12 SV-CC 10.6 For any given cname, all declarations, regardless of scope, must have exactly the same type signature. The type signature includes the return type, the number, order, direction and types of each and every argument. Type includes dimensions and bounds of any arrays/array dimensions. For import declarations, arguments can be open arrays. Open arrays are defined in Section 1.4.5 of the DPI LRM. Signature also includes the pure/context qualifiers that may can be associated with an import definition. Change Section 10.6
Editor’s Note: What is meant by "Signature"?
LRM-13 SV-CC 10.6 For any given cname, all declarations, regardless of scope, must have exactly the same type signature. The type signature includes the return type, the number, order, direction and types of each and every argument. Type includes dimensions and bounds of any arrays/array dimensions. For import declarations, arguments can be open arrays. Open arrays are defined in Section 1.4.5 of the DPI LRM. Signature also includes the pure/context qualifiers that may can be associated with an import definition. Change Section 10.6
Editor’s Note: Need to update cross reference in preceding paragraph.
LRM-14 SV-EC 11.20 Editor’s Note: This new operator needs to be added to the operator precedence table and other sections describing operator rules (signed/unsigned/2-state/4-state/real operands, etc.). Change Section 7.9
Section  11.20
LRM-15 SV-EC/SV-BC 11.22 Editor’s Note: Verilog syntax is "int static". Is the "static int" above correct? NOTE: The Co-design SystemSim simulator allows both forms. I submitted a request to the BC committee to clarify if SystemVerilog was intended to also allow both forms. I do not know the result of that request. No Change Section 11.22
 
Response: It appears that the LRM only supports static int and not int static. This may be enhanced in a future version.
LRM-16 SV-EC 12.4.3 inside No Change Section 12.4.3
Editor’s Note: This new operator needs to be added to the operator precedence table and other sections describing operator rules (signed/unsigned/2-state/4-state/real operands, etc.).
LRM-17 SV-EC 12.4.4 dist No Change Section 12.4.4
Editor’s Note: This new operator needs to be added to the operator precedence table and other sections describing operator rules (signed/unsigned/2-state/4-state/real operands, etc.).
LRM-18 SV-EC 12.4.4 The := operator assigns the specified weight to the item, or if the item is a range, to every value in the range. Change Section 7.9
The :/ operator assigns the specified weight to the item, or if the item is a range, to the range as a whole. Ifthere are n values in the range, the weight of each value is range_weight / n.
Editor’s Note: These new operators need to be added to the operator precedence table and other sections describing operator rules (signed/unsigned/2-state/4-state/real operands, etc.). Section 12.4.4
LRM-19 SV-EC 12.4.5  => No Change Section 12.4.5
Editor’s Note: This new operator needs to be added to the operator precedence table and other sections describing operator rules (signed/unsigned/2-state/4-state/real operands, etc.).
LRM-20 SV-EC 12.4.9 Editor’s Note: Verilog syntax puts "static" after the data type, the opposite of C. Should the declaration for constraint be consistent with Verilog, or with C? Note that the Co-design SystemSim simulator allows the static declaration of SystemVerilog variables to be in either order. I submitted a request to the BC committee asking if the SystemVerilog LRM was intended to allow the same. I do not know the result of that request. No Change Section 12.4.9
LRM-21 SV-EC 12.10.1 function unsigned int $urandom [ (int seed ) ] ; Change Section 12.10.1
Editor’s Note: Verilog syntax is "function int unsigned" instead of "function unsigned int". Co-design’s SystemSim allows both Verilog and C styles.
LRM-22 SV-EC 12.10.2 function unsigned int $urandom_range( unsigned int maxval, unsigned int minval = 0 ); Change Section 12.10.2
Editor’s Note: Verilog syntax is “function int unsigned” instead of “function unsigned int” ?
LRM-23 SV-EC 12.10.3 task $srandom( int seed, [object obj] ); Change Section 12.10.3
Editor’s Note: Is “object” a data type? There is no keyword “object” anywhere else in the LRM.
LRM-24 SV-SSWG 14.4 There are two kinds of PLI callbacks, those that are executed immediately when some object changes value in an update event, and those that are explicitly registered as a one-shot evaluation event. Change Section 14.4
Editor’s Note: The preceding paragraph does not account for all types of callbacks. For example: cbStmt, cbEnterInteractive, cbStartOfReset, etc. These and some other callbacks are not logic value related, and they may occur more than one time after being registered.
Peter Flake responds:
Here is my proposal.  The term "specific activity" is taken from the Verilog 2001 LRM VPI section.
There are two kinds of PLI callbacks, those that are executed immediately whenever some specific activity occurs, and those that are explicitly registered as a one-shot evaluation event.
LRM-25 SV-BC 18.7.3 Editor’s Note: BC42-24 said to make “.name” all bold. This was not done, because the bold text is used to designate a keyword, and “name” is not a keyword Change Section 18.7.3
LRM-26 SV-BC 18.8.3 See Section XX for more port connection rules with interfaces. Change Section 18.8.3
Editor’s Note: What is the cross reference for above?
LRM-27 SV-AC 22.6 22.7 Editor’s Note: Are these system tasks to be removed? The new 3.1 assertion section does not mention them. No Change No Change
LRM-28 SV-CC 26.4.4 Each imported function shall be declared. Such declaration are referred to as import declarations. The syntax No Change Section 26.4.4
of an import declaration is similar to the syntax of SystemVerilog function prototypes (see Section 10.6).
Editor’s Note: Is the preceding cross reference correct?
LRM-29 SV-CC 26.4.4 import "DPI" newQueue=function handle newAnonQueue(input string s=NULL); Change Section 26.4.4
Editor’s Note: Is the uppercase “NULL” correct? The SystemVerilog keyword is in lowercase.
LRM-30 SV-CC 26.4.6.1 Here are examples of types of formal arguments (empty square brackets [] denote open array): Change Section 26.4.6.1
 
logic
bit [8:1]
bit[]
bit [7:0] b8x10 [1:10] // b8x10 is a formal arg name
logic [31:0] l32x [] // l32x is a formal arg name
logic [] lx3 [3:1] // lx3 is a formal arg name
bit [] an_unsized_array [] // an_unsized_array is a formal arg name
 
Editor’s Note: It is illegal in Verilog to start a name with a number (e.g. “132x”. Does that rule apply here?
LRM-31 SV-CC 27.1.2 Assertion Temporal expression—A declarative expression (one or more clock cycles) describing the behavior Change Section 27.1.2
of a system over time. // This is the "body" of the assertion.
Editor’s Note: Why the underlined comment, above? Should it be regular text, or deleted?
LRM-32 SV-CC 27.2 These extension shall be merged into the contents of the vpi_user.h file, described in IEEE Std 1364-2001, Annex G. The numbers in the range 700 - 799 are reserved for the assertion portion of the VPI. Change Section 27.2
Editor’s Note: Is “shall”, which means mandatory, too strong here? It seems to infer that users or software vendors must modify the IEEE standard vpi_user.h header file, thereby making the file non IEEE compliant. Response: Shall is correct and yes vendors and users will have to modify vpi_user.h.
Editor's Note: Grammer problem in "These extension"
LRM-33 SV-CC 27.2.3 27.2.2 Object properties No Change Section 27.2.3
This section lists the object property VPI calls. The VPI reserved range for these call is 700 - 729.
 
/* Directives as properties */
#define vpiSequenceAssertion 701
#define vpiAssertAssertion 702
#define vpiAssumeAssertion 703
#define vpiRestrictAssertion 704
#define vpiCoverAssertion 705
#define vpiCheckAssertion 705 /* inlined behavior assertion */
#define vpiOtherDirectiveAssertion 706 /* placeholder for other assertion directive */
 
27.2.3 Callbacks
This section lists the system callbacks. The VPI reserved range for these call is 700 - 719.
1) Assertion
#define cbAssertionStart 700
#define cbAssertionSuccess 701
#define cbAssertionFailure 702
#define cbAssertionStepSuccess 703
#define cbAssertionStepFailure 704
#define cbAssertionDisable 705
#define cbAssertionEnable 706
#define cbAssertionReset 707
#define cbAssertionKill 708
 
Editor’s Note: This section is using some of the same constant values as the previous section. Response:the enumeration constants are allowed to be different for different kind of object.
One set of enumeration constants is for properties, while the other set is for callbacks reasons.
LRM-34 SV-CC 27.3.2  — Any assertion updates from the SV-AC. Change Section 27.3.2
— Assertion source information: the file, line, and column where the assertion is defined.
— Assertion clocking domain/expression2
 
Editor’s Note: Item 6, above, does not seem appropriate in a standard. Should it be deleted?
Editor’s Note: Are the two dashed-list lines above part of item 6?
Editor’s Note: What is the “2” in “expression2”, above?
LRM-35 SV-CC 27.4.1 Section 27.4.1 Placing assertion “system” callbacks Change Section 27.4.1
Editor’s Note: Why is “system” in quotes?.
LRM-36 SV-CC 27.4.2 cbAssertionStepSucess Change Section 27.4.2
the progress of one “thread” along an attempt. By default, step callbacks are not enabled on any assertions; they are enabled on a per-assertion/per-attempt basis, rather than on a per-assertion basis.
Editor’s Note: Why is “thread” in quotes?.
LRM-37 SV-CC 27.5.2 For the following operator, the second argument shall be a valid assertion handle, the third argument shall be an attempt start-time (as a pointer to a correctly initialized s_vpi_time structure) and the fourth argument shall be a “step control” constant. Change Section 27.5.2
Editor’s Note: Why is “step control” in quotes?.
LRM-38 SV-CC 28.2 This section ... Change Section 28.2
Editor’s Note: Something appears to be missing in this section.
LRM-39 SV-CC 28.2.2 This section ... Change Section 28.2.2
Editor’s Note: Something appears to be missing in this section.
LRM-40 SV-CC 28.3.1 /* tool state_vector signal_name */ No Change Section 28.3.1
 
where tool and state_vector are required keywords. This pragma needs to be specified inside the module definition where the signal is declared.
 
Editor’s Note: Throughout this coverage API section, Verilog-2001 attributes should be used, instead of using obsolete pragmas that are hidden in comments!
 
Reply from SV-CC:
no, pragmas have to be used as attributes are not sufficiently capable in the current revision of SV. Specifically, attributes can only be attached to a single declaration, whereas for FSM descriptions information needs to be attached to declarations of multiple variables/parameters, or to variable concatenations and part selects (for which no declarative item even exists to which an attribute could be attached). It is proposed that these limitations be raised as an issue to be resolved in SV 3.2
LRM-41 SV-CC 28.3.6 parameter [1:0] /* tool enum enumeration_name */ No Change Section 28.3.6
S0 = 0,
s1 = 1,
s2 = 2,
s3 = 3;
Editor’s Note: Can SystemVerilog enumerated types be used instead of parameter constants? What about ‘define macros
SV-CC reply:
Yes, enumerated types could also be used, but this use of parameters for FSM modelling is common. In either case the pragma would be the same.
LRM-42 SV-CC 28.4 This section ... Change Section 28.4
Editor’s Note: Something appears to be missing in this section.
LRM-43 SV-CC 28.4.1 This section ... Change Section 28.4.1
Editor’s Note: Something appears to be missing in this section.
LRM-44 SV-CC 28.4.3 All **what?? use vpi_get() along with the appropriate properties and object handles. Change Section 28.4.3
Editor’s Note: The preceding sentence needs to be fixed.
LRM-45 SV-CC 28.4.4 28.4.4 Controlling coverage Change Section 28.4.4
**Revise similar to Assertions**
Editor’s Note: What is this comment referring to?
LRM-46 SV-BC A.1.6 extern_tf_declaration ::= No Change Section A.1.6
extern method_prototype
| extern forkjoin task named_task_proto ;
Editor’s Note: The added syntax added just for interface items may be better combined with the DPI import, but
that is allowed anywhere a function may be declared... The BC should take a look at the DPI import/export to
make sure these make sense... The dpi_import_export is in A.2.6
LRM-47 SV-EC A.1.8 Editor’s Note: The examples seemed to allow arbitrary ordering for the extern, virtual, etc... So that is maintained Change Section 11.16
here... either an order should be specified (and examples that use virtual protected or protected virtual at will
should be changed). Or text should be added to sections to deal with question of “protected private”. Section A.1.8
LRM-48 SV-BC A.2.2.1 non_integer_type ::= time | shortreal | real | realtime | $built-in Change Section A.2.2.1
Editor’s Note: Why isn’t $built-in mentioned in the text? What is it? Remove? Should be bold?
LRM-49 SV-EC A.2.2.1 Editor’s Note: Singular is listed as anything but unpacked structs, unpacked arrays, and handle type. Either the text should simply let the singular_type bnf explain or should deal with other exceptions: union, void, dynamic arrays No Change No Change
SV-BC Responds:
SV-EC has added this. They split the packed and unpacked unions.
Therefore, we are moving this issues back to EC. Stefen: Need the description in the LRM (3.9) to be cleaned up and make sure that BNF matches. SUGGESTION:
Singular should not become a BNF construct.  Singular is defined only to refer to non-aggregate types in the text of the LRM.  Some system tasks and built-in methods will need semantic checks to restrict their use to singular types, but that is best handled semantically and not via BNF.

LRM-50 SV-BC A.2.2.1 Editor’s Note: Enum here suggests that we can have ports: input enum { a, b, c} myin; Is this a problem (considering the semi-strong typing introduced in 3.1 for enum)? No Change Section A.2.2.1
SV-BC responds:
Existing port connection sematics take care of this.
LRM-51 SV-EC A.2.2.1 Editor’s Note: String and event assignment restrictions not part of bnf productions (semantic only) No Change Section A.2.2.1
SV-BC responds:
Should be moved back to EC, because string was added by EC
LRM-52 SV-BC A.2.6 Editor’s Note: Enum here suggests that we can have return values: No Change Section A.2.6
function enum { a, b, c} myfunc;
Is this a problem (considering the semi-strong typing introduced in 3.1 for enum)?
SV-BC responds:
leave it. Existing sematic rules take care of it. DPI might need it also
LRM-53 SV-BC A.2.6 Editor’s Note: Why eliminate [ signing ] from this production and then add note? The note will constantly need updating due to new types (e.g. string) and function prototypes won’t be allowed to be signed. Better to make “function_data_type ::= data_type | handle |void” and move the “[ signing ]” from function_declaration to the first line of range_or_type. No Change Section A.2.6
SV-BC Response: The reason we voted for splitting this rule was the location of the signing which should go before the data type and after the function keyword.
Recommendation: keep this BNF.
LRM-54 SV-BC A.2.6 Editor’s Note: Since [ signing ] was removed from function_data_type, we can’t have a signed prototype? Change Section A.2.6
LRM-55 SV-EC A.2.7 Editor’s Note: Looks like the new definition disallows “output signed [3:0] foo” (same for inout). I took the liberty of adding it. Change Section A.2.7 (Draft 5 change)
SV-BC Responds:
It looks OK, but it should be moved back to EC because it was changed by them. RESPONSE:
The BNF needs to allow for the optional signed on all task/function arguments, regardless of their direction (input, output, or inout).  This is needed for backward compatibility with V2K.
For the same reason, the implicit “reg” type must be supported.  Hence, “output signed [3:0] foo” is valid.
LRM-56 SV-EC A.6.1 Editor’s Note: I used expression since that is what is used in module instance ports. Dispite the style of showing semantics in the BNF, I’m following the style of ports of module instances. One restriction that is not clear in the text is that the bit and part selects of nets in an alias must be constant (i.e. can’t use [expression +: constant]) Change Section A.6.1
SV-BC Responds:
Alias was pushed by SV-EC, therefore this issue should be moved back to them
LRM-57 SV-BC A.8.3 Editor’s Note: This change collided with BC19-44. I left variable_lvalue alone since it now does what variable_lvalue_item used to do. No Change Section A.8.3
LRM-58 SV-EC A.8.4 Editor’s Note: The general syntax for making a function call to a method is given here. I do not list all the possible methods for each type. As is done with system tasks and functions, these will have BNF descriptions that are separate from Annex A. No Change Section A.8.4
SV-BC Responds
[ . method_identifier { attribute_instance } [ ( expression { , expression } ) ] ]
 
This note refers to the changes which were specifically done by SV-EC. The issue should be moved back to SV-EC.
LRM-59 SV-BC A.9.3 Editor’s Note: This isn’t referenced by any other production. Remove? Add reference somewhere? Change Section A.9.3
LRM-60 SV-BC A.9.3 Editor’s Note: Looks like this is left over from state machine syntax that didn’t make it into 3.0 Change Section A.9.3
LRM-61 SV-BC A.9.3 Editor’s Note: This isn’t referenced by any other production. Remove? Add reference somewhere? No Change Section A.9.3
LRM-62 SV-CC D.1 Formal arguments in SystemVerilog can be specified as open arrays solely in import declarations; exported SystemVerilog functions can not have formal arguments specified as open arrays. A formal argument is an open array when a range of one or more of its dimensions is unspecified (denoted in SystemVerilog by using empty square brackets ([])). This corresponds to a relaxation of the DPI argument-matching rules (section 1.5.1). An actual argument shall match the corresponding formal argument regardless of the range(s) for its corresponding dimension(s), which facilitates writing generalized C code that can handle SystemVerilog arrays of different sizes. Change Section D.1
Editor’s Note: What is the correct cross reference, above?
LRM-63 SV-CC D.5 Note that the constraints expressed here merely restate those expressed in section 1.4.1. Change Section D.5
Editor’s Note: What is the correct cross reference, above?
LRM-64 SV-CC D.5.5 Also refer to section 1.4.3. Change Section D.5.5
Editor’s Note: What is the correct cross reference, above?
LRM-65 SV-CC D.5.6 See also 1.4.2. Change Section D.5.6
Editor’s Note: What is the correct cross reference, above?
LRM-66 SV-CC D.5.7 See also section 1.4.1.4. Change Section D.5.7
Editor’s Note: What is the correct cross reference, above?
LRM-67 SV-CC D.6.6 1) If a packed part of an array has more than one dimension, it is linearized as specified by the equivalence of packed types (see section ??). Change Section D.6.6
Editor’s Note: What is the correct cross reference, above?
LRM-68 SV-CC D.7.2 It can be done while preserving the binary compatibility, see Annex D.7.5 and section A.11.11. Change Section D.7.2
Editor’s Note: What is the correct cross reference, above?
LRM-69 SV-CC D.7.5 compromising the portability (see section A.11.11). Such a technique does not work if a packed array is a part of another type. Change Section D.7.5
Editor’s Note: What is the correct cross reference, above?
LRM-70 SV-CC D.7.7 [There is a problem here: ‘int’ is the same as svBitVec32, long long is not the snae as svBitVect32[2], so how to return a value in the canonical representation as a function result, if this value is between 33 and 64 bits?] Change Section D.7.7
Editor’s Note: Has the preceding note been taken care of?
LRM-71 SV-CC D.8 A small set of DPI utility functions is available to assist programmers when working with context functions (see section A.8.3). If those utility functions are used with any non-context function, a system error will result. Change Section D.8
Editor’s Note: Has the preceding note been taken care of?
LRM-72 SV-CC D.10.2 Unpacked arrays, with the exception of formal arguments specified as open arrays, shall have the same layout as used by a C compiler; they are accessed using C indexing (see section A.6.6). Change Section D.10.2
Editor’s Note: What is the correct cross reference, above?
LRM-73 SV-CC D.11.1 In the former case, all indices are normalized on the C side (i.e., 0 and up) and the programmer needs to know the size of an array and be capable of determining how the ranges of the actual argument map onto C-style ranges (see section A.6.6). Change Section D.11.1
Editor’s Note: What is the correct cross reference, above?
LRM-74 SV-EC 3.7 define/clarify why chandle cannot be used in structures or unions Change Section 3.7
LRM-75 SV-EC 4.2 remove Note: from shortcut description Change Section 4.2
LRM-76 SV-EC 4.10.1 change map.num to imem.num in example Change Section 4.10.1
LRM-77 SV-EC 7.5 Change !=== to !== Change Section 7.5
LRM-78 SV-EC 7.9 <= missing from precendence table Change Section 7.9
LRM-79 SV-EC 9.6 Change example of return in function to return in task Change Section 9.6
LRM-80 SV-EC 10.2 Add ref to list of directions for tasks Change Section 10.2
LRM-81 SV-EC 10.3 Add ref to list of directions for functions Change Section 10.3
LRM-82 SV-EC 4.3 Remove int from comment in example Change Section 4.3
LRM-83 SV-EC 9.6 Remove redundant description in Table 9-1 for fork…join Change Section 9.6
LRM-84 SV-EC A.2.7 Add const to BNF for tf_ref_declaration Change Section A.2.7
LRM-85 SV-EC G Remove discussion of process keyword from Glossary Change Section G
LRM-86 SV-EC 13.4 Clarify run-time check support for parameterized mailboxes Change Section 13.4
LRM-87 SV-EC 8.10 Move description of Nonblocking event trigger to 13.5.2 (creating new section and renumbering existing 13.5.2) Change Section 8.10
LRM-88 SV-EC C.4 Add note on iterator to clarify what happens on methods Change Section C.4
LRM-89 SV-BC 4.2 Missing text from SV-BC62 Change Section 4.2
LRM-90 SV-EC 16.1 Rewording from Karen's review of chapter 16 Change Section 16.1
LRM-91 SV-EC 16.2 module needs to be bold in example (from Karen's review of chapter 16) Change Section 16.2
LRM-92 SV-EC 16.2 Change UPD to UDP in text after example (from Karen's review of chapter 16) Change Section 16.2
LRM-93 SV-EC 16.6 Make $stop bold (from Karen's review of chapter 16) Change Section 16.6
LRM-94 SV-EC 12.1 hyphenate object oriented (from Brad's review of Chapter 12) Change Section 12.1
LRM-95 SV-EC 12.2 Correct binary literal (from Brad's review of Chapter 12) Change Section 12.2
LRM-96 SV-EC 12.2 Correct endfunction and endtask (from Brad's review of Chapter 12) Change Section 12.2
LRM_97 SV-EC 12.4.4 italicize expression (from Brad's review of Chapter 12) Change Section 12.4.4
LRM-98 SV-EC 12.4.8 Clarify legal value (from Brad's review of Chapter 12) Change Section 12.4.8
LRM_99 SV-EC 12.4.8 Reword sentence (from Brad's review of Chapter 12) Change Section 12.4.8
LRM-100 SV-EC 12.5.3 Add comma (from Brad's review of Chapter 12) Change Section 12.5.3
LRM-101 SV-EC 12.9 Change system task to built-in method (from Brad's review of Chapter 12) Change Section 12.9
LRM-102 SV-EC 12.10.1 Clarify random number sequence (from Brad's review of Chapter 12) Change Section 12.10.1
LRM-103 SV-EC 12.11.1 italicize hierarchical seeding (from Brad's review of Chapter 12) Change Section 12.11.1
LRM-104 SV-EC 12.11.2 Reword sentence (from Brad's review of Chapter 12) Change Section 12.11.2
LRM-105 SV-EC 12.12 italicize hierarchical object seeding (from Brad's review of Chapter 12) Change Section 12.12
LRM-106 SV-EC 12.2 12.4.6 15.2 Bi-directional to bidirectional (from Brad's review of Chapter 12) Change Section 12.2
Section 12.4.6
Section 15.2
LRM-107 SV-EC 12.4.7 12.11.1 sub-tree to subtree (from Brad's review of Chapter 12) Change Section 12.4.7
Section 12.11.1
LRM-108 SV-BC 3.12 Correction of SV-BC8-7 from Dave Rich Change Section 3.12
LRM-109 SV-BC 8.11 Remove Section based on SV-BC85 from Dave Rich Change Section 8.11
LRM-110 SV-AC Acknowledgements Misspelled name from Connie O'Dell Change Section Ack
LRM-111 SV-AC 3.7 Grammar correction from Connie O'Dell Change Section 3.7
LRM-112 SV-AC 7.1 7.3 Spelling of incrementor and decrementor from Connie O'Dell Change Section 7.1 Section 7.3
LRM-113 SV-AC 17.6 Spelling of nedgedge from Connie O'Dell Change Section 17.6
LRM-114 SV-EC 3.11.3 3.11.3 says "SystemVerilog enumerated types are strongly typed, thus, a variable of type enum cannot be assigned a value that lies outside the enumeration set" but that isn't true -- a cast or union must be used but it's legal to do such an assignment.  I think the use of the phrase "strongly typed" is misleading. Change Section 3.11.3
LRM-115 SV-EC 3.11.4 Wrong placement of "Methods for iterating over enumerated types" section heading -- it's in the middle of section 3.11.4, instead of at the end, and doesn't introduce a new section -- it should introduce the next 3.11.x section. Change Section 3.11.4
LRM-116 SV-EC 3.11.3 3.11.3 says "Casting is discussed in Sections 3.14 and 3.15." but casting is also discussed in the section immediately following, 3.11.4. Change Section 3.11.3
LRM-117 SV-EC 3.11.4 3.11.4 discusses static casts but not dynamic casts.  It says casts to enums are not checked, but that is only true of static casts. Change Section 3.11.4
LRM-118 SV-BC 8.1 Font change found by Dennis's review of Chapter 8 Change Section 8.1
LRM-119 SV-BC 8.3 Grammar correction from Dennis's review of Chapter 8 Change Section 8.3
LRM-120 SV-BC 8.3 Change intro to example to a note from Dennis's revoew of Chapter 8 Change Section 8.3
LRM-121 SV-BC 8.8 Reword sentence (from Dennis's review of Chapter 8) Change Section 8.8
LRM-122 SV-BC 8.11 Remove editor's note (from Dennis's review of Chapter 8) Change Section 8.11
LRM-123 SV-BC 8.2 Reword based on Dennis's review of Chapter 8 Change Section 8.2
LRM-124 SV-AC 17.7.1 Remove redundant word from Connie O'Dell's review Change Section 17.7.1
LRM-125 SV-AC 17.7.3 Replace rxpressions with expressions per Connie O'Dell's review Change Section 17.7.3
LRM-126 SV-AC 17.10 Fix spelling per Connie O'Dell's review Change Section 7.10
LRM-127 SV-EC 11.14 Change the variable type and description based on Editorial review Change Section 11.14
LRM-128 SV-EC Index Add $exit, $urandom, $urandom_mode, and $srandom to index per Editorial review Change Index
LRM-129 SV-EC 11.20 Replace -> with . for class example per Editorial review Change Section 11.20
LRM-130 SV-EC 12.4.7 Correct cross reference to 12.7.1 per Editorial review Change Section 12.4.7
LRM-131 SV-EC 12.5.3 Add reference to $srandom definition where used per Editorial review Change Section 12.5.3
LRM-132 SV-EC 12.5.2 Clarification of use of super in if example per Editorial review Change Section 12.5.2
LRM-133 SV-EC 13.3.3 13.3.4 Clarify singular per Editorial review Change Section 13.3.3 Section 13.3.4
LRM-134 SV-EC 13.3.5 13.3.6 13.3.7 13.3.8 Change l-value to left-hand side expression per Editorial review Change Section 13.3.5 Section 13.3.6 Section 13.3.7 Section 13.3.8
LRM-135 SV-EC 15.7 Replace module with test for example per Editorial review Change Section 15.7
LRM-136 SV-EC 15.2 Replace read-only-synchronize with postponed region per Editorial review Change Section 15.2
LRM-137 SV-EC 15.14 Reword example to remove confusion with sampling per Editorial review Change Section 15.14
LRM-138 SV-EC 4.2 Clarify short hand notation based on comments from Stefen Change Section 4.2
LRM-139 SV-BC 19.4 Correct example for interface Change Section 19.4
LRM-140 SV-EC 10.5.1 10.5.2 Fixed illegal packed array specification found by Arturo Change Section 10.5.1 Section 10.5.2
LRM-141 SV-BC A.8.1 A.8.4 Changed BNF of concatenation, constant_concatenation, primary, and constant_primary per Dave Rich Change Section A.8.1 Section A.8.4
LRM-142 SV-EC 3.8 Missing . between Verilog and However in third paragraph from Neil's review Change Section 3.8
LRM-143 SV-EC 3.8 Clarify use of operand and string in concatenation semantics of Table 3-2 from Neil's review Change Section 3.8
LRM-144 SV-EC 3.11 Grammer error found from Neil's review Change Section 3.11
LRM-145 SV-EC 3.11.4.2 Grammer error found from Neil's review Change Section 3.11.4.2
LRM-146 SV-EC 3.11.4.3 3.11.4.4 3.11.4.6 Replace function with member per Neil's review Change Section 3.11.4.3 Section 3.11.4.4 Section 3.11.4.6
LRM-147 SV-EC 4.2 Replace scalar (non-unpacked-array type) with singular per Neil's review Change Section 4.2
LRM-148 SV-EC 10.5.3 Formatting of examples inconsistent per Neil's review Change Section 10.5.3
LRM-149 SV-EC 10.5.4 Remove blank lines in example per Neil's review Change Section 10.5.4
LRM-150 SV-EC 12.4.7 Grammer error found from Neil's review Change Section 12.4.7
LRM-151 SV-EC 13.2 Extend EC-CH107 to try_get per Neil's review Change Section 13.2
LRM-152 SV-AC 17.3 Page 162, paragraph 2-3 (including the example)   This section is discussing methodology and not language constructs. No Change No Change
   I suggest that this be removed.
 
   Starting with "If the severity..." and ending with ".. assert failed at
   time 10".
LRM-153 SV-AC 17.4 Page 162, section 17.4, 3rd paragraph Change Fixed in SV-AC submission
 
   "The timing model employed in concurrent..."
   "The timing model employed in a concurrent..."  <--- correction
LRM-154 SV-AC 17.4 Page 163, 3d paragraph Change Fixed in SV-AC submission
 
  "The two words "clock tick" and "sampling event" are used..."
  "The two phrases "clock tick" and "sampling event" are used..." <-- corrected
LRM-155 SV-AC 17.5 Page 166, paragraph after second example No Change  
 
   "...first subsequent tick and req will be false on the next tick..."
 
   "...first subsequent clock tick and req will be false on the next clock
    tick..."  <-- corrected
LRM-156 SV-AC 17.5 Page 167, 2nd paragraph Change Fixed in SV-AC submission
 
   "After signal c, the signal length..."
   "After signal c, the sequence length..."  <-- correction
LRM-157 SV-AC 17.5 Page 167, 2nd paragraph

   "...when complex sequences constructed by..."
   "...when complex sequences are constructed by..."  <--- corrected 
Change Fixed in SV-AC submission
 
   "...when complex sequences constructed by..."
   "...when complex sequences are constructed by..."  <--- corrected 
LRM-158 SV-AC 17.6 Sequences can be reused by declaring them as objects of type sequence with optional parameters: Change Fixed in SV-AC submission
LRM-159 SV-AC 17.6 Page 167, section 17.6, 1st paragraph

   sequence should be bold. 
Change Fixed in Draft 5
 
   sequence should be bold. 
LRM-160 SV-AC 17.7.3 Page 174, section 17.7.3 Change Fixed in SV-AC submission
 
   1st paragraph under figure 17-5
 
   "...the expression succeeds..."    <--- which expression? (te1 and te2?)
LRM-161 SV-AC 17.7.3 Page 174, last paragraph Change Fixed in SV-AC submission
 
    "The expression matches at clock tick 1,3 and 8..."
    "The expression matches at clock tick 1,3,8 and 14..."  <-- corrected
LRM-162 SV-AC 17.7.5 Page 177, 2nd paragraph Change Fixed in SV-AC submission
 
   "...sequence is associated with time range..."
   "...sequence is associated with a time range..."  <---- corrected
LRM-163 SV-AC 17.7.10 Page 183, section 17.7.10, 2nd example Change Fixed in SV-AC submission
 
   data_end1 |-> ##[1:2]
   data_end  |-> ##[1:2]    <--- corrected
LRM-164 SV-AC 17.10 Page 188, section 17.10, last paragraph Change Fixed in SV-AC submission
 
   "A property declaration is parameterized, like..."
   "A property declaration can have arguments, like..."  <--- correction
LRM-165 SV-AC 17.14 Page 199, section 17.14 Change Fixed in SV-AC submission
 
   This whole section on templates hasn't been carefully worked out.
   The ASWG (assertion syntax working group) tried to clean it up but didn't
   have time to do it justice. We came to the conclusion that we simply
   didn't have time to deal with it and kicked it back to the SVAC.
 
   Should this be taken out of 3.1 and put on the wish list for 3.2?
LRM-166 SV-AC B Add endsequence and endproperty to Annex B per Neil's review Change Section B
LRM-167 SV-BC 10.2 Change reg to logic per Neil's review and Dave Rich's input Change Section 10.2
LRM-168 SV-EC A.2.6 A.2.7 Change handle to chandle per Stefen Boyd Change Section A.2.6 Section A.2.7
LRM-169 SV-EC A.2.7 Add the "tf_" to the data_type in tf_ref_declaration per Stefen Boyd Change Section A.2.7
LRM-170 SV-EC A.8.4 A.Notes Super is not defined in the BNF Change Section A.8.4 Section A.Notes
LRM-171 SV-EC A.1.5 A.1.6 A.6.2 Final is not defined in the BNF Change Section A.1.5 Section A.1.6 Section A.6.2
LRM-172 SV-EC A.1.8 local is not defined in the BNF replace private Change Section A.1.8
LRM-173 SV-EC A.8.4 A.Notes this is not defined in the BNF Change Section A.8.4 Section A.Notes
LRM-174 SV-BC 12.4.6 Handle dangling else for if else constraints per Dan Jacobi's review Change Section 12.4.6
LRM-175 SV-BC A.6.8 DJ-AA-13. BNF for more than one initial statement and more than one-step assignment with in a for loop is missing. Currently the BNF for the following for loop statement is  missing: Change Section A.6.8
for (a=1,b=2 ; a<10 & b<200 ; a=a+1,b=b*2) …
LRM-176 SV-AC A.6.3 DJ-AA-14. Under A.6.3 the following production is problematic Change Section A.6.3
 action_block ::= [ statement ] [ else statement ] ;
The following assertion statement can be interpreted in more than one way:
assert (cond) if (cond2) a = 1; else a = 2;;
One-way to parse this statement - If the assertion succeeds (cond == true) evaluate the if-else conditional statement.
The other way to parse this statement is – If the assertion succeeds (cond == true) and if cond2 is true than assign ‘a’ with the value 1. If the assertion fails then assign ‘a’ with the value 2.
Some language needs to be added chapter 17 that deals with this case and with more complicated cases such as nested assertion and nested conditional if-else statements and the nesting of assertions in if-else statements and vise-versa for example how should the following RTL be parsed “
always
 if (c1) assert (c2); else assert(c3); else if (c4) a =1; else a = 2;; else a=3;;;;;;;;
LRM-177 SV-AC A.2.10 DJ-AA-15. Under A.2.10 the following production has a loop: Change Fixed in SV-AC submission
sequence_expr ::=
[ cycle_delay_range ] sequence_expr { cycle_delay_range sequence_expr }
The token sequence_expr can parse itself I would recommend the following change to the begging of the sequence_expr production
sequence_expr ::=
[ cycle_delay_range ] sequence_expr { cycle_delay_range sequence_expr }
cycle_delay_range  sequence_expr { cycle_delay_range sequence_expr }
| sequence_expr cycle_delay_range sequence_expr
 { cycle_delay_range   sequence_expr } Stefen responds: not clear what is being requested. The suggested change doesn't seem to make the production work any better.
LRM-178 SV-AC A.2.10 Change sequence_expr production (making parens bold) per Dan Jacobi Change Section A.2.10
LRM-179 SV-AC A.2.10 DJ-AA-17. Precedence for the operators added by the sequence_expr production under A.2.10 should be added to section. The precedence for the and, intersect, or, first_match, throughout, and within operators is not defined. Change Fixed in SV-AC submission
The following sequence expression :
 d1 intersect d2 within d2
Can be parsed in two ways:
 (d1 intersect d2) within d2
 d1 intersect (d2 within d2) Stefen responds: This is not a bnf issue. AC needs to update LRM to
indicate operator precedence
LRM-180 SV-AC A.2.10 DJ-AA-18. Under A.2.10 the production sequence_expr  causes a problem when adding a prentices around an expression that relates from the primary production. No Change  
In the following example:
d1 within (d2 & d3)
  The prentices may be parsed using the primary production
(primary :: = ( mintypmax_expression ) ) or using the sequence_expr production (sequence_expr ::= ( sequence_expr ) [ sequence_abbrev ] ) Stefen Responds: expression leads to primary which can be ( mintypmax_expression )
which is where confusion lies... I don't have any suggestions.
LRM-181 SV-AC A.2.10 DJ-AA-19. Under A.2.10 replace the name of the token const_range_expression to sequence_const_range_expression. The original name causes confusion with the constant_range_expression token. Change Section A.2.10
LRM-182 SV-BC B Remove longreal per Shalom Bresticker Change Section B
LRM-183 SV-BC 9.1 Reword per Matt Maidment Change Section 9.1
LRM-184 SV-BC 9.1 Remove comma per Matt Maidment Change Section 9.1
LRM-185 SV-BC 9.2 9.3 9.4 Titles are confusing change per Matt Maidment Change Section 9.2 Section 9.3 Section 9.4
LRM-186 SV-BC 9.6 Reword purpose of fork...join to be consistent with 1364-2001 per Matt Maidment Change Section 9.6
LRM-187 SV-BC 9.6 Reword SystemVerilog addition per Matt Maidment Change Section 9.6
LRM-188 SV-BC 9.6 Remove redundant word and grammer fix per Matt Maidment Change Section 9.6
LRM-189 SV-BC 9.7 9.8.2 Grammer fix per Matt Maidment Change Section 9.7 Section 9.8.2
LRM-190 SV-EC 3.8 Remove paragraph that contains redundant info per Neil Korpusik Change Section 3.8
LRM-191 SV-EC 10.5.2 Fix example per Arturo Change Section 10.5.2
LRM-192 SV-EC 11.13 Change property to member in description of Super per Arturo Change Section 11.13
LRM-193 SV-EC 11.19 Add comments to example per Arturo Change Section 11.19
LRM-194 SV-EC 15.11 Move clocking domain into module in example per Arturo Change Section 15.11
LRM-195 SV-EC 15.12 15.13 Swap 15.12 and 15.13 per Arturo Change Section 15.12 Section 15.13
LRM-196 SV-EC 19.5.2 Fix example per Arturo Change Section 19.5.2
LRM-197 SV-EC 3.11 Fix example per Arturo Change Section 3.11
LRM-198 SV-EC 5.7 Fix example per Arturo Change Section 5.7
LRM-199 SV-EC A.1.7 Continuous assignment missing in list of program items Change Section A.1.7
LRM-200 SV-BC 18.5 19.2.1 19.2.2 19.4 19.4.1 19.4.2 19.4.3 19.5.2 19.5.3 19.5.4 19.6  SV-BC-18fg makes it illegal to use a variable on an inout port. Instead, they must use a ref port. I found a number of examples that need to be updated. Change Section 18.5
Section 19.2.2 Section 19.4 Section 19.4.1 Section 19.4.2 Section 19.4.3 Section 19.5.2 Section 19.5.3 Section 19.5.3 Section 19.5.4 Section 19.6
LRM-201 SV-EC 11.1 The notion of framework is kind of foreign to Verilog. Why not replacing this with: SystemVerilog introduces an object-oriented class type system. since classes are just a new type.  Other grammer errors and clarification per Francoise's review. Change Section 11.1
LRM-202 SV-EC 11.3 Define the term subroutine in the Verilog context per Francoise's review Change Section 11.3
LRM-203 SV-EC 11.3 The data and methods portions should be delimited. Sometimes the comment is on the first line, sometimes it is below. Based on Francoise's review. Change Section 11.3
LRM-204 SV-EC 11.4 Reword the introduction to object handles per Francoise's review. Change Section 11.4
LRM-205 SV-EC 11.4 Move the last row to the front of the table in Table 11-2 per Francoise's review. Change Section 11.4
LRM-206 SV-EC 11.7 Misuse of the term task per Francoise's review. Change Section 11.7
LRM-207 SV-EC 11.7 Clarify use of subroutine calling conventions per Francoise's review. Change Section 11.7
LRM-208 SV-EC 11.8.1 Raise in level per Francoise's review. Change Section 11.8.1
LRM-209 SV-EC 11.9 Enhance definition of this per Francoise's review. Change Section 11.9
LRM-210 SV-EC 11.13 Clarify use of super to members per Francoise's review. Change Section 11.13
LRM-211 SV-EC 11.13 Define derived class and parent class per Francoise's review. Change Section 11.13
LRM-212 SV-EC 11.15 Clarify new handling per Francoise's review. Change Section 11.15
LRM-213 SV-EC 11.16 Reword default public status per Francoise's review. Change Section 11.16
LRM-214 SV-EC 11.17 Change case per Francoise's review. Change Section 11.17
LRM-215 SV-EC A.1.8 Make sure that static int size=0; is supported in a class in the BNF per Francoise's review. Change Section A.1.8
LRM-216 SV-EC A.1.8 A.2.6 A.2.7 Make sure that static task foo and task static foo are supported in a class in the BNF per Francoise's review
RESPONSE:
The draft-5 BNF does support both forms of static for class methods:
 static task foo(…) // method lifetime
 task static foo(…) // arguments and data lifetime.
Change Section A.1.8 Section A.2.6 Section A.2.7
LRM-217 SV-EC 11.18 Fix font problem per Francoise's review Change Section 11.18
LRM-218 SV-EC 11.19 Clarify polymorphic description per Francoise's review Change Section 11.19
LRM-219 SV-EC 11.21 Replace attributes with hiding encapsulation qualifiers per Francoise's review Change Section 11.21
LRM-220 SV-EC 11.24 Replace framework with type system per Francoise's review Change Section 11.24
LRM-221 SV-EC 12.1 Replace framework with type system per Francoise's review Change Section 12.1
LRM-222 SV-EC 12.2 Remove duplicate sentence per Francoise's review Change Section 12.2
LRM-223 SV-EC 12.3 Remove such as from description per Francoise's review Change Section 12.3
LRM-224 SV-EC 12.4.4 Clarify sentence per Francoise's review Change Section 12.4.4
LRM-225 SV-EC 12.7 The function form of $rand_mode() only accepts scalar singular variables, thus, if the specified variable is an array, a single element must be selected via its index. But singular variables include packed arrays. Per Francoise review Change Section 12.7
LRM-226 SV-EC 12.6 Replace parameter with arguments per Francoise's review Change Section 12.6
LRM-227 SV-EC 12.11 Change stream to sequence per Francoise's review Change Section 12.11
LRM-228 SV-EC 12.11.3 12.12 Remove void function from examples Change Section 12.11.3 Section 12.12
LRM-229 SV-EC 5.4 Add table for default values for types per Bradford's review. Change Section 5.4
LRM-230 SV-EC 11.10 Correct comment in example per Bradford's review. Change Section 11.10
LRM-231 SV-EC 12.4.3 Clarify range handling in inside per Bradford's review. Change Section 12.4.3
LRM-232 SV-EC 12.4.8 Fix typo in range per Bradford's review. Change Section 12.4.8
LRM-233 SV-EC 13.2 Add Semaphore example per Bradford's review. Change Section 13.2
LRM-234 SV-EC 13.3 Add Mailbox example per Bradford's review. Change Section 13.3
LRM-235 SV-EC 19.4.3 Fix bold on example per Bradford's review. Change Section 19.4.3
LRM-236 SV-EC 19.5.2 Fix bold on example per Bradford's review. Change Section 19.5.2
LRM-237 SV-EC 1 11.25 12.11 13.1 15.1 15.8 16.2 Replace test-bench with testbench per Cliff's review Change Section 1
Section 11.25
Section 12.11
Section 13.1
Section 15.1 Section 15.8
Section 16.2
LRM-238 SV-EC 13.1 Fix grammar per Cliff's review Change Section 13.1
LRM-239 SV-EC 13.2.1 Change key_count to keyCount in description per Cliff's review Change Section 13.2.1
LRM-240 SV-EC 14.2 Clean up wording per Cliff's review Change Section 14.2
LRM-241 SV-EC 14.3 Add cross reference per Cliff's review Change Section 14.3
LRM-242 SV-EC 15.4 Add cross reference per Cliff's review Change Section 15.4
LRM-243 SV-EC 15.14.2 Fix hyphenation per Cliff's review Change Section 15.14.2
LRM-244 SV-EC 15.7 Fix plurality per Cliff's review Change Section 15.7
LRM-245 SV-EC 15.7 Correct examples per Cliff's review Change Section 15.7
LRM-246 SV-EC 15.8 Correct examples per Cliff's review Change Section 15.8
LRM-247 SV-EC 15.11 Remove other per Cliff's review Change Section 15.11
LRM-248 SV-EC 15.14.2 Spelling fix per Cliff's review Change Section 15.14.2
LRM-249 SV-EC 18.6 Remove incorrect word per Cliff's review Change Section 18.6
LRM-250 SV-EC C.4.2 Grammar correction per Neil's review Change Section C.4.2
LRM-251 SV-EC C.4.3 C.5.6 C.5.10 C.5.11 Fix bold on methods per Neil's review Change Section C.4.3 Section C.5.6 Section C.5.10 Section C.5.11
LRM-252 SV-AC 18.2 A.1.5 A.2.10 A.6.3 A.6.4 A.6.10 A.6.11 A.9.3 B Changes from AC committee to BNF Change Section 18.2
Section A.1.5 Section 2.10 Section A.6.3 Section A.6.4 Section A.6.10 Section A.6.11 Section A.9.3
Section B
LRM-253 SV-BC 15.12 Typo in clock-domain from Cliff's review Change Section 15.12
LRM-254 SV-BC 9.1 9.7 Remove references to test-and-set per Arturo and Dave Rich Change Section 9.1 Section 9.7
LRM-255 SV-CC 26.1.2 Included change based on request from Joao and Arturo Change Section 26.1.2
LRM-256 SV-EC 3.3.1 Correction to integral type definition from Arturo Change Section 3.3.1
LRM-257 SV-EC 12.4.8  Change integral singular to integral per Arturo Change Section 12.4.8