High Level Coding Patterns in synthesizable VHDL
The main things that make up of a high level coding pattern is abstraction.
Creating callable object with records and subroutines
Creating objects from objects
Simple state machines
We should strive for making only linear state machines. Here we will show how to achieve arbitrarily complex begavior with only linear state machines
Separate trigger and catch counters for timing insensitive design