diff options
| author | Alejandro Soto <alejandro@34project.org> | 2023-09-25 19:12:49 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2023-09-25 21:33:49 -0600 |
| commit | ed0bd705f94f6aea568ec8405534984a37770f21 (patch) | |
| tree | af19fc67177962c14ce7ab88d75dcaa1b1e3aee3 /rtl/core/decode/mul_dec.sv | |
| parent | cd02f821525b8710dd37e2bc39a8a7dbc36ac4b0 (diff) | |
rtl/core, tb: replace bus_master with a new top-level module
Diffstat (limited to 'rtl/core/decode/mul_dec.sv')
| -rw-r--r-- | rtl/core/decode/mul_dec.sv | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/rtl/core/decode/mul_dec.sv b/rtl/core/decode/mul_dec.sv new file mode 100644 index 0000000..114b65b --- /dev/null +++ b/rtl/core/decode/mul_dec.sv @@ -0,0 +1,33 @@ +`include "core/decode/isa.sv" +`include "core/uarch.sv" + +module core_decode_mul +( + input word insn, + + output mul_decode decode, + output reg_num rd, + rs, + rm, + output logic update_flags +); + + logic long_mul; + reg_num short_rd, rn; + + assign rd = long_mul ? rn : short_rd; + assign rs = insn `FIELD_MUL_RS; + assign rm = insn `FIELD_MUL_RM; + assign update_flags = insn `FIELD_MUL_S; + + assign decode.add = insn `FIELD_MUL_ACC; + assign decode.long_mul = long_mul; + assign decode.signed_mul = insn `FIELD_MUL_SIGNED; + assign decode.r_add_lo = rn; + assign decode.r_add_hi = short_rd; + + assign long_mul = insn `FIELD_MUL_LONG; + assign short_rd = insn `FIELD_MUL_RD; + assign rn = insn `FIELD_MUL_RN; + +endmodule |
