From 7ee61fb9203d5b5fb6e2cbac6c3029c6457cbe28 Mon Sep 17 00:00:00 2001 From: waleed-lm Date: Tue, 13 Oct 2020 15:15:02 +0500 Subject: [PATCH] Aligner Updated --- el2_ifu_aln_ctl.fir | 4 ++-- el2_ifu_aln_ctl.v | 9 +++++---- src/main/scala/ifu/el2_ifu_aln_ctl.scala | 2 +- .../classes/ifu/el2_ifu_aln_ctl.class | Bin 192173 -> 192183 bytes 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/el2_ifu_aln_ctl.fir b/el2_ifu_aln_ctl.fir index 5e89037a..890f1113 100644 --- a/el2_ifu_aln_ctl.fir +++ b/el2_ifu_aln_ctl.fir @@ -2618,11 +2618,11 @@ circuit el2_ifu_aln_ctl : node f1pc_plus1 = tail(_T_362, 1) @[el2_ifu_aln_ctl.scala 277:25] node _T_363 = bits(f1_shift_2B, 0, 0) @[Bitwise.scala 72:15] node _T_364 = mux(_T_363, UInt<31>("h07fffffff"), UInt<31>("h00")) @[Bitwise.scala 72:12] - node _T_365 = and(_T_364, f0pc_plus1) @[el2_ifu_aln_ctl.scala 279:38] + node _T_365 = and(_T_364, f1pc_plus1) @[el2_ifu_aln_ctl.scala 279:38] node _T_366 = eq(f1_shift_2B, UInt<1>("h00")) @[el2_ifu_aln_ctl.scala 279:64] node _T_367 = bits(_T_366, 0, 0) @[Bitwise.scala 72:15] node _T_368 = mux(_T_367, UInt<31>("h07fffffff"), UInt<31>("h00")) @[Bitwise.scala 72:12] - node _T_369 = and(_T_368, f0pc) @[el2_ifu_aln_ctl.scala 279:78] + node _T_369 = and(_T_368, f1pc) @[el2_ifu_aln_ctl.scala 279:78] node sf1pc = or(_T_365, _T_369) @[el2_ifu_aln_ctl.scala 279:52] node _T_370 = bits(fetch_to_f1, 0, 0) @[el2_ifu_aln_ctl.scala 281:36] node _T_371 = bits(shift_f2_f1, 0, 0) @[el2_ifu_aln_ctl.scala 282:17] diff --git a/el2_ifu_aln_ctl.v b/el2_ifu_aln_ctl.v index c97c515c..092e3c94 100644 --- a/el2_ifu_aln_ctl.v +++ b/el2_ifu_aln_ctl.v @@ -691,11 +691,10 @@ module el2_ifu_aln_ctl( wire _T_373 = ~_T_354; // @[el2_ifu_aln_ctl.scala 283:21] wire _T_374 = _T_372 & _T_373; // @[el2_ifu_aln_ctl.scala 283:19] wire [30:0] _T_364 = f1_shift_2B ? 31'h7fffffff : 31'h0; // @[Bitwise.scala 72:12] - reg [30:0] f0pc; // @[Reg.scala 27:20] - wire [30:0] f0pc_plus1 = f0pc + 31'h1; // @[el2_ifu_aln_ctl.scala 275:25] - wire [30:0] _T_365 = _T_364 & f0pc_plus1; // @[el2_ifu_aln_ctl.scala 279:38] + wire [30:0] f1pc_plus1 = f1pc + 31'h1; // @[el2_ifu_aln_ctl.scala 277:25] + wire [30:0] _T_365 = _T_364 & f1pc_plus1; // @[el2_ifu_aln_ctl.scala 279:38] wire [30:0] _T_368 = _T_417 ? 31'h7fffffff : 31'h0; // @[Bitwise.scala 72:12] - wire [30:0] _T_369 = _T_368 & f0pc; // @[el2_ifu_aln_ctl.scala 279:78] + wire [30:0] _T_369 = _T_368 & f1pc; // @[el2_ifu_aln_ctl.scala 279:78] wire [30:0] sf1pc = _T_365 | _T_369; // @[el2_ifu_aln_ctl.scala 279:52] wire [30:0] _T_378 = _T_374 ? sf1pc : 31'h0; // @[Mux.scala 27:72] wire [30:0] f1pc_in = _T_379 | _T_378; // @[Mux.scala 27:72] @@ -705,6 +704,7 @@ module el2_ifu_aln_ctl( wire _T_28 = _T_27 | _T_353; // @[el2_ifu_aln_ctl.scala 158:47] wire _T_29 = _T_28 | shift_2B; // @[el2_ifu_aln_ctl.scala 158:61] wire f0_shift_wr_en = _T_29 | shift_4B; // @[el2_ifu_aln_ctl.scala 158:72] + reg [30:0] f0pc; // @[Reg.scala 27:20] wire [30:0] _T_391 = fetch_to_f0 ? io_ifu_fetch_pc : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_392 = _T_338 ? f2pc : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_395 = _T_391 | _T_392; // @[Mux.scala 27:72] @@ -715,6 +715,7 @@ module el2_ifu_aln_ctl( wire _T_387 = _T_385 & _T_386; // @[el2_ifu_aln_ctl.scala 288:37] wire _T_388 = ~_T_353; // @[el2_ifu_aln_ctl.scala 288:54] wire _T_389 = _T_387 & _T_388; // @[el2_ifu_aln_ctl.scala 288:52] + wire [30:0] f0pc_plus1 = f0pc + 31'h1; // @[el2_ifu_aln_ctl.scala 275:25] wire [30:0] _T_394 = _T_389 ? f0pc_plus1 : 31'h0; // @[Mux.scala 27:72] wire [30:0] f0pc_in = _T_396 | _T_394; // @[Mux.scala 27:72] wire _T_35 = wrptr == 2'h2; // @[el2_ifu_aln_ctl.scala 161:21] diff --git a/src/main/scala/ifu/el2_ifu_aln_ctl.scala b/src/main/scala/ifu/el2_ifu_aln_ctl.scala index 9e38cbc2..131b5bb0 100644 --- a/src/main/scala/ifu/el2_ifu_aln_ctl.scala +++ b/src/main/scala/ifu/el2_ifu_aln_ctl.scala @@ -276,7 +276,7 @@ class el2_ifu_aln_ctl extends Module with el2_lib { val f1pc_plus1 = f1pc + 1.U - val sf1pc = (Fill(31, f1_shift_2B) & f0pc_plus1) | (Fill(31, !f1_shift_2B) & f0pc) + val sf1pc = (Fill(31, f1_shift_2B) & f1pc_plus1) | (Fill(31, !f1_shift_2B) & f1pc) f1pc_in := Mux1H(Seq(fetch_to_f1.asBool->io.ifu_fetch_pc, shift_f2_f1.asBool->f2pc, diff --git a/target/scala-2.12/classes/ifu/el2_ifu_aln_ctl.class b/target/scala-2.12/classes/ifu/el2_ifu_aln_ctl.class index 6bffdfade3f5152bb4ba2175bb90ef8937e22450..eb86f9fa390edd1e614ce96938b398c2b06ecbba 100644 GIT binary patch delta 36406 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 delta 36308 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 ZEM>l>oAs}h=sR*he?M4*WP&?6{U4c0{%imM