This approach requires a CPU clock that is always a multiple of the bus clock
(HCLK). We add latches at the interface between the CPU and the AMBA bus.
The CPU clock is adjusted so that its rising edge occurs roughly aligned to
the active (ris ing-edge) of bus clock HCLK With careful design, we can
maintain this relationship to within half a CPU clock period over all operating
conditions (including changing the voltage and clock frequency). We then
need to deal with the fact that the CPU clock can be early or late relative to
HCLK. To deal with the case of an early CPU clock, we over-constrain
synthesis to guarantee that data arrives early (by our worst case skew). If
the CPU clock is late, the latch assures that data is still available