A reference to some part of something that is somewhere in the
design. Could be a simple wire name like foo, or something
much fancier with scoping, hierarchy, indexing, and part-selects
This is a product type, introduced by deftagsum in support of vl-expr.
- scope — vl-scopeexpr
- Captures the scoping that leads to some object in the
design. This captures the ape::bat::cat.dog.elf
part of the example above.
- indices — vl-exprlist
- Captures any subsequent indexing once we get to the thing
pointed to by scope. This captures the  part
of the example above.
- part — vl-partselect
- Captures any subsequent part-selection once we get past all of
the indexing. This captures the [10:0] part of the
- atts — vl-atts
- Any associated attributes. BOZO where would you put such
SystemVerilog provides a very rich syntax for referring to things
in different scopes and throughout the module hierarchy. Any such
reference—whether it is a very simple identifier like foo
or a very complex scoped, hierarchical, indexed, mess of
indirection—is ultimately represented as a single
- Representation of a (possibly scoped, possibly hierarchical)
reference to something in the design. For example:
- Representation of a leading piece of a hierarchical reference to
something, perhaps with associated indices.
- Representation of any kind of part-select that is being applied to
a some object in the design.
- Representation of a (possibly) hierarchical reference to something
in the design. For example: cat.dog.elf.
- Basic constructor macro for vl-index structures.
- Get the indices field from a vl-index.
- Get the scope field from a vl-index.
- Get the part field from a vl-index.
- Get the atts field from a vl-index.
- Modifying constructor for vl-index structures.
- Promote an vl-scopeexpr into a proper vl-index without
any part select.
- Leading names that can be used in a vl-hidindex: $root or
a user-defined name.