Documentation fixes, bug723.

Signed-off-by: Wilson Snyder <wsnyder@wsnyder.org>
This commit is contained in:
Glen Gibb 2014-03-14 07:17:03 -04:00 committed by Wilson Snyder
parent c9ed9e74f2
commit b4eaaccc88
2 changed files with 14 additions and 12 deletions

View File

@ -7,6 +7,8 @@ indicates the contributor was also the author of the fix; Thanks!
*** Add --no-trace-params. *** Add --no-trace-params.
**** Documentation fixes, bug723. [Glen Gibb]
* Verilator 3.856 2014-03-11 * Verilator 3.856 2014-03-11

View File

@ -40,7 +40,7 @@ Verilator then performs many additional edits and optimizations on the
hierarchical design. This includes coverage, assertions, X elimination, hierarchical design. This includes coverage, assertions, X elimination,
inlining, constant propagation, and dead code elimination. inlining, constant propagation, and dead code elimination.
References in the design are then psudo-flattened. Each module's variables References in the design are then pseudo-flattened. Each module's variables
and functions get "Scope" references. A scope reference is an occurrence of and functions get "Scope" references. A scope reference is an occurrence of
that un-flattened variable in the flattened hierarchy. A module that occurs that un-flattened variable in the flattened hierarchy. A module that occurs
only once in the hierarchy will have a single scope and single VarScope for only once in the hierarchy will have a single scope and single VarScope for
@ -49,7 +49,7 @@ occurrence, and two VarScopes for each variable. This allows optimizations
to proceed across the flattened design, while still preserving the to proceed across the flattened design, while still preserving the
hierarchy. hierarchy.
Additional edits and optimizations proceed on the psudo-flat design. These Additional edits and optimizations proceed on the pseudo-flat design. These
include module references, function inlining, loop unrolling, variable include module references, function inlining, loop unrolling, variable
lifetime analysis, lookup table creation, always splitting, and logic gate lifetime analysis, lookup table creation, always splitting, and logic gate
simplifications (pushing inverters, etc). simplifications (pushing inverters, etc).
@ -80,8 +80,8 @@ classes).
Each C<AstNode> has pointers to up to four children, accessed by the Each C<AstNode> has pointers to up to four children, accessed by the
C<op1p> through C<op4p> methods. These methods are then abstracted in a C<op1p> through C<op4p> methods. These methods are then abstracted in a
specific Ast* node class to a more specific name. For example with the specific Ast* node class to a more specific name. For example with the
C<AstIf> node (for C<if> statements), C<ifsp> calls C<op1p> to give the C<AstIf> node (for C<if> statements), C<ifsp> calls C<op2p> to give the
pointer to the AST for the "then" block, while C<elsesp> calls C<op2p> to pointer to the AST for the "then" block, while C<elsesp> calls C<op3p> to
give the pointer to the AST for the "else" block, or NULL if there is not give the pointer to the AST for the "else" block, or NULL if there is not
one. one.
@ -97,7 +97,7 @@ are at the top of the tree.
By convention, each function/method uses the variable C<nodep> as a pointer By convention, each function/method uses the variable C<nodep> as a pointer
to the C<AstNode> currently being processed. to the C<AstNode> currently being processed.
=item C<AstNVistor> =item C<AstNVisitor>
The passes are implemented by AST visitor classes (see L</Visitor The passes are implemented by AST visitor classes (see L</Visitor
Functions>). These are implemented by subclasses of the abstract class, Functions>). These are implemented by subclasses of the abstract class,
@ -119,7 +119,7 @@ C<fanout>, C<color> and C<rank>, which may be used in algorithms for ordering
the graph. A generic C<user>/C<userp> member variable is also provided. the graph. A generic C<user>/C<userp> member variable is also provided.
Virtual methods are provided to specify the name, color, shape and style to be Virtual methods are provided to specify the name, color, shape and style to be
used in dot output. Typically users provided derived classes from used in dot output. Typically users provide derived classes from
C<V3GraphVertex> which will reimplement these methods. C<V3GraphVertex> which will reimplement these methods.
Iterators are provided to access in and out edges. Typically these are used in Iterators are provided to access in and out edges. Typically these are used in
@ -219,7 +219,7 @@ and optimization passes. This allows separation of the pass algorithm from
the AST on which it operates. Wikipedia provides an introduction to the the AST on which it operates. Wikipedia provides an introduction to the
concept at L<http://en.wikipedia.org/wiki/Visitor_pattern>. concept at L<http://en.wikipedia.org/wiki/Visitor_pattern>.
As noted above, all visitors are derived classes of C<AstNvisitor>. All As noted above, all visitors are derived classes of C<AstNVisitor>. All
derived classes of C<AstNode> implement the C<accept> method, which takes derived classes of C<AstNode> implement the C<accept> method, which takes
as argument a reference to an instance or a C<AstNVisitor> derived class as argument a reference to an instance or a C<AstNVisitor> derived class
and applies the visit method of the C<AstNVisitor> to the invoking AstNode and applies the visit method of the C<AstNVisitor> to the invoking AstNode
@ -262,7 +262,7 @@ exiting the lower for will lose the upper for's setting.
User attributes. Each C<AstNode> (B<Note.> The AST node, not the visitor) User attributes. Each C<AstNode> (B<Note.> The AST node, not the visitor)
has five user attributes, which may be accessed as an integer using the has five user attributes, which may be accessed as an integer using the
C<user1()> through C<user5()> methods, or as a pointer (of type C<user1()> through C<user5()> methods, or as a pointer (of type
C<AstNuser>) using the C<user1p()> through C<user5p()> methods (a common C<AstNUser>) using the C<user1p()> through C<user5p()> methods (a common
technique lifted from graph traversal packages). technique lifted from graph traversal packages).
A visitor first clears the one it wants to use by calling A visitor first clears the one it wants to use by calling
@ -290,7 +290,7 @@ module.
Parameters can be passed between the visitors in close to the "normal" Parameters can be passed between the visitors in close to the "normal"
function caller to callee way. This is the second C<vup> parameter of type function caller to callee way. This is the second C<vup> parameter of type
C<AstNuser> that is ignored on most of the visitor functions. V3Width does C<AstNUser> that is ignored on most of the visitor functions. V3Width does
this, but it proved more messy than the above and is deprecated. (V3Width this, but it proved more messy than the above and is deprecated. (V3Width
was nearly the first module written. Someday this scheme may be removed, was nearly the first module written. Someday this scheme may be removed,
as it slows the program down to have to pass vup everywhere.) as it slows the program down to have to pass vup everywhere.)
@ -301,10 +301,10 @@ as it slows the program down to have to pass vup everywhere.)
C<AstNode> provides a set of iterators to facilitate walking over the C<AstNode> provides a set of iterators to facilitate walking over the
tree. Each takes two arguments, a visitor, C<v>, of type C<AstNVisitor> and tree. Each takes two arguments, a visitor, C<v>, of type C<AstNVisitor> and
an optional pointer user data, C<vup>, of type C<AstNuser*>. The second is an optional pointer user data, C<vup>, of type C<AstNUser*>. The second is
one of the ways to pass parameters to visitors described in L</Visitor one of the ways to pass parameters to visitors described in L</Visitor
Functions>, but its use is no deprecated and should be used for new visitor Functions>, but its use is now deprecated and should I<not> be used for new
classes. visitor classes.
=over 4 =over 4