A hardware design language should be (i) sufficiently high level, (ii) conversational, (iii) general purpose, and (iv) structured
Source, in full
(i) High Level: The language should be able to express easily , and directly the desired function . Also, it should avoid suggesting an implementation (fo r example, by introducing unnecessary concepts). It should avoid involved or clever language constructs and it should be understandable to the users (that is, readable, pronouncable and not cryptic) .
Notes from Wikiquote
(ii) Conversational: A language that is available conversationally aids the description by the elimination of errors through syntax checks. Also, the description is executable and thus demonstrates the architecture. It is of course not possible to verify the architecture - there is nothing to compare it with. What is possible is to check the implementation against the architecture . By selectively substituting implementation for architecture one can perform efficient simulation experiments. | (iii) General purpose: When the language is general purpose the same language can be used for all levels of design (architecture, implementation, realisation) . Similarly, design tools necessary for testing, collecting performance statistics, editors, tracers etc . can also be built using the same language . Thus a general purpose l anguage represents a desirable economy of thought for the designer. | (iv) Structured: A language that exhibits good structure permits the designer to show the structure of his design . It allows the designer to develop his specifications in a top-down way so that design details can be developed and expressed gradually. | p. 30