From ae7440610acad0c4cb089108ccf69471b39553f3 Mon Sep 17 00:00:00 2001 From: waleed-lm Date: Wed, 21 Oct 2020 16:46:27 +0500 Subject: [PATCH] bank0 updated updated --- el2_ifu_bp_ctl.fir | 22 +++++++++--------- el2_ifu_bp_ctl.v | 14 +++++------ src/main/scala/ifu/el2_ifu_bp_ctl.scala | 2 +- src/main/scala/lib/el2_lib.scala | 2 +- .../classes/ifu/el2_ifu_bp_ctl.class | Bin 180794 -> 180796 bytes target/scala-2.12/classes/lib/el2_lib.class | Bin 44509 -> 44509 bytes 6 files changed, 19 insertions(+), 21 deletions(-) diff --git a/el2_ifu_bp_ctl.fir b/el2_ifu_bp_ctl.fir index 68474f02..3ab1754d 100644 --- a/el2_ifu_bp_ctl.fir +++ b/el2_ifu_bp_ctl.fir @@ -11,7 +11,7 @@ circuit el2_ifu_bp_ctl : bht_dir_f <= UInt<1>("h00") wire dec_tlu_error_wb : UInt<1> dec_tlu_error_wb <= UInt<1>("h00") - wire btb_error_addr_wb : UInt<7> + wire btb_error_addr_wb : UInt<8> btb_error_addr_wb <= UInt<1>("h00") wire btb_bank0_rd_data_way0_f : UInt<22> btb_bank0_rd_data_way0_f <= UInt<1>("h00") @@ -33,20 +33,20 @@ circuit el2_ifu_bp_ctl : dec_tlu_error_wb <= _T_1 @[el2_ifu_bp_ctl.scala 91:20] btb_error_addr_wb <= io.exu_i0_br_index_r @[el2_ifu_bp_ctl.scala 92:21] dec_tlu_way_wb <= io.dec_tlu_br0_r_pkt.way @[el2_ifu_bp_ctl.scala 93:18] - node _T_2 = bits(io.ifc_fetch_addr_f, 8, 1) @[el2_lib.scala 196:12] - node _T_3 = bits(io.ifc_fetch_addr_f, 16, 9) @[el2_lib.scala 196:50] - node _T_4 = xor(_T_2, _T_3) @[el2_lib.scala 196:46] - node _T_5 = bits(io.ifc_fetch_addr_f, 24, 17) @[el2_lib.scala 196:88] - node btb_rd_addr_f = xor(_T_4, _T_5) @[el2_lib.scala 196:84] + node _T_2 = bits(io.ifc_fetch_addr_f, 8, 1) @[el2_lib.scala 196:13] + node _T_3 = bits(io.ifc_fetch_addr_f, 16, 9) @[el2_lib.scala 196:51] + node _T_4 = xor(_T_2, _T_3) @[el2_lib.scala 196:47] + node _T_5 = bits(io.ifc_fetch_addr_f, 24, 17) @[el2_lib.scala 196:89] + node btb_rd_addr_f = xor(_T_4, _T_5) @[el2_lib.scala 196:85] node _T_6 = bits(io.ifc_fetch_addr_f, 30, 1) @[el2_ifu_bp_ctl.scala 99:44] node _T_7 = add(_T_6, UInt<1>("h01")) @[el2_ifu_bp_ctl.scala 99:51] node fetch_addr_p1_f = tail(_T_7, 1) @[el2_ifu_bp_ctl.scala 99:51] node _T_8 = cat(fetch_addr_p1_f, UInt<1>("h00")) @[Cat.scala 29:58] - node _T_9 = bits(_T_8, 8, 1) @[el2_lib.scala 196:12] - node _T_10 = bits(_T_8, 16, 9) @[el2_lib.scala 196:50] - node _T_11 = xor(_T_9, _T_10) @[el2_lib.scala 196:46] - node _T_12 = bits(_T_8, 24, 17) @[el2_lib.scala 196:88] - node btb_rd_addr_p1_f = xor(_T_11, _T_12) @[el2_lib.scala 196:84] + node _T_9 = bits(_T_8, 8, 1) @[el2_lib.scala 196:13] + node _T_10 = bits(_T_8, 16, 9) @[el2_lib.scala 196:51] + node _T_11 = xor(_T_9, _T_10) @[el2_lib.scala 196:47] + node _T_12 = bits(_T_8, 24, 17) @[el2_lib.scala 196:89] + node btb_rd_addr_p1_f = xor(_T_11, _T_12) @[el2_lib.scala 196:85] node _T_13 = bits(bht_dir_f, 0, 0) @[el2_ifu_bp_ctl.scala 105:33] node _T_14 = not(_T_13) @[el2_ifu_bp_ctl.scala 105:23] node _T_15 = bits(bht_dir_f, 0, 0) @[el2_ifu_bp_ctl.scala 105:46] diff --git a/el2_ifu_bp_ctl.v b/el2_ifu_bp_ctl.v index 566494a7..e6acecab 100644 --- a/el2_ifu_bp_ctl.v +++ b/el2_ifu_bp_ctl.v @@ -1095,12 +1095,12 @@ module el2_ifu_bp_ctl( wire _T = ~leak_one_f; // @[el2_ifu_bp_ctl.scala 69:46] wire exu_mp_valid = io_exu_mp_pkt_misp & _T; // @[el2_ifu_bp_ctl.scala 69:44] wire dec_tlu_error_wb = io_dec_tlu_br0_r_pkt_br_start_error | io_dec_tlu_br0_r_pkt_br_error; // @[el2_ifu_bp_ctl.scala 91:50] - wire [7:0] _T_4 = io_ifc_fetch_addr_f[8:1] ^ io_ifc_fetch_addr_f[16:9]; // @[el2_lib.scala 196:46] - wire [7:0] btb_rd_addr_f = _T_4 ^ io_ifc_fetch_addr_f[24:17]; // @[el2_lib.scala 196:84] + wire [7:0] _T_4 = io_ifc_fetch_addr_f[8:1] ^ io_ifc_fetch_addr_f[16:9]; // @[el2_lib.scala 196:47] + wire [7:0] btb_rd_addr_f = _T_4 ^ io_ifc_fetch_addr_f[24:17]; // @[el2_lib.scala 196:85] wire [29:0] fetch_addr_p1_f = io_ifc_fetch_addr_f[30:1] + 30'h1; // @[el2_ifu_bp_ctl.scala 99:51] wire [30:0] _T_8 = {fetch_addr_p1_f,1'h0}; // @[Cat.scala 29:58] - wire [7:0] _T_11 = _T_8[8:1] ^ _T_8[16:9]; // @[el2_lib.scala 196:46] - wire [7:0] btb_rd_addr_p1_f = _T_11 ^ _T_8[24:17]; // @[el2_lib.scala 196:84] + wire [7:0] _T_11 = _T_8[8:1] ^ _T_8[16:9]; // @[el2_lib.scala 196:47] + wire [7:0] btb_rd_addr_p1_f = _T_11 ^ _T_8[24:17]; // @[el2_lib.scala 196:85] wire _T_143 = ~io_ifc_fetch_addr_f[0]; // @[el2_ifu_bp_ctl.scala 176:40] wire _T_2110 = btb_rd_addr_f == 8'h0; // @[el2_ifu_bp_ctl.scala 367:77] reg [21:0] btb_bank0_rd_data_way0_out_0; // @[Reg.scala 27:20] @@ -2130,9 +2130,7 @@ module el2_ifu_bp_ctl( wire _T_45 = btb_bank0_rd_data_way0_f[21:17] == fetch_rd_tag_f; // @[el2_ifu_bp_ctl.scala 133:97] wire _T_46 = btb_bank0_rd_data_way0_f[0] & _T_45; // @[el2_ifu_bp_ctl.scala 133:55] reg dec_tlu_way_wb_f; // @[el2_ifu_bp_ctl.scala 125:59] - wire [6:0] btb_error_addr_wb = io_exu_i0_br_index_r[6:0]; // @[el2_ifu_bp_ctl.scala 92:21] - wire [7:0] _GEN_1034 = {{1'd0}, btb_error_addr_wb}; // @[el2_ifu_bp_ctl.scala 111:72] - wire _T_19 = _GEN_1034 == btb_rd_addr_f; // @[el2_ifu_bp_ctl.scala 111:72] + wire _T_19 = io_exu_i0_br_index_r == btb_rd_addr_f; // @[el2_ifu_bp_ctl.scala 111:72] wire branch_error_collision_f = dec_tlu_error_wb & _T_19; // @[el2_ifu_bp_ctl.scala 111:51] wire branch_error_bank_conflict_f = branch_error_collision_f & dec_tlu_error_wb; // @[el2_ifu_bp_ctl.scala 115:63] wire _T_47 = dec_tlu_way_wb_f & branch_error_bank_conflict_f; // @[el2_ifu_bp_ctl.scala 134:22] @@ -7045,7 +7043,7 @@ module el2_ifu_bp_ctl( wire _T_545 = _T_543 & _T_529; // @[el2_ifu_bp_ctl.scala 342:57] wire _T_546 = io_dec_tlu_br0_r_pkt_way & dec_tlu_error_wb; // @[el2_ifu_bp_ctl.scala 342:98] wire btb_wr_en_way1 = _T_545 | _T_546; // @[el2_ifu_bp_ctl.scala 342:80] - wire [7:0] btb_wr_addr = dec_tlu_error_wb ? {{1'd0}, btb_error_addr_wb} : io_exu_mp_index; // @[el2_ifu_bp_ctl.scala 344:24] + wire [7:0] btb_wr_addr = dec_tlu_error_wb ? io_exu_i0_br_index_r : io_exu_mp_index; // @[el2_ifu_bp_ctl.scala 344:24] wire middle_of_bank = io_exu_mp_pkt_pc4 ^ io_exu_mp_pkt_boffset; // @[el2_ifu_bp_ctl.scala 345:35] wire _T_548 = ~io_exu_mp_pkt_pcall; // @[el2_ifu_bp_ctl.scala 346:43] wire _T_549 = exu_mp_valid & _T_548; // @[el2_ifu_bp_ctl.scala 346:41] diff --git a/src/main/scala/ifu/el2_ifu_bp_ctl.scala b/src/main/scala/ifu/el2_ifu_bp_ctl.scala index 400b5262..17bc59a9 100644 --- a/src/main/scala/ifu/el2_ifu_bp_ctl.scala +++ b/src/main/scala/ifu/el2_ifu_bp_ctl.scala @@ -56,7 +56,7 @@ class el2_ifu_bp_ctl extends Module with el2_lib with RequireAsyncReset { val leak_one_f = WireInit(Bool(), 0.U) val bht_dir_f = WireInit(UInt(2.W), 0.U) val dec_tlu_error_wb = WireInit(Bool(), 0.U) - val btb_error_addr_wb = WireInit(UInt((BTB_ADDR_HI-BTB_ADDR_LO).W), 0.U) + val btb_error_addr_wb = WireInit(UInt((BTB_ADDR_HI-BTB_ADDR_LO+1).W), 0.U) val btb_bank0_rd_data_way0_f = WireInit(UInt((TAG_START+1).W), 0.U) val btb_bank0_rd_data_way1_f = WireInit(UInt((TAG_START+1).W), 0.U) val btb_bank0_rd_data_way0_p1_f = WireInit(UInt((TAG_START+1).W), 0.U) diff --git a/src/main/scala/lib/el2_lib.scala b/src/main/scala/lib/el2_lib.scala index acdd67c6..82b07f76 100644 --- a/src/main/scala/lib/el2_lib.scala +++ b/src/main/scala/lib/el2_lib.scala @@ -193,7 +193,7 @@ trait el2_lib extends param{ /////////////////////////////////////////////////////////////////// def el2_btb_addr_hash(pc : UInt) = if(BTB_FOLD2_INDEX_HASH) pc(BTB_INDEX1_HI-1,BTB_INDEX1_LO-1) ^ pc(BTB_INDEX3_HI-1,BTB_INDEX3_LO-1) - else pc(BTB_INDEX1_HI-1,BTB_INDEX1_LO-1) ^ pc(BTB_INDEX2_HI-1,BTB_INDEX2_LO-1) ^ pc(BTB_INDEX3_HI-1,BTB_INDEX3_LO-1) + else (pc(BTB_INDEX1_HI-1,BTB_INDEX1_LO-1) ^ pc(BTB_INDEX2_HI-1,BTB_INDEX2_LO-1) ^ pc(BTB_INDEX3_HI-1,BTB_INDEX3_LO-1)) /////////////////////////////////////////////////////////////////// def el2_btb_ghr_hash(hashin : UInt, ghr :UInt) = 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 eb64b4057adcbed5b1fcad4d328c455f219c3780..969d0d21955dee6d364fed11d1639658d0a4339f 100644 GIT binary patch delta 4106 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 delta 4103 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 Olb5&%Y%X@n$_4-dKo^t% delta 61 zcmcb6o9XUtrVUMwj69PQU8E<^bChE=01