From ceaa73e344dfe0ecfe5fb6778e3eda9d99acc578 Mon Sep 17 00:00:00 2001 From: waleed-lm Date: Thu, 1 Oct 2020 10:50:04 +0500 Subject: [PATCH] Async reset done in IFC --- el2_ifu_ifc_ctl.anno.json | 7 + el2_ifu_ifc_ctl.fir | 375 +++++++++--------- el2_ifu_ifc_ctl.v | 212 +++++----- src/main/scala/ifu/el2_ifu_ifc_ctl.scala | 5 +- .../classes/ifu/el2_ifu_ifc_ctl$$anon$1.class | Bin 5206 -> 5326 bytes .../classes/ifu/el2_ifu_ifc_ctl.class | Bin 115851 -> 116753 bytes target/scala-2.12/classes/ifu/ifu_ifc$.class | Bin 3875 -> 3875 bytes .../ifu/ifu_ifc$delayedInit$body.class | Bin 736 -> 736 bytes 8 files changed, 305 insertions(+), 294 deletions(-) diff --git a/el2_ifu_ifc_ctl.anno.json b/el2_ifu_ifc_ctl.anno.json index 6da8d83b..67e501b8 100644 --- a/el2_ifu_ifc_ctl.anno.json +++ b/el2_ifu_ifc_ctl.anno.json @@ -103,6 +103,13 @@ "~el2_ifu_ifc_ctl|el2_ifu_ifc_ctl>io_ifc_fetch_req_f" ] }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~el2_ifu_ifc_ctl|el2_ifu_ifc_ctl>io_test", + "sources":[ + "~el2_ifu_ifc_ctl|el2_ifu_ifc_ctl>io_ifc_fetch_addr_f" + ] + }, { "class":"firrtl.EmitCircuitAnnotation", "emitter":"firrtl.VerilogEmitter" diff --git a/el2_ifu_ifc_ctl.fir b/el2_ifu_ifc_ctl.fir index 7e167e5d..199de087 100644 --- a/el2_ifu_ifc_ctl.fir +++ b/el2_ifu_ifc_ctl.fir @@ -3,7 +3,7 @@ circuit el2_ifu_ifc_ctl : module el2_ifu_ifc_ctl : input clock : Clock input reset : AsyncReset - output io : {flip free_clk : Clock, flip active_clk : UInt<1>, flip scan_mode : UInt<1>, flip ic_hit_f : UInt<1>, flip ifu_ic_mb_empty : UInt<1>, flip ifu_fb_consume1 : UInt<1>, flip ifu_fb_consume2 : UInt<1>, flip dec_tlu_flush_noredir_wb : UInt<1>, flip exu_flush_final : UInt<1>, flip exu_flush_path_final : UInt<31>, flip ifu_bp_hit_taken_f : UInt<1>, flip ifu_bp_btb_target_f : UInt<31>, flip ic_dma_active : UInt<1>, flip ic_write_stall : UInt<1>, flip dma_iccm_stall_any : UInt<1>, flip dec_tlu_mrac_ff : UInt<32>, ifc_fetch_addr_f : UInt<31>, ifc_fetch_addr_bf : UInt<31>, ifc_fetch_req_f : UInt<1>, ifu_pmu_fetch_stall : UInt<1>, ifc_fetch_uncacheable_bf : UInt<1>, ifc_fetch_req_bf : UInt<1>, ifc_fetch_req_bf_raw : UInt<1>, ifc_iccm_access_bf : UInt<1>, ifc_region_acc_fault_bf : UInt<1>, ifc_dma_access_ok : UInt<1>} + output io : {flip free_clk : Clock, flip active_clk : UInt<1>, flip scan_mode : UInt<1>, flip ic_hit_f : UInt<1>, flip ifu_ic_mb_empty : UInt<1>, flip ifu_fb_consume1 : UInt<1>, flip ifu_fb_consume2 : UInt<1>, flip dec_tlu_flush_noredir_wb : UInt<1>, flip exu_flush_final : UInt<1>, flip exu_flush_path_final : UInt<31>, flip ifu_bp_hit_taken_f : UInt<1>, flip ifu_bp_btb_target_f : UInt<31>, flip ic_dma_active : UInt<1>, flip ic_write_stall : UInt<1>, flip dma_iccm_stall_any : UInt<1>, flip dec_tlu_mrac_ff : UInt<32>, ifc_fetch_addr_f : UInt<31>, ifc_fetch_addr_bf : UInt<31>, ifc_fetch_req_f : UInt<1>, ifu_pmu_fetch_stall : UInt<1>, ifc_fetch_uncacheable_bf : UInt<1>, ifc_fetch_req_bf : UInt<1>, ifc_fetch_req_bf_raw : UInt<1>, ifc_iccm_access_bf : UInt<1>, ifc_region_acc_fault_bf : UInt<1>, ifc_dma_access_ok : UInt<1>, test : UInt<1>} wire fetch_addr_bf : UInt<31> fetch_addr_bf <= UInt<1>("h00") @@ -47,31 +47,31 @@ circuit el2_ifu_ifc_ctl : state <= UInt<1>("h00") wire dma_iccm_stall_any_f : UInt<1> dma_iccm_stall_any_f <= UInt<1>("h00") - node dma_stall = or(io.ic_dma_active, dma_iccm_stall_any_f) @[el2_ifu_ifc_ctl.scala 62:36] - reg _T : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 63:58] - _T <= io.dma_iccm_stall_any @[el2_ifu_ifc_ctl.scala 63:58] - dma_iccm_stall_any_f <= _T @[el2_ifu_ifc_ctl.scala 63:24] - reg _T_1 : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 65:44] - _T_1 <= miss_f @[el2_ifu_ifc_ctl.scala 65:44] - miss_a <= _T_1 @[el2_ifu_ifc_ctl.scala 65:10] - node _T_2 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 67:26] - node _T_3 = eq(io.ifc_fetch_req_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 67:49] - node _T_4 = eq(io.ic_hit_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 67:71] - node _T_5 = or(_T_3, _T_4) @[el2_ifu_ifc_ctl.scala 67:69] - node sel_last_addr_bf = and(_T_2, _T_5) @[el2_ifu_ifc_ctl.scala 67:46] - node _T_6 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 68:26] - node _T_7 = and(_T_6, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 68:46] - node _T_8 = and(_T_7, io.ifu_bp_hit_taken_f) @[el2_ifu_ifc_ctl.scala 68:67] - node sel_btb_addr_bf = and(_T_8, io.ic_hit_f) @[el2_ifu_ifc_ctl.scala 68:92] - node _T_9 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 69:26] - node _T_10 = and(_T_9, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 69:46] - node _T_11 = eq(io.ifu_bp_hit_taken_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 69:69] - node _T_12 = and(_T_10, _T_11) @[el2_ifu_ifc_ctl.scala 69:67] - node sel_next_addr_bf = and(_T_12, io.ic_hit_f) @[el2_ifu_ifc_ctl.scala 69:92] - node _T_13 = bits(io.exu_flush_final, 0, 0) @[el2_ifu_ifc_ctl.scala 72:56] - node _T_14 = bits(sel_last_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 73:22] - node _T_15 = bits(sel_btb_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 74:21] - node _T_16 = bits(sel_next_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 75:22] + node dma_stall = or(io.ic_dma_active, dma_iccm_stall_any_f) @[el2_ifu_ifc_ctl.scala 63:36] + reg _T : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 64:58] + _T <= io.dma_iccm_stall_any @[el2_ifu_ifc_ctl.scala 64:58] + dma_iccm_stall_any_f <= _T @[el2_ifu_ifc_ctl.scala 64:24] + reg _T_1 : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 66:44] + _T_1 <= miss_f @[el2_ifu_ifc_ctl.scala 66:44] + miss_a <= _T_1 @[el2_ifu_ifc_ctl.scala 66:10] + node _T_2 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 68:26] + node _T_3 = eq(io.ifc_fetch_req_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 68:49] + node _T_4 = eq(io.ic_hit_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 68:71] + node _T_5 = or(_T_3, _T_4) @[el2_ifu_ifc_ctl.scala 68:69] + node sel_last_addr_bf = and(_T_2, _T_5) @[el2_ifu_ifc_ctl.scala 68:46] + node _T_6 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 69:26] + node _T_7 = and(_T_6, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 69:46] + node _T_8 = and(_T_7, io.ifu_bp_hit_taken_f) @[el2_ifu_ifc_ctl.scala 69:67] + node sel_btb_addr_bf = and(_T_8, io.ic_hit_f) @[el2_ifu_ifc_ctl.scala 69:92] + node _T_9 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 70:26] + node _T_10 = and(_T_9, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 70:46] + node _T_11 = eq(io.ifu_bp_hit_taken_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 70:69] + node _T_12 = and(_T_10, _T_11) @[el2_ifu_ifc_ctl.scala 70:67] + node sel_next_addr_bf = and(_T_12, io.ic_hit_f) @[el2_ifu_ifc_ctl.scala 70:92] + node _T_13 = bits(io.exu_flush_final, 0, 0) @[el2_ifu_ifc_ctl.scala 73:56] + node _T_14 = bits(sel_last_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 74:22] + node _T_15 = bits(sel_btb_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 75:21] + node _T_16 = bits(sel_next_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 76:22] node _T_17 = mux(_T_13, io.exu_flush_path_final, UInt<1>("h00")) @[Mux.scala 27:72] node _T_18 = mux(_T_14, io.ifc_fetch_addr_f, UInt<1>("h00")) @[Mux.scala 27:72] node _T_19 = mux(_T_15, io.ifu_bp_btb_target_f, UInt<1>("h00")) @[Mux.scala 27:72] @@ -81,121 +81,122 @@ circuit el2_ifu_ifc_ctl : node _T_23 = or(_T_22, _T_20) @[Mux.scala 27:72] wire _T_24 : UInt<31> @[Mux.scala 27:72] _T_24 <= _T_23 @[Mux.scala 27:72] - io.ifc_fetch_addr_bf <= _T_24 @[el2_ifu_ifc_ctl.scala 72:24] - node _T_25 = bits(io.ifc_fetch_addr_f, 30, 1) @[el2_ifu_ifc_ctl.scala 77:42] - node _T_26 = add(_T_25, UInt<1>("h01")) @[el2_ifu_ifc_ctl.scala 77:48] - node address_upper = tail(_T_26, 1) @[el2_ifu_ifc_ctl.scala 77:48] - node _T_27 = bits(address_upper, 5, 5) @[el2_ifu_ifc_ctl.scala 78:39] - node _T_28 = bits(io.ifc_fetch_addr_f, 5, 5) @[el2_ifu_ifc_ctl.scala 78:84] - node _T_29 = xor(_T_27, _T_28) @[el2_ifu_ifc_ctl.scala 78:63] - node _T_30 = eq(_T_29, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 78:24] - node _T_31 = bits(io.ifc_fetch_addr_f, 0, 0) @[el2_ifu_ifc_ctl.scala 78:130] - node _T_32 = and(_T_30, _T_31) @[el2_ifu_ifc_ctl.scala 78:109] - fetch_addr_next_0 <= _T_32 @[el2_ifu_ifc_ctl.scala 78:21] + io.ifc_fetch_addr_bf <= _T_24 @[el2_ifu_ifc_ctl.scala 73:24] + node _T_25 = bits(io.ifc_fetch_addr_f, 30, 1) @[el2_ifu_ifc_ctl.scala 78:42] + node _T_26 = add(_T_25, UInt<1>("h01")) @[el2_ifu_ifc_ctl.scala 78:48] + node address_upper = tail(_T_26, 1) @[el2_ifu_ifc_ctl.scala 78:48] + node _T_27 = bits(address_upper, 4, 4) @[el2_ifu_ifc_ctl.scala 79:39] + node _T_28 = bits(io.ifc_fetch_addr_f, 5, 5) @[el2_ifu_ifc_ctl.scala 79:84] + node _T_29 = xor(_T_27, _T_28) @[el2_ifu_ifc_ctl.scala 79:63] + node _T_30 = eq(_T_29, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 79:24] + node _T_31 = bits(io.ifc_fetch_addr_f, 0, 0) @[el2_ifu_ifc_ctl.scala 79:130] + node _T_32 = and(_T_30, _T_31) @[el2_ifu_ifc_ctl.scala 79:109] + fetch_addr_next_0 <= _T_32 @[el2_ifu_ifc_ctl.scala 79:21] + io.test <= fetch_addr_next_0 @[el2_ifu_ifc_ctl.scala 80:11] node _T_33 = cat(address_upper, fetch_addr_next_0) @[Cat.scala 29:58] - fetch_addr_next <= _T_33 @[el2_ifu_ifc_ctl.scala 80:19] - node _T_34 = not(idle) @[el2_ifu_ifc_ctl.scala 82:30] - io.ifc_fetch_req_bf_raw <= _T_34 @[el2_ifu_ifc_ctl.scala 82:27] - node _T_35 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 84:91] - node _T_36 = eq(_T_35, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 84:70] - node _T_37 = and(fb_full_f_ns, _T_36) @[el2_ifu_ifc_ctl.scala 84:68] - node _T_38 = eq(_T_37, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 84:53] - node _T_39 = and(io.ifc_fetch_req_bf_raw, _T_38) @[el2_ifu_ifc_ctl.scala 84:51] - node _T_40 = eq(dma_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:5] - node _T_41 = and(_T_39, _T_40) @[el2_ifu_ifc_ctl.scala 84:114] - node _T_42 = eq(io.ic_write_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:18] - node _T_43 = and(_T_41, _T_42) @[el2_ifu_ifc_ctl.scala 85:16] - node _T_44 = eq(io.dec_tlu_flush_noredir_wb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:39] - node _T_45 = and(_T_43, _T_44) @[el2_ifu_ifc_ctl.scala 85:37] - io.ifc_fetch_req_bf <= _T_45 @[el2_ifu_ifc_ctl.scala 84:23] - node _T_46 = or(io.exu_flush_final, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 87:37] - fetch_bf_en <= _T_46 @[el2_ifu_ifc_ctl.scala 87:15] - node _T_47 = eq(io.ic_hit_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 89:34] - node _T_48 = and(io.ifc_fetch_req_f, _T_47) @[el2_ifu_ifc_ctl.scala 89:32] - node _T_49 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 89:49] - node _T_50 = and(_T_48, _T_49) @[el2_ifu_ifc_ctl.scala 89:47] - miss_f <= _T_50 @[el2_ifu_ifc_ctl.scala 89:10] - node _T_51 = or(io.ifu_ic_mb_empty, io.exu_flush_final) @[el2_ifu_ifc_ctl.scala 91:39] - node _T_52 = eq(dma_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 91:63] - node _T_53 = and(_T_51, _T_52) @[el2_ifu_ifc_ctl.scala 91:61] - node _T_54 = eq(miss_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 91:76] - node _T_55 = and(_T_53, _T_54) @[el2_ifu_ifc_ctl.scala 91:74] - node _T_56 = eq(miss_a, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 91:86] - node _T_57 = and(_T_55, _T_56) @[el2_ifu_ifc_ctl.scala 91:84] - mb_empty_mod <= _T_57 @[el2_ifu_ifc_ctl.scala 91:16] - node _T_58 = and(io.exu_flush_final, io.dec_tlu_flush_noredir_wb) @[el2_ifu_ifc_ctl.scala 93:35] - goto_idle <= _T_58 @[el2_ifu_ifc_ctl.scala 93:13] - node _T_59 = eq(io.dec_tlu_flush_noredir_wb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 95:38] - node _T_60 = and(io.exu_flush_final, _T_59) @[el2_ifu_ifc_ctl.scala 95:36] - node _T_61 = and(_T_60, idle) @[el2_ifu_ifc_ctl.scala 95:67] - leave_idle <= _T_61 @[el2_ifu_ifc_ctl.scala 95:14] - node _T_62 = bits(state, 1, 1) @[el2_ifu_ifc_ctl.scala 97:29] - node _T_63 = eq(_T_62, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 97:23] - node _T_64 = bits(state, 0, 0) @[el2_ifu_ifc_ctl.scala 97:40] - node _T_65 = and(_T_63, _T_64) @[el2_ifu_ifc_ctl.scala 97:33] - node _T_66 = and(_T_65, miss_f) @[el2_ifu_ifc_ctl.scala 97:44] - node _T_67 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 97:55] - node _T_68 = and(_T_66, _T_67) @[el2_ifu_ifc_ctl.scala 97:53] - node _T_69 = bits(state, 1, 1) @[el2_ifu_ifc_ctl.scala 98:11] - node _T_70 = eq(mb_empty_mod, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 98:17] - node _T_71 = and(_T_69, _T_70) @[el2_ifu_ifc_ctl.scala 98:15] - node _T_72 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 98:33] - node _T_73 = and(_T_71, _T_72) @[el2_ifu_ifc_ctl.scala 98:31] - node next_state_1 = or(_T_68, _T_73) @[el2_ifu_ifc_ctl.scala 97:67] - node _T_74 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 100:23] - node _T_75 = and(_T_74, leave_idle) @[el2_ifu_ifc_ctl.scala 100:34] - node _T_76 = bits(state, 0, 0) @[el2_ifu_ifc_ctl.scala 100:56] - node _T_77 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 100:62] - node _T_78 = and(_T_76, _T_77) @[el2_ifu_ifc_ctl.scala 100:60] - node next_state_0 = or(_T_75, _T_78) @[el2_ifu_ifc_ctl.scala 100:48] + fetch_addr_next <= _T_33 @[el2_ifu_ifc_ctl.scala 81:19] + node _T_34 = not(idle) @[el2_ifu_ifc_ctl.scala 83:30] + io.ifc_fetch_req_bf_raw <= _T_34 @[el2_ifu_ifc_ctl.scala 83:27] + node _T_35 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 85:91] + node _T_36 = eq(_T_35, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:70] + node _T_37 = and(fb_full_f_ns, _T_36) @[el2_ifu_ifc_ctl.scala 85:68] + node _T_38 = eq(_T_37, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:53] + node _T_39 = and(io.ifc_fetch_req_bf_raw, _T_38) @[el2_ifu_ifc_ctl.scala 85:51] + node _T_40 = eq(dma_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 86:5] + node _T_41 = and(_T_39, _T_40) @[el2_ifu_ifc_ctl.scala 85:114] + node _T_42 = eq(io.ic_write_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 86:18] + node _T_43 = and(_T_41, _T_42) @[el2_ifu_ifc_ctl.scala 86:16] + node _T_44 = eq(io.dec_tlu_flush_noredir_wb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 86:39] + node _T_45 = and(_T_43, _T_44) @[el2_ifu_ifc_ctl.scala 86:37] + io.ifc_fetch_req_bf <= _T_45 @[el2_ifu_ifc_ctl.scala 85:23] + node _T_46 = or(io.exu_flush_final, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 88:37] + fetch_bf_en <= _T_46 @[el2_ifu_ifc_ctl.scala 88:15] + node _T_47 = eq(io.ic_hit_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 90:34] + node _T_48 = and(io.ifc_fetch_req_f, _T_47) @[el2_ifu_ifc_ctl.scala 90:32] + node _T_49 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 90:49] + node _T_50 = and(_T_48, _T_49) @[el2_ifu_ifc_ctl.scala 90:47] + miss_f <= _T_50 @[el2_ifu_ifc_ctl.scala 90:10] + node _T_51 = or(io.ifu_ic_mb_empty, io.exu_flush_final) @[el2_ifu_ifc_ctl.scala 92:39] + node _T_52 = eq(dma_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 92:63] + node _T_53 = and(_T_51, _T_52) @[el2_ifu_ifc_ctl.scala 92:61] + node _T_54 = eq(miss_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 92:76] + node _T_55 = and(_T_53, _T_54) @[el2_ifu_ifc_ctl.scala 92:74] + node _T_56 = eq(miss_a, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 92:86] + node _T_57 = and(_T_55, _T_56) @[el2_ifu_ifc_ctl.scala 92:84] + mb_empty_mod <= _T_57 @[el2_ifu_ifc_ctl.scala 92:16] + node _T_58 = and(io.exu_flush_final, io.dec_tlu_flush_noredir_wb) @[el2_ifu_ifc_ctl.scala 94:35] + goto_idle <= _T_58 @[el2_ifu_ifc_ctl.scala 94:13] + node _T_59 = eq(io.dec_tlu_flush_noredir_wb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 96:38] + node _T_60 = and(io.exu_flush_final, _T_59) @[el2_ifu_ifc_ctl.scala 96:36] + node _T_61 = and(_T_60, idle) @[el2_ifu_ifc_ctl.scala 96:67] + leave_idle <= _T_61 @[el2_ifu_ifc_ctl.scala 96:14] + node _T_62 = bits(state, 1, 1) @[el2_ifu_ifc_ctl.scala 98:29] + node _T_63 = eq(_T_62, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 98:23] + node _T_64 = bits(state, 0, 0) @[el2_ifu_ifc_ctl.scala 98:40] + node _T_65 = and(_T_63, _T_64) @[el2_ifu_ifc_ctl.scala 98:33] + node _T_66 = and(_T_65, miss_f) @[el2_ifu_ifc_ctl.scala 98:44] + node _T_67 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 98:55] + node _T_68 = and(_T_66, _T_67) @[el2_ifu_ifc_ctl.scala 98:53] + node _T_69 = bits(state, 1, 1) @[el2_ifu_ifc_ctl.scala 99:11] + node _T_70 = eq(mb_empty_mod, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 99:17] + node _T_71 = and(_T_69, _T_70) @[el2_ifu_ifc_ctl.scala 99:15] + node _T_72 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 99:33] + node _T_73 = and(_T_71, _T_72) @[el2_ifu_ifc_ctl.scala 99:31] + node next_state_1 = or(_T_68, _T_73) @[el2_ifu_ifc_ctl.scala 98:67] + node _T_74 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 101:23] + node _T_75 = and(_T_74, leave_idle) @[el2_ifu_ifc_ctl.scala 101:34] + node _T_76 = bits(state, 0, 0) @[el2_ifu_ifc_ctl.scala 101:56] + node _T_77 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 101:62] + node _T_78 = and(_T_76, _T_77) @[el2_ifu_ifc_ctl.scala 101:60] + node next_state_0 = or(_T_75, _T_78) @[el2_ifu_ifc_ctl.scala 101:48] node _T_79 = cat(next_state_1, next_state_0) @[Cat.scala 29:58] - reg _T_80 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 102:19] - _T_80 <= _T_79 @[el2_ifu_ifc_ctl.scala 102:19] - state <= _T_80 @[el2_ifu_ifc_ctl.scala 102:9] - flush_fb <= io.exu_flush_final @[el2_ifu_ifc_ctl.scala 104:12] - node _T_81 = eq(io.ifu_fb_consume2, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 106:38] - node _T_82 = and(io.ifu_fb_consume1, _T_81) @[el2_ifu_ifc_ctl.scala 106:36] - node _T_83 = eq(io.ifc_fetch_req_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 106:61] - node _T_84 = or(_T_83, miss_f) @[el2_ifu_ifc_ctl.scala 106:81] - node _T_85 = and(_T_82, _T_84) @[el2_ifu_ifc_ctl.scala 106:58] - node _T_86 = and(io.ifu_fb_consume2, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 107:25] - node _T_87 = or(_T_85, _T_86) @[el2_ifu_ifc_ctl.scala 106:92] - fb_right <= _T_87 @[el2_ifu_ifc_ctl.scala 106:12] - node _T_88 = not(io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 109:39] - node _T_89 = or(_T_88, miss_f) @[el2_ifu_ifc_ctl.scala 109:59] - node _T_90 = and(io.ifu_fb_consume2, _T_89) @[el2_ifu_ifc_ctl.scala 109:36] - fb_right2 <= _T_90 @[el2_ifu_ifc_ctl.scala 109:13] - node _T_91 = or(io.ifu_fb_consume1, io.ifu_fb_consume2) @[el2_ifu_ifc_ctl.scala 110:56] - node _T_92 = eq(_T_91, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 110:35] - node _T_93 = and(io.ifc_fetch_req_f, _T_92) @[el2_ifu_ifc_ctl.scala 110:33] - node _T_94 = eq(miss_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 110:80] - node _T_95 = and(_T_93, _T_94) @[el2_ifu_ifc_ctl.scala 110:78] - fb_left <= _T_95 @[el2_ifu_ifc_ctl.scala 110:11] - node _T_96 = bits(flush_fb, 0, 0) @[el2_ifu_ifc_ctl.scala 112:37] - node _T_97 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 113:6] - node _T_98 = and(_T_97, fb_right) @[el2_ifu_ifc_ctl.scala 113:16] - node _T_99 = bits(_T_98, 0, 0) @[el2_ifu_ifc_ctl.scala 113:28] - node _T_100 = bits(fb_write_f, 3, 1) @[el2_ifu_ifc_ctl.scala 113:62] + reg _T_80 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 103:19] + _T_80 <= _T_79 @[el2_ifu_ifc_ctl.scala 103:19] + state <= _T_80 @[el2_ifu_ifc_ctl.scala 103:9] + flush_fb <= io.exu_flush_final @[el2_ifu_ifc_ctl.scala 105:12] + node _T_81 = eq(io.ifu_fb_consume2, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 107:38] + node _T_82 = and(io.ifu_fb_consume1, _T_81) @[el2_ifu_ifc_ctl.scala 107:36] + node _T_83 = eq(io.ifc_fetch_req_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 107:61] + node _T_84 = or(_T_83, miss_f) @[el2_ifu_ifc_ctl.scala 107:81] + node _T_85 = and(_T_82, _T_84) @[el2_ifu_ifc_ctl.scala 107:58] + node _T_86 = and(io.ifu_fb_consume2, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 108:25] + node _T_87 = or(_T_85, _T_86) @[el2_ifu_ifc_ctl.scala 107:92] + fb_right <= _T_87 @[el2_ifu_ifc_ctl.scala 107:12] + node _T_88 = not(io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 110:39] + node _T_89 = or(_T_88, miss_f) @[el2_ifu_ifc_ctl.scala 110:59] + node _T_90 = and(io.ifu_fb_consume2, _T_89) @[el2_ifu_ifc_ctl.scala 110:36] + fb_right2 <= _T_90 @[el2_ifu_ifc_ctl.scala 110:13] + node _T_91 = or(io.ifu_fb_consume1, io.ifu_fb_consume2) @[el2_ifu_ifc_ctl.scala 111:56] + node _T_92 = eq(_T_91, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 111:35] + node _T_93 = and(io.ifc_fetch_req_f, _T_92) @[el2_ifu_ifc_ctl.scala 111:33] + node _T_94 = eq(miss_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 111:80] + node _T_95 = and(_T_93, _T_94) @[el2_ifu_ifc_ctl.scala 111:78] + fb_left <= _T_95 @[el2_ifu_ifc_ctl.scala 111:11] + node _T_96 = bits(flush_fb, 0, 0) @[el2_ifu_ifc_ctl.scala 113:37] + node _T_97 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 114:6] + node _T_98 = and(_T_97, fb_right) @[el2_ifu_ifc_ctl.scala 114:16] + node _T_99 = bits(_T_98, 0, 0) @[el2_ifu_ifc_ctl.scala 114:28] + node _T_100 = bits(fb_write_f, 3, 1) @[el2_ifu_ifc_ctl.scala 114:62] node _T_101 = cat(UInt<1>("h00"), _T_100) @[Cat.scala 29:58] - node _T_102 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 114:6] - node _T_103 = and(_T_102, fb_right2) @[el2_ifu_ifc_ctl.scala 114:16] - node _T_104 = bits(_T_103, 0, 0) @[el2_ifu_ifc_ctl.scala 114:29] - node _T_105 = bits(fb_write_f, 3, 2) @[el2_ifu_ifc_ctl.scala 114:63] + node _T_102 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 115:6] + node _T_103 = and(_T_102, fb_right2) @[el2_ifu_ifc_ctl.scala 115:16] + node _T_104 = bits(_T_103, 0, 0) @[el2_ifu_ifc_ctl.scala 115:29] + node _T_105 = bits(fb_write_f, 3, 2) @[el2_ifu_ifc_ctl.scala 115:63] node _T_106 = cat(UInt<2>("h00"), _T_105) @[Cat.scala 29:58] - node _T_107 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 115:6] - node _T_108 = and(_T_107, fb_left) @[el2_ifu_ifc_ctl.scala 115:16] - node _T_109 = bits(_T_108, 0, 0) @[el2_ifu_ifc_ctl.scala 115:27] - node _T_110 = bits(fb_write_f, 2, 0) @[el2_ifu_ifc_ctl.scala 115:51] + node _T_107 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:6] + node _T_108 = and(_T_107, fb_left) @[el2_ifu_ifc_ctl.scala 116:16] + node _T_109 = bits(_T_108, 0, 0) @[el2_ifu_ifc_ctl.scala 116:27] + node _T_110 = bits(fb_write_f, 2, 0) @[el2_ifu_ifc_ctl.scala 116:51] node _T_111 = cat(_T_110, UInt<1>("h00")) @[Cat.scala 29:58] - node _T_112 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:6] - node _T_113 = eq(fb_right, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:18] - node _T_114 = and(_T_112, _T_113) @[el2_ifu_ifc_ctl.scala 116:16] - node _T_115 = eq(fb_right2, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:30] - node _T_116 = and(_T_114, _T_115) @[el2_ifu_ifc_ctl.scala 116:28] - node _T_117 = eq(fb_left, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:43] - node _T_118 = and(_T_116, _T_117) @[el2_ifu_ifc_ctl.scala 116:41] - node _T_119 = bits(_T_118, 0, 0) @[el2_ifu_ifc_ctl.scala 116:53] - node _T_120 = bits(fb_write_f, 3, 0) @[el2_ifu_ifc_ctl.scala 116:73] + node _T_112 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 117:6] + node _T_113 = eq(fb_right, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 117:18] + node _T_114 = and(_T_112, _T_113) @[el2_ifu_ifc_ctl.scala 117:16] + node _T_115 = eq(fb_right2, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 117:30] + node _T_116 = and(_T_114, _T_115) @[el2_ifu_ifc_ctl.scala 117:28] + node _T_117 = eq(fb_left, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 117:43] + node _T_118 = and(_T_116, _T_117) @[el2_ifu_ifc_ctl.scala 117:41] + node _T_119 = bits(_T_118, 0, 0) @[el2_ifu_ifc_ctl.scala 117:53] + node _T_120 = bits(fb_write_f, 3, 0) @[el2_ifu_ifc_ctl.scala 117:73] node _T_121 = mux(_T_96, UInt<4>("h01"), UInt<1>("h00")) @[Mux.scala 27:72] node _T_122 = mux(_T_99, _T_101, UInt<1>("h00")) @[Mux.scala 27:72] node _T_123 = mux(_T_104, _T_106, UInt<1>("h00")) @[Mux.scala 27:72] @@ -207,65 +208,65 @@ circuit el2_ifu_ifc_ctl : node _T_129 = or(_T_128, _T_125) @[Mux.scala 27:72] wire _T_130 : UInt<4> @[Mux.scala 27:72] _T_130 <= _T_129 @[Mux.scala 27:72] - fb_write_ns <= _T_130 @[el2_ifu_ifc_ctl.scala 112:15] - node _T_131 = bits(fb_write_ns, 3, 3) @[el2_ifu_ifc_ctl.scala 119:38] - reg _T_132 : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 119:26] - _T_132 <= _T_131 @[el2_ifu_ifc_ctl.scala 119:26] - fb_full_f_ns <= _T_132 @[el2_ifu_ifc_ctl.scala 119:16] - node _T_133 = eq(state, UInt<2>("h00")) @[el2_ifu_ifc_ctl.scala 121:17] - idle <= _T_133 @[el2_ifu_ifc_ctl.scala 121:8] - node _T_134 = eq(state, UInt<2>("h03")) @[el2_ifu_ifc_ctl.scala 122:16] - wfm <= _T_134 @[el2_ifu_ifc_ctl.scala 122:7] - node _T_135 = bits(fb_write_ns, 3, 3) @[el2_ifu_ifc_ctl.scala 124:30] - fb_full_f_ns <= _T_135 @[el2_ifu_ifc_ctl.scala 124:16] - reg fb_full_f : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 125:26] - fb_full_f <= fb_full_f_ns @[el2_ifu_ifc_ctl.scala 125:26] - reg _T_136 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 126:24] - _T_136 <= fb_write_ns @[el2_ifu_ifc_ctl.scala 126:24] - fb_write_f <= _T_136 @[el2_ifu_ifc_ctl.scala 126:14] - node _T_137 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 129:40] - node _T_138 = or(_T_137, io.exu_flush_final) @[el2_ifu_ifc_ctl.scala 129:61] - node _T_139 = eq(_T_138, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 129:19] - node _T_140 = and(fb_full_f, _T_139) @[el2_ifu_ifc_ctl.scala 129:17] - node _T_141 = or(_T_140, dma_stall) @[el2_ifu_ifc_ctl.scala 129:84] - node _T_142 = and(io.ifc_fetch_req_bf_raw, _T_141) @[el2_ifu_ifc_ctl.scala 128:60] - node _T_143 = or(wfm, _T_142) @[el2_ifu_ifc_ctl.scala 128:33] - io.ifu_pmu_fetch_stall <= _T_143 @[el2_ifu_ifc_ctl.scala 128:26] + fb_write_ns <= _T_130 @[el2_ifu_ifc_ctl.scala 113:15] + node _T_131 = bits(fb_write_ns, 3, 3) @[el2_ifu_ifc_ctl.scala 120:38] + reg _T_132 : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 120:26] + _T_132 <= _T_131 @[el2_ifu_ifc_ctl.scala 120:26] + fb_full_f_ns <= _T_132 @[el2_ifu_ifc_ctl.scala 120:16] + node _T_133 = eq(state, UInt<2>("h00")) @[el2_ifu_ifc_ctl.scala 122:17] + idle <= _T_133 @[el2_ifu_ifc_ctl.scala 122:8] + node _T_134 = eq(state, UInt<2>("h03")) @[el2_ifu_ifc_ctl.scala 123:16] + wfm <= _T_134 @[el2_ifu_ifc_ctl.scala 123:7] + node _T_135 = bits(fb_write_ns, 3, 3) @[el2_ifu_ifc_ctl.scala 125:30] + fb_full_f_ns <= _T_135 @[el2_ifu_ifc_ctl.scala 125:16] + reg fb_full_f : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 126:26] + fb_full_f <= fb_full_f_ns @[el2_ifu_ifc_ctl.scala 126:26] + reg _T_136 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 127:24] + _T_136 <= fb_write_ns @[el2_ifu_ifc_ctl.scala 127:24] + fb_write_f <= _T_136 @[el2_ifu_ifc_ctl.scala 127:14] + node _T_137 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 130:40] + node _T_138 = or(_T_137, io.exu_flush_final) @[el2_ifu_ifc_ctl.scala 130:61] + node _T_139 = eq(_T_138, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 130:19] + node _T_140 = and(fb_full_f, _T_139) @[el2_ifu_ifc_ctl.scala 130:17] + node _T_141 = or(_T_140, dma_stall) @[el2_ifu_ifc_ctl.scala 130:84] + node _T_142 = and(io.ifc_fetch_req_bf_raw, _T_141) @[el2_ifu_ifc_ctl.scala 129:60] + node _T_143 = or(wfm, _T_142) @[el2_ifu_ifc_ctl.scala 129:33] + io.ifu_pmu_fetch_stall <= _T_143 @[el2_ifu_ifc_ctl.scala 129:26] node _T_144 = cat(io.ifc_fetch_addr_bf, UInt<1>("h00")) @[Cat.scala 29:58] node _T_145 = bits(_T_144, 31, 28) @[el2_lib.scala 211:25] node iccm_acc_in_region_bf = eq(_T_145, UInt<4>("h0e")) @[el2_lib.scala 211:47] node _T_146 = bits(_T_144, 31, 16) @[el2_lib.scala 214:14] node iccm_acc_in_range_bf = eq(_T_146, UInt<16>("h0ee00")) @[el2_lib.scala 214:29] - io.ifc_iccm_access_bf <= iccm_acc_in_range_bf @[el2_ifu_ifc_ctl.scala 134:25] - node _T_147 = eq(io.ifc_iccm_access_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 135:30] - node _T_148 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 136:39] - node _T_149 = eq(_T_148, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 136:18] - node _T_150 = and(fb_full_f, _T_149) @[el2_ifu_ifc_ctl.scala 136:16] - node _T_151 = or(_T_147, _T_150) @[el2_ifu_ifc_ctl.scala 135:53] - node _T_152 = eq(io.ifc_fetch_req_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 137:13] - node _T_153 = and(wfm, _T_152) @[el2_ifu_ifc_ctl.scala 137:11] - node _T_154 = or(_T_151, _T_153) @[el2_ifu_ifc_ctl.scala 136:62] - node _T_155 = or(_T_154, idle) @[el2_ifu_ifc_ctl.scala 137:35] - node _T_156 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 137:46] - node _T_157 = and(_T_155, _T_156) @[el2_ifu_ifc_ctl.scala 137:44] - node _T_158 = or(_T_157, dma_iccm_stall_any_f) @[el2_ifu_ifc_ctl.scala 137:67] - io.ifc_dma_access_ok <= _T_158 @[el2_ifu_ifc_ctl.scala 135:24] - node _T_159 = eq(iccm_acc_in_range_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 139:33] - node _T_160 = and(_T_159, iccm_acc_in_region_bf) @[el2_ifu_ifc_ctl.scala 139:55] - io.ifc_region_acc_fault_bf <= _T_160 @[el2_ifu_ifc_ctl.scala 139:30] - node _T_161 = bits(io.ifc_fetch_addr_bf, 30, 27) @[el2_ifu_ifc_ctl.scala 140:78] + io.ifc_iccm_access_bf <= iccm_acc_in_range_bf @[el2_ifu_ifc_ctl.scala 135:25] + node _T_147 = eq(io.ifc_iccm_access_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 136:30] + node _T_148 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 137:39] + node _T_149 = eq(_T_148, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 137:18] + node _T_150 = and(fb_full_f, _T_149) @[el2_ifu_ifc_ctl.scala 137:16] + node _T_151 = or(_T_147, _T_150) @[el2_ifu_ifc_ctl.scala 136:53] + node _T_152 = eq(io.ifc_fetch_req_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 138:13] + node _T_153 = and(wfm, _T_152) @[el2_ifu_ifc_ctl.scala 138:11] + node _T_154 = or(_T_151, _T_153) @[el2_ifu_ifc_ctl.scala 137:62] + node _T_155 = or(_T_154, idle) @[el2_ifu_ifc_ctl.scala 138:35] + node _T_156 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 138:46] + node _T_157 = and(_T_155, _T_156) @[el2_ifu_ifc_ctl.scala 138:44] + node _T_158 = or(_T_157, dma_iccm_stall_any_f) @[el2_ifu_ifc_ctl.scala 138:67] + io.ifc_dma_access_ok <= _T_158 @[el2_ifu_ifc_ctl.scala 136:24] + node _T_159 = eq(iccm_acc_in_range_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 140:33] + node _T_160 = and(_T_159, iccm_acc_in_region_bf) @[el2_ifu_ifc_ctl.scala 140:55] + io.ifc_region_acc_fault_bf <= _T_160 @[el2_ifu_ifc_ctl.scala 140:30] + node _T_161 = bits(io.ifc_fetch_addr_bf, 30, 27) @[el2_ifu_ifc_ctl.scala 141:78] node _T_162 = cat(_T_161, UInt<1>("h00")) @[Cat.scala 29:58] - node _T_163 = dshr(io.dec_tlu_mrac_ff, _T_162) @[el2_ifu_ifc_ctl.scala 140:53] - node _T_164 = bits(_T_163, 0, 0) @[el2_ifu_ifc_ctl.scala 140:53] - node _T_165 = not(_T_164) @[el2_ifu_ifc_ctl.scala 140:34] - io.ifc_fetch_uncacheable_bf <= _T_165 @[el2_ifu_ifc_ctl.scala 140:31] - reg _T_166 : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 142:32] - _T_166 <= io.ifc_fetch_req_bf @[el2_ifu_ifc_ctl.scala 142:32] - io.ifc_fetch_req_f <= _T_166 @[el2_ifu_ifc_ctl.scala 142:22] - node _T_167 = or(io.exu_flush_final, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 144:88] + node _T_163 = dshr(io.dec_tlu_mrac_ff, _T_162) @[el2_ifu_ifc_ctl.scala 141:53] + node _T_164 = bits(_T_163, 0, 0) @[el2_ifu_ifc_ctl.scala 141:53] + node _T_165 = not(_T_164) @[el2_ifu_ifc_ctl.scala 141:34] + io.ifc_fetch_uncacheable_bf <= _T_165 @[el2_ifu_ifc_ctl.scala 141:31] + reg _T_166 : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 143:32] + _T_166 <= io.ifc_fetch_req_bf @[el2_ifu_ifc_ctl.scala 143:32] + io.ifc_fetch_req_f <= _T_166 @[el2_ifu_ifc_ctl.scala 143:22] + node _T_167 = or(io.exu_flush_final, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 145:88] reg _T_168 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] when _T_167 : @[Reg.scala 28:19] _T_168 <= io.ifc_fetch_addr_bf @[Reg.scala 28:23] skip @[Reg.scala 28:19] - io.ifc_fetch_addr_f <= _T_168 @[el2_ifu_ifc_ctl.scala 144:23] + io.ifc_fetch_addr_f <= _T_168 @[el2_ifu_ifc_ctl.scala 145:23] diff --git a/el2_ifu_ifc_ctl.v b/el2_ifu_ifc_ctl.v index cf50ac2e..dd16792d 100644 --- a/el2_ifu_ifc_ctl.v +++ b/el2_ifu_ifc_ctl.v @@ -26,7 +26,8 @@ module el2_ifu_ifc_ctl( output io_ifc_fetch_req_bf_raw, output io_ifc_iccm_access_bf, output io_ifc_region_acc_fault_bf, - output io_ifc_dma_access_ok + output io_ifc_dma_access_ok, + output io_test ); `ifdef RANDOMIZE_REG_INIT reg [31:0] _RAND_0; @@ -37,134 +38,135 @@ module el2_ifu_ifc_ctl( reg [31:0] _RAND_5; reg [31:0] _RAND_6; `endif // RANDOMIZE_REG_INIT - reg dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 63:58] - wire dma_stall = io_ic_dma_active | dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 62:36] - reg miss_a; // @[el2_ifu_ifc_ctl.scala 65:44] - wire _T_2 = ~io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 67:26] - wire _T_3 = ~io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 67:49] - wire _T_4 = ~io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 67:71] - wire _T_5 = _T_3 | _T_4; // @[el2_ifu_ifc_ctl.scala 67:69] - wire sel_last_addr_bf = _T_2 & _T_5; // @[el2_ifu_ifc_ctl.scala 67:46] - wire _T_7 = _T_2 & io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 68:46] - wire _T_8 = _T_7 & io_ifu_bp_hit_taken_f; // @[el2_ifu_ifc_ctl.scala 68:67] - wire sel_btb_addr_bf = _T_8 & io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 68:92] - wire _T_11 = ~io_ifu_bp_hit_taken_f; // @[el2_ifu_ifc_ctl.scala 69:69] - wire _T_12 = _T_7 & _T_11; // @[el2_ifu_ifc_ctl.scala 69:67] - wire sel_next_addr_bf = _T_12 & io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 69:92] + reg dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 64:58] + wire dma_stall = io_ic_dma_active | dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 63:36] + reg miss_a; // @[el2_ifu_ifc_ctl.scala 66:44] + wire _T_2 = ~io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 68:26] + wire _T_3 = ~io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 68:49] + wire _T_4 = ~io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 68:71] + wire _T_5 = _T_3 | _T_4; // @[el2_ifu_ifc_ctl.scala 68:69] + wire sel_last_addr_bf = _T_2 & _T_5; // @[el2_ifu_ifc_ctl.scala 68:46] + wire _T_7 = _T_2 & io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 69:46] + wire _T_8 = _T_7 & io_ifu_bp_hit_taken_f; // @[el2_ifu_ifc_ctl.scala 69:67] + wire sel_btb_addr_bf = _T_8 & io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 69:92] + wire _T_11 = ~io_ifu_bp_hit_taken_f; // @[el2_ifu_ifc_ctl.scala 70:69] + wire _T_12 = _T_7 & _T_11; // @[el2_ifu_ifc_ctl.scala 70:67] + wire sel_next_addr_bf = _T_12 & io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 70:92] wire [30:0] _T_17 = io_exu_flush_final ? io_exu_flush_path_final : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_18 = sel_last_addr_bf ? io_ifc_fetch_addr_f : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_19 = sel_btb_addr_bf ? io_ifu_bp_btb_target_f : 31'h0; // @[Mux.scala 27:72] - wire [29:0] address_upper = io_ifc_fetch_addr_f[30:1] + 30'h1; // @[el2_ifu_ifc_ctl.scala 77:48] - wire _T_29 = address_upper[5] ^ io_ifc_fetch_addr_f[5]; // @[el2_ifu_ifc_ctl.scala 78:63] - wire _T_30 = ~_T_29; // @[el2_ifu_ifc_ctl.scala 78:24] - wire fetch_addr_next_0 = _T_30 & io_ifc_fetch_addr_f[0]; // @[el2_ifu_ifc_ctl.scala 78:109] + wire [29:0] address_upper = io_ifc_fetch_addr_f[30:1] + 30'h1; // @[el2_ifu_ifc_ctl.scala 78:48] + wire _T_29 = address_upper[4] ^ io_ifc_fetch_addr_f[5]; // @[el2_ifu_ifc_ctl.scala 79:63] + wire _T_30 = ~_T_29; // @[el2_ifu_ifc_ctl.scala 79:24] + wire fetch_addr_next_0 = _T_30 & io_ifc_fetch_addr_f[0]; // @[el2_ifu_ifc_ctl.scala 79:109] wire [30:0] fetch_addr_next = {address_upper,fetch_addr_next_0}; // @[Cat.scala 29:58] wire [30:0] _T_20 = sel_next_addr_bf ? fetch_addr_next : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_21 = _T_17 | _T_18; // @[Mux.scala 27:72] wire [30:0] _T_22 = _T_21 | _T_19; // @[Mux.scala 27:72] - reg [1:0] state; // @[el2_ifu_ifc_ctl.scala 102:19] - wire idle = state == 2'h0; // @[el2_ifu_ifc_ctl.scala 121:17] - wire _T_35 = io_ifu_fb_consume2 | io_ifu_fb_consume1; // @[el2_ifu_ifc_ctl.scala 84:91] - wire _T_36 = ~_T_35; // @[el2_ifu_ifc_ctl.scala 84:70] + reg [1:0] state; // @[el2_ifu_ifc_ctl.scala 103:19] + wire idle = state == 2'h0; // @[el2_ifu_ifc_ctl.scala 122:17] + wire _T_35 = io_ifu_fb_consume2 | io_ifu_fb_consume1; // @[el2_ifu_ifc_ctl.scala 85:91] + wire _T_36 = ~_T_35; // @[el2_ifu_ifc_ctl.scala 85:70] wire [3:0] _T_121 = io_exu_flush_final ? 4'h1 : 4'h0; // @[Mux.scala 27:72] - wire _T_81 = ~io_ifu_fb_consume2; // @[el2_ifu_ifc_ctl.scala 106:38] - wire _T_82 = io_ifu_fb_consume1 & _T_81; // @[el2_ifu_ifc_ctl.scala 106:36] - wire _T_48 = io_ifc_fetch_req_f & _T_4; // @[el2_ifu_ifc_ctl.scala 89:32] - wire miss_f = _T_48 & _T_2; // @[el2_ifu_ifc_ctl.scala 89:47] - wire _T_84 = _T_3 | miss_f; // @[el2_ifu_ifc_ctl.scala 106:81] - wire _T_85 = _T_82 & _T_84; // @[el2_ifu_ifc_ctl.scala 106:58] - wire _T_86 = io_ifu_fb_consume2 & io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 107:25] - wire fb_right = _T_85 | _T_86; // @[el2_ifu_ifc_ctl.scala 106:92] - wire _T_98 = _T_2 & fb_right; // @[el2_ifu_ifc_ctl.scala 113:16] - reg [3:0] fb_write_f; // @[el2_ifu_ifc_ctl.scala 126:24] + wire _T_81 = ~io_ifu_fb_consume2; // @[el2_ifu_ifc_ctl.scala 107:38] + wire _T_82 = io_ifu_fb_consume1 & _T_81; // @[el2_ifu_ifc_ctl.scala 107:36] + wire _T_48 = io_ifc_fetch_req_f & _T_4; // @[el2_ifu_ifc_ctl.scala 90:32] + wire miss_f = _T_48 & _T_2; // @[el2_ifu_ifc_ctl.scala 90:47] + wire _T_84 = _T_3 | miss_f; // @[el2_ifu_ifc_ctl.scala 107:81] + wire _T_85 = _T_82 & _T_84; // @[el2_ifu_ifc_ctl.scala 107:58] + wire _T_86 = io_ifu_fb_consume2 & io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 108:25] + wire fb_right = _T_85 | _T_86; // @[el2_ifu_ifc_ctl.scala 107:92] + wire _T_98 = _T_2 & fb_right; // @[el2_ifu_ifc_ctl.scala 114:16] + reg [3:0] fb_write_f; // @[el2_ifu_ifc_ctl.scala 127:24] wire [3:0] _T_101 = {1'h0,fb_write_f[3:1]}; // @[Cat.scala 29:58] wire [3:0] _T_122 = _T_98 ? _T_101 : 4'h0; // @[Mux.scala 27:72] wire [3:0] _T_126 = _T_121 | _T_122; // @[Mux.scala 27:72] - wire fb_right2 = io_ifu_fb_consume2 & _T_84; // @[el2_ifu_ifc_ctl.scala 109:36] - wire _T_103 = _T_2 & fb_right2; // @[el2_ifu_ifc_ctl.scala 114:16] + wire fb_right2 = io_ifu_fb_consume2 & _T_84; // @[el2_ifu_ifc_ctl.scala 110:36] + wire _T_103 = _T_2 & fb_right2; // @[el2_ifu_ifc_ctl.scala 115:16] wire [3:0] _T_106 = {2'h0,fb_write_f[3:2]}; // @[Cat.scala 29:58] wire [3:0] _T_123 = _T_103 ? _T_106 : 4'h0; // @[Mux.scala 27:72] wire [3:0] _T_127 = _T_126 | _T_123; // @[Mux.scala 27:72] - wire _T_91 = io_ifu_fb_consume1 | io_ifu_fb_consume2; // @[el2_ifu_ifc_ctl.scala 110:56] - wire _T_92 = ~_T_91; // @[el2_ifu_ifc_ctl.scala 110:35] - wire _T_93 = io_ifc_fetch_req_f & _T_92; // @[el2_ifu_ifc_ctl.scala 110:33] - wire _T_94 = ~miss_f; // @[el2_ifu_ifc_ctl.scala 110:80] - wire fb_left = _T_93 & _T_94; // @[el2_ifu_ifc_ctl.scala 110:78] - wire _T_108 = _T_2 & fb_left; // @[el2_ifu_ifc_ctl.scala 115:16] + wire _T_91 = io_ifu_fb_consume1 | io_ifu_fb_consume2; // @[el2_ifu_ifc_ctl.scala 111:56] + wire _T_92 = ~_T_91; // @[el2_ifu_ifc_ctl.scala 111:35] + wire _T_93 = io_ifc_fetch_req_f & _T_92; // @[el2_ifu_ifc_ctl.scala 111:33] + wire _T_94 = ~miss_f; // @[el2_ifu_ifc_ctl.scala 111:80] + wire fb_left = _T_93 & _T_94; // @[el2_ifu_ifc_ctl.scala 111:78] + wire _T_108 = _T_2 & fb_left; // @[el2_ifu_ifc_ctl.scala 116:16] wire [3:0] _T_111 = {fb_write_f[2:0],1'h0}; // @[Cat.scala 29:58] wire [3:0] _T_124 = _T_108 ? _T_111 : 4'h0; // @[Mux.scala 27:72] wire [3:0] _T_128 = _T_127 | _T_124; // @[Mux.scala 27:72] - wire _T_113 = ~fb_right; // @[el2_ifu_ifc_ctl.scala 116:18] - wire _T_114 = _T_2 & _T_113; // @[el2_ifu_ifc_ctl.scala 116:16] - wire _T_115 = ~fb_right2; // @[el2_ifu_ifc_ctl.scala 116:30] - wire _T_116 = _T_114 & _T_115; // @[el2_ifu_ifc_ctl.scala 116:28] - wire _T_117 = ~fb_left; // @[el2_ifu_ifc_ctl.scala 116:43] - wire _T_118 = _T_116 & _T_117; // @[el2_ifu_ifc_ctl.scala 116:41] + wire _T_113 = ~fb_right; // @[el2_ifu_ifc_ctl.scala 117:18] + wire _T_114 = _T_2 & _T_113; // @[el2_ifu_ifc_ctl.scala 117:16] + wire _T_115 = ~fb_right2; // @[el2_ifu_ifc_ctl.scala 117:30] + wire _T_116 = _T_114 & _T_115; // @[el2_ifu_ifc_ctl.scala 117:28] + wire _T_117 = ~fb_left; // @[el2_ifu_ifc_ctl.scala 117:43] + wire _T_118 = _T_116 & _T_117; // @[el2_ifu_ifc_ctl.scala 117:41] wire [3:0] _T_125 = _T_118 ? fb_write_f : 4'h0; // @[Mux.scala 27:72] wire [3:0] fb_write_ns = _T_128 | _T_125; // @[Mux.scala 27:72] - wire fb_full_f_ns = fb_write_ns[3]; // @[el2_ifu_ifc_ctl.scala 124:30] - wire _T_37 = fb_full_f_ns & _T_36; // @[el2_ifu_ifc_ctl.scala 84:68] - wire _T_38 = ~_T_37; // @[el2_ifu_ifc_ctl.scala 84:53] - wire _T_39 = io_ifc_fetch_req_bf_raw & _T_38; // @[el2_ifu_ifc_ctl.scala 84:51] - wire _T_40 = ~dma_stall; // @[el2_ifu_ifc_ctl.scala 85:5] - wire _T_41 = _T_39 & _T_40; // @[el2_ifu_ifc_ctl.scala 84:114] - wire _T_42 = ~io_ic_write_stall; // @[el2_ifu_ifc_ctl.scala 85:18] - wire _T_43 = _T_41 & _T_42; // @[el2_ifu_ifc_ctl.scala 85:16] - wire _T_44 = ~io_dec_tlu_flush_noredir_wb; // @[el2_ifu_ifc_ctl.scala 85:39] - wire fetch_bf_en = io_exu_flush_final | io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 87:37] - wire _T_51 = io_ifu_ic_mb_empty | io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 91:39] - wire _T_53 = _T_51 & _T_40; // @[el2_ifu_ifc_ctl.scala 91:61] - wire _T_55 = _T_53 & _T_94; // @[el2_ifu_ifc_ctl.scala 91:74] - wire _T_56 = ~miss_a; // @[el2_ifu_ifc_ctl.scala 91:86] - wire mb_empty_mod = _T_55 & _T_56; // @[el2_ifu_ifc_ctl.scala 91:84] - wire goto_idle = io_exu_flush_final & io_dec_tlu_flush_noredir_wb; // @[el2_ifu_ifc_ctl.scala 93:35] - wire _T_60 = io_exu_flush_final & _T_44; // @[el2_ifu_ifc_ctl.scala 95:36] - wire leave_idle = _T_60 & idle; // @[el2_ifu_ifc_ctl.scala 95:67] - wire _T_63 = ~state[1]; // @[el2_ifu_ifc_ctl.scala 97:23] - wire _T_65 = _T_63 & state[0]; // @[el2_ifu_ifc_ctl.scala 97:33] - wire _T_66 = _T_65 & miss_f; // @[el2_ifu_ifc_ctl.scala 97:44] - wire _T_67 = ~goto_idle; // @[el2_ifu_ifc_ctl.scala 97:55] - wire _T_68 = _T_66 & _T_67; // @[el2_ifu_ifc_ctl.scala 97:53] - wire _T_70 = ~mb_empty_mod; // @[el2_ifu_ifc_ctl.scala 98:17] - wire _T_71 = state[1] & _T_70; // @[el2_ifu_ifc_ctl.scala 98:15] - wire _T_73 = _T_71 & _T_67; // @[el2_ifu_ifc_ctl.scala 98:31] - wire next_state_1 = _T_68 | _T_73; // @[el2_ifu_ifc_ctl.scala 97:67] - wire _T_75 = _T_67 & leave_idle; // @[el2_ifu_ifc_ctl.scala 100:34] - wire _T_78 = state[0] & _T_67; // @[el2_ifu_ifc_ctl.scala 100:60] - wire next_state_0 = _T_75 | _T_78; // @[el2_ifu_ifc_ctl.scala 100:48] - wire wfm = state == 2'h3; // @[el2_ifu_ifc_ctl.scala 122:16] - reg fb_full_f; // @[el2_ifu_ifc_ctl.scala 125:26] - wire _T_138 = _T_35 | io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 129:61] - wire _T_139 = ~_T_138; // @[el2_ifu_ifc_ctl.scala 129:19] - wire _T_140 = fb_full_f & _T_139; // @[el2_ifu_ifc_ctl.scala 129:17] - wire _T_141 = _T_140 | dma_stall; // @[el2_ifu_ifc_ctl.scala 129:84] - wire _T_142 = io_ifc_fetch_req_bf_raw & _T_141; // @[el2_ifu_ifc_ctl.scala 128:60] + wire fb_full_f_ns = fb_write_ns[3]; // @[el2_ifu_ifc_ctl.scala 125:30] + wire _T_37 = fb_full_f_ns & _T_36; // @[el2_ifu_ifc_ctl.scala 85:68] + wire _T_38 = ~_T_37; // @[el2_ifu_ifc_ctl.scala 85:53] + wire _T_39 = io_ifc_fetch_req_bf_raw & _T_38; // @[el2_ifu_ifc_ctl.scala 85:51] + wire _T_40 = ~dma_stall; // @[el2_ifu_ifc_ctl.scala 86:5] + wire _T_41 = _T_39 & _T_40; // @[el2_ifu_ifc_ctl.scala 85:114] + wire _T_42 = ~io_ic_write_stall; // @[el2_ifu_ifc_ctl.scala 86:18] + wire _T_43 = _T_41 & _T_42; // @[el2_ifu_ifc_ctl.scala 86:16] + wire _T_44 = ~io_dec_tlu_flush_noredir_wb; // @[el2_ifu_ifc_ctl.scala 86:39] + wire fetch_bf_en = io_exu_flush_final | io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 88:37] + wire _T_51 = io_ifu_ic_mb_empty | io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 92:39] + wire _T_53 = _T_51 & _T_40; // @[el2_ifu_ifc_ctl.scala 92:61] + wire _T_55 = _T_53 & _T_94; // @[el2_ifu_ifc_ctl.scala 92:74] + wire _T_56 = ~miss_a; // @[el2_ifu_ifc_ctl.scala 92:86] + wire mb_empty_mod = _T_55 & _T_56; // @[el2_ifu_ifc_ctl.scala 92:84] + wire goto_idle = io_exu_flush_final & io_dec_tlu_flush_noredir_wb; // @[el2_ifu_ifc_ctl.scala 94:35] + wire _T_60 = io_exu_flush_final & _T_44; // @[el2_ifu_ifc_ctl.scala 96:36] + wire leave_idle = _T_60 & idle; // @[el2_ifu_ifc_ctl.scala 96:67] + wire _T_63 = ~state[1]; // @[el2_ifu_ifc_ctl.scala 98:23] + wire _T_65 = _T_63 & state[0]; // @[el2_ifu_ifc_ctl.scala 98:33] + wire _T_66 = _T_65 & miss_f; // @[el2_ifu_ifc_ctl.scala 98:44] + wire _T_67 = ~goto_idle; // @[el2_ifu_ifc_ctl.scala 98:55] + wire _T_68 = _T_66 & _T_67; // @[el2_ifu_ifc_ctl.scala 98:53] + wire _T_70 = ~mb_empty_mod; // @[el2_ifu_ifc_ctl.scala 99:17] + wire _T_71 = state[1] & _T_70; // @[el2_ifu_ifc_ctl.scala 99:15] + wire _T_73 = _T_71 & _T_67; // @[el2_ifu_ifc_ctl.scala 99:31] + wire next_state_1 = _T_68 | _T_73; // @[el2_ifu_ifc_ctl.scala 98:67] + wire _T_75 = _T_67 & leave_idle; // @[el2_ifu_ifc_ctl.scala 101:34] + wire _T_78 = state[0] & _T_67; // @[el2_ifu_ifc_ctl.scala 101:60] + wire next_state_0 = _T_75 | _T_78; // @[el2_ifu_ifc_ctl.scala 101:48] + wire wfm = state == 2'h3; // @[el2_ifu_ifc_ctl.scala 123:16] + reg fb_full_f; // @[el2_ifu_ifc_ctl.scala 126:26] + wire _T_138 = _T_35 | io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 130:61] + wire _T_139 = ~_T_138; // @[el2_ifu_ifc_ctl.scala 130:19] + wire _T_140 = fb_full_f & _T_139; // @[el2_ifu_ifc_ctl.scala 130:17] + wire _T_141 = _T_140 | dma_stall; // @[el2_ifu_ifc_ctl.scala 130:84] + wire _T_142 = io_ifc_fetch_req_bf_raw & _T_141; // @[el2_ifu_ifc_ctl.scala 129:60] wire [31:0] _T_144 = {io_ifc_fetch_addr_bf,1'h0}; // @[Cat.scala 29:58] wire iccm_acc_in_region_bf = _T_144[31:28] == 4'he; // @[el2_lib.scala 211:47] wire iccm_acc_in_range_bf = _T_144[31:16] == 16'hee00; // @[el2_lib.scala 214:29] - wire _T_147 = ~io_ifc_iccm_access_bf; // @[el2_ifu_ifc_ctl.scala 135:30] - wire _T_150 = fb_full_f & _T_36; // @[el2_ifu_ifc_ctl.scala 136:16] - wire _T_151 = _T_147 | _T_150; // @[el2_ifu_ifc_ctl.scala 135:53] - wire _T_152 = ~io_ifc_fetch_req_bf; // @[el2_ifu_ifc_ctl.scala 137:13] - wire _T_153 = wfm & _T_152; // @[el2_ifu_ifc_ctl.scala 137:11] - wire _T_154 = _T_151 | _T_153; // @[el2_ifu_ifc_ctl.scala 136:62] - wire _T_155 = _T_154 | idle; // @[el2_ifu_ifc_ctl.scala 137:35] - wire _T_157 = _T_155 & _T_2; // @[el2_ifu_ifc_ctl.scala 137:44] - wire _T_159 = ~iccm_acc_in_range_bf; // @[el2_ifu_ifc_ctl.scala 139:33] + wire _T_147 = ~io_ifc_iccm_access_bf; // @[el2_ifu_ifc_ctl.scala 136:30] + wire _T_150 = fb_full_f & _T_36; // @[el2_ifu_ifc_ctl.scala 137:16] + wire _T_151 = _T_147 | _T_150; // @[el2_ifu_ifc_ctl.scala 136:53] + wire _T_152 = ~io_ifc_fetch_req_bf; // @[el2_ifu_ifc_ctl.scala 138:13] + wire _T_153 = wfm & _T_152; // @[el2_ifu_ifc_ctl.scala 138:11] + wire _T_154 = _T_151 | _T_153; // @[el2_ifu_ifc_ctl.scala 137:62] + wire _T_155 = _T_154 | idle; // @[el2_ifu_ifc_ctl.scala 138:35] + wire _T_157 = _T_155 & _T_2; // @[el2_ifu_ifc_ctl.scala 138:44] + wire _T_159 = ~iccm_acc_in_range_bf; // @[el2_ifu_ifc_ctl.scala 140:33] wire [4:0] _T_162 = {io_ifc_fetch_addr_bf[30:27],1'h0}; // @[Cat.scala 29:58] - wire [31:0] _T_163 = io_dec_tlu_mrac_ff >> _T_162; // @[el2_ifu_ifc_ctl.scala 140:53] - reg _T_166; // @[el2_ifu_ifc_ctl.scala 142:32] + wire [31:0] _T_163 = io_dec_tlu_mrac_ff >> _T_162; // @[el2_ifu_ifc_ctl.scala 141:53] + reg _T_166; // @[el2_ifu_ifc_ctl.scala 143:32] reg [30:0] _T_168; // @[Reg.scala 27:20] - assign io_ifc_fetch_addr_f = _T_168; // @[el2_ifu_ifc_ctl.scala 144:23] - assign io_ifc_fetch_addr_bf = _T_22 | _T_20; // @[el2_ifu_ifc_ctl.scala 72:24] - assign io_ifc_fetch_req_f = _T_166; // @[el2_ifu_ifc_ctl.scala 142:22] - assign io_ifu_pmu_fetch_stall = wfm | _T_142; // @[el2_ifu_ifc_ctl.scala 128:26] - assign io_ifc_fetch_uncacheable_bf = ~_T_163[0]; // @[el2_ifu_ifc_ctl.scala 140:31] - assign io_ifc_fetch_req_bf = _T_43 & _T_44; // @[el2_ifu_ifc_ctl.scala 84:23] - assign io_ifc_fetch_req_bf_raw = ~idle; // @[el2_ifu_ifc_ctl.scala 82:27] - assign io_ifc_iccm_access_bf = _T_144[31:16] == 16'hee00; // @[el2_ifu_ifc_ctl.scala 134:25] - assign io_ifc_region_acc_fault_bf = _T_159 & iccm_acc_in_region_bf; // @[el2_ifu_ifc_ctl.scala 139:30] - assign io_ifc_dma_access_ok = _T_157 | dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 135:24] + assign io_ifc_fetch_addr_f = _T_168; // @[el2_ifu_ifc_ctl.scala 145:23] + assign io_ifc_fetch_addr_bf = _T_22 | _T_20; // @[el2_ifu_ifc_ctl.scala 73:24] + assign io_ifc_fetch_req_f = _T_166; // @[el2_ifu_ifc_ctl.scala 143:22] + assign io_ifu_pmu_fetch_stall = wfm | _T_142; // @[el2_ifu_ifc_ctl.scala 129:26] + assign io_ifc_fetch_uncacheable_bf = ~_T_163[0]; // @[el2_ifu_ifc_ctl.scala 141:31] + assign io_ifc_fetch_req_bf = _T_43 & _T_44; // @[el2_ifu_ifc_ctl.scala 85:23] + assign io_ifc_fetch_req_bf_raw = ~idle; // @[el2_ifu_ifc_ctl.scala 83:27] + assign io_ifc_iccm_access_bf = _T_144[31:16] == 16'hee00; // @[el2_ifu_ifc_ctl.scala 135:25] + assign io_ifc_region_acc_fault_bf = _T_159 & iccm_acc_in_region_bf; // @[el2_ifu_ifc_ctl.scala 140:30] + assign io_ifc_dma_access_ok = _T_157 | dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 136:24] + assign io_test = _T_30 & io_ifc_fetch_addr_f[0]; // @[el2_ifu_ifc_ctl.scala 80:11] `ifdef RANDOMIZE_GARBAGE_ASSIGN `define RANDOMIZE `endif diff --git a/src/main/scala/ifu/el2_ifu_ifc_ctl.scala b/src/main/scala/ifu/el2_ifu_ifc_ctl.scala index fc847fce..591e31b6 100644 --- a/src/main/scala/ifu/el2_ifu_ifc_ctl.scala +++ b/src/main/scala/ifu/el2_ifu_ifc_ctl.scala @@ -33,6 +33,7 @@ class el2_ifu_ifc_ctl extends Module with el2_lib with RequireAsyncReset { val ifc_iccm_access_bf = Output(Bool()) val ifc_region_acc_fault_bf = Output(Bool()) val ifc_dma_access_ok = Output(Bool()) + val test = Output(Bool()) }) val fetch_addr_bf = WireInit(UInt(31.W), init = 0.U) @@ -75,8 +76,8 @@ class el2_ifu_ifc_ctl extends Module with el2_lib with RequireAsyncReset { sel_next_addr_bf.asBool -> fetch_addr_next)) // PC+4 val address_upper = io.ifc_fetch_addr_f(30,1)+1.U - fetch_addr_next_0 := !(address_upper(ICACHE_TAG_INDEX_LO-1) ^ io.ifc_fetch_addr_f(ICACHE_TAG_INDEX_LO-1)) & io.ifc_fetch_addr_f(0) - + fetch_addr_next_0 := !(address_upper(ICACHE_TAG_INDEX_LO-2) ^ io.ifc_fetch_addr_f(ICACHE_TAG_INDEX_LO-1)) & io.ifc_fetch_addr_f(0) + io.test := fetch_addr_next_0 fetch_addr_next := Cat(address_upper, fetch_addr_next_0) io.ifc_fetch_req_bf_raw := ~idle diff --git a/target/scala-2.12/classes/ifu/el2_ifu_ifc_ctl$$anon$1.class b/target/scala-2.12/classes/ifu/el2_ifu_ifc_ctl$$anon$1.class index 0be8117fbae5aef18d232accbc2a4e122194c247..d33171ad8c4523c982346ce39b62450c67e16c76 100644 GIT binary patch literal 5326 zcma)=S$7=8703TIwmhDpwabzht=0gt01M05A(4S#Sr7$z3El`HG(9~%Qlp-paZitz zEI<+nA!H#dAuHMU1QaX+BpjZTw|s%TBv1JcIr&$WW;AN5bI>`ed%N!aRo$wtx?MGY z`|q1?1Gock3+(gDjTtYPwJG`U+HM>a3QkxJ3x~200$uKkU-yE;GshcYDe$t`Ca^03 z9IU%e;0W{^8p~pbz-+UTg{!r|cl~(2TB-Sgce)n))v#XJ`Zymr^?DXN1xEirmqnhP z8eoRlBx{bl>MVPOBKE5FtTLWZq2>Rx6;$rh+0Y(_F|uG2pwQM;YCaFee4h=rSV-B}A$T03vyfYvTrnAUzDwQ!5p zK4#%ot$p0WZQ9Saa8PTGg&D267H-#?XW@|6mMzR`&9`t^YpWKso|=M+g(F(43hX%M zhkkrFcgK`zPUj9>piiONh`mT)thswra#ecr0AP6M1aMlWiG(F|0LYuKNsM zYzx(uD#*{}@L4?F2B@V;;PdT(u2jGma(EWcF>^Y#T5!$6^EjGk&6nixS{_<@?%%~3yiJ#*ac?{y00yCQvYIff2e`BLQk6-6Gq~EkngtTPw zJLcQwAWt`9y(a#^q|_SYMy(p+D>?iTujX0so$NAhA7-q1_4Vpr@gRaQ=5`ZY)Ue% zDaoX!BvYD_OlV3noly>hSqw*6Ugy&crJ(GXehqiNLM4NBmOE7CPP|Ut(hhh(KENlz z>6l}ggzrkiIU_u5gzrhhc_TbxgzrtlHyGhjBRrpkEh9W;gcp)VT2DG;UEd`H^O%q;V=nL z8sQ^GxR!(qM)(pUepmR#*!CPcs3G(3=`~zi$ERP%Q`DYW!xz`_WnHz77v90wuj5W_ z_|`gJY%{!c9e1S}?nyJ;n`W3#Gc2ST?oTr;rWqd4hVQT8$30`~_}MyswT|Dm4e9sS zaViZy^B&*_)8KPyh6`zihuXRuPl@$m`mC)XWjud+2OQ5M@4@F$?bH5#3G@9vmS!lX z8A@q}a++Z!&G2}dAxJZXX@=UXt>e^X-k|~h7=@j@{^oFu+Iif7kcX>h(TSIN-*^Mv z_y>CMAM}cD{+cv}ezAlB;qlj^Com{p#E^Ikd&EDnH?s}HnPH4%j$kx%3S*gNjAx$0 zMCK*z&#YlG^LG?7|6+gg_%^6F+{W>ZTMu=-#t-|SY3mTE_w;a2zQKoS${d5TSavax zUdn#T0m?zjAxiFD{`KNbmfP6@@D~3wB>zJB0)Gu0=Dm@3U>*{AL6HSNY=SpJgxki3EtNE$V@AEt7pM%&mRe8!5k>~djVZ|#^7aJ Y7Cd3`S2tPklOkha!HgyFS4M^Z0i5%Bw*UYD literal 5206 zcma)AX?GmO6}>fH#xt~bS+cF&8bB6cVHrb$9S1DiAR=23SvE_c)6>(V>8PiB=;^^G z3n2@EgluGC$x2wVu?s8$oRh=nkWcvo`2qP4Ioz(&j7Cj02c4sOuj;*9@6~p@YX0^A z_x}mt27Dkeeu^l3WFVyD1tvy)SoYMyJm(Ogiixt_CFi`>Ak7q(XCJgZ*MVwb?^r{l87GpGj4 z6r0GJWv^N*PT@olc!exF1iBKYEV=}CNV^8NJnu)u_0mPEZAmq|E{8#tUgv@fZYio{ zv758DwM}4GIdmM;_Es5xp_#y(7uc&u1@e|1xeslaJ6q;BC0cWwUEiz*C5PR(wpno_ zv&?SfirHqhXgbwe^zcSYxoFy)(ni%e^of>PfjuS1HY2ZLmc2&3V){Yol-$s~SfsOa zso7k1eajQ*-)yN_QN`S7-pnwb5oXvMr&6rR%pz;m@#FmB%@8*hqoNsE;ff=(?%)7Q zRm)T(=0vf6F?1uxtVfo|n7y&pwe6~EFfBhGSu^WuXxV0&y?4iZwd_Q8#k5MLFb>$0 zXez2nYPyBagRQh`RgP4GH=^#@#5R1}vMY{N^c*wpqAgO~McmZC>8+Z~(7Gt6!B(kT zw(ZpG(swZS4V@M4a}JuxSPd_d7MZV_3+WwjZ}dzZXf40m9R~JbZw?vUD6l=^Sriyq z(44d8q2+RPw{;@-kb!*|iu*WfU|4BiFfgLDFB%wC+N}o0ls0EzTxq8aOepO(1N)UW zzcqy11O_Hih(jzGxKg>DHE@+`yVJncs_n}Lrj&NhzyYP5H!!XI?ly3Z((W~ItKH%r4>-o{8V7D<=tdrN#Zh>pXbntr{WH7&QtrPfYIzAcFN+{I=p0fiGL=CK0M2T zHc`zGS^S14{S%QT=yy5%7QYvmoSNS}#!cYXF9Q7s@y9&cUqxUbvSS`oH6hFPAKmI4y#?KeA^4^uD_yO`Ndoc8lml+<{g6OrTF?W?|Te4 z@0SDaK-oe<$Z*et?AIH!D7D_038f?tN=X)!k{l={8Bj{{pOj=jDan0OlIEl&$w^6y zlad4{CFxB{lADyIHYrJLQj*rBB&kVBN|Ta=CMD@iN|KqBq%tWd-{YmgXE%-X^n9U@3SPMR=1zSn*h!#Af1=~sRs1|&^ z7VIR!V_NVbEqEmf9@m0rwO}_1p3s61Yr(5Y@O~}$1}(Un1W#(gJ_3FkNc!76?4X9s zzo*ym&^o^UF1|(WyK8uS9Y0b{>-fos_}OLLqzu1U$FJH9PhZBdG{f;U!!2os6KRH% zX@=8jhTGE&cPPViYxqO=*gF2Sj+fW**R~=3{W8v^ffqjm_^veYQkr2o&2XVD+;~c^ z_t58!HKdH^%@4ux-1ixL?pHqT>q{`#*Gw~5X$CvZ;G`K=(hP2zVKvQAeXDix3Hize z`0EgM@mZR~F>1@Wf{!2rkD~+6^F{C;y6_)#R$WacBriZ59M>P&51vUs{s!(06P zUZ!n_K&`u*$8MdKY04ZEGFWypi5|*6%6`fL%0WsVPyY4bU6$J!0Qd+0Geo{e`6Pdu z8{&X?+2vJ^&xg3+=ST2WO^tU3K11RvZ;67hZ&rEn5`2BLAc+XRuW98sNALyBD)~_G prOkqz%wO!{f=ng&hNlZ}0(=U`1@A%p2`ny1{DKqB;(aEBj{$VdU;_XE diff --git a/target/scala-2.12/classes/ifu/el2_ifu_ifc_ctl.class b/target/scala-2.12/classes/ifu/el2_ifu_ifc_ctl.class index 2e890ef02445906da23a48cc24b88c23ab69692c..c4b96aa6f0f25e02b9db9dc70eb0feeb34592d97 100644 GIT binary patch literal 116753 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 literal 115851 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 diff --git a/target/scala-2.12/classes/ifu/ifu_ifc$.class b/target/scala-2.12/classes/ifu/ifu_ifc$.class index ca749c3bdfb804dcc71583cbf886a64fdc09a817..2ecfb3adaaa46c832e1cc0207b0af7c26e17e196 100644 GIT binary patch delta 99 zcmZ21w^(k&3ogbflV5V#0!as6@yT}Fo>10&ZYv<`7Pk$M6z74+OHR(?u>kUy^SFXl iNls?twFI+b7^hC2%j?TJl|h|h%H;RF6+qDpzTE&<@gN8Q delta 99 zcmZ21w^(k&3ogdVlV5V#0!as6@yT}Fo>10&ZYv<`7Pk$M6z74+OHR(?u>kUy^SFXl iNls?twFI+b7^h60%j?TJg+ZNR^5plt6+qDpzTE&-rXTwN diff --git a/target/scala-2.12/classes/ifu/ifu_ifc$delayedInit$body.class b/target/scala-2.12/classes/ifu/ifu_ifc$delayedInit$body.class index 632a3a69823cb128141798a138a05437e388bfec..e0a936eefedf5371ed3e1886a6d954cb6a66061d 100644 GIT binary patch delta 19 ZcmaFB`hazVGZW*K$u3L*KyoURHvmRo28aLv delta 19 ZcmaFB`hazVGZW+F$u3L*KyoURHvmRY28I9t