mirror of
https://github.com/lowRISC/ibex.git
synced 2025-04-24 13:57:19 -04:00
Remove WAIT_ABORTED from small prefetcher
This commit is contained in:
parent
1ced4c5dca
commit
cfea6910d9
2 changed files with 23 additions and 91 deletions
|
@ -53,7 +53,7 @@ module riscv_prefetch_buffer_only_aligned
|
|||
|
||||
|
||||
/// Regs
|
||||
enum logic [1:0] {IDLE, WAIT_GNT, WAIT_RVALID, WAIT_ABORTED } CS, NS; // Will handle the steps for the memory interface
|
||||
enum logic [1:0] {IDLE, WAIT_GNT, WAIT_RVALID } CS, NS; // Will handle the steps for the memory interface
|
||||
|
||||
|
||||
logic [31:0] fetch_addr_Q, fetch_addr_n; // The adress from the current fetch
|
||||
|
@ -173,25 +173,21 @@ module riscv_prefetch_buffer_only_aligned
|
|||
end
|
||||
else begin // if branch_i
|
||||
fetch_valid_n = 1'b0;
|
||||
if (instr_rvalid_i) begin
|
||||
if (req_i) begin
|
||||
|
||||
addr_mux = addr_i;
|
||||
fetch_addr_n = addr_mux;
|
||||
if (req_i) begin
|
||||
|
||||
addr_mux = addr_i;
|
||||
fetch_addr_n = addr_mux;
|
||||
|
||||
instr_req_o = 1'b1;
|
||||
instr_addr_o = {addr_mux[31:2], 2'b00};
|
||||
instr_req_o = 1'b1;
|
||||
instr_addr_o = {addr_mux[31:2], 2'b00};
|
||||
|
||||
if (instr_gnt_i)
|
||||
NS = WAIT_RVALID;
|
||||
else
|
||||
NS = WAIT_GNT;
|
||||
end
|
||||
if (instr_gnt_i)
|
||||
NS = WAIT_RVALID;
|
||||
else
|
||||
NS = IDLE;
|
||||
NS = WAIT_GNT;
|
||||
end
|
||||
else
|
||||
NS = WAIT_ABORTED;
|
||||
NS = IDLE;
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -268,37 +264,10 @@ module riscv_prefetch_buffer_only_aligned
|
|||
|
||||
else begin // if branch_i
|
||||
fetch_valid_n = 1'b0;
|
||||
|
||||
if (instr_rvalid_i) begin
|
||||
if (req_i) begin
|
||||
|
||||
addr_mux = addr_i;
|
||||
fetch_addr_n = addr_mux;
|
||||
|
||||
instr_req_o = 1'b1;
|
||||
instr_addr_o = {addr_mux[31:2], 2'b00};
|
||||
|
||||
if (instr_gnt_i)
|
||||
NS = WAIT_RVALID;
|
||||
else
|
||||
NS = WAIT_GNT;
|
||||
end
|
||||
else
|
||||
NS = IDLE;
|
||||
end
|
||||
else
|
||||
NS = WAIT_ABORTED;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// Wait for rvalid to finish latest access accordingly
|
||||
WAIT_ABORTED: begin
|
||||
if (instr_rvalid_i) begin
|
||||
|
||||
if (req_i) begin
|
||||
|
||||
addr_mux = addr_i;
|
||||
|
||||
fetch_addr_n = addr_mux;
|
||||
|
||||
instr_req_o = 1'b1;
|
||||
|
@ -312,9 +281,6 @@ module riscv_prefetch_buffer_only_aligned
|
|||
else
|
||||
NS = IDLE;
|
||||
end
|
||||
else begin
|
||||
NS = WAIT_ABORTED;
|
||||
end
|
||||
end
|
||||
|
||||
default: NS = IDLE;
|
||||
|
|
|
@ -53,7 +53,7 @@ module riscv_prefetch_buffer_small
|
|||
|
||||
|
||||
/// Regs
|
||||
enum logic [1:0] {IDLE, WAIT_GNT, WAIT_RVALID, WAIT_ABORTED } CS, NS; // Will handle the steps for the memory interface
|
||||
enum logic [1:0] {IDLE, WAIT_GNT, WAIT_RVALID } CS, NS; // Will handle the steps for the memory interface
|
||||
|
||||
|
||||
logic [31:0] fetch_addr_Q, fetch_addr_n; // The adress from the current fetch
|
||||
|
@ -222,25 +222,21 @@ module riscv_prefetch_buffer_small
|
|||
end
|
||||
else begin // if branch_i
|
||||
last_fetch_valid_n = 1'b0;
|
||||
if (instr_rvalid_i) begin
|
||||
if (req_i) begin
|
||||
|
||||
addr_mux = addr_i;
|
||||
fetch_addr_n = addr_mux;
|
||||
if (req_i) begin
|
||||
|
||||
addr_mux = addr_i;
|
||||
fetch_addr_n = addr_mux;
|
||||
|
||||
instr_req_o = 1'b1;
|
||||
instr_addr_o = {addr_mux[31:2], 2'b00};
|
||||
instr_req_o = 1'b1;
|
||||
instr_addr_o = {addr_mux[31:2], 2'b00};
|
||||
|
||||
if (instr_gnt_i)
|
||||
NS = WAIT_RVALID;
|
||||
else
|
||||
NS = WAIT_GNT;
|
||||
end
|
||||
if (instr_gnt_i)
|
||||
NS = WAIT_RVALID;
|
||||
else
|
||||
NS = IDLE;
|
||||
NS = WAIT_GNT;
|
||||
end
|
||||
else
|
||||
NS = WAIT_ABORTED;
|
||||
NS = IDLE;
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -360,36 +356,9 @@ module riscv_prefetch_buffer_small
|
|||
is_second_fetch_n = 1'b0;
|
||||
fetch_stalled_n = 1'b0;
|
||||
|
||||
if (instr_rvalid_i) begin
|
||||
if (req_i) begin
|
||||
|
||||
addr_mux = addr_i;
|
||||
fetch_addr_n = addr_mux;
|
||||
|
||||
instr_req_o = 1'b1;
|
||||
instr_addr_o = {addr_mux[31:2], 2'b00};
|
||||
|
||||
if (instr_gnt_i)
|
||||
NS = WAIT_RVALID;
|
||||
else
|
||||
NS = WAIT_GNT;
|
||||
end
|
||||
else
|
||||
NS = IDLE;
|
||||
end
|
||||
else
|
||||
NS = WAIT_ABORTED;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// Wait for rvalid to finish latest access accordingly
|
||||
WAIT_ABORTED: begin
|
||||
if (instr_rvalid_i) begin
|
||||
if (req_i) begin
|
||||
|
||||
addr_mux = addr_i;
|
||||
|
||||
fetch_addr_n = addr_mux;
|
||||
|
||||
instr_req_o = 1'b1;
|
||||
|
@ -403,9 +372,6 @@ module riscv_prefetch_buffer_small
|
|||
else
|
||||
NS = IDLE;
|
||||
end
|
||||
else begin
|
||||
NS = WAIT_ABORTED;
|
||||
end
|
||||
end
|
||||
|
||||
default: NS = IDLE;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue