Principles of Verifiable RTL Design - A Functional Coding Style Supporting Verification Processes