register_file: Make read access to register file synchronous
authorPaul Mackerras <paulus@ozlabs.org>
Mon, 21 Feb 2022 22:30:05 +0000 (09:30 +1100)
committerPaul Mackerras <paulus@ozlabs.org>
Fri, 22 Jul 2022 12:20:55 +0000 (22:20 +1000)
commit1d7de2f1dae295364848940f31c991c8b095f4aa
tree216e8bd7740d1e6d3461bbd0941d24b327300ac4
parent06c13d4988fee4ec1f5bf089ad71f2acc2883818
register_file: Make read access to register file synchronous

With this, the register RAM is read synchronously using the addresses
supplied by decode1.  That means the register RAM can now be block RAM
rather than LUT RAM.

Debug accesses are done via the B port on cycles when decode1
indicates that there is no valid instruction or the instruction
doesn't use a [F]RB operand.

We latch the addresses being read in each cycle and use the same
address next cycle if stalled.  Data that is being written is latched
and a multiplexer on each read port then supplies the latched write
data if the read address for that port equals the write address.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
common.vhdl
decode1.vhdl
register_file.vhdl