diff options
Diffstat (limited to 'rtl/core/uarch.sv')
| -rw-r--r-- | rtl/core/uarch.sv | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/rtl/core/uarch.sv b/rtl/core/uarch.sv index 5b4183c..0c46dc7 100644 --- a/rtl/core/uarch.sv +++ b/rtl/core/uarch.sv @@ -59,13 +59,29 @@ typedef logic[4:0] psr_mode; typedef struct packed { + logic execute, + undefined, + conditional, + writeback, + update_flags; +} datapath_decode; + +typedef struct packed +{ alu_op op; reg_num rn, rd; + logic uses_rn; } data_decode; typedef struct packed { + logic branch; + ptr offset; +} branch_decode; + +typedef struct packed +{ reg_num r, r_shift; logic shift_by_reg, @@ -78,7 +94,7 @@ typedef struct packed logic[5:0] shift_imm; } snd_decode; -typedef enum logic[1:0] +typedef enum { LDST_WORD, LDST_BYTE, @@ -107,6 +123,16 @@ typedef struct packed reg_list regs; } ldst_decode; +typedef enum +{ + ISSUE, + RD_INDIRECT_SHIFT, + WITH_SHIFT, + TRANSFER, + BASE_WRITEBACK, + EXCEPTION +} ctrl_cycle; + typedef struct packed { logic shr, |
