Add FENCE and FENCE.I instructions

Both are currently NOPs as the implementation is currently in-order and
has separate instruction and data memories.
This commit is contained in:
Graham Edgecombe 2017-12-03 13:53:52 +00:00
parent 141912b568
commit ee768c51d4
2 changed files with 11 additions and 0 deletions

View file

@ -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

View file

@ -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;