[sv-bc] Editorial suggestions for Draft 3 - Shalom

From: Bresticker, Shalom <shalom.bresticker_at_.....>
Date: Thu Apr 19 2007 - 07:47:30 PDT
  

Here are my comments.

 

--- SB1-1-1 ---------------

1.2: Delete "Informative delay model for SDF".

--- SB1-1-2 ---------------

1.4: Delete "If the name of any category starts with an italicized part,
it is equivalent to the category name without the italicized part. The
italicized part is intended to convey some semantic information. For
example, "msb_index" and "lsb_index" are equivalent to "index." It
applies only in the VCD file syntax description, which is not part of
Annex A anyway.

--- SB1-1-3 ---------------

1.6: "Clause 25 describes user-defined packages, compilation units
($unit), and built-in packages.": $unit is described in 3.8.1.

--- SB1-1-4 ---------------

1.6: "Annex G (normative) describes the SystemVerilog standard packages,
containing type definitions for mailbox, semaphore, randomize, and
process." -> should be "package". Only one package, Std, is described.

--- SB1-1-5 ---------------

1.8: Delete 'several' in "Several small SystemVerilog code examples are
shown throughout this standard.": 'several' sounds like just a few. It
is probably several hundred.

--- SB1-2-1 ---------------

In the Normative References (Clause 2):

IEEE Std 1364(tm), IEEE Standard for Verilog(r) Hardware Description
Language.
IEEE Std 1364(tm)-2005, IEEE Standard for Verilog Hardware Description
Language.
IEEE Std 1364(tm)-2001, IEEE Standard for Verilog Hardware Description
Language.
IEEE Std 1800(tm), IEEE Standard for SystemVerilog-Unified Hardware
Design, Specification, and Verification Language.
IEEE Std 1800(tm)-2005, IEEE Standard for SystemVerilog-Unified Hardware
Design, Specification, and Verification Language.

Delete the references to 1364 and 1800 without years. Delete 1364-2001
or move it before 1364-2005.

--- SB1-3-1 ---------------

3.7: Delete "A list of building block instances is referred to as a
netlist." This is too big a generalization of the term netlist, and it
is not used elsewhere except in one example in 3.7 where it is really is
a gate-level description.

--- SB1-3-2 ---------------

3.7: That same example contains the line: "not g1(sel_n, a, sel);". That
looks like a mistake. A not gate has one input and one or more outputs,
and a is an input to the module. Change to "not g1(sel_n, sel);".

--- SB1-3-3 ---------------

3.1: "A design element is a SystemVerilog module (see Clause 22),
program (see Clause 22), interface (see Clause 24), package (see Clause
25), primitive (see Clause 27) or configuration (see Clause 31)." - If
config is a design element, then it needs an overview description in
clause 3.

--- SB1-5-1 ---------------

5.1: Change "- String" to "String literal".

 

--- SB1-5-2 ---------------

In 5.6.1, "The use of x and z in defining the value of a number is case
insensitive," z should not be blue or underlined.

--- SB1-5-3 ---------------

5.7 (Simulation time units and precision) is out of place in a clause on
lexical conventions. Presumably, it was placed here because 5.8 is Time
literals, to define time beforehand. That is not good enough
justification. Move 5.7 to clause 4 (Scheduling semantics), since
scheduling and time are related.

 

--- SB1-5-4 ---------------

5.9 starts, 'A string literal is a sequence of characters enclosed by
double quotes ("").' The next sentence starts, "A string literal is
enclosed in quotes...," which is duplication. Delete the second phrase.

--- SB1-5-5 ---------------

In Table 5-1, change "b\a" to "\a".

 

--- SB1-5-6 ---------------

Delete "NOTE-the special string characters \v, \f, \a and \x were added
in IEEE 1800-2005" following Table 5-1. No need for it.

 

--- SB1-6-1 ---------------

6.1 is called Value set, but its introductory paragraph is important
enough and different enough (it does not talk about value sets), that it
should be a separate sub-section 6.1 called "Data objects and data
types", with "Value set" being 6.2.

--- SB1-6-2 ---------------

6.2: "A singular variable or expression represents a single value,
symbols, or handle." -> "symbol".

 

--- SB1-6-3 ---------------

6.14 and 7.6 both describe strings. Merge them or have only a
two-sentence paragraph in 6.14 as done with classes in 6.13.

--- SB1-7-1 ---------------

In Clause 7, delete the first sentence, "This clause defines structures,
unions and arrays, which can represent aggregate collections of data."
It duplicates the following paragraph.

 

--- SB1-7-2 ---------------

7.1.1.1 brings me to say that I dislike going down to 4th level
sub-clauses if it can be avoided. Change the following structure:

 

7.1 Structures and unions

  7.1.1 Structures

  7.1.2 Unions

 

to simply

 

7.1 Structures

7.2 Unions

 

--- SB1-10-1 ---------------

10.5.1: Stu asked:

Does the result of a continuous assignment to a variable update
immediately when the variable is released? It should, in order to be
consistent with the behavior of continuous assignments. 

 

--- SB1-10-2 ---------------

A better place for 10.7 (Assignment Patterns) is in clause 7 (structures
and arrays).

 

--- SB1-11-1 ---------------

11.2.7: Define here the new term "procedural assignment operator", which
Stu has invented and used in 10.3 and 10.3.1.

 

--- SB1-11-2 ---------------

11.2.18: "If cond_predicate is true, the operator returns the first
expression; if false, it returns the second expression." Brad wrote,
"Actually, it evaluates an expression and returns its value."

 

--- SB1-11-3 ---------------

11.2.18: "If the lengths of the first and second expression are
different, the shorter operand shall be lengthened to match the longer
and zero-filled from the left (the high-order end)," Stu asked, "Is the
shorter operand always zero extended, or can it be sign extended?" It
can be sign-extended, see Mantis 1004.

 

--- SB1-11-4 ---------------

11.6.1 (String literal expressions) should not be a subsection of 11.6
(Tagged union expressions). Make it 11.7.

--- SB1-12-1 ---------------

Move 12.7 (Named blocks and statement labels) into 9.2 (Block
statements).

--- SB1-16-1 ---------------

Move 16.15 (Binding) to the clause on hierarchies.

 

--- SB1-19-1 ---------------

Merge 19.4 (Display tasks) and 19.17 (Enhancements to Verilog system
tasks) into Clause 20 (I/O).

--- SB1-19-2 ---------------

19.9: Change "$atan2(x,y) atan2(x,y) Arc-tangent of x/y" to "$atan2(y,x)
atan2(y,x) Arc-tangent of y/x", to be as in C standard.

 

--- SB1-20-1 ---------------

Move 20.4 ($sdf_annotate) into Clause 33 (SDF).

--- SB1-20-2 ---------------

20.5.2.3: Change "In the $var section, a net of net type uwire shall
have a variable type of wire." to "In the $var section, a net of type
uwire shall have a var_type of wire."

 

--- SB1-21-1 ---------------

21.12: Add 1800-2008 as a version_specifier and add appropriate text.
Note that there is no need to have duplicate tables in 21.12 and in
Annex B. For the keyword set of the current version of the LRM, it can
just point to Annex B.

 

--- SB1-21-2 ---------------

21.4.1: Change "Once a text macro name has been defined, it can be used
anywhere in a source description; that is, there are no scope
restrictions." to "Once a text macro name has been defined, it can be
used anywhere in the compilation unit where it is defined. There are no
other scope restrictions once inside the compilation unit."

 

--- SB1-21-3 ---------------

21.4.1: "The text specified for macro text shall not be split across the
following lexical tokens: ... - Strings" -> "String literals".

 

--- SB1-22-1 ---------------

22.1: "A module can represent functional and timing at a very detailed
level" -> "function".

 

--- SB1-22-2 ---------------

22.1.1: Change "The port directions and sizes of the module" to "The
direction and size of each port".

 

--- SB1-22-3 ---------------

22.1.3: Change "The parameter type of parameters can be redefined for
each instance of a module" to "Parameter types can be redefined for each
instance of a module".

 

--- SB1-22-4 ---------------

22.2: "Top-level modules are implicitly instantiated (see 22.2.1)."
needs to say that the implicit instance name is the same as the module
name.

 

 --- SB1-25-1 ---------------

Move 25.1.1 (Built-in package) to the end of Clause 25 (Packages). Make
it a 2nd-level sub-clause instead of a 3rd-level sub-clause. Add xref
from 17.11 to it. 

 

--- SB1-25-2---------------

25.1.1 says that std "contains system types (e.g., classes), variables,
tasks, and functions." Actually, it only contains classes and a
function.  

 

--- SB1-25-3 ---------------

Add xrefs between 25.1.1 and Annex G.

 

--- SB1-27-1 ---------------

27.1.5-6 discuss arrays of instances. Move into 22.2 (earlier than
22.2.3), as it is applicable to all kinds of modules (and interfaces). 

 

--- SB1-33-1 ---------------

Move Clause 33 (SDF) to after clause 30 (Timing checks).

 

Additional issues:

 

1. 3.7 and 22.2.1  define "top-level module" slightly differently.

 

2. 3.1: "A design element is a SystemVerilog module (see Clause 22),
program (see Clause 22), interface (see Clause 24), package (see Clause
25), primitive (see Clause 27) or configuration (see Clause 31)." - 31.1
insists that a configuration is a design element, but almost of all the
uses of the term within the LRM, most of which relate to timescales, are
not relevant to configs. 

3. 3.2 lists among the constructs modules can contain: "procedural
blocks", where the reference is to always, initial, etc.
procedures/constructs. Re the discussion about what to call these
constructs, there are a number of places, such as here, where the term
'procedural block' is used, and it will be either awkward or unclear to
just say 'procedure'.

4. String literals are discussed in 5.9 and 11.6.1. Beyond the basic
definition of a string literal, the discussion of what you can do with
them is split up between these two sections roughly evenly, with some
duplication and overlap. The two sections should be unified, or 5.9
should be just a minimal definition of string literals, with all further
discussion in 11.6.1.

5. The discussions of string literals and string types should be much
closer to each other, since they are so closely related.

6. 'Nonprinting and other special characters are preceded with a
backslash.': Does this mean that it is allowed to enter a nonprinting
character directly (preceded by a backslash)? What is included in 'other
special characters'? Is the intent of both of these only those
characters in Table 5-1? What about other special characters?

 

7. Clause 6 is Data Types. 6.1 starts off nicely with "SystemVerilog
makes a distinction between an object and its data type, etc." However,
later on, the LRM blurs this distinction in terminology between objects
and types. 6.3 is bad in particular, saying "There are two main groups
of data types: the variable data types and the net data types."  The
term 'net data type' only appears 3 times, but 'net type' appears many
times. I think we should be consistent and change most of the references
to them to be 'net objects' or simply 'nets'. Same for 'variable data
types' and 'variable types'.

8. 10.7 Assignment Patterns: Combine with 5.10-11 Structure and Array
literals

9. The term 'assignment operator' is not used consistently in the LRM.
It is used sometimes to refer to an entire set of operators, and
sometimes to refer specifically to '='.

10. 22.2.3.5 should separate the discussions of unpacked array ports and
arrays of instances. The discussion of arrays of instances there should
be combined with the general discussion of port connections to arrays of
instances.

11. 35 ("Programming language interface (PLI and VPI) overview"): On the
one hand, VPI is treated as one generation of PLI, e.g., "Verilog
procedural interface routines, called VPI routines, are the third
generation of the PLI," i.e., as being included in the term 'PLI'. On
the other hand, it is also treated separately, as in the title of clause
35, "PLI and VPI". This seems inconsistent and confusing. 

 

Shalom

 

 


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



image001.gif
Received on Thu Apr 19 07:48:31 2007

This archive was generated by hypermail 2.1.8 : Thu Apr 19 2007 - 07:48:51 PDT