What are some really useful but
esoteric language features in VHDL
Firstly, I don't buy into the theory that VHDL has 'esoteric' features. However, the prevalent 'styles' of VHDL that exist in the wild are most often influenced by what subset of VHDL is supported by hardware synthesizers.
The equation in the VHDL world is very simple: if tools support a language subset, it will be used. If not, the feature will likely be underused.
especially when you compare VHDL to other (normal) programming languages.
Note that VHDL is not a programming language. Rather, it is a language for describing discrete event systems (with an 'accidental' consequence that it can be used to describe digital hardware). I suppose that the comparison to programming languages stems from VHDL looking like some actual programming languages.
Now on to some actual answers to the OP's question.
What are some really useful but esoteric language features in VHDL...
Here's my pick, in no particular order.
- Architectures: By far, the ability to select different architectures for an interface is the most useful feature VHDL has and which is being used at all times.
- Generators: using generators you can pretty easily describe complex regular hardware structures. Think multipliers, adders, complex pipelines and the like. Unfortunately, many tools make a mess out of the generated output.
- Blocks: A cheap way to sub-divide your design into sub-blocks; not all tools support it though.
- Signal resolution: Rather useful when simulating circuits and the like, not so for hardware synthesis.
- Attributes: A great way to attach instructions to the simulator/synthesizer to help it out in finding the best way to implement your circuit. While this can in most cases be done with command line options to the synthesizer/mapper/p&r tools, attributes feel much more natural, as all the info needed to produce your piece of hardware is confined to a single place.