Predictor hash check
This commit is contained in:
parent
b90d9e6739
commit
01fe318c28
|
@ -3,10 +3,15 @@
|
||||||
"class":"firrtl.transforms.CombinationalPath",
|
"class":"firrtl.transforms.CombinationalPath",
|
||||||
"sink":"~EL2_IC_TAG|EL2_IC_TAG>io_test",
|
"sink":"~EL2_IC_TAG|EL2_IC_TAG>io_test",
|
||||||
"sources":[
|
"sources":[
|
||||||
|
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_wr_en",
|
||||||
|
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_debug_way",
|
||||||
|
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_rw_addr",
|
||||||
|
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_debug_addr",
|
||||||
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_debug_wr_en",
|
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_debug_wr_en",
|
||||||
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_debug_tag_array",
|
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_debug_tag_array",
|
||||||
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_debug_wr_data",
|
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_rd_en",
|
||||||
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_rw_addr"
|
"~EL2_IC_TAG|EL2_IC_TAG>io_clk_override",
|
||||||
|
"~EL2_IC_TAG|EL2_IC_TAG>io_ic_debug_rd_en"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
614
EL2_IC_TAG.fir
614
EL2_IC_TAG.fir
|
@ -42,295 +42,295 @@ circuit EL2_IC_TAG :
|
||||||
node _T_18 = mux(UInt<1>("h00"), UInt<13>("h01fff"), UInt<13>("h00")) @[Bitwise.scala 72:12]
|
node _T_18 = mux(UInt<1>("h00"), UInt<13>("h01fff"), UInt<13>("h00")) @[Bitwise.scala 72:12]
|
||||||
node _T_19 = bits(io.ic_rw_addr, 28, 10) @[el2_ifu_ic_mem.scala 84:89]
|
node _T_19 = bits(io.ic_rw_addr, 28, 10) @[el2_ifu_ic_mem.scala 84:89]
|
||||||
node _T_20 = cat(_T_18, _T_19) @[Cat.scala 29:58]
|
node _T_20 = cat(_T_18, _T_19) @[Cat.scala 29:58]
|
||||||
wire _T_21 : UInt<1>[18] @[el2_lib.scala 235:18]
|
wire _T_21 : UInt<1>[18] @[el2_lib.scala 236:18]
|
||||||
wire _T_22 : UInt<1>[18] @[el2_lib.scala 236:18]
|
wire _T_22 : UInt<1>[18] @[el2_lib.scala 237:18]
|
||||||
wire _T_23 : UInt<1>[18] @[el2_lib.scala 237:18]
|
wire _T_23 : UInt<1>[18] @[el2_lib.scala 238:18]
|
||||||
wire _T_24 : UInt<1>[15] @[el2_lib.scala 238:18]
|
wire _T_24 : UInt<1>[15] @[el2_lib.scala 239:18]
|
||||||
wire _T_25 : UInt<1>[15] @[el2_lib.scala 239:18]
|
wire _T_25 : UInt<1>[15] @[el2_lib.scala 240:18]
|
||||||
wire _T_26 : UInt<1>[6] @[el2_lib.scala 240:18]
|
wire _T_26 : UInt<1>[6] @[el2_lib.scala 241:18]
|
||||||
node _T_27 = bits(_T_20, 0, 0) @[el2_lib.scala 247:36]
|
node _T_27 = bits(_T_20, 0, 0) @[el2_lib.scala 248:36]
|
||||||
_T_22[0] <= _T_27 @[el2_lib.scala 247:30]
|
_T_22[0] <= _T_27 @[el2_lib.scala 248:30]
|
||||||
node _T_28 = bits(_T_20, 0, 0) @[el2_lib.scala 248:36]
|
node _T_28 = bits(_T_20, 0, 0) @[el2_lib.scala 249:36]
|
||||||
_T_23[0] <= _T_28 @[el2_lib.scala 248:30]
|
_T_23[0] <= _T_28 @[el2_lib.scala 249:30]
|
||||||
node _T_29 = bits(_T_20, 0, 0) @[el2_lib.scala 251:36]
|
node _T_29 = bits(_T_20, 0, 0) @[el2_lib.scala 252:36]
|
||||||
_T_26[0] <= _T_29 @[el2_lib.scala 251:30]
|
_T_26[0] <= _T_29 @[el2_lib.scala 252:30]
|
||||||
node _T_30 = bits(_T_20, 1, 1) @[el2_lib.scala 246:36]
|
node _T_30 = bits(_T_20, 1, 1) @[el2_lib.scala 247:36]
|
||||||
_T_21[0] <= _T_30 @[el2_lib.scala 246:30]
|
_T_21[0] <= _T_30 @[el2_lib.scala 247:30]
|
||||||
node _T_31 = bits(_T_20, 1, 1) @[el2_lib.scala 248:36]
|
node _T_31 = bits(_T_20, 1, 1) @[el2_lib.scala 249:36]
|
||||||
_T_23[1] <= _T_31 @[el2_lib.scala 248:30]
|
_T_23[1] <= _T_31 @[el2_lib.scala 249:30]
|
||||||
node _T_32 = bits(_T_20, 1, 1) @[el2_lib.scala 251:36]
|
node _T_32 = bits(_T_20, 1, 1) @[el2_lib.scala 252:36]
|
||||||
_T_26[1] <= _T_32 @[el2_lib.scala 251:30]
|
_T_26[1] <= _T_32 @[el2_lib.scala 252:30]
|
||||||
node _T_33 = bits(_T_20, 2, 2) @[el2_lib.scala 248:36]
|
node _T_33 = bits(_T_20, 2, 2) @[el2_lib.scala 249:36]
|
||||||
_T_23[2] <= _T_33 @[el2_lib.scala 248:30]
|
_T_23[2] <= _T_33 @[el2_lib.scala 249:30]
|
||||||
node _T_34 = bits(_T_20, 2, 2) @[el2_lib.scala 251:36]
|
node _T_34 = bits(_T_20, 2, 2) @[el2_lib.scala 252:36]
|
||||||
_T_26[2] <= _T_34 @[el2_lib.scala 251:30]
|
_T_26[2] <= _T_34 @[el2_lib.scala 252:30]
|
||||||
node _T_35 = bits(_T_20, 3, 3) @[el2_lib.scala 246:36]
|
node _T_35 = bits(_T_20, 3, 3) @[el2_lib.scala 247:36]
|
||||||
_T_21[1] <= _T_35 @[el2_lib.scala 246:30]
|
_T_21[1] <= _T_35 @[el2_lib.scala 247:30]
|
||||||
node _T_36 = bits(_T_20, 3, 3) @[el2_lib.scala 247:36]
|
node _T_36 = bits(_T_20, 3, 3) @[el2_lib.scala 248:36]
|
||||||
_T_22[1] <= _T_36 @[el2_lib.scala 247:30]
|
_T_22[1] <= _T_36 @[el2_lib.scala 248:30]
|
||||||
node _T_37 = bits(_T_20, 3, 3) @[el2_lib.scala 251:36]
|
node _T_37 = bits(_T_20, 3, 3) @[el2_lib.scala 252:36]
|
||||||
_T_26[3] <= _T_37 @[el2_lib.scala 251:30]
|
_T_26[3] <= _T_37 @[el2_lib.scala 252:30]
|
||||||
node _T_38 = bits(_T_20, 4, 4) @[el2_lib.scala 247:36]
|
node _T_38 = bits(_T_20, 4, 4) @[el2_lib.scala 248:36]
|
||||||
_T_22[2] <= _T_38 @[el2_lib.scala 247:30]
|
_T_22[2] <= _T_38 @[el2_lib.scala 248:30]
|
||||||
node _T_39 = bits(_T_20, 4, 4) @[el2_lib.scala 251:36]
|
node _T_39 = bits(_T_20, 4, 4) @[el2_lib.scala 252:36]
|
||||||
_T_26[4] <= _T_39 @[el2_lib.scala 251:30]
|
_T_26[4] <= _T_39 @[el2_lib.scala 252:30]
|
||||||
node _T_40 = bits(_T_20, 5, 5) @[el2_lib.scala 246:36]
|
node _T_40 = bits(_T_20, 5, 5) @[el2_lib.scala 247:36]
|
||||||
_T_21[2] <= _T_40 @[el2_lib.scala 246:30]
|
_T_21[2] <= _T_40 @[el2_lib.scala 247:30]
|
||||||
node _T_41 = bits(_T_20, 5, 5) @[el2_lib.scala 251:36]
|
node _T_41 = bits(_T_20, 5, 5) @[el2_lib.scala 252:36]
|
||||||
_T_26[5] <= _T_41 @[el2_lib.scala 251:30]
|
_T_26[5] <= _T_41 @[el2_lib.scala 252:30]
|
||||||
node _T_42 = bits(_T_20, 6, 6) @[el2_lib.scala 246:36]
|
node _T_42 = bits(_T_20, 6, 6) @[el2_lib.scala 247:36]
|
||||||
_T_21[3] <= _T_42 @[el2_lib.scala 246:30]
|
_T_21[3] <= _T_42 @[el2_lib.scala 247:30]
|
||||||
node _T_43 = bits(_T_20, 6, 6) @[el2_lib.scala 247:36]
|
node _T_43 = bits(_T_20, 6, 6) @[el2_lib.scala 248:36]
|
||||||
_T_22[3] <= _T_43 @[el2_lib.scala 247:30]
|
_T_22[3] <= _T_43 @[el2_lib.scala 248:30]
|
||||||
node _T_44 = bits(_T_20, 6, 6) @[el2_lib.scala 248:36]
|
node _T_44 = bits(_T_20, 6, 6) @[el2_lib.scala 249:36]
|
||||||
_T_23[3] <= _T_44 @[el2_lib.scala 248:30]
|
_T_23[3] <= _T_44 @[el2_lib.scala 249:30]
|
||||||
node _T_45 = bits(_T_20, 6, 6) @[el2_lib.scala 249:36]
|
node _T_45 = bits(_T_20, 6, 6) @[el2_lib.scala 250:36]
|
||||||
_T_24[0] <= _T_45 @[el2_lib.scala 249:30]
|
_T_24[0] <= _T_45 @[el2_lib.scala 250:30]
|
||||||
node _T_46 = bits(_T_20, 6, 6) @[el2_lib.scala 250:36]
|
node _T_46 = bits(_T_20, 6, 6) @[el2_lib.scala 251:36]
|
||||||
_T_25[0] <= _T_46 @[el2_lib.scala 250:30]
|
_T_25[0] <= _T_46 @[el2_lib.scala 251:30]
|
||||||
node _T_47 = bits(_T_20, 7, 7) @[el2_lib.scala 247:36]
|
node _T_47 = bits(_T_20, 7, 7) @[el2_lib.scala 248:36]
|
||||||
_T_22[4] <= _T_47 @[el2_lib.scala 247:30]
|
_T_22[4] <= _T_47 @[el2_lib.scala 248:30]
|
||||||
node _T_48 = bits(_T_20, 7, 7) @[el2_lib.scala 248:36]
|
node _T_48 = bits(_T_20, 7, 7) @[el2_lib.scala 249:36]
|
||||||
_T_23[4] <= _T_48 @[el2_lib.scala 248:30]
|
_T_23[4] <= _T_48 @[el2_lib.scala 249:30]
|
||||||
node _T_49 = bits(_T_20, 7, 7) @[el2_lib.scala 249:36]
|
node _T_49 = bits(_T_20, 7, 7) @[el2_lib.scala 250:36]
|
||||||
_T_24[1] <= _T_49 @[el2_lib.scala 249:30]
|
_T_24[1] <= _T_49 @[el2_lib.scala 250:30]
|
||||||
node _T_50 = bits(_T_20, 7, 7) @[el2_lib.scala 250:36]
|
node _T_50 = bits(_T_20, 7, 7) @[el2_lib.scala 251:36]
|
||||||
_T_25[1] <= _T_50 @[el2_lib.scala 250:30]
|
_T_25[1] <= _T_50 @[el2_lib.scala 251:30]
|
||||||
node _T_51 = bits(_T_20, 8, 8) @[el2_lib.scala 246:36]
|
node _T_51 = bits(_T_20, 8, 8) @[el2_lib.scala 247:36]
|
||||||
_T_21[4] <= _T_51 @[el2_lib.scala 246:30]
|
_T_21[4] <= _T_51 @[el2_lib.scala 247:30]
|
||||||
node _T_52 = bits(_T_20, 8, 8) @[el2_lib.scala 248:36]
|
node _T_52 = bits(_T_20, 8, 8) @[el2_lib.scala 249:36]
|
||||||
_T_23[5] <= _T_52 @[el2_lib.scala 248:30]
|
_T_23[5] <= _T_52 @[el2_lib.scala 249:30]
|
||||||
node _T_53 = bits(_T_20, 8, 8) @[el2_lib.scala 249:36]
|
node _T_53 = bits(_T_20, 8, 8) @[el2_lib.scala 250:36]
|
||||||
_T_24[2] <= _T_53 @[el2_lib.scala 249:30]
|
_T_24[2] <= _T_53 @[el2_lib.scala 250:30]
|
||||||
node _T_54 = bits(_T_20, 8, 8) @[el2_lib.scala 250:36]
|
node _T_54 = bits(_T_20, 8, 8) @[el2_lib.scala 251:36]
|
||||||
_T_25[2] <= _T_54 @[el2_lib.scala 250:30]
|
_T_25[2] <= _T_54 @[el2_lib.scala 251:30]
|
||||||
node _T_55 = bits(_T_20, 9, 9) @[el2_lib.scala 248:36]
|
node _T_55 = bits(_T_20, 9, 9) @[el2_lib.scala 249:36]
|
||||||
_T_23[6] <= _T_55 @[el2_lib.scala 248:30]
|
_T_23[6] <= _T_55 @[el2_lib.scala 249:30]
|
||||||
node _T_56 = bits(_T_20, 9, 9) @[el2_lib.scala 249:36]
|
node _T_56 = bits(_T_20, 9, 9) @[el2_lib.scala 250:36]
|
||||||
_T_24[3] <= _T_56 @[el2_lib.scala 249:30]
|
_T_24[3] <= _T_56 @[el2_lib.scala 250:30]
|
||||||
node _T_57 = bits(_T_20, 9, 9) @[el2_lib.scala 250:36]
|
node _T_57 = bits(_T_20, 9, 9) @[el2_lib.scala 251:36]
|
||||||
_T_25[3] <= _T_57 @[el2_lib.scala 250:30]
|
_T_25[3] <= _T_57 @[el2_lib.scala 251:30]
|
||||||
node _T_58 = bits(_T_20, 10, 10) @[el2_lib.scala 246:36]
|
node _T_58 = bits(_T_20, 10, 10) @[el2_lib.scala 247:36]
|
||||||
_T_21[5] <= _T_58 @[el2_lib.scala 246:30]
|
_T_21[5] <= _T_58 @[el2_lib.scala 247:30]
|
||||||
node _T_59 = bits(_T_20, 10, 10) @[el2_lib.scala 247:36]
|
node _T_59 = bits(_T_20, 10, 10) @[el2_lib.scala 248:36]
|
||||||
_T_22[5] <= _T_59 @[el2_lib.scala 247:30]
|
_T_22[5] <= _T_59 @[el2_lib.scala 248:30]
|
||||||
node _T_60 = bits(_T_20, 10, 10) @[el2_lib.scala 249:36]
|
node _T_60 = bits(_T_20, 10, 10) @[el2_lib.scala 250:36]
|
||||||
_T_24[4] <= _T_60 @[el2_lib.scala 249:30]
|
_T_24[4] <= _T_60 @[el2_lib.scala 250:30]
|
||||||
node _T_61 = bits(_T_20, 10, 10) @[el2_lib.scala 250:36]
|
node _T_61 = bits(_T_20, 10, 10) @[el2_lib.scala 251:36]
|
||||||
_T_25[4] <= _T_61 @[el2_lib.scala 250:30]
|
_T_25[4] <= _T_61 @[el2_lib.scala 251:30]
|
||||||
node _T_62 = bits(_T_20, 11, 11) @[el2_lib.scala 247:36]
|
node _T_62 = bits(_T_20, 11, 11) @[el2_lib.scala 248:36]
|
||||||
_T_22[6] <= _T_62 @[el2_lib.scala 247:30]
|
_T_22[6] <= _T_62 @[el2_lib.scala 248:30]
|
||||||
node _T_63 = bits(_T_20, 11, 11) @[el2_lib.scala 249:36]
|
node _T_63 = bits(_T_20, 11, 11) @[el2_lib.scala 250:36]
|
||||||
_T_24[5] <= _T_63 @[el2_lib.scala 249:30]
|
_T_24[5] <= _T_63 @[el2_lib.scala 250:30]
|
||||||
node _T_64 = bits(_T_20, 11, 11) @[el2_lib.scala 250:36]
|
node _T_64 = bits(_T_20, 11, 11) @[el2_lib.scala 251:36]
|
||||||
_T_25[5] <= _T_64 @[el2_lib.scala 250:30]
|
_T_25[5] <= _T_64 @[el2_lib.scala 251:30]
|
||||||
node _T_65 = bits(_T_20, 12, 12) @[el2_lib.scala 246:36]
|
node _T_65 = bits(_T_20, 12, 12) @[el2_lib.scala 247:36]
|
||||||
_T_21[6] <= _T_65 @[el2_lib.scala 246:30]
|
_T_21[6] <= _T_65 @[el2_lib.scala 247:30]
|
||||||
node _T_66 = bits(_T_20, 12, 12) @[el2_lib.scala 249:36]
|
node _T_66 = bits(_T_20, 12, 12) @[el2_lib.scala 250:36]
|
||||||
_T_24[6] <= _T_66 @[el2_lib.scala 249:30]
|
_T_24[6] <= _T_66 @[el2_lib.scala 250:30]
|
||||||
node _T_67 = bits(_T_20, 12, 12) @[el2_lib.scala 250:36]
|
node _T_67 = bits(_T_20, 12, 12) @[el2_lib.scala 251:36]
|
||||||
_T_25[6] <= _T_67 @[el2_lib.scala 250:30]
|
_T_25[6] <= _T_67 @[el2_lib.scala 251:30]
|
||||||
node _T_68 = bits(_T_20, 13, 13) @[el2_lib.scala 249:36]
|
node _T_68 = bits(_T_20, 13, 13) @[el2_lib.scala 250:36]
|
||||||
_T_24[7] <= _T_68 @[el2_lib.scala 249:30]
|
_T_24[7] <= _T_68 @[el2_lib.scala 250:30]
|
||||||
node _T_69 = bits(_T_20, 13, 13) @[el2_lib.scala 250:36]
|
node _T_69 = bits(_T_20, 13, 13) @[el2_lib.scala 251:36]
|
||||||
_T_25[7] <= _T_69 @[el2_lib.scala 250:30]
|
_T_25[7] <= _T_69 @[el2_lib.scala 251:30]
|
||||||
node _T_70 = bits(_T_20, 14, 14) @[el2_lib.scala 246:36]
|
node _T_70 = bits(_T_20, 14, 14) @[el2_lib.scala 247:36]
|
||||||
_T_21[7] <= _T_70 @[el2_lib.scala 246:30]
|
_T_21[7] <= _T_70 @[el2_lib.scala 247:30]
|
||||||
node _T_71 = bits(_T_20, 14, 14) @[el2_lib.scala 247:36]
|
node _T_71 = bits(_T_20, 14, 14) @[el2_lib.scala 248:36]
|
||||||
_T_22[7] <= _T_71 @[el2_lib.scala 247:30]
|
_T_22[7] <= _T_71 @[el2_lib.scala 248:30]
|
||||||
node _T_72 = bits(_T_20, 14, 14) @[el2_lib.scala 248:36]
|
node _T_72 = bits(_T_20, 14, 14) @[el2_lib.scala 249:36]
|
||||||
_T_23[7] <= _T_72 @[el2_lib.scala 248:30]
|
_T_23[7] <= _T_72 @[el2_lib.scala 249:30]
|
||||||
node _T_73 = bits(_T_20, 14, 14) @[el2_lib.scala 250:36]
|
node _T_73 = bits(_T_20, 14, 14) @[el2_lib.scala 251:36]
|
||||||
_T_25[8] <= _T_73 @[el2_lib.scala 250:30]
|
_T_25[8] <= _T_73 @[el2_lib.scala 251:30]
|
||||||
node _T_74 = bits(_T_20, 15, 15) @[el2_lib.scala 247:36]
|
node _T_74 = bits(_T_20, 15, 15) @[el2_lib.scala 248:36]
|
||||||
_T_22[8] <= _T_74 @[el2_lib.scala 247:30]
|
_T_22[8] <= _T_74 @[el2_lib.scala 248:30]
|
||||||
node _T_75 = bits(_T_20, 15, 15) @[el2_lib.scala 248:36]
|
node _T_75 = bits(_T_20, 15, 15) @[el2_lib.scala 249:36]
|
||||||
_T_23[8] <= _T_75 @[el2_lib.scala 248:30]
|
_T_23[8] <= _T_75 @[el2_lib.scala 249:30]
|
||||||
node _T_76 = bits(_T_20, 15, 15) @[el2_lib.scala 250:36]
|
node _T_76 = bits(_T_20, 15, 15) @[el2_lib.scala 251:36]
|
||||||
_T_25[9] <= _T_76 @[el2_lib.scala 250:30]
|
_T_25[9] <= _T_76 @[el2_lib.scala 251:30]
|
||||||
node _T_77 = bits(_T_20, 16, 16) @[el2_lib.scala 246:36]
|
node _T_77 = bits(_T_20, 16, 16) @[el2_lib.scala 247:36]
|
||||||
_T_21[8] <= _T_77 @[el2_lib.scala 246:30]
|
_T_21[8] <= _T_77 @[el2_lib.scala 247:30]
|
||||||
node _T_78 = bits(_T_20, 16, 16) @[el2_lib.scala 248:36]
|
node _T_78 = bits(_T_20, 16, 16) @[el2_lib.scala 249:36]
|
||||||
_T_23[9] <= _T_78 @[el2_lib.scala 248:30]
|
_T_23[9] <= _T_78 @[el2_lib.scala 249:30]
|
||||||
node _T_79 = bits(_T_20, 16, 16) @[el2_lib.scala 250:36]
|
node _T_79 = bits(_T_20, 16, 16) @[el2_lib.scala 251:36]
|
||||||
_T_25[10] <= _T_79 @[el2_lib.scala 250:30]
|
_T_25[10] <= _T_79 @[el2_lib.scala 251:30]
|
||||||
node _T_80 = bits(_T_20, 17, 17) @[el2_lib.scala 248:36]
|
node _T_80 = bits(_T_20, 17, 17) @[el2_lib.scala 249:36]
|
||||||
_T_23[10] <= _T_80 @[el2_lib.scala 248:30]
|
_T_23[10] <= _T_80 @[el2_lib.scala 249:30]
|
||||||
node _T_81 = bits(_T_20, 17, 17) @[el2_lib.scala 250:36]
|
node _T_81 = bits(_T_20, 17, 17) @[el2_lib.scala 251:36]
|
||||||
_T_25[11] <= _T_81 @[el2_lib.scala 250:30]
|
_T_25[11] <= _T_81 @[el2_lib.scala 251:30]
|
||||||
node _T_82 = bits(_T_20, 18, 18) @[el2_lib.scala 246:36]
|
node _T_82 = bits(_T_20, 18, 18) @[el2_lib.scala 247:36]
|
||||||
_T_21[9] <= _T_82 @[el2_lib.scala 246:30]
|
_T_21[9] <= _T_82 @[el2_lib.scala 247:30]
|
||||||
node _T_83 = bits(_T_20, 18, 18) @[el2_lib.scala 247:36]
|
node _T_83 = bits(_T_20, 18, 18) @[el2_lib.scala 248:36]
|
||||||
_T_22[9] <= _T_83 @[el2_lib.scala 247:30]
|
_T_22[9] <= _T_83 @[el2_lib.scala 248:30]
|
||||||
node _T_84 = bits(_T_20, 18, 18) @[el2_lib.scala 250:36]
|
node _T_84 = bits(_T_20, 18, 18) @[el2_lib.scala 251:36]
|
||||||
_T_25[12] <= _T_84 @[el2_lib.scala 250:30]
|
_T_25[12] <= _T_84 @[el2_lib.scala 251:30]
|
||||||
node _T_85 = bits(_T_20, 19, 19) @[el2_lib.scala 247:36]
|
node _T_85 = bits(_T_20, 19, 19) @[el2_lib.scala 248:36]
|
||||||
_T_22[10] <= _T_85 @[el2_lib.scala 247:30]
|
_T_22[10] <= _T_85 @[el2_lib.scala 248:30]
|
||||||
node _T_86 = bits(_T_20, 19, 19) @[el2_lib.scala 250:36]
|
node _T_86 = bits(_T_20, 19, 19) @[el2_lib.scala 251:36]
|
||||||
_T_25[13] <= _T_86 @[el2_lib.scala 250:30]
|
_T_25[13] <= _T_86 @[el2_lib.scala 251:30]
|
||||||
node _T_87 = bits(_T_20, 20, 20) @[el2_lib.scala 246:36]
|
node _T_87 = bits(_T_20, 20, 20) @[el2_lib.scala 247:36]
|
||||||
_T_21[10] <= _T_87 @[el2_lib.scala 246:30]
|
_T_21[10] <= _T_87 @[el2_lib.scala 247:30]
|
||||||
node _T_88 = bits(_T_20, 20, 20) @[el2_lib.scala 250:36]
|
node _T_88 = bits(_T_20, 20, 20) @[el2_lib.scala 251:36]
|
||||||
_T_25[14] <= _T_88 @[el2_lib.scala 250:30]
|
_T_25[14] <= _T_88 @[el2_lib.scala 251:30]
|
||||||
node _T_89 = bits(_T_20, 21, 21) @[el2_lib.scala 246:36]
|
node _T_89 = bits(_T_20, 21, 21) @[el2_lib.scala 247:36]
|
||||||
_T_21[11] <= _T_89 @[el2_lib.scala 246:30]
|
_T_21[11] <= _T_89 @[el2_lib.scala 247:30]
|
||||||
node _T_90 = bits(_T_20, 21, 21) @[el2_lib.scala 247:36]
|
node _T_90 = bits(_T_20, 21, 21) @[el2_lib.scala 248:36]
|
||||||
_T_22[11] <= _T_90 @[el2_lib.scala 247:30]
|
_T_22[11] <= _T_90 @[el2_lib.scala 248:30]
|
||||||
node _T_91 = bits(_T_20, 21, 21) @[el2_lib.scala 248:36]
|
node _T_91 = bits(_T_20, 21, 21) @[el2_lib.scala 249:36]
|
||||||
_T_23[11] <= _T_91 @[el2_lib.scala 248:30]
|
_T_23[11] <= _T_91 @[el2_lib.scala 249:30]
|
||||||
node _T_92 = bits(_T_20, 21, 21) @[el2_lib.scala 249:36]
|
node _T_92 = bits(_T_20, 21, 21) @[el2_lib.scala 250:36]
|
||||||
_T_24[8] <= _T_92 @[el2_lib.scala 249:30]
|
_T_24[8] <= _T_92 @[el2_lib.scala 250:30]
|
||||||
node _T_93 = bits(_T_20, 22, 22) @[el2_lib.scala 247:36]
|
node _T_93 = bits(_T_20, 22, 22) @[el2_lib.scala 248:36]
|
||||||
_T_22[12] <= _T_93 @[el2_lib.scala 247:30]
|
_T_22[12] <= _T_93 @[el2_lib.scala 248:30]
|
||||||
node _T_94 = bits(_T_20, 22, 22) @[el2_lib.scala 248:36]
|
node _T_94 = bits(_T_20, 22, 22) @[el2_lib.scala 249:36]
|
||||||
_T_23[12] <= _T_94 @[el2_lib.scala 248:30]
|
_T_23[12] <= _T_94 @[el2_lib.scala 249:30]
|
||||||
node _T_95 = bits(_T_20, 22, 22) @[el2_lib.scala 249:36]
|
node _T_95 = bits(_T_20, 22, 22) @[el2_lib.scala 250:36]
|
||||||
_T_24[9] <= _T_95 @[el2_lib.scala 249:30]
|
_T_24[9] <= _T_95 @[el2_lib.scala 250:30]
|
||||||
node _T_96 = bits(_T_20, 23, 23) @[el2_lib.scala 246:36]
|
node _T_96 = bits(_T_20, 23, 23) @[el2_lib.scala 247:36]
|
||||||
_T_21[12] <= _T_96 @[el2_lib.scala 246:30]
|
_T_21[12] <= _T_96 @[el2_lib.scala 247:30]
|
||||||
node _T_97 = bits(_T_20, 23, 23) @[el2_lib.scala 248:36]
|
node _T_97 = bits(_T_20, 23, 23) @[el2_lib.scala 249:36]
|
||||||
_T_23[13] <= _T_97 @[el2_lib.scala 248:30]
|
_T_23[13] <= _T_97 @[el2_lib.scala 249:30]
|
||||||
node _T_98 = bits(_T_20, 23, 23) @[el2_lib.scala 249:36]
|
node _T_98 = bits(_T_20, 23, 23) @[el2_lib.scala 250:36]
|
||||||
_T_24[10] <= _T_98 @[el2_lib.scala 249:30]
|
_T_24[10] <= _T_98 @[el2_lib.scala 250:30]
|
||||||
node _T_99 = bits(_T_20, 24, 24) @[el2_lib.scala 248:36]
|
node _T_99 = bits(_T_20, 24, 24) @[el2_lib.scala 249:36]
|
||||||
_T_23[14] <= _T_99 @[el2_lib.scala 248:30]
|
_T_23[14] <= _T_99 @[el2_lib.scala 249:30]
|
||||||
node _T_100 = bits(_T_20, 24, 24) @[el2_lib.scala 249:36]
|
node _T_100 = bits(_T_20, 24, 24) @[el2_lib.scala 250:36]
|
||||||
_T_24[11] <= _T_100 @[el2_lib.scala 249:30]
|
_T_24[11] <= _T_100 @[el2_lib.scala 250:30]
|
||||||
node _T_101 = bits(_T_20, 25, 25) @[el2_lib.scala 246:36]
|
node _T_101 = bits(_T_20, 25, 25) @[el2_lib.scala 247:36]
|
||||||
_T_21[13] <= _T_101 @[el2_lib.scala 246:30]
|
_T_21[13] <= _T_101 @[el2_lib.scala 247:30]
|
||||||
node _T_102 = bits(_T_20, 25, 25) @[el2_lib.scala 247:36]
|
node _T_102 = bits(_T_20, 25, 25) @[el2_lib.scala 248:36]
|
||||||
_T_22[13] <= _T_102 @[el2_lib.scala 247:30]
|
_T_22[13] <= _T_102 @[el2_lib.scala 248:30]
|
||||||
node _T_103 = bits(_T_20, 25, 25) @[el2_lib.scala 249:36]
|
node _T_103 = bits(_T_20, 25, 25) @[el2_lib.scala 250:36]
|
||||||
_T_24[12] <= _T_103 @[el2_lib.scala 249:30]
|
_T_24[12] <= _T_103 @[el2_lib.scala 250:30]
|
||||||
node _T_104 = bits(_T_20, 26, 26) @[el2_lib.scala 247:36]
|
node _T_104 = bits(_T_20, 26, 26) @[el2_lib.scala 248:36]
|
||||||
_T_22[14] <= _T_104 @[el2_lib.scala 247:30]
|
_T_22[14] <= _T_104 @[el2_lib.scala 248:30]
|
||||||
node _T_105 = bits(_T_20, 26, 26) @[el2_lib.scala 249:36]
|
node _T_105 = bits(_T_20, 26, 26) @[el2_lib.scala 250:36]
|
||||||
_T_24[13] <= _T_105 @[el2_lib.scala 249:30]
|
_T_24[13] <= _T_105 @[el2_lib.scala 250:30]
|
||||||
node _T_106 = bits(_T_20, 27, 27) @[el2_lib.scala 246:36]
|
node _T_106 = bits(_T_20, 27, 27) @[el2_lib.scala 247:36]
|
||||||
_T_21[14] <= _T_106 @[el2_lib.scala 246:30]
|
_T_21[14] <= _T_106 @[el2_lib.scala 247:30]
|
||||||
node _T_107 = bits(_T_20, 27, 27) @[el2_lib.scala 249:36]
|
node _T_107 = bits(_T_20, 27, 27) @[el2_lib.scala 250:36]
|
||||||
_T_24[14] <= _T_107 @[el2_lib.scala 249:30]
|
_T_24[14] <= _T_107 @[el2_lib.scala 250:30]
|
||||||
node _T_108 = bits(_T_20, 28, 28) @[el2_lib.scala 246:36]
|
node _T_108 = bits(_T_20, 28, 28) @[el2_lib.scala 247:36]
|
||||||
_T_21[15] <= _T_108 @[el2_lib.scala 246:30]
|
_T_21[15] <= _T_108 @[el2_lib.scala 247:30]
|
||||||
node _T_109 = bits(_T_20, 28, 28) @[el2_lib.scala 247:36]
|
node _T_109 = bits(_T_20, 28, 28) @[el2_lib.scala 248:36]
|
||||||
_T_22[15] <= _T_109 @[el2_lib.scala 247:30]
|
_T_22[15] <= _T_109 @[el2_lib.scala 248:30]
|
||||||
node _T_110 = bits(_T_20, 28, 28) @[el2_lib.scala 248:36]
|
node _T_110 = bits(_T_20, 28, 28) @[el2_lib.scala 249:36]
|
||||||
_T_23[15] <= _T_110 @[el2_lib.scala 248:30]
|
_T_23[15] <= _T_110 @[el2_lib.scala 249:30]
|
||||||
node _T_111 = bits(_T_20, 29, 29) @[el2_lib.scala 247:36]
|
node _T_111 = bits(_T_20, 29, 29) @[el2_lib.scala 248:36]
|
||||||
_T_22[16] <= _T_111 @[el2_lib.scala 247:30]
|
_T_22[16] <= _T_111 @[el2_lib.scala 248:30]
|
||||||
node _T_112 = bits(_T_20, 29, 29) @[el2_lib.scala 248:36]
|
node _T_112 = bits(_T_20, 29, 29) @[el2_lib.scala 249:36]
|
||||||
_T_23[16] <= _T_112 @[el2_lib.scala 248:30]
|
_T_23[16] <= _T_112 @[el2_lib.scala 249:30]
|
||||||
node _T_113 = bits(_T_20, 30, 30) @[el2_lib.scala 246:36]
|
node _T_113 = bits(_T_20, 30, 30) @[el2_lib.scala 247:36]
|
||||||
_T_21[16] <= _T_113 @[el2_lib.scala 246:30]
|
_T_21[16] <= _T_113 @[el2_lib.scala 247:30]
|
||||||
node _T_114 = bits(_T_20, 30, 30) @[el2_lib.scala 248:36]
|
node _T_114 = bits(_T_20, 30, 30) @[el2_lib.scala 249:36]
|
||||||
_T_23[17] <= _T_114 @[el2_lib.scala 248:30]
|
_T_23[17] <= _T_114 @[el2_lib.scala 249:30]
|
||||||
node _T_115 = bits(_T_20, 31, 31) @[el2_lib.scala 246:36]
|
node _T_115 = bits(_T_20, 31, 31) @[el2_lib.scala 247:36]
|
||||||
_T_21[17] <= _T_115 @[el2_lib.scala 246:30]
|
_T_21[17] <= _T_115 @[el2_lib.scala 247:30]
|
||||||
node _T_116 = bits(_T_20, 31, 31) @[el2_lib.scala 247:36]
|
node _T_116 = bits(_T_20, 31, 31) @[el2_lib.scala 248:36]
|
||||||
_T_22[17] <= _T_116 @[el2_lib.scala 247:30]
|
_T_22[17] <= _T_116 @[el2_lib.scala 248:30]
|
||||||
node _T_117 = cat(_T_21[1], _T_21[0]) @[el2_lib.scala 253:22]
|
node _T_117 = cat(_T_21[1], _T_21[0]) @[el2_lib.scala 254:22]
|
||||||
node _T_118 = cat(_T_21[3], _T_21[2]) @[el2_lib.scala 253:22]
|
node _T_118 = cat(_T_21[3], _T_21[2]) @[el2_lib.scala 254:22]
|
||||||
node _T_119 = cat(_T_118, _T_117) @[el2_lib.scala 253:22]
|
node _T_119 = cat(_T_118, _T_117) @[el2_lib.scala 254:22]
|
||||||
node _T_120 = cat(_T_21[5], _T_21[4]) @[el2_lib.scala 253:22]
|
node _T_120 = cat(_T_21[5], _T_21[4]) @[el2_lib.scala 254:22]
|
||||||
node _T_121 = cat(_T_21[8], _T_21[7]) @[el2_lib.scala 253:22]
|
node _T_121 = cat(_T_21[8], _T_21[7]) @[el2_lib.scala 254:22]
|
||||||
node _T_122 = cat(_T_121, _T_21[6]) @[el2_lib.scala 253:22]
|
node _T_122 = cat(_T_121, _T_21[6]) @[el2_lib.scala 254:22]
|
||||||
node _T_123 = cat(_T_122, _T_120) @[el2_lib.scala 253:22]
|
node _T_123 = cat(_T_122, _T_120) @[el2_lib.scala 254:22]
|
||||||
node _T_124 = cat(_T_123, _T_119) @[el2_lib.scala 253:22]
|
node _T_124 = cat(_T_123, _T_119) @[el2_lib.scala 254:22]
|
||||||
node _T_125 = cat(_T_21[10], _T_21[9]) @[el2_lib.scala 253:22]
|
node _T_125 = cat(_T_21[10], _T_21[9]) @[el2_lib.scala 254:22]
|
||||||
node _T_126 = cat(_T_21[12], _T_21[11]) @[el2_lib.scala 253:22]
|
node _T_126 = cat(_T_21[12], _T_21[11]) @[el2_lib.scala 254:22]
|
||||||
node _T_127 = cat(_T_126, _T_125) @[el2_lib.scala 253:22]
|
node _T_127 = cat(_T_126, _T_125) @[el2_lib.scala 254:22]
|
||||||
node _T_128 = cat(_T_21[14], _T_21[13]) @[el2_lib.scala 253:22]
|
node _T_128 = cat(_T_21[14], _T_21[13]) @[el2_lib.scala 254:22]
|
||||||
node _T_129 = cat(_T_21[17], _T_21[16]) @[el2_lib.scala 253:22]
|
node _T_129 = cat(_T_21[17], _T_21[16]) @[el2_lib.scala 254:22]
|
||||||
node _T_130 = cat(_T_129, _T_21[15]) @[el2_lib.scala 253:22]
|
node _T_130 = cat(_T_129, _T_21[15]) @[el2_lib.scala 254:22]
|
||||||
node _T_131 = cat(_T_130, _T_128) @[el2_lib.scala 253:22]
|
node _T_131 = cat(_T_130, _T_128) @[el2_lib.scala 254:22]
|
||||||
node _T_132 = cat(_T_131, _T_127) @[el2_lib.scala 253:22]
|
node _T_132 = cat(_T_131, _T_127) @[el2_lib.scala 254:22]
|
||||||
node _T_133 = cat(_T_132, _T_124) @[el2_lib.scala 253:22]
|
node _T_133 = cat(_T_132, _T_124) @[el2_lib.scala 254:22]
|
||||||
node _T_134 = xorr(_T_133) @[el2_lib.scala 253:29]
|
node _T_134 = xorr(_T_133) @[el2_lib.scala 254:29]
|
||||||
node _T_135 = cat(_T_22[1], _T_22[0]) @[el2_lib.scala 253:39]
|
node _T_135 = cat(_T_22[1], _T_22[0]) @[el2_lib.scala 254:39]
|
||||||
node _T_136 = cat(_T_22[3], _T_22[2]) @[el2_lib.scala 253:39]
|
node _T_136 = cat(_T_22[3], _T_22[2]) @[el2_lib.scala 254:39]
|
||||||
node _T_137 = cat(_T_136, _T_135) @[el2_lib.scala 253:39]
|
node _T_137 = cat(_T_136, _T_135) @[el2_lib.scala 254:39]
|
||||||
node _T_138 = cat(_T_22[5], _T_22[4]) @[el2_lib.scala 253:39]
|
node _T_138 = cat(_T_22[5], _T_22[4]) @[el2_lib.scala 254:39]
|
||||||
node _T_139 = cat(_T_22[8], _T_22[7]) @[el2_lib.scala 253:39]
|
node _T_139 = cat(_T_22[8], _T_22[7]) @[el2_lib.scala 254:39]
|
||||||
node _T_140 = cat(_T_139, _T_22[6]) @[el2_lib.scala 253:39]
|
node _T_140 = cat(_T_139, _T_22[6]) @[el2_lib.scala 254:39]
|
||||||
node _T_141 = cat(_T_140, _T_138) @[el2_lib.scala 253:39]
|
node _T_141 = cat(_T_140, _T_138) @[el2_lib.scala 254:39]
|
||||||
node _T_142 = cat(_T_141, _T_137) @[el2_lib.scala 253:39]
|
node _T_142 = cat(_T_141, _T_137) @[el2_lib.scala 254:39]
|
||||||
node _T_143 = cat(_T_22[10], _T_22[9]) @[el2_lib.scala 253:39]
|
node _T_143 = cat(_T_22[10], _T_22[9]) @[el2_lib.scala 254:39]
|
||||||
node _T_144 = cat(_T_22[12], _T_22[11]) @[el2_lib.scala 253:39]
|
node _T_144 = cat(_T_22[12], _T_22[11]) @[el2_lib.scala 254:39]
|
||||||
node _T_145 = cat(_T_144, _T_143) @[el2_lib.scala 253:39]
|
node _T_145 = cat(_T_144, _T_143) @[el2_lib.scala 254:39]
|
||||||
node _T_146 = cat(_T_22[14], _T_22[13]) @[el2_lib.scala 253:39]
|
node _T_146 = cat(_T_22[14], _T_22[13]) @[el2_lib.scala 254:39]
|
||||||
node _T_147 = cat(_T_22[17], _T_22[16]) @[el2_lib.scala 253:39]
|
node _T_147 = cat(_T_22[17], _T_22[16]) @[el2_lib.scala 254:39]
|
||||||
node _T_148 = cat(_T_147, _T_22[15]) @[el2_lib.scala 253:39]
|
node _T_148 = cat(_T_147, _T_22[15]) @[el2_lib.scala 254:39]
|
||||||
node _T_149 = cat(_T_148, _T_146) @[el2_lib.scala 253:39]
|
node _T_149 = cat(_T_148, _T_146) @[el2_lib.scala 254:39]
|
||||||
node _T_150 = cat(_T_149, _T_145) @[el2_lib.scala 253:39]
|
node _T_150 = cat(_T_149, _T_145) @[el2_lib.scala 254:39]
|
||||||
node _T_151 = cat(_T_150, _T_142) @[el2_lib.scala 253:39]
|
node _T_151 = cat(_T_150, _T_142) @[el2_lib.scala 254:39]
|
||||||
node _T_152 = xorr(_T_151) @[el2_lib.scala 253:46]
|
node _T_152 = xorr(_T_151) @[el2_lib.scala 254:46]
|
||||||
node _T_153 = cat(_T_23[1], _T_23[0]) @[el2_lib.scala 253:56]
|
node _T_153 = cat(_T_23[1], _T_23[0]) @[el2_lib.scala 254:56]
|
||||||
node _T_154 = cat(_T_23[3], _T_23[2]) @[el2_lib.scala 253:56]
|
node _T_154 = cat(_T_23[3], _T_23[2]) @[el2_lib.scala 254:56]
|
||||||
node _T_155 = cat(_T_154, _T_153) @[el2_lib.scala 253:56]
|
node _T_155 = cat(_T_154, _T_153) @[el2_lib.scala 254:56]
|
||||||
node _T_156 = cat(_T_23[5], _T_23[4]) @[el2_lib.scala 253:56]
|
node _T_156 = cat(_T_23[5], _T_23[4]) @[el2_lib.scala 254:56]
|
||||||
node _T_157 = cat(_T_23[8], _T_23[7]) @[el2_lib.scala 253:56]
|
node _T_157 = cat(_T_23[8], _T_23[7]) @[el2_lib.scala 254:56]
|
||||||
node _T_158 = cat(_T_157, _T_23[6]) @[el2_lib.scala 253:56]
|
node _T_158 = cat(_T_157, _T_23[6]) @[el2_lib.scala 254:56]
|
||||||
node _T_159 = cat(_T_158, _T_156) @[el2_lib.scala 253:56]
|
node _T_159 = cat(_T_158, _T_156) @[el2_lib.scala 254:56]
|
||||||
node _T_160 = cat(_T_159, _T_155) @[el2_lib.scala 253:56]
|
node _T_160 = cat(_T_159, _T_155) @[el2_lib.scala 254:56]
|
||||||
node _T_161 = cat(_T_23[10], _T_23[9]) @[el2_lib.scala 253:56]
|
node _T_161 = cat(_T_23[10], _T_23[9]) @[el2_lib.scala 254:56]
|
||||||
node _T_162 = cat(_T_23[12], _T_23[11]) @[el2_lib.scala 253:56]
|
node _T_162 = cat(_T_23[12], _T_23[11]) @[el2_lib.scala 254:56]
|
||||||
node _T_163 = cat(_T_162, _T_161) @[el2_lib.scala 253:56]
|
node _T_163 = cat(_T_162, _T_161) @[el2_lib.scala 254:56]
|
||||||
node _T_164 = cat(_T_23[14], _T_23[13]) @[el2_lib.scala 253:56]
|
node _T_164 = cat(_T_23[14], _T_23[13]) @[el2_lib.scala 254:56]
|
||||||
node _T_165 = cat(_T_23[17], _T_23[16]) @[el2_lib.scala 253:56]
|
node _T_165 = cat(_T_23[17], _T_23[16]) @[el2_lib.scala 254:56]
|
||||||
node _T_166 = cat(_T_165, _T_23[15]) @[el2_lib.scala 253:56]
|
node _T_166 = cat(_T_165, _T_23[15]) @[el2_lib.scala 254:56]
|
||||||
node _T_167 = cat(_T_166, _T_164) @[el2_lib.scala 253:56]
|
node _T_167 = cat(_T_166, _T_164) @[el2_lib.scala 254:56]
|
||||||
node _T_168 = cat(_T_167, _T_163) @[el2_lib.scala 253:56]
|
node _T_168 = cat(_T_167, _T_163) @[el2_lib.scala 254:56]
|
||||||
node _T_169 = cat(_T_168, _T_160) @[el2_lib.scala 253:56]
|
node _T_169 = cat(_T_168, _T_160) @[el2_lib.scala 254:56]
|
||||||
node _T_170 = xorr(_T_169) @[el2_lib.scala 253:63]
|
node _T_170 = xorr(_T_169) @[el2_lib.scala 254:63]
|
||||||
node _T_171 = cat(_T_24[2], _T_24[1]) @[el2_lib.scala 253:73]
|
node _T_171 = cat(_T_24[2], _T_24[1]) @[el2_lib.scala 254:73]
|
||||||
node _T_172 = cat(_T_171, _T_24[0]) @[el2_lib.scala 253:73]
|
node _T_172 = cat(_T_171, _T_24[0]) @[el2_lib.scala 254:73]
|
||||||
node _T_173 = cat(_T_24[4], _T_24[3]) @[el2_lib.scala 253:73]
|
node _T_173 = cat(_T_24[4], _T_24[3]) @[el2_lib.scala 254:73]
|
||||||
node _T_174 = cat(_T_24[6], _T_24[5]) @[el2_lib.scala 253:73]
|
node _T_174 = cat(_T_24[6], _T_24[5]) @[el2_lib.scala 254:73]
|
||||||
node _T_175 = cat(_T_174, _T_173) @[el2_lib.scala 253:73]
|
node _T_175 = cat(_T_174, _T_173) @[el2_lib.scala 254:73]
|
||||||
node _T_176 = cat(_T_175, _T_172) @[el2_lib.scala 253:73]
|
node _T_176 = cat(_T_175, _T_172) @[el2_lib.scala 254:73]
|
||||||
node _T_177 = cat(_T_24[8], _T_24[7]) @[el2_lib.scala 253:73]
|
node _T_177 = cat(_T_24[8], _T_24[7]) @[el2_lib.scala 254:73]
|
||||||
node _T_178 = cat(_T_24[10], _T_24[9]) @[el2_lib.scala 253:73]
|
node _T_178 = cat(_T_24[10], _T_24[9]) @[el2_lib.scala 254:73]
|
||||||
node _T_179 = cat(_T_178, _T_177) @[el2_lib.scala 253:73]
|
node _T_179 = cat(_T_178, _T_177) @[el2_lib.scala 254:73]
|
||||||
node _T_180 = cat(_T_24[12], _T_24[11]) @[el2_lib.scala 253:73]
|
node _T_180 = cat(_T_24[12], _T_24[11]) @[el2_lib.scala 254:73]
|
||||||
node _T_181 = cat(_T_24[14], _T_24[13]) @[el2_lib.scala 253:73]
|
node _T_181 = cat(_T_24[14], _T_24[13]) @[el2_lib.scala 254:73]
|
||||||
node _T_182 = cat(_T_181, _T_180) @[el2_lib.scala 253:73]
|
node _T_182 = cat(_T_181, _T_180) @[el2_lib.scala 254:73]
|
||||||
node _T_183 = cat(_T_182, _T_179) @[el2_lib.scala 253:73]
|
node _T_183 = cat(_T_182, _T_179) @[el2_lib.scala 254:73]
|
||||||
node _T_184 = cat(_T_183, _T_176) @[el2_lib.scala 253:73]
|
node _T_184 = cat(_T_183, _T_176) @[el2_lib.scala 254:73]
|
||||||
node _T_185 = xorr(_T_184) @[el2_lib.scala 253:80]
|
node _T_185 = xorr(_T_184) @[el2_lib.scala 254:80]
|
||||||
node _T_186 = cat(_T_25[2], _T_25[1]) @[el2_lib.scala 253:90]
|
node _T_186 = cat(_T_25[2], _T_25[1]) @[el2_lib.scala 254:90]
|
||||||
node _T_187 = cat(_T_186, _T_25[0]) @[el2_lib.scala 253:90]
|
node _T_187 = cat(_T_186, _T_25[0]) @[el2_lib.scala 254:90]
|
||||||
node _T_188 = cat(_T_25[4], _T_25[3]) @[el2_lib.scala 253:90]
|
node _T_188 = cat(_T_25[4], _T_25[3]) @[el2_lib.scala 254:90]
|
||||||
node _T_189 = cat(_T_25[6], _T_25[5]) @[el2_lib.scala 253:90]
|
node _T_189 = cat(_T_25[6], _T_25[5]) @[el2_lib.scala 254:90]
|
||||||
node _T_190 = cat(_T_189, _T_188) @[el2_lib.scala 253:90]
|
node _T_190 = cat(_T_189, _T_188) @[el2_lib.scala 254:90]
|
||||||
node _T_191 = cat(_T_190, _T_187) @[el2_lib.scala 253:90]
|
node _T_191 = cat(_T_190, _T_187) @[el2_lib.scala 254:90]
|
||||||
node _T_192 = cat(_T_25[8], _T_25[7]) @[el2_lib.scala 253:90]
|
node _T_192 = cat(_T_25[8], _T_25[7]) @[el2_lib.scala 254:90]
|
||||||
node _T_193 = cat(_T_25[10], _T_25[9]) @[el2_lib.scala 253:90]
|
node _T_193 = cat(_T_25[10], _T_25[9]) @[el2_lib.scala 254:90]
|
||||||
node _T_194 = cat(_T_193, _T_192) @[el2_lib.scala 253:90]
|
node _T_194 = cat(_T_193, _T_192) @[el2_lib.scala 254:90]
|
||||||
node _T_195 = cat(_T_25[12], _T_25[11]) @[el2_lib.scala 253:90]
|
node _T_195 = cat(_T_25[12], _T_25[11]) @[el2_lib.scala 254:90]
|
||||||
node _T_196 = cat(_T_25[14], _T_25[13]) @[el2_lib.scala 253:90]
|
node _T_196 = cat(_T_25[14], _T_25[13]) @[el2_lib.scala 254:90]
|
||||||
node _T_197 = cat(_T_196, _T_195) @[el2_lib.scala 253:90]
|
node _T_197 = cat(_T_196, _T_195) @[el2_lib.scala 254:90]
|
||||||
node _T_198 = cat(_T_197, _T_194) @[el2_lib.scala 253:90]
|
node _T_198 = cat(_T_197, _T_194) @[el2_lib.scala 254:90]
|
||||||
node _T_199 = cat(_T_198, _T_191) @[el2_lib.scala 253:90]
|
node _T_199 = cat(_T_198, _T_191) @[el2_lib.scala 254:90]
|
||||||
node _T_200 = xorr(_T_199) @[el2_lib.scala 253:97]
|
node _T_200 = xorr(_T_199) @[el2_lib.scala 254:97]
|
||||||
node _T_201 = cat(_T_26[2], _T_26[1]) @[el2_lib.scala 253:107]
|
node _T_201 = cat(_T_26[2], _T_26[1]) @[el2_lib.scala 254:107]
|
||||||
node _T_202 = cat(_T_201, _T_26[0]) @[el2_lib.scala 253:107]
|
node _T_202 = cat(_T_201, _T_26[0]) @[el2_lib.scala 254:107]
|
||||||
node _T_203 = cat(_T_26[5], _T_26[4]) @[el2_lib.scala 253:107]
|
node _T_203 = cat(_T_26[5], _T_26[4]) @[el2_lib.scala 254:107]
|
||||||
node _T_204 = cat(_T_203, _T_26[3]) @[el2_lib.scala 253:107]
|
node _T_204 = cat(_T_203, _T_26[3]) @[el2_lib.scala 254:107]
|
||||||
node _T_205 = cat(_T_204, _T_202) @[el2_lib.scala 253:107]
|
node _T_205 = cat(_T_204, _T_202) @[el2_lib.scala 254:107]
|
||||||
node _T_206 = xorr(_T_205) @[el2_lib.scala 253:114]
|
node _T_206 = xorr(_T_205) @[el2_lib.scala 254:114]
|
||||||
node _T_207 = cat(_T_185, _T_200) @[Cat.scala 29:58]
|
node _T_207 = cat(_T_185, _T_200) @[Cat.scala 29:58]
|
||||||
node _T_208 = cat(_T_207, _T_206) @[Cat.scala 29:58]
|
node _T_208 = cat(_T_207, _T_206) @[Cat.scala 29:58]
|
||||||
node _T_209 = cat(_T_134, _T_152) @[Cat.scala 29:58]
|
node _T_209 = cat(_T_134, _T_152) @[Cat.scala 29:58]
|
||||||
node _T_210 = cat(_T_209, _T_170) @[Cat.scala 29:58]
|
node _T_210 = cat(_T_209, _T_170) @[Cat.scala 29:58]
|
||||||
node _T_211 = cat(_T_210, _T_208) @[Cat.scala 29:58]
|
node _T_211 = cat(_T_210, _T_208) @[Cat.scala 29:58]
|
||||||
node _T_212 = xorr(_T_20) @[el2_lib.scala 254:13]
|
node _T_212 = xorr(_T_20) @[el2_lib.scala 255:13]
|
||||||
node _T_213 = xorr(_T_211) @[el2_lib.scala 254:23]
|
node _T_213 = xorr(_T_211) @[el2_lib.scala 255:23]
|
||||||
node _T_214 = xor(_T_212, _T_213) @[el2_lib.scala 254:18]
|
node _T_214 = xor(_T_212, _T_213) @[el2_lib.scala 255:18]
|
||||||
node ic_tag_ecc = cat(_T_214, _T_211) @[Cat.scala 29:58]
|
node ic_tag_ecc = cat(_T_214, _T_211) @[Cat.scala 29:58]
|
||||||
node _T_215 = mux(UInt<1>("h00"), UInt<13>("h01fff"), UInt<13>("h00")) @[Bitwise.scala 72:12]
|
node _T_215 = mux(UInt<1>("h00"), UInt<13>("h01fff"), UInt<13>("h00")) @[Bitwise.scala 72:12]
|
||||||
node _T_216 = bits(io.ic_rw_addr, 28, 10) @[el2_ifu_ic_mem.scala 86:96]
|
node _T_216 = bits(io.ic_rw_addr, 28, 10) @[el2_ifu_ic_mem.scala 86:96]
|
||||||
node _T_217 = cat(_T_215, _T_216) @[Cat.scala 29:58]
|
node _T_217 = cat(_T_215, _T_216) @[Cat.scala 29:58]
|
||||||
node ic_tag_parity = xorr(_T_217) @[el2_lib.scala 193:13]
|
node ic_tag_parity = xorr(_T_217) @[el2_lib.scala 194:13]
|
||||||
node _T_218 = and(io.ic_debug_wr_en, io.ic_debug_tag_array) @[el2_ifu_ic_mem.scala 90:30]
|
node _T_218 = and(io.ic_debug_wr_en, io.ic_debug_tag_array) @[el2_ifu_ic_mem.scala 90:30]
|
||||||
node _T_219 = bits(io.ic_debug_wr_data, 68, 64) @[el2_ifu_ic_mem.scala 90:93]
|
node _T_219 = bits(io.ic_debug_wr_data, 68, 64) @[el2_ifu_ic_mem.scala 90:93]
|
||||||
node _T_220 = bits(io.ic_debug_wr_data, 31, 11) @[el2_ifu_ic_mem.scala 90:150]
|
node _T_220 = bits(io.ic_debug_wr_data, 31, 11) @[el2_ifu_ic_mem.scala 90:150]
|
||||||
|
@ -338,6 +338,56 @@ circuit EL2_IC_TAG :
|
||||||
node _T_222 = bits(ic_tag_ecc, 4, 0) @[el2_ifu_ic_mem.scala 91:38]
|
node _T_222 = bits(ic_tag_ecc, 4, 0) @[el2_ifu_ic_mem.scala 91:38]
|
||||||
node _T_223 = mux(UInt<1>("h00"), UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12]
|
node _T_223 = mux(UInt<1>("h00"), UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12]
|
||||||
node _T_224 = cat(_T_222, _T_223) @[Cat.scala 29:58]
|
node _T_224 = cat(_T_222, _T_223) @[Cat.scala 29:58]
|
||||||
node ic_tag_wr_data = mux(_T_218, _T_221, _T_224) @[el2_ifu_ic_mem.scala 90:11]
|
node _T_225 = bits(io.ic_rw_addr, 28, 10) @[el2_ifu_ic_mem.scala 91:121]
|
||||||
io.test <= ic_tag_wr_data @[el2_ifu_ic_mem.scala 93:11]
|
node _T_226 = cat(_T_224, _T_225) @[Cat.scala 29:58]
|
||||||
|
node ic_tag_wr_data = mux(_T_218, _T_221, _T_226) @[el2_ifu_ic_mem.scala 90:11]
|
||||||
|
node _T_227 = or(io.ic_debug_rd_en, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 93:45]
|
||||||
|
node _T_228 = bits(_T_227, 0, 0) @[el2_ifu_ic_mem.scala 93:66]
|
||||||
|
node _T_229 = bits(io.ic_debug_addr, 9, 3) @[el2_ifu_ic_mem.scala 93:89]
|
||||||
|
node ic_rw_addr_q = mux(_T_228, _T_229, io.ic_rw_addr) @[el2_ifu_ic_mem.scala 93:25]
|
||||||
|
reg ic_debug_rd_way_en_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 95:38]
|
||||||
|
ic_debug_rd_way_en_ff <= ic_debug_rd_way_en @[el2_ifu_ic_mem.scala 95:38]
|
||||||
|
cmem tag_mem : UInt<26>[2][128] @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire ic_tag_data_raw : UInt<26>[2] @[el2_ifu_ic_mem.scala 98:29]
|
||||||
|
ic_tag_data_raw[0] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 101:24]
|
||||||
|
node _T_230 = bits(ic_tag_wren_q, 0, 0) @[el2_ifu_ic_mem.scala 102:23]
|
||||||
|
node _T_231 = bits(ic_tag_clken, 0, 0) @[el2_ifu_ic_mem.scala 102:39]
|
||||||
|
node _T_232 = and(_T_230, _T_231) @[el2_ifu_ic_mem.scala 102:26]
|
||||||
|
when _T_232 : @[el2_ifu_ic_mem.scala 102:43]
|
||||||
|
node _T_233 = bits(ic_rw_addr_q, 9, 3) @[el2_ifu_ic_mem.scala 103:25]
|
||||||
|
infer mport _T_234 = tag_mem[_T_233], clock @[el2_ifu_ic_mem.scala 103:12]
|
||||||
|
node _T_235 = bits(ic_rw_addr_q, 9, 3) @[el2_ifu_ic_mem.scala 103:81]
|
||||||
|
node _T_236 = bits(_T_235, 0, 0)
|
||||||
|
_T_234[_T_236] <= ic_tag_wr_data @[el2_ifu_ic_mem.scala 103:125]
|
||||||
|
skip @[el2_ifu_ic_mem.scala 102:43]
|
||||||
|
else : @[el2_ifu_ic_mem.scala 104:32]
|
||||||
|
node _T_237 = bits(ic_tag_clken, 0, 0) @[el2_ifu_ic_mem.scala 104:28]
|
||||||
|
when _T_237 : @[el2_ifu_ic_mem.scala 104:32]
|
||||||
|
node _T_238 = bits(ic_rw_addr_q, 9, 3) @[el2_ifu_ic_mem.scala 105:49]
|
||||||
|
infer mport _T_239 = tag_mem[_T_238], clock @[el2_ifu_ic_mem.scala 105:36]
|
||||||
|
node _T_240 = bits(ic_rw_addr_q, 9, 3) @[el2_ifu_ic_mem.scala 105:105]
|
||||||
|
node _T_241 = bits(_T_240, 0, 0)
|
||||||
|
ic_tag_data_raw[0] <= _T_239[_T_241] @[el2_ifu_ic_mem.scala 105:26]
|
||||||
|
skip @[el2_ifu_ic_mem.scala 104:32]
|
||||||
|
ic_tag_data_raw[1] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 101:24]
|
||||||
|
node _T_242 = bits(ic_tag_wren_q, 1, 1) @[el2_ifu_ic_mem.scala 102:23]
|
||||||
|
node _T_243 = bits(ic_tag_clken, 1, 1) @[el2_ifu_ic_mem.scala 102:39]
|
||||||
|
node _T_244 = and(_T_242, _T_243) @[el2_ifu_ic_mem.scala 102:26]
|
||||||
|
when _T_244 : @[el2_ifu_ic_mem.scala 102:43]
|
||||||
|
node _T_245 = bits(ic_rw_addr_q, 9, 3) @[el2_ifu_ic_mem.scala 103:25]
|
||||||
|
infer mport _T_246 = tag_mem[_T_245], clock @[el2_ifu_ic_mem.scala 103:12]
|
||||||
|
node _T_247 = bits(ic_rw_addr_q, 9, 3) @[el2_ifu_ic_mem.scala 103:81]
|
||||||
|
node _T_248 = bits(_T_247, 0, 0)
|
||||||
|
_T_246[_T_248] <= ic_tag_wr_data @[el2_ifu_ic_mem.scala 103:125]
|
||||||
|
skip @[el2_ifu_ic_mem.scala 102:43]
|
||||||
|
else : @[el2_ifu_ic_mem.scala 104:32]
|
||||||
|
node _T_249 = bits(ic_tag_clken, 1, 1) @[el2_ifu_ic_mem.scala 104:28]
|
||||||
|
when _T_249 : @[el2_ifu_ic_mem.scala 104:32]
|
||||||
|
node _T_250 = bits(ic_rw_addr_q, 9, 3) @[el2_ifu_ic_mem.scala 105:49]
|
||||||
|
infer mport _T_251 = tag_mem[_T_250], clock @[el2_ifu_ic_mem.scala 105:36]
|
||||||
|
node _T_252 = bits(ic_rw_addr_q, 9, 3) @[el2_ifu_ic_mem.scala 105:105]
|
||||||
|
node _T_253 = bits(_T_252, 0, 0)
|
||||||
|
ic_tag_data_raw[1] <= _T_251[_T_253] @[el2_ifu_ic_mem.scala 105:26]
|
||||||
|
skip @[el2_ifu_ic_mem.scala 104:32]
|
||||||
|
io.test <= ic_tag_data_raw[0] @[el2_ifu_ic_mem.scala 108:11]
|
||||||
|
|
||||||
|
|
179
EL2_IC_TAG.v
179
EL2_IC_TAG.v
|
@ -19,33 +19,170 @@ module EL2_IC_TAG(
|
||||||
input io_scan_mode,
|
input io_scan_mode,
|
||||||
output [25:0] io_test
|
output [25:0] io_test
|
||||||
);
|
);
|
||||||
|
`ifdef RANDOMIZE_MEM_INIT
|
||||||
|
reg [31:0] _RAND_0;
|
||||||
|
reg [31:0] _RAND_1;
|
||||||
|
`endif // RANDOMIZE_MEM_INIT
|
||||||
|
reg [25:0] tag_mem_0 [0:127]; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [25:0] tag_mem_0__T_239_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [6:0] tag_mem_0__T_239_addr; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [25:0] tag_mem_0__T_251_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [6:0] tag_mem_0__T_251_addr; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [25:0] tag_mem_0__T_234_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [6:0] tag_mem_0__T_234_addr; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire tag_mem_0__T_234_mask; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire tag_mem_0__T_234_en; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [25:0] tag_mem_0__T_246_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [6:0] tag_mem_0__T_246_addr; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire tag_mem_0__T_246_mask; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire tag_mem_0__T_246_en; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
reg [25:0] tag_mem_1 [0:127]; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [25:0] tag_mem_1__T_239_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [6:0] tag_mem_1__T_239_addr; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [25:0] tag_mem_1__T_251_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [6:0] tag_mem_1__T_251_addr; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [25:0] tag_mem_1__T_234_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [6:0] tag_mem_1__T_234_addr; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire tag_mem_1__T_234_mask; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire tag_mem_1__T_234_en; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [25:0] tag_mem_1__T_246_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire [6:0] tag_mem_1__T_246_addr; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire tag_mem_1__T_246_mask; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire tag_mem_1__T_246_en; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
wire _T_1 = io_ic_rw_addr[2:1] == 2'h1; // @[el2_ifu_ic_mem.scala 71:95]
|
||||||
|
wire [1:0] _T_3 = _T_1 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12]
|
||||||
|
wire [1:0] ic_tag_wren = io_ic_wr_en & _T_3; // @[el2_ifu_ic_mem.scala 71:33]
|
||||||
|
wire _T_4 = io_ic_rd_en | io_clk_override; // @[el2_ifu_ic_mem.scala 72:55]
|
||||||
|
wire [1:0] _T_6 = _T_4 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12]
|
||||||
|
wire [1:0] _T_7 = _T_6 | io_ic_wr_en; // @[el2_ifu_ic_mem.scala 72:73]
|
||||||
wire _T_14 = io_ic_debug_wr_en & io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 80:65]
|
wire _T_14 = io_ic_debug_wr_en & io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 80:65]
|
||||||
|
wire [1:0] _T_16 = _T_14 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12]
|
||||||
|
wire [1:0] ic_debug_wr_way_en = _T_16 & io_ic_debug_way; // @[el2_ifu_ic_mem.scala 80:90]
|
||||||
|
wire [1:0] _T_8 = _T_7 | ic_debug_wr_way_en; // @[el2_ifu_ic_mem.scala 72:87]
|
||||||
|
wire _T_10 = io_ic_debug_rd_en & io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 79:65]
|
||||||
|
wire [1:0] _T_12 = _T_10 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12]
|
||||||
|
wire [1:0] ic_debug_rd_way_en = _T_12 & io_ic_debug_way; // @[el2_ifu_ic_mem.scala 79:90]
|
||||||
|
wire [1:0] ic_tag_clken = _T_8 | ic_debug_rd_way_en; // @[el2_ifu_ic_mem.scala 72:108]
|
||||||
|
wire [1:0] ic_tag_wren_q = ic_tag_wren | ic_debug_wr_way_en; // @[el2_ifu_ic_mem.scala 82:35]
|
||||||
wire [31:0] _T_20 = {13'h0,io_ic_rw_addr[28:10]}; // @[Cat.scala 29:58]
|
wire [31:0] _T_20 = {13'h0,io_ic_rw_addr[28:10]}; // @[Cat.scala 29:58]
|
||||||
wire [8:0] _T_124 = {_T_20[16],_T_20[14],_T_20[12],_T_20[10],_T_20[8],_T_20[6],_T_20[5],_T_20[3],_T_20[1]}; // @[el2_lib.scala 253:22]
|
wire [8:0] _T_124 = {_T_20[16],_T_20[14],_T_20[12],_T_20[10],_T_20[8],_T_20[6],_T_20[5],_T_20[3],_T_20[1]}; // @[el2_lib.scala 254:22]
|
||||||
wire [17:0] _T_133 = {_T_20[31],_T_20[30],_T_20[28],_T_20[27],_T_20[25],_T_20[23],_T_20[21],_T_20[20],_T_20[18],_T_124}; // @[el2_lib.scala 253:22]
|
wire [17:0] _T_133 = {_T_20[31],_T_20[30],_T_20[28],_T_20[27],_T_20[25],_T_20[23],_T_20[21],_T_20[20],_T_20[18],_T_124}; // @[el2_lib.scala 254:22]
|
||||||
wire _T_134 = ^_T_133; // @[el2_lib.scala 253:29]
|
wire _T_134 = ^_T_133; // @[el2_lib.scala 254:29]
|
||||||
wire [8:0] _T_142 = {_T_20[15],_T_20[14],_T_20[11],_T_20[10],_T_20[7],_T_20[6],_T_20[4],_T_20[3],_T_20[0]}; // @[el2_lib.scala 253:39]
|
wire [8:0] _T_142 = {_T_20[15],_T_20[14],_T_20[11],_T_20[10],_T_20[7],_T_20[6],_T_20[4],_T_20[3],_T_20[0]}; // @[el2_lib.scala 254:39]
|
||||||
wire [17:0] _T_151 = {_T_20[31],_T_20[29],_T_20[28],_T_20[26],_T_20[25],_T_20[22],_T_20[21],_T_20[19],_T_20[18],_T_142}; // @[el2_lib.scala 253:39]
|
wire [17:0] _T_151 = {_T_20[31],_T_20[29],_T_20[28],_T_20[26],_T_20[25],_T_20[22],_T_20[21],_T_20[19],_T_20[18],_T_142}; // @[el2_lib.scala 254:39]
|
||||||
wire _T_152 = ^_T_151; // @[el2_lib.scala 253:46]
|
wire _T_152 = ^_T_151; // @[el2_lib.scala 254:46]
|
||||||
wire [8:0] _T_160 = {_T_20[15],_T_20[14],_T_20[9],_T_20[8],_T_20[7],_T_20[6],_T_20[2],_T_20[1],_T_20[0]}; // @[el2_lib.scala 253:56]
|
wire [8:0] _T_160 = {_T_20[15],_T_20[14],_T_20[9],_T_20[8],_T_20[7],_T_20[6],_T_20[2],_T_20[1],_T_20[0]}; // @[el2_lib.scala 254:56]
|
||||||
wire [17:0] _T_169 = {_T_20[30],_T_20[29],_T_20[28],_T_20[24],_T_20[23],_T_20[22],_T_20[21],_T_20[17],_T_20[16],_T_160}; // @[el2_lib.scala 253:56]
|
wire [17:0] _T_169 = {_T_20[30],_T_20[29],_T_20[28],_T_20[24],_T_20[23],_T_20[22],_T_20[21],_T_20[17],_T_20[16],_T_160}; // @[el2_lib.scala 254:56]
|
||||||
wire _T_170 = ^_T_169; // @[el2_lib.scala 253:63]
|
wire _T_170 = ^_T_169; // @[el2_lib.scala 254:63]
|
||||||
wire [6:0] _T_176 = {_T_20[12],_T_20[11],_T_20[10],_T_20[9],_T_20[8],_T_20[7],_T_20[6]}; // @[el2_lib.scala 253:73]
|
wire [6:0] _T_176 = {_T_20[12],_T_20[11],_T_20[10],_T_20[9],_T_20[8],_T_20[7],_T_20[6]}; // @[el2_lib.scala 254:73]
|
||||||
wire [14:0] _T_184 = {_T_20[27],_T_20[26],_T_20[25],_T_20[24],_T_20[23],_T_20[22],_T_20[21],_T_20[13],_T_176}; // @[el2_lib.scala 253:73]
|
wire [14:0] _T_184 = {_T_20[27],_T_20[26],_T_20[25],_T_20[24],_T_20[23],_T_20[22],_T_20[21],_T_20[13],_T_176}; // @[el2_lib.scala 254:73]
|
||||||
wire _T_185 = ^_T_184; // @[el2_lib.scala 253:80]
|
wire _T_185 = ^_T_184; // @[el2_lib.scala 254:80]
|
||||||
wire [14:0] _T_199 = {_T_20[20],_T_20[19],_T_20[18],_T_20[17],_T_20[16],_T_20[15],_T_20[14],_T_20[13],_T_176}; // @[el2_lib.scala 253:90]
|
wire [14:0] _T_199 = {_T_20[20],_T_20[19],_T_20[18],_T_20[17],_T_20[16],_T_20[15],_T_20[14],_T_20[13],_T_176}; // @[el2_lib.scala 254:90]
|
||||||
wire _T_200 = ^_T_199; // @[el2_lib.scala 253:97]
|
wire _T_200 = ^_T_199; // @[el2_lib.scala 254:97]
|
||||||
wire [5:0] _T_205 = {_T_20[5],_T_20[4],_T_20[3],_T_20[2],_T_20[1],_T_20[0]}; // @[el2_lib.scala 253:107]
|
wire [5:0] _T_205 = {_T_20[5],_T_20[4],_T_20[3],_T_20[2],_T_20[1],_T_20[0]}; // @[el2_lib.scala 254:107]
|
||||||
wire _T_206 = ^_T_205; // @[el2_lib.scala 253:114]
|
wire _T_206 = ^_T_205; // @[el2_lib.scala 254:114]
|
||||||
wire [5:0] _T_211 = {_T_134,_T_152,_T_170,_T_185,_T_200,_T_206}; // @[Cat.scala 29:58]
|
wire [5:0] _T_211 = {_T_134,_T_152,_T_170,_T_185,_T_200,_T_206}; // @[Cat.scala 29:58]
|
||||||
wire _T_212 = ^_T_20; // @[el2_lib.scala 254:13]
|
wire _T_212 = ^_T_20; // @[el2_lib.scala 255:13]
|
||||||
wire _T_213 = ^_T_211; // @[el2_lib.scala 254:23]
|
wire _T_213 = ^_T_211; // @[el2_lib.scala 255:23]
|
||||||
wire _T_214 = _T_212 ^ _T_213; // @[el2_lib.scala 254:18]
|
wire _T_214 = _T_212 ^ _T_213; // @[el2_lib.scala 255:18]
|
||||||
wire [6:0] ic_tag_ecc = {_T_214,_T_134,_T_152,_T_170,_T_185,_T_200,_T_206}; // @[Cat.scala 29:58]
|
wire [6:0] ic_tag_ecc = {_T_214,_T_134,_T_152,_T_170,_T_185,_T_200,_T_206}; // @[Cat.scala 29:58]
|
||||||
wire [25:0] _T_221 = {io_ic_debug_wr_data[68:64],io_ic_debug_wr_data[31:11]}; // @[Cat.scala 29:58]
|
wire [25:0] _T_221 = {io_ic_debug_wr_data[68:64],io_ic_debug_wr_data[31:11]}; // @[Cat.scala 29:58]
|
||||||
wire [6:0] _T_224 = {ic_tag_ecc[4:0],2'h0}; // @[Cat.scala 29:58]
|
wire [25:0] _T_226 = {ic_tag_ecc[4:0],2'h0,io_ic_rw_addr[28:10]}; // @[Cat.scala 29:58]
|
||||||
|
wire _T_227 = io_ic_debug_rd_en | io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 93:45]
|
||||||
|
wire [28:0] ic_rw_addr_q = _T_227 ? {{22'd0}, io_ic_debug_addr[9:3]} : io_ic_rw_addr; // @[el2_ifu_ic_mem.scala 93:25]
|
||||||
|
wire _T_232 = ic_tag_wren_q[0] & ic_tag_clken[0]; // @[el2_ifu_ic_mem.scala 102:26]
|
||||||
|
wire [25:0] _GEN_4 = tag_mem_0__T_239_data; // @[el2_ifu_ic_mem.scala 105:26]
|
||||||
|
wire [25:0] _GEN_5 = ic_rw_addr_q[3] ? tag_mem_1__T_239_data : _GEN_4; // @[el2_ifu_ic_mem.scala 105:26]
|
||||||
|
wire [25:0] _GEN_9 = ic_tag_clken[0] ? _GEN_5 : 26'h0; // @[el2_ifu_ic_mem.scala 104:32]
|
||||||
|
wire _T_244 = ic_tag_wren_q[1] & ic_tag_clken[1]; // @[el2_ifu_ic_mem.scala 102:26]
|
||||||
|
assign tag_mem_0__T_239_addr = ic_rw_addr_q[9:3];
|
||||||
|
assign tag_mem_0__T_239_data = tag_mem_0[tag_mem_0__T_239_addr]; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
assign tag_mem_0__T_251_addr = ic_rw_addr_q[9:3];
|
||||||
|
assign tag_mem_0__T_251_data = tag_mem_0[tag_mem_0__T_251_addr]; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
assign tag_mem_0__T_234_data = _T_14 ? _T_221 : _T_226;
|
||||||
|
assign tag_mem_0__T_234_addr = ic_rw_addr_q[9:3];
|
||||||
|
assign tag_mem_0__T_234_mask = ~ic_rw_addr_q[3];
|
||||||
|
assign tag_mem_0__T_234_en = ic_tag_wren_q[0] & ic_tag_clken[0];
|
||||||
|
assign tag_mem_0__T_246_data = _T_14 ? _T_221 : _T_226;
|
||||||
|
assign tag_mem_0__T_246_addr = ic_rw_addr_q[9:3];
|
||||||
|
assign tag_mem_0__T_246_mask = ~ic_rw_addr_q[3];
|
||||||
|
assign tag_mem_0__T_246_en = ic_tag_wren_q[1] & ic_tag_clken[1];
|
||||||
|
assign tag_mem_1__T_239_addr = ic_rw_addr_q[9:3];
|
||||||
|
assign tag_mem_1__T_239_data = tag_mem_1[tag_mem_1__T_239_addr]; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
assign tag_mem_1__T_251_addr = ic_rw_addr_q[9:3];
|
||||||
|
assign tag_mem_1__T_251_data = tag_mem_1[tag_mem_1__T_251_addr]; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
assign tag_mem_1__T_234_data = _T_14 ? _T_221 : _T_226;
|
||||||
|
assign tag_mem_1__T_234_addr = ic_rw_addr_q[9:3];
|
||||||
|
assign tag_mem_1__T_234_mask = ic_rw_addr_q[3];
|
||||||
|
assign tag_mem_1__T_234_en = ic_tag_wren_q[0] & ic_tag_clken[0];
|
||||||
|
assign tag_mem_1__T_246_data = _T_14 ? _T_221 : _T_226;
|
||||||
|
assign tag_mem_1__T_246_addr = ic_rw_addr_q[9:3];
|
||||||
|
assign tag_mem_1__T_246_mask = ic_rw_addr_q[3];
|
||||||
|
assign tag_mem_1__T_246_en = ic_tag_wren_q[1] & ic_tag_clken[1];
|
||||||
assign io_ictag_debug_rd_data = 26'h0; // @[el2_ifu_ic_mem.scala 64:26]
|
assign io_ictag_debug_rd_data = 26'h0; // @[el2_ifu_ic_mem.scala 64:26]
|
||||||
assign io_ic_rd_hit = 2'h0; // @[el2_ifu_ic_mem.scala 65:16]
|
assign io_ic_rd_hit = 2'h0; // @[el2_ifu_ic_mem.scala 65:16]
|
||||||
assign io_ic_tag_perr = 1'h0; // @[el2_ifu_ic_mem.scala 66:18]
|
assign io_ic_tag_perr = 1'h0; // @[el2_ifu_ic_mem.scala 66:18]
|
||||||
assign io_test = _T_14 ? _T_221 : {{19'd0}, _T_224}; // @[el2_ifu_ic_mem.scala 93:11]
|
assign io_test = _T_232 ? 26'h0 : _GEN_9; // @[el2_ifu_ic_mem.scala 108:11]
|
||||||
|
`ifdef RANDOMIZE_GARBAGE_ASSIGN
|
||||||
|
`define RANDOMIZE
|
||||||
|
`endif
|
||||||
|
`ifdef RANDOMIZE_INVALID_ASSIGN
|
||||||
|
`define RANDOMIZE
|
||||||
|
`endif
|
||||||
|
`ifdef RANDOMIZE_REG_INIT
|
||||||
|
`define RANDOMIZE
|
||||||
|
`endif
|
||||||
|
`ifdef RANDOMIZE_MEM_INIT
|
||||||
|
`define RANDOMIZE
|
||||||
|
`endif
|
||||||
|
`ifndef RANDOM
|
||||||
|
`define RANDOM $random
|
||||||
|
`endif
|
||||||
|
`ifdef RANDOMIZE_MEM_INIT
|
||||||
|
integer initvar;
|
||||||
|
`endif
|
||||||
|
`ifndef SYNTHESIS
|
||||||
|
`ifdef FIRRTL_BEFORE_INITIAL
|
||||||
|
`FIRRTL_BEFORE_INITIAL
|
||||||
|
`endif
|
||||||
|
initial begin
|
||||||
|
`ifdef RANDOMIZE
|
||||||
|
`ifdef INIT_RANDOM
|
||||||
|
`INIT_RANDOM
|
||||||
|
`endif
|
||||||
|
`ifndef VERILATOR
|
||||||
|
`ifdef RANDOMIZE_DELAY
|
||||||
|
#`RANDOMIZE_DELAY begin end
|
||||||
|
`else
|
||||||
|
#0.002 begin end
|
||||||
|
`endif
|
||||||
|
`endif
|
||||||
|
`ifdef RANDOMIZE_MEM_INIT
|
||||||
|
_RAND_0 = {1{`RANDOM}};
|
||||||
|
for (initvar = 0; initvar < 128; initvar = initvar+1)
|
||||||
|
tag_mem_0[initvar] = _RAND_0[25:0];
|
||||||
|
_RAND_1 = {1{`RANDOM}};
|
||||||
|
for (initvar = 0; initvar < 128; initvar = initvar+1)
|
||||||
|
tag_mem_1[initvar] = _RAND_1[25:0];
|
||||||
|
`endif // RANDOMIZE_MEM_INIT
|
||||||
|
`endif // RANDOMIZE
|
||||||
|
end // initial
|
||||||
|
`ifdef FIRRTL_AFTER_INITIAL
|
||||||
|
`FIRRTL_AFTER_INITIAL
|
||||||
|
`endif
|
||||||
|
`endif // SYNTHESIS
|
||||||
|
always @(posedge clock) begin
|
||||||
|
if(tag_mem_0__T_234_en & tag_mem_0__T_234_mask) begin
|
||||||
|
tag_mem_0[tag_mem_0__T_234_addr] <= tag_mem_0__T_234_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
end
|
||||||
|
if(tag_mem_0__T_246_en & tag_mem_0__T_246_mask) begin
|
||||||
|
tag_mem_0[tag_mem_0__T_246_addr] <= tag_mem_0__T_246_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
end
|
||||||
|
if(tag_mem_1__T_234_en & tag_mem_1__T_234_mask) begin
|
||||||
|
tag_mem_1[tag_mem_1__T_234_addr] <= tag_mem_1__T_234_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
end
|
||||||
|
if(tag_mem_1__T_246_en & tag_mem_1__T_246_mask) begin
|
||||||
|
tag_mem_1[tag_mem_1__T_246_addr] <= tag_mem_1__T_246_data; // @[el2_ifu_ic_mem.scala 97:20]
|
||||||
|
end
|
||||||
|
end
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
@ -1,4 +1,11 @@
|
||||||
[
|
[
|
||||||
|
{
|
||||||
|
"class":"firrtl.transforms.CombinationalPath",
|
||||||
|
"sink":"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_test_hash_p1",
|
||||||
|
"sources":[
|
||||||
|
"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifc_fetch_addr_f"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"class":"firrtl.transforms.CombinationalPath",
|
"class":"firrtl.transforms.CombinationalPath",
|
||||||
"sink":"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifu_bp_btb_target_f",
|
"sink":"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifu_bp_btb_target_f",
|
||||||
|
@ -130,6 +137,13 @@
|
||||||
"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_exu_i0_br_index_r"
|
"~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_test_hash",
|
||||||
|
"sources":[
|
||||||
|
"~el2_ifu_bp_ctl|el2_ifu_bp_ctl>io_ifc_fetch_addr_f"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"class":"firrtl.EmitCircuitAnnotation",
|
"class":"firrtl.EmitCircuitAnnotation",
|
||||||
"emitter":"firrtl.VerilogEmitter"
|
"emitter":"firrtl.VerilogEmitter"
|
||||||
|
|
41554
el2_ifu_bp_ctl.fir
41554
el2_ifu_bp_ctl.fir
File diff suppressed because it is too large
Load Diff
7406
el2_ifu_bp_ctl.v
7406
el2_ifu_bp_ctl.v
File diff suppressed because it is too large
Load Diff
|
@ -6,9 +6,7 @@ import chisel3.util._
|
||||||
|
|
||||||
class el2_ifu_bp_ctl extends Module with el2_lib {
|
class el2_ifu_bp_ctl extends Module with el2_lib {
|
||||||
val io = IO (new Bundle {
|
val io = IO (new Bundle {
|
||||||
// val clk = Input(Bool())
|
val active_clk = Input(Clock())
|
||||||
// val active_clk = Input(Bool())
|
|
||||||
// val rst_l = Input(Bool())
|
|
||||||
val ic_hit_f = Input(Bool())
|
val ic_hit_f = Input(Bool())
|
||||||
val ifc_fetch_addr_f = Input(UInt(31.W))
|
val ifc_fetch_addr_f = Input(UInt(31.W))
|
||||||
val ifc_fetch_req_f = Input(Bool()) // Fetch request generated by the IFC
|
val ifc_fetch_req_f = Input(Bool()) // Fetch request generated by the IFC
|
||||||
|
@ -38,6 +36,9 @@ class el2_ifu_bp_ctl extends Module with el2_lib {
|
||||||
val ifu_bp_pc4_f = Output(UInt(2.W))
|
val ifu_bp_pc4_f = Output(UInt(2.W))
|
||||||
val ifu_bp_valid_f = Output(UInt(2.W))
|
val ifu_bp_valid_f = Output(UInt(2.W))
|
||||||
val ifu_bp_poffset_f = Output(UInt(12.W))
|
val ifu_bp_poffset_f = Output(UInt(12.W))
|
||||||
|
|
||||||
|
val test_hash = Output(UInt())
|
||||||
|
val test_hash_p1 = Output(UInt())
|
||||||
})
|
})
|
||||||
|
|
||||||
val TAG_START = 16+BTB_BTAG_SIZE
|
val TAG_START = 16+BTB_BTAG_SIZE
|
||||||
|
@ -46,6 +47,7 @@ class el2_ifu_bp_ctl extends Module with el2_lib {
|
||||||
val CALL = 2
|
val CALL = 2
|
||||||
val RET = 1
|
val RET = 1
|
||||||
val BV = 0
|
val BV = 0
|
||||||
|
|
||||||
val LRU_SIZE = BTB_ARRAY_DEPTH
|
val LRU_SIZE = BTB_ARRAY_DEPTH
|
||||||
val NUM_BHT_LOOP = if(BHT_ARRAY_DEPTH > 16) 16 else BHT_ARRAY_DEPTH
|
val NUM_BHT_LOOP = if(BHT_ARRAY_DEPTH > 16) 16 else BHT_ARRAY_DEPTH
|
||||||
val NUM_BHT_LOOP_INNER_HI = if(BHT_ARRAY_DEPTH > 16) BHT_ADDR_LO+3 else BHT_ADDR_HI
|
val NUM_BHT_LOOP_INNER_HI = if(BHT_ARRAY_DEPTH > 16) BHT_ADDR_LO+3 else BHT_ADDR_HI
|
||||||
|
@ -89,11 +91,12 @@ class el2_ifu_bp_ctl extends Module with el2_lib {
|
||||||
|
|
||||||
// Hash the first PC
|
// Hash the first PC
|
||||||
val btb_rd_addr_f = el2_btb_addr_hash(io.ifc_fetch_addr_f)
|
val btb_rd_addr_f = el2_btb_addr_hash(io.ifc_fetch_addr_f)
|
||||||
|
io.test_hash := btb_rd_addr_f
|
||||||
// Second pc = pc +4
|
// Second pc = pc +4
|
||||||
val fetch_addr_p1_f = io.ifc_fetch_addr_f + 4.U
|
val fetch_addr_p1_f = io.ifc_fetch_addr_f + 2.U
|
||||||
// Hash the second pc
|
// Hash the second pc
|
||||||
val btb_rd_addr_p1_f = el2_btb_addr_hash(fetch_addr_p1_f)
|
val btb_rd_addr_p1_f = el2_btb_addr_hash(fetch_addr_p1_f)
|
||||||
|
io.test_hash_p1 := btb_rd_addr_p1_f
|
||||||
// TODO
|
// TODO
|
||||||
val btb_sel_f = Cat(~bht_dir_f(0),bht_dir_f(0))
|
val btb_sel_f = Cat(~bht_dir_f(0),bht_dir_f(0))
|
||||||
|
|
||||||
|
|
|
@ -85,12 +85,41 @@ class EL2_IC_TAG extends Module with el2_lib with param {
|
||||||
|
|
||||||
val ic_tag_parity = if(ICACHE_ECC) rveven_paritygen(Cat(Fill(ICACHE_TAG_LO,0.U),io.ic_rw_addr(31-3, ICACHE_TAG_LO-3))) else 0.U
|
val ic_tag_parity = if(ICACHE_ECC) rveven_paritygen(Cat(Fill(ICACHE_TAG_LO,0.U),io.ic_rw_addr(31-3, ICACHE_TAG_LO-3))) else 0.U
|
||||||
|
|
||||||
val ic_tag_wr_data = if(ICACHE_TAG_LO==11) Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)),
|
val ic_tag_wr_data = if(ICACHE_TAG_LO==1)Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)),
|
||||||
Cat(if(ICACHE_ECC) ic_tag_ecc(4,0) else ic_tag_parity, io.ic_rw_addr(31-3,ICACHE_TAG_LO-3)))
|
Cat(if(ICACHE_ECC) ic_tag_ecc(4,0) else ic_tag_parity, io.ic_rw_addr(31-3,ICACHE_TAG_LO-3)))
|
||||||
else Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)),
|
else Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)),
|
||||||
Cat(if(ICACHE_ECC) Cat(ic_tag_ecc(4,0), Fill(PAD_BITS,0.U)) else Cat(ic_tag_parity,Fill(PAD_BITS,0.U), io.ic_rw_addr(31-3,ICACHE_TAG_LO-3))))
|
Cat(if(ICACHE_ECC) Cat(ic_tag_ecc(4,0),Fill(PAD_BITS,0.U)) else Cat(ic_tag_parity,Fill(PAD_BITS,0.U)), io.ic_rw_addr(31-3,ICACHE_TAG_LO-3)))
|
||||||
|
|
||||||
io.test := ic_tag_wr_data
|
val ic_rw_addr_q = Mux((io.ic_debug_rd_en | io.ic_debug_wr_en).asBool,io.ic_debug_addr(ICACHE_INDEX_HI-3,ICACHE_TAG_INDEX_LO-3),io.ic_rw_addr)
|
||||||
|
|
||||||
|
val ic_debug_rd_way_en_ff = RegNext(ic_debug_rd_way_en, 0.U)
|
||||||
|
|
||||||
|
val tag_mem = Mem(ICACHE_TAG_DEPTH, Vec(ICACHE_NUM_WAYS, UInt(Tag_Word.W)))
|
||||||
|
val ic_tag_data_raw = Wire(Vec(ICACHE_NUM_WAYS, UInt(Tag_Word.W)))
|
||||||
|
|
||||||
|
for(i<-0 until ICACHE_NUM_WAYS){
|
||||||
|
ic_tag_data_raw(i) := 0.U
|
||||||
|
when(ic_tag_wren_q(i)&ic_tag_clken(i)){
|
||||||
|
tag_mem(ic_rw_addr_q(ICACHE_INDEX_HI-3, ICACHE_TAG_INDEX_LO-3))(ic_rw_addr_q(ICACHE_INDEX_HI-3, ICACHE_TAG_INDEX_LO-3)) := ic_tag_wr_data
|
||||||
|
}.elsewhen(ic_tag_clken(i)){
|
||||||
|
ic_tag_data_raw(i) := tag_mem(ic_rw_addr_q(ICACHE_INDEX_HI-3, ICACHE_TAG_INDEX_LO-3))(ic_rw_addr_q(ICACHE_INDEX_HI-3, ICACHE_TAG_INDEX_LO-3))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
io.test := ic_tag_data_raw(0)
|
||||||
|
// for(i<-0 until ICACHE_NUM_WAYS; k<-0 until ICACHE_BANKS_WAY){
|
||||||
|
// wb_dout(i)(k) := 0.U
|
||||||
|
// val WE = if(ICACHE_WAYPACK) ic_b_sb_wren(k).orR else ic_b_sb_wren(k)(i)
|
||||||
|
// val ME = if(ICACHE_WAYPACK) ic_bank_way_clken(k).orR else ic_bank_way_clken(k)(i)
|
||||||
|
// when((ic_b_sb_wren(k)(i) & ic_bank_way_clken(k)(i)).asBool){
|
||||||
|
// data_mem(ic_rw_addr_bank_q(k))(k)(i) := ic_sb_wr_data(k)
|
||||||
|
// }.elsewhen((!ic_b_sb_wren(k)(i)&ic_bank_way_clken(k)(i)).asBool){
|
||||||
|
// wb_dout(i)(k) := data_mem(ic_rw_addr_bank_q(k))(k)(i)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// io.test := ic_tag_wr_data
|
||||||
|
// println(Tag_Word)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -261,7 +290,7 @@ class EL2_IC_DATA extends Module with el2_lib {
|
||||||
val ic_cacheline_wrap_ff = ic_rw_addr_ff(ICACHE_TAG_INDEX_LO-2,ICACHE_BANK_LO-1) === Fill(ICACHE_TAG_INDEX_LO-ICACHE_BANK_LO, 1.U)
|
val ic_cacheline_wrap_ff = ic_rw_addr_ff(ICACHE_TAG_INDEX_LO-2,ICACHE_BANK_LO-1) === Fill(ICACHE_TAG_INDEX_LO-ICACHE_BANK_LO, 1.U)
|
||||||
|
|
||||||
//////////////////////////////////////////// Memory stated
|
//////////////////////////////////////////// Memory stated
|
||||||
val (data_mem_word, tag_mem_word, ecc_offset) = DATA_MEM_LINE
|
val (data_mem_word, tag_mem_word, ecc_offset, tag_word) = DATA_MEM_LINE
|
||||||
val wb_dout = Wire(Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W))))
|
val wb_dout = Wire(Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W))))
|
||||||
val data_mem = Mem(ICACHE_DATA_DEPTH, Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W))))
|
val data_mem = Mem(ICACHE_DATA_DEPTH, Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W))))
|
||||||
for(i<-0 until ICACHE_NUM_WAYS; k<-0 until ICACHE_BANKS_WAY){
|
for(i<-0 until ICACHE_NUM_WAYS; k<-0 until ICACHE_BANKS_WAY){
|
||||||
|
@ -305,4 +334,5 @@ class EL2_IC_DATA extends Module with el2_lib {
|
||||||
|
|
||||||
object ifu_ic extends App {
|
object ifu_ic extends App {
|
||||||
println((new chisel3.stage.ChiselStage).emitVerilog(new EL2_IC_TAG()))
|
println((new chisel3.stage.ChiselStage).emitVerilog(new EL2_IC_TAG()))
|
||||||
|
//println()
|
||||||
}
|
}
|
|
@ -159,14 +159,15 @@ trait param {
|
||||||
|
|
||||||
trait el2_lib extends param{
|
trait el2_lib extends param{
|
||||||
// Configuration Methods
|
// Configuration Methods
|
||||||
def MEM_CAL : (Int, Int, Int)=
|
def MEM_CAL : (Int, Int, Int, Int)=
|
||||||
(ICACHE_WAYPACK, ICACHE_ECC) match{
|
(ICACHE_WAYPACK, ICACHE_ECC) match{
|
||||||
case(false,false) => (68,22, 68)
|
case(false,false) => (68, 22, 68, 22)
|
||||||
case(false,true) => (71,26, 71)
|
case(false,true) => (71, 26, 71, 26)
|
||||||
case(true,false) => (68*ICACHE_NUM_WAYS,22*ICACHE_NUM_WAYS, 68)
|
case(true,false) => (68*ICACHE_NUM_WAYS, 22*ICACHE_NUM_WAYS, 68, 22)
|
||||||
case(true,true) => (71*ICACHE_NUM_WAYS,26*ICACHE_NUM_WAYS, 71)
|
case(true,true) => (71*ICACHE_NUM_WAYS, 26*ICACHE_NUM_WAYS, 71, 26)
|
||||||
}
|
}
|
||||||
val DATA_MEM_LINE = MEM_CAL
|
val DATA_MEM_LINE = MEM_CAL
|
||||||
|
val Tag_Word = MEM_CAL._4
|
||||||
|
|
||||||
def el2_btb_tag_hash(pc : UInt) =
|
def el2_btb_tag_hash(pc : UInt) =
|
||||||
VecInit.tabulate(3)(i => pc(BTB_ADDR_HI+((i+1)*(BTB_BTAG_SIZE)),BTB_ADDR_HI+(i*BTB_BTAG_SIZE)+1)).reduce(_^_)
|
VecInit.tabulate(3)(i => pc(BTB_ADDR_HI+((i+1)*(BTB_BTAG_SIZE)),BTB_ADDR_HI+(i*BTB_BTAG_SIZE)+1)).reduce(_^_)
|
||||||
|
@ -175,8 +176,8 @@ trait el2_lib extends param{
|
||||||
pc(BTB_ADDR_HI+(2*BTB_BTAG_SIZE),BTB_ADDR_HI+BTB_BTAG_SIZE+1)^pc(BTB_ADDR_HI+BTB_BTAG_SIZE,BTB_ADDR_HI+1)
|
pc(BTB_ADDR_HI+(2*BTB_BTAG_SIZE),BTB_ADDR_HI+BTB_BTAG_SIZE+1)^pc(BTB_ADDR_HI+BTB_BTAG_SIZE,BTB_ADDR_HI+1)
|
||||||
|
|
||||||
def el2_btb_addr_hash(pc : UInt) =
|
def el2_btb_addr_hash(pc : UInt) =
|
||||||
if(BTB_FOLD2_INDEX_HASH) pc(BTB_INDEX1_HI,BTB_INDEX1_LO) ^ pc(BTB_INDEX3_HI,BTB_INDEX3_LO)
|
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,BTB_INDEX1_LO) ^ pc(BTB_INDEX2_HI,BTB_INDEX2_LO) ^ pc(BTB_INDEX3_HI,BTB_INDEX3_LO)
|
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) =
|
def el2_btb_ghr_hash(hashin : UInt, ghr :UInt) =
|
||||||
if(BHT_GHR_HASH_1) Cat(ghr(BHT_GHR_SIZE-1,BTB_INDEX1_HI-1), hashin(BTB_INDEX1_HI,2) ^ ghr(BTB_INDEX1_HI-2,0))
|
if(BHT_GHR_HASH_1) Cat(ghr(BHT_GHR_SIZE-1,BTB_INDEX1_HI-1), hashin(BTB_INDEX1_HI,2) ^ ghr(BTB_INDEX1_HI-2,0))
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue