Wrapper for promoting begin/end generate blocks into genelements.
This is a product type, introduced by deftagsum in support of vl-genelement.
This is a trivial wrapper for converting a vl-genblock,
which represents a
Having this kind of wrapper is a bit ugly. It might be nicer looking to just have the name, location, and genelements for the block right here, instead of relegating them to a vl-genblock.
But having a wrapper gives us a really nice property: it allows the ``implicit'' begin/end blocks for every kind of generate construct to be treated in a completely uniform way. That is: go look at vl-gencase, vl-genif, etc. You'll see that all of our branches are represented as explicit vl-genblocks. This is really handy when it comes to scoping. We can ensure that all of these blocks have a name, and we can deal with begin/end blocks and if/case blocks in a uniform way in scopestacks. (We still have to handle generate arrays separately, but there's no getting around that.)
We wouldn't be able to have this kind of uniformity if a
begin/end block just had its elements right here, because we
can't easily require that, e.g., a vl-genif's