Vl-datatype
Representation of a SystemVerilog variable datatype, e.g., logic
[7:0][3:0], string, mystruct_t [3:0], etc.
This is a tagged union type, introduced by deftagsum.
Member Tags → Types
- :vl-coretype → vl-coretype
- A built-in SystemVerilog datatype like integer, string,
void, etc., or an array of such a type.
- :vl-struct → vl-struct
- A SystemVerilog struct datatype, or an array of structs.
- :vl-union → vl-union
- A SystemVerilog union datatype, or an array of unions.
- :vl-enum → vl-enum
- A SystemVerilog enum datatype, or an array of enums.
- :vl-usertype → vl-usertype
- Represents a reference to some user-defined SystemVerilog datatype.
Introduction
A vl-datatype may represent a SystemVerilog variable
datatype such as logic [3:0], integer, string,
struct { ...}, mybus_t, etc. It may also represent arrays
of such types with packed and/or unpacked dimensions.
Some higher-level functions for working with datatypes are found
in mlib; see in particular datatype-tools.
Note about the word ``type.'' The Verilog-2005 and
SystemVerilog-2012 standards sometimes use the word ``type'' to
refer to other things. In particular:
- For historical reasons, the standards sometimes refer to the
``type'' of an expression when they really mean something more like
its signedness. Signedness is captured by vl-datatype,
but there are some nuances; see vl-datatype-arithclass, vl-exprsign, and portdecl-sign.
- Net and port declarations can have a notion of a ``net type''
such as wire, wor, supply1, etc., which govern how
multiple assignments to the net are resolved. This information is
not part of a vl-datatype. See vl-vardecl for
additional discussion.
Note that we do not yet implement some of the more advanced
SystemVerilog datatypes, including at least the following:
data_type ::= ...
| 'virtual' [ 'interface' ] interface_identifier [ parameter_value_assignment ] [ '.' modport_identifier ]
| class_type
| type_reference
Subtopics
- Vl-datatype-p
- Recognizer for vl-datatype structures.
- Vl-usertype
- Represents a reference to some user-defined SystemVerilog datatype.
- Vl-struct
- A SystemVerilog struct datatype, or an array of structs.
- Vl-coredatatype-info
- Structure to store properties of a coretype.
- Vl-union
- A SystemVerilog union datatype, or an array of unions.
- Vl-datatype->udims
- Get the unpacked dimensions from any datatype.
- Vl-datatype-update-dims
- Update the dimensions of any datatype, no matter its kind.
- Vl-coretype
- A built-in SystemVerilog datatype like integer, string,
void, etc., or an array of such a type.
- Vl-datatype->pdims
- Get the packed dimensions from any datatype.
- Vl-enum
- A SystemVerilog enum datatype, or an array of enums.
- Vl-maybe-datatype
- Option type; vl-datatype or nil.
- Vl-datatype-case
- Case macro for the different kinds of vl-datatype structures.
- Vl-datatype-update-udims
- Vl-datatype-update-pdims
- Vl-datatype-equiv
- Basic equivalence relation for vl-datatype structures.
- Vl-datatype-kind
- Get the kind (tag) of a vl-datatype structure.
- Vl-coretypename->info
- Find the properties (vl-coredatatype-info structure) for a coretype.
- *vl-core-data-type-table*
- Table giving properties of the various Verilog core types.
- *vl-plain-old-logic-type*
- The vl-datatype for a plain wire or logic variable.
- Vl-datatype-fix
- Fixing function for vl-datatype structures.
- Vl-datatype-count
- Measure for recurring over vl-datatype structures.
- *vl-plain-old-time-type*
- The vl-datatype for a plain time variable.
- *vl-plain-old-reg-type*
- The vl-datatype for a plain reg variable.
- *vl-plain-old-realtime-type*
- The vl-datatype for a plain realtime variable.
- *vl-plain-old-real-type*
- The vl-datatype for a plain real variable.
- *vl-plain-old-integer-type*
- The vl-datatype for a plain integer variable.