Add a divider unit and a testbench for it
authorPaul Mackerras <paulus@ozlabs.org>
Sun, 22 Sep 2019 07:24:14 +0000 (17:24 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Mon, 23 Sep 2019 04:31:53 +0000 (14:31 +1000)
commitd5bc6c882499e6644f9fa75fe4ddbeb0b5c49600
tree0daac101dcdc953965abee43b9630d5e865b7107
parent6571b133089458310d3ea676784952e438dfc931
Add a divider unit and a testbench for it

This adds a divider unit, connected to the core in much the same way
that the multiplier unit is connected.  The division algorithm is
very simple-minded, taking 64 clock cycles for any division (even
32-bit division instructions).

The decoding is simplified by making use of regularities in the
instruction encoding for div* and mod* instructions.  Instead of
having PPC_* encodings from the first-stage decoder for each of the
different div* and mod* instructions, we now just have PPC_DIV and
PPC_MOD, and the inputs to the divider that indicate what sort of
division operation to do are derived from instruction word bits.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Makefile
common.vhdl
core.vhdl
decode1.vhdl
decode2.vhdl
decode_types.vhdl
divider.vhdl [new file with mode: 0644]
divider_tb.vhdl [new file with mode: 0644]
execute1.vhdl
microwatt.core
writeback.vhdl