The I/O structure of our device is intended to be usable by a human switching physical pins to connect inputs to high and low, where it is not possible to assert a signal for just one clock cycle, or to switch it from high to low in one cycle. Therefore, the intended use is as follows, starting with all inputs low:
  1. Assert restart, then deassert it.
  2. Put the desired value of A, the first multiplicand, in data_input.
  3. Assert start, then deassert it.
  4. Put the desired value of B in data_input.
  5. Assert readyB, then deassert it.
  6. When the multiplication is done, the output signal finish will be asserted.