diff --git a/el2_ifu_bp_ctl.anno.json b/el2_ifu_bp_ctl.anno.json index e672bdc2..69285930 100644 --- a/el2_ifu_bp_ctl.anno.json +++ b/el2_ifu_bp_ctl.anno.json @@ -25,6 +25,13 @@ "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_exu_i0_br_index_r" ] }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifu_bp_hist0_f", + "sources":[ + "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifc_fetch_addr_f" + ] + }, { "class":"firrtl.transforms.CombinationalPath", "sink":"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifu_bp_way_f", @@ -41,6 +48,19 @@ "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_exu_i0_br_index_r" ] }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifu_bp_hist1_f", + "sources":[ + "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifc_fetch_addr_f", + "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifc_fetch_req_f", + "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_dec_tlu_flush_leak_one_wb", + "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_dec_tlu_flush_lower_wb", + "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_dec_tlu_br0_r_pkt_br_start_error", + "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_dec_tlu_br0_r_pkt_br_error", + "~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_exu_i0_br_index_r" + ] + }, { "class":"firrtl.transforms.CombinationalPath", "sink":"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifu_bp_poffset_f", diff --git a/el2_ifu_bp_ctl.fir b/el2_ifu_bp_ctl.fir index 54e02db6..427cd223 100644 --- a/el2_ifu_bp_ctl.fir +++ b/el2_ifu_bp_ctl.fir @@ -484,8 +484,8 @@ circuit el2_ifu_bp_ctl : fghr <= _T_339 @[el2_ifu_bp_ctl.scala 282:8] io.ifu_bp_fghr_f <= fghr @[el2_ifu_bp_ctl.scala 284:20] io.ifu_bp_way_f <= way_raw @[el2_ifu_bp_ctl.scala 286:19] - io.ifu_bp_hist1_f <= UInt<1>("h01") @[el2_ifu_bp_ctl.scala 287:21] - io.ifu_bp_hist0_f <= UInt<2>("h02") @[el2_ifu_bp_ctl.scala 288:21] + io.ifu_bp_hist1_f <= hist1_raw @[el2_ifu_bp_ctl.scala 287:21] + io.ifu_bp_hist0_f <= hist0_raw @[el2_ifu_bp_ctl.scala 288:21] io.ifu_bp_pc4_f <= pc4_raw @[el2_ifu_bp_ctl.scala 289:19] node _T_340 = bits(io.dec_tlu_bpred_disable, 0, 0) @[Bitwise.scala 72:15] node _T_341 = mux(_T_340, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] diff --git a/el2_ifu_bp_ctl.v b/el2_ifu_bp_ctl.v index 86d7f8b9..dddf0435 100644 --- a/el2_ifu_bp_ctl.v +++ b/el2_ifu_bp_ctl.v @@ -10644,8 +10644,8 @@ module el2_ifu_bp_ctl( assign io_ifu_bp_fghr_f = fghr; // @[el2_ifu_bp_ctl.scala 284:20] assign io_ifu_bp_way_f = tag_match_vway1_expanded_f | _T_212; // @[el2_ifu_bp_ctl.scala 286:19] assign io_ifu_bp_ret_f = {_T_293,_T_299}; // @[el2_ifu_bp_ctl.scala 292:19] - assign io_ifu_bp_hist1_f = 2'h1; // @[el2_ifu_bp_ctl.scala 287:21] - assign io_ifu_bp_hist0_f = 2'h2; // @[el2_ifu_bp_ctl.scala 288:21] + assign io_ifu_bp_hist1_f = bht_force_taken_f | _T_278; // @[el2_ifu_bp_ctl.scala 287:21] + assign io_ifu_bp_hist0_f = {bht_vbank1_rd_data_f[0],bht_vbank0_rd_data_f[0]}; // @[el2_ifu_bp_ctl.scala 288:21] assign io_ifu_bp_pc4_f = {_T_284,_T_287}; // @[el2_ifu_bp_ctl.scala 289:19] assign io_ifu_bp_valid_f = vwayhit_f & _T_342; // @[el2_ifu_bp_ctl.scala 291:21] assign io_ifu_bp_poffset_f = btb_sel_data_f[15:4]; // @[el2_ifu_bp_ctl.scala 304:23] diff --git a/src/main/scala/ifu/el2_ifu_bp_ctl.scala b/src/main/scala/ifu/el2_ifu_bp_ctl.scala index b0f93128..14ffe012 100644 --- a/src/main/scala/ifu/el2_ifu_bp_ctl.scala +++ b/src/main/scala/ifu/el2_ifu_bp_ctl.scala @@ -284,8 +284,8 @@ class el2_ifu_bp_ctl extends Module with el2_lib with RequireAsyncReset { io.ifu_bp_fghr_f := fghr io.ifu_bp_way_f := way_raw - io.ifu_bp_hist1_f := 1.U//hist1_raw - io.ifu_bp_hist0_f := 2.U//hist0_raw + io.ifu_bp_hist1_f := hist1_raw + io.ifu_bp_hist0_f := hist0_raw io.ifu_bp_pc4_f := pc4_raw io.ifu_bp_valid_f := vwayhit_f & ~Fill(2, io.dec_tlu_bpred_disable) diff --git a/target/scala-2.12/classes/ifu/el2_ifu_bp_ctl.class b/target/scala-2.12/classes/ifu/el2_ifu_bp_ctl.class index abe1d20d..178c8911 100644 Binary files a/target/scala-2.12/classes/ifu/el2_ifu_bp_ctl.class and b/target/scala-2.12/classes/ifu/el2_ifu_bp_ctl.class differ