From ee768c51d4e95b1cabfc876e4a832f3cea5da15a Mon Sep 17 00:00:00 2001 From: Graham Edgecombe Date: Sun, 3 Dec 2017 13:53:52 +0000 Subject: [PATCH] Add FENCE and FENCE.I instructions Both are currently NOPs as the implementation is currently in-order and has separate instruction and data memories. --- rv32_decode.sv | 8 ++++++++ rv32_opcodes.sv | 3 +++ 2 files changed, 11 insertions(+) diff --git a/rv32_decode.sv b/rv32_decode.sv index 6fcde9a..83dec52 100644 --- a/rv32_decode.sv +++ b/rv32_decode.sv @@ -449,6 +449,14 @@ module rv32_decode ( alu_src2_out <= RV32_ALU_SRC2_REG; rd_writeback_out <= 1; end + {RV32_OPCODE_MISC_MEM, RV32_FUNCT3_MISC_MEM_FENCE, RV32_FUNCT7_ANY}: begin + /* FENCE */ + valid_out <= 1; + end + {RV32_OPCODE_MISC_MEM, RV32_FUNCT3_MISC_MEM_FENCE_I, RV32_FUNCT7_ANY}: begin + /* FENCE.I */ + valid_out <= 1; + end endcase end endmodule diff --git a/rv32_opcodes.sv b/rv32_opcodes.sv index ef6dd25..cafee94 100644 --- a/rv32_opcodes.sv +++ b/rv32_opcodes.sv @@ -42,6 +42,9 @@ localparam RV32_FUNCT3_OP_SRL_SRA = 3'b101; localparam RV32_FUNCT3_OP_OR = 3'b110; localparam RV32_FUNCT3_OP_AND = 3'b111; +localparam RV32_FUNCT3_MISC_MEM_FENCE = 3'b000; +localparam RV32_FUNCT3_MISC_MEM_FENCE_I = 3'b001; + localparam RV32_FUNCT7_ANY = 7'b???????; localparam RV32_FUNCT7_ZERO = 7'b0000000;