Vl-blockstmt
Representation of begin/end and fork/join blocks.
This is a product type, introduced by deftagsum in support of vl-stmt.
Fields
- sequentialp — booleanp
- name — maybe-string
- imports — vl-importlist
- paramdecls — vl-paramdecllist
- vardecls — vl-vardecllist
- loaditems — vl-blockitemlist
- stmts — vl-stmtlist
- atts — vl-atts
General Form:
begin [ : <name> <declarations> ]
<statements>
end
fork [ :<name> <declarations> ]
<statements>
join
See Section 9.8. The difference betwen the two kinds of blocks is that in a
begin/end block, statements are to be executed in order, whereas in a
fork/join block, statements are executed simultaneously.
Blocks that are named can have local declarations, and can be referenced by
other statements (e.g., disable statements). With regards to declarations:
"All variables shall be static; that is, a unique location exists for all
variables, and leaving or entering blocks shall not affect the values stored in
them."
A further remark is that "Block names give a means of uniquely identifying
all variables at any simulation time." This seems to suggest that one might
try to flatten all of the declarations in a module by, e.g., prepending the
block name to each variable name.
Subtopics
- Make-vl-blockstmt
- Basic constructor macro for vl-blockstmt structures.
- Vl-blockstmt->sequentialp
- Get the sequentialp field from a vl-blockstmt.
- Vl-blockstmt->paramdecls
- Get the paramdecls field from a vl-blockstmt.
- Vl-blockstmt->loaditems
- Get the loaditems field from a vl-blockstmt.
- Vl-blockstmt->vardecls
- Get the vardecls field from a vl-blockstmt.
- Vl-blockstmt->imports
- Get the imports field from a vl-blockstmt.
- Vl-blockstmt->stmts
- Get the stmts field from a vl-blockstmt.
- Vl-blockstmt->name
- Get the name field from a vl-blockstmt.
- Vl-blockstmt->atts
- Get the atts field from a vl-blockstmt.
- Change-vl-blockstmt
- Modifying constructor for vl-blockstmt structures.