Writing Testbenches: Functional Verification of HDL Models