summaryrefslogtreecommitdiff
path: root/rtl/core/decode/data.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-09-25 19:12:49 -0600
committerAlejandro Soto <alejandro@34project.org>2023-09-25 21:33:49 -0600
commited0bd705f94f6aea568ec8405534984a37770f21 (patch)
treeaf19fc67177962c14ce7ab88d75dcaa1b1e3aee3 /rtl/core/decode/data.sv
parentcd02f821525b8710dd37e2bc39a8a7dbc36ac4b0 (diff)
rtl/core, tb: replace bus_master with a new top-level module
Diffstat (limited to 'rtl/core/decode/data.sv')
-rw-r--r--rtl/core/decode/data.sv65
1 files changed, 0 insertions, 65 deletions
diff --git a/rtl/core/decode/data.sv b/rtl/core/decode/data.sv
deleted file mode 100644
index f744972..0000000
--- a/rtl/core/decode/data.sv
+++ /dev/null
@@ -1,65 +0,0 @@
-`include "core/decode/isa.sv"
-`include "core/uarch.sv"
-
-module core_decode_data
-(
- input word insn,
-
- output data_decode decode,
- output logic snd_is_imm,
- snd_shift_by_reg_if_reg,
- writeback,
- conditional,
- update_flags,
- restore_spsr
-);
-
- alu_op op;
- reg_num rn, rd;
- logic uses_rn;
-
- assign decode.op = op;
- assign decode.rn = rn;
- assign decode.rd = rd;
- assign decode.uses_rn = uses_rn;
-
- assign rn = insn `FIELD_DATA_RN;
- assign rd = insn `FIELD_DATA_RD;
- assign op = insn `FIELD_DATA_OPCODE;
-
- assign snd_is_imm = insn `FIELD_DATA_IMM;
- assign snd_shift_by_reg_if_reg = insn `FIELD_DATA_REGSHIFT;
-
- always_comb begin
- unique case(op)
- `ALU_ADC, `ALU_SBC, `ALU_RSC:
- conditional = 1;
-
- default:
- conditional = 0;
- endcase
-
- unique case(op)
- `ALU_CMP, `ALU_CMN, `ALU_TST, `ALU_TEQ:
- writeback = 0;
-
- default:
- writeback = 1;
- endcase
-
- unique case(op)
- `ALU_MOV, `ALU_MVN:
- uses_rn = 0;
-
- default:
- uses_rn = 1;
- endcase
-
- update_flags = insn `FIELD_DATA_S;
- restore_spsr = (rd == `R15) & update_flags;
-
- if(restore_spsr)
- update_flags = 0;
- end
-
-endmodule