Principles of Verilog Digital Design