THDL++ is a hardware design language, that inherits VHDL semantics and provides several major timesaving features. Basically, it is a higher-level way to make VHDL designs without spending time on routine VHDL tasks. A typical THDL++ design requires 2 to 6 times less source code, than an equivalent VHDL design. On the other hand, THDL++ operates the same artifacts, that VHDL does (entities, processes, signals, functions), making it easy-to-use for VHDL developers. More specifically, THDL++ has the following features:
Major extension to VHDL generics concept. Unlike VHDL, where generics are limited to constants, THDL++ allows creating templated entities being generic with respect to: constants, data types, sub-entities, functions, policy classes. This simplifies code reuse and reduces development and testing time.
Support for policy classes and class inheritance. Tasks requiring lots of hard-to-maintain switch-case statements (e.g. instruction decoders in CPUs) can be simplified by decoupling structural view from functional view. A typical THDL++ code for such task would look like:foreach (any insn in SupportedInstructions)
ALU.Opcode = insn.DecodeALUOpcode(InstructionWord);
Modifying your code to add or remove some of the supported instructions would simply mean changing SupportedInstructions list and won't require massive code editing. You can read more about policy classes in this section of THDL++ tutorial.
Numerous language features to make designs more abstract. E.g. typeof() operator.
Entity inheritance. Designing sets of entities sharing some common properties won't mean copy-pasting any more!
Improved C++-like syntax. Declare variables in the middle of processes/functions, use fast "+=, &=, etc." operators, much more compact syntax for entities and processes.