Logic Design - Testbenches and Simulation in Verilog