A loop generate construct, after elaboration.
This is a product type, introduced by deftagsum in support of vl-genelement.
- name — maybe-string
- Name of the block array, if named.
- var — stringp
- Iterator variable name.
- genvarp — booleanp
- Was the variable declared using the genvar keyword, locally
- blocks — vl-genblocklist
- Blocks produced by the loop
- loc — vl-location
- Where the loop came from in the Verilog source code.
This is a post-elaboration representation of a generate for
loop, where the loop itself is gone and we instead have something
like a list of begin/end blocks for each value that var took
on during the loop's execution.
This representation may seem weird but notice that things like
the sizes of wires can change from iteration to iteration if they
depend on the loop variable, and similarly other things within
the loop like if/else generate blocks may depend on the loop
variable and so may need to differ from iteration to iteration.
To support these kinds of things, we really do want a
representation where each block can be separated from the others
and processed independently.
- Basic constructor macro for vl-genarray structures.
- Get the blocks field from a vl-genarray.
- Get the name field from a vl-genarray.
- Get the loc field from a vl-genarray.
- Get the genvarp field from a vl-genarray.
- Get the var field from a vl-genarray.
- Modifying constructor for vl-genarray structures.