learn you some verilog for great good!