From 0f89db514bd174def590645c30a7bd358ea6be93 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Thu, 10 Nov 2022 01:36:37 -0600 Subject: Fix flush-stall relationship in porch --- rtl/core/fetch/fetch.sv | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'rtl/core/fetch') diff --git a/rtl/core/fetch/fetch.sv b/rtl/core/fetch/fetch.sv index dc97909..1853ee0 100644 --- a/rtl/core/fetch/fetch.sv +++ b/rtl/core/fetch/fetch.sv @@ -18,10 +18,11 @@ module core_fetch flush, output word insn, output ptr insn_pc, - addr + addr, + fetch_head ); - ptr next_pc, head, hold_addr, target; + ptr next_pc, hold_addr, target; logic fetched_valid, discard; assign flush = branch || prefetch_flush; @@ -30,20 +31,21 @@ module core_fetch core_prefetch #(.ORDER(PREFETCH_ORDER)) prefetch ( + .head(fetch_head), .fetched(fetched_valid), .* ); always_comb begin if(branch) - head = target; + fetch_head = target; else if(prefetch_flush) - head = next_pc; + fetch_head = next_pc; else - head = {30{1'bx}}; + fetch_head = {30{1'bx}}; if(flush) - addr = head; + addr = fetch_head; else if(fetch && fetched_valid) addr = hold_addr + 1; else -- cgit v1.2.3