// Generated by CIRCT firtool-1.139.0 module DTLB( input clock, reset, io_req_valid, input [63:0] io_req_vaddr, input io_req_isStore, output io_resp_hit, io_resp_miss, output [63:0] io_resp_paddr, output io_resp_pageFault, input io_refill_valid, input [26:0] io_refill_vpn, input [43:0] io_refill_ppn, input [7:0] io_refill_flags ); reg valid_0; reg valid_1; reg valid_2; reg valid_3; reg valid_4; reg valid_5; reg valid_6; reg valid_7; reg valid_8; reg valid_9; reg valid_10; reg valid_11; reg valid_12; reg valid_13; reg valid_14; reg valid_15; reg valid_16; reg valid_17; reg valid_18; reg valid_19; reg valid_20; reg valid_21; reg valid_22; reg valid_23; reg valid_24; reg valid_25; reg valid_26; reg valid_27; reg valid_28; reg valid_29; reg valid_30; reg valid_31; reg [26:0] vpn_0; reg [26:0] vpn_1; reg [26:0] vpn_2; reg [26:0] vpn_3; reg [26:0] vpn_4; reg [26:0] vpn_5; reg [26:0] vpn_6; reg [26:0] vpn_7; reg [26:0] vpn_8; reg [26:0] vpn_9; reg [26:0] vpn_10; reg [26:0] vpn_11; reg [26:0] vpn_12; reg [26:0] vpn_13; reg [26:0] vpn_14; reg [26:0] vpn_15; reg [26:0] vpn_16; reg [26:0] vpn_17; reg [26:0] vpn_18; reg [26:0] vpn_19; reg [26:0] vpn_20; reg [26:0] vpn_21; reg [26:0] vpn_22; reg [26:0] vpn_23; reg [26:0] vpn_24; reg [26:0] vpn_25; reg [26:0] vpn_26; reg [26:0] vpn_27; reg [26:0] vpn_28; reg [26:0] vpn_29; reg [26:0] vpn_30; reg [26:0] vpn_31; reg [43:0] ppn_0; reg [43:0] ppn_1; reg [43:0] ppn_2; reg [43:0] ppn_3; reg [43:0] ppn_4; reg [43:0] ppn_5; reg [43:0] ppn_6; reg [43:0] ppn_7; reg [43:0] ppn_8; reg [43:0] ppn_9; reg [43:0] ppn_10; reg [43:0] ppn_11; reg [43:0] ppn_12; reg [43:0] ppn_13; reg [43:0] ppn_14; reg [43:0] ppn_15; reg [43:0] ppn_16; reg [43:0] ppn_17; reg [43:0] ppn_18; reg [43:0] ppn_19; reg [43:0] ppn_20; reg [43:0] ppn_21; reg [43:0] ppn_22; reg [43:0] ppn_23; reg [43:0] ppn_24; reg [43:0] ppn_25; reg [43:0] ppn_26; reg [43:0] ppn_27; reg [43:0] ppn_28; reg [43:0] ppn_29; reg [43:0] ppn_30; reg [43:0] ppn_31; reg [7:0] flags_0; reg [7:0] flags_1; reg [7:0] flags_2; reg [7:0] flags_3; reg [7:0] flags_4; reg [7:0] flags_5; reg [7:0] flags_6; reg [7:0] flags_7; reg [7:0] flags_8; reg [7:0] flags_9; reg [7:0] flags_10; reg [7:0] flags_11; reg [7:0] flags_12; reg [7:0] flags_13; reg [7:0] flags_14; reg [7:0] flags_15; reg [7:0] flags_16; reg [7:0] flags_17; reg [7:0] flags_18; reg [7:0] flags_19; reg [7:0] flags_20; reg [7:0] flags_21; reg [7:0] flags_22; reg [7:0] flags_23; reg [7:0] flags_24; reg [7:0] flags_25; reg [7:0] flags_26; reg [7:0] flags_27; reg [7:0] flags_28; reg [7:0] flags_29; reg [7:0] flags_30; reg [7:0] flags_31; reg [4:0] repl; wire hitVec_1 = valid_1 & vpn_1 == io_req_vaddr[38:12]; wire hitVec_2 = valid_2 & vpn_2 == io_req_vaddr[38:12]; wire hitVec_3 = valid_3 & vpn_3 == io_req_vaddr[38:12]; wire hitVec_4 = valid_4 & vpn_4 == io_req_vaddr[38:12]; wire hitVec_5 = valid_5 & vpn_5 == io_req_vaddr[38:12]; wire hitVec_6 = valid_6 & vpn_6 == io_req_vaddr[38:12]; wire hitVec_7 = valid_7 & vpn_7 == io_req_vaddr[38:12]; wire hitVec_8 = valid_8 & vpn_8 == io_req_vaddr[38:12]; wire hitVec_9 = valid_9 & vpn_9 == io_req_vaddr[38:12]; wire hitVec_10 = valid_10 & vpn_10 == io_req_vaddr[38:12]; wire hitVec_11 = valid_11 & vpn_11 == io_req_vaddr[38:12]; wire hitVec_12 = valid_12 & vpn_12 == io_req_vaddr[38:12]; wire hitVec_13 = valid_13 & vpn_13 == io_req_vaddr[38:12]; wire hitVec_14 = valid_14 & vpn_14 == io_req_vaddr[38:12]; wire hitVec_15 = valid_15 & vpn_15 == io_req_vaddr[38:12]; wire hitVec_16 = valid_16 & vpn_16 == io_req_vaddr[38:12]; wire hitVec_17 = valid_17 & vpn_17 == io_req_vaddr[38:12]; wire hitVec_18 = valid_18 & vpn_18 == io_req_vaddr[38:12]; wire hitVec_19 = valid_19 & vpn_19 == io_req_vaddr[38:12]; wire hitVec_20 = valid_20 & vpn_20 == io_req_vaddr[38:12]; wire hitVec_21 = valid_21 & vpn_21 == io_req_vaddr[38:12]; wire hitVec_22 = valid_22 & vpn_22 == io_req_vaddr[38:12]; wire hitVec_23 = valid_23 & vpn_23 == io_req_vaddr[38:12]; wire hitVec_24 = valid_24 & vpn_24 == io_req_vaddr[38:12]; wire hitVec_25 = valid_25 & vpn_25 == io_req_vaddr[38:12]; wire hitVec_26 = valid_26 & vpn_26 == io_req_vaddr[38:12]; wire hitVec_27 = valid_27 & vpn_27 == io_req_vaddr[38:12]; wire hitVec_28 = valid_28 & vpn_28 == io_req_vaddr[38:12]; wire hitVec_29 = valid_29 & vpn_29 == io_req_vaddr[38:12]; wire hitVec_30 = valid_30 & vpn_30 == io_req_vaddr[38:12]; wire hitVec_31 = valid_31 & vpn_31 == io_req_vaddr[38:12]; wire hit = io_req_valid & (|{hitVec_31, hitVec_30, hitVec_29, hitVec_28, hitVec_27, hitVec_26, hitVec_25, hitVec_24, hitVec_23, hitVec_22, hitVec_21, hitVec_20, hitVec_19, hitVec_18, hitVec_17, hitVec_16, hitVec_15, hitVec_14, hitVec_13, hitVec_12, hitVec_11, hitVec_10, hitVec_9, hitVec_8, hitVec_7, hitVec_6, hitVec_5, hitVec_4, hitVec_3, hitVec_2, hitVec_1, valid_0 & vpn_0 == io_req_vaddr[38:12]}); wire [14:0] _hitIdx_T_2 = {hitVec_31, hitVec_30, hitVec_29, hitVec_28, hitVec_27, hitVec_26, hitVec_25, hitVec_24, hitVec_23, hitVec_22, hitVec_21, hitVec_20, hitVec_19, hitVec_18, hitVec_17} | {hitVec_15, hitVec_14, hitVec_13, hitVec_12, hitVec_11, hitVec_10, hitVec_9, hitVec_8, hitVec_7, hitVec_6, hitVec_5, hitVec_4, hitVec_3, hitVec_2, hitVec_1}; wire [6:0] _hitIdx_T_4 = _hitIdx_T_2[14:8] | _hitIdx_T_2[6:0]; wire [2:0] _hitIdx_T_6 = _hitIdx_T_4[6:4] | _hitIdx_T_4[2:0]; wire [4:0] hitIdx = {|{hitVec_31, hitVec_30, hitVec_29, hitVec_28, hitVec_27, hitVec_26, hitVec_25, hitVec_24, hitVec_23, hitVec_22, hitVec_21, hitVec_20, hitVec_19, hitVec_18, hitVec_17, hitVec_16}, |(_hitIdx_T_2[14:7]), |(_hitIdx_T_4[6:3]), |(_hitIdx_T_6[2:1]), _hitIdx_T_6[2] | _hitIdx_T_6[0]}; wire [31:0][7:0] _GEN = {{flags_31}, {flags_30}, {flags_29}, {flags_28}, {flags_27}, {flags_26}, {flags_25}, {flags_24}, {flags_23}, {flags_22}, {flags_21}, {flags_20}, {flags_19}, {flags_18}, {flags_17}, {flags_16}, {flags_15}, {flags_14}, {flags_13}, {flags_12}, {flags_11}, {flags_10}, {flags_9}, {flags_8}, {flags_7}, {flags_6}, {flags_5}, {flags_4}, {flags_3}, {flags_2}, {flags_1}, {flags_0}}; wire pageFault = hit & (io_req_isStore ? ~(_GEN[hitIdx][2]) : ~(_GEN[hitIdx][1])); wire [31:0][43:0] _GEN_0 = {{ppn_31}, {ppn_30}, {ppn_29}, {ppn_28}, {ppn_27}, {ppn_26}, {ppn_25}, {ppn_24}, {ppn_23}, {ppn_22}, {ppn_21}, {ppn_20}, {ppn_19}, {ppn_18}, {ppn_17}, {ppn_16}, {ppn_15}, {ppn_14}, {ppn_13}, {ppn_12}, {ppn_11}, {ppn_10}, {ppn_9}, {ppn_8}, {ppn_7}, {ppn_6}, {ppn_5}, {ppn_4}, {ppn_3}, {ppn_2}, {ppn_1}, {ppn_0}}; always @(posedge clock) begin automatic logic _GEN_1; automatic logic _GEN_2; automatic logic _GEN_3; automatic logic _GEN_4; automatic logic _GEN_5; automatic logic _GEN_6; automatic logic _GEN_7; automatic logic _GEN_8; automatic logic _GEN_9; automatic logic _GEN_10; automatic logic _GEN_11; automatic logic _GEN_12; automatic logic _GEN_13; automatic logic _GEN_14; automatic logic _GEN_15; automatic logic _GEN_16; automatic logic _GEN_17; automatic logic _GEN_18; automatic logic _GEN_19; automatic logic _GEN_20; automatic logic _GEN_21; automatic logic _GEN_22; automatic logic _GEN_23; automatic logic _GEN_24; automatic logic _GEN_25; automatic logic _GEN_26; automatic logic _GEN_27; automatic logic _GEN_28; automatic logic _GEN_29; automatic logic _GEN_30; automatic logic _GEN_31; automatic logic _GEN_32; _GEN_1 = io_refill_valid & repl == 5'h0; _GEN_2 = io_refill_valid & repl == 5'h1; _GEN_3 = io_refill_valid & repl == 5'h2; _GEN_4 = io_refill_valid & repl == 5'h3; _GEN_5 = io_refill_valid & repl == 5'h4; _GEN_6 = io_refill_valid & repl == 5'h5; _GEN_7 = io_refill_valid & repl == 5'h6; _GEN_8 = io_refill_valid & repl == 5'h7; _GEN_9 = io_refill_valid & repl == 5'h8; _GEN_10 = io_refill_valid & repl == 5'h9; _GEN_11 = io_refill_valid & repl == 5'hA; _GEN_12 = io_refill_valid & repl == 5'hB; _GEN_13 = io_refill_valid & repl == 5'hC; _GEN_14 = io_refill_valid & repl == 5'hD; _GEN_15 = io_refill_valid & repl == 5'hE; _GEN_16 = io_refill_valid & repl == 5'hF; _GEN_17 = io_refill_valid & repl == 5'h10; _GEN_18 = io_refill_valid & repl == 5'h11; _GEN_19 = io_refill_valid & repl == 5'h12; _GEN_20 = io_refill_valid & repl == 5'h13; _GEN_21 = io_refill_valid & repl == 5'h14; _GEN_22 = io_refill_valid & repl == 5'h15; _GEN_23 = io_refill_valid & repl == 5'h16; _GEN_24 = io_refill_valid & repl == 5'h17; _GEN_25 = io_refill_valid & repl == 5'h18; _GEN_26 = io_refill_valid & repl == 5'h19; _GEN_27 = io_refill_valid & repl == 5'h1A; _GEN_28 = io_refill_valid & repl == 5'h1B; _GEN_29 = io_refill_valid & repl == 5'h1C; _GEN_30 = io_refill_valid & repl == 5'h1D; _GEN_31 = io_refill_valid & repl == 5'h1E; _GEN_32 = io_refill_valid & (&repl); if (reset) begin valid_0 <= 1'h0; valid_1 <= 1'h0; valid_2 <= 1'h0; valid_3 <= 1'h0; valid_4 <= 1'h0; valid_5 <= 1'h0; valid_6 <= 1'h0; valid_7 <= 1'h0; valid_8 <= 1'h0; valid_9 <= 1'h0; valid_10 <= 1'h0; valid_11 <= 1'h0; valid_12 <= 1'h0; valid_13 <= 1'h0; valid_14 <= 1'h0; valid_15 <= 1'h0; valid_16 <= 1'h0; valid_17 <= 1'h0; valid_18 <= 1'h0; valid_19 <= 1'h0; valid_20 <= 1'h0; valid_21 <= 1'h0; valid_22 <= 1'h0; valid_23 <= 1'h0; valid_24 <= 1'h0; valid_25 <= 1'h0; valid_26 <= 1'h0; valid_27 <= 1'h0; valid_28 <= 1'h0; valid_29 <= 1'h0; valid_30 <= 1'h0; valid_31 <= 1'h0; repl <= 5'h0; end else begin valid_0 <= _GEN_1 | valid_0; valid_1 <= _GEN_2 | valid_1; valid_2 <= _GEN_3 | valid_2; valid_3 <= _GEN_4 | valid_3; valid_4 <= _GEN_5 | valid_4; valid_5 <= _GEN_6 | valid_5; valid_6 <= _GEN_7 | valid_6; valid_7 <= _GEN_8 | valid_7; valid_8 <= _GEN_9 | valid_8; valid_9 <= _GEN_10 | valid_9; valid_10 <= _GEN_11 | valid_10; valid_11 <= _GEN_12 | valid_11; valid_12 <= _GEN_13 | valid_12; valid_13 <= _GEN_14 | valid_13; valid_14 <= _GEN_15 | valid_14; valid_15 <= _GEN_16 | valid_15; valid_16 <= _GEN_17 | valid_16; valid_17 <= _GEN_18 | valid_17; valid_18 <= _GEN_19 | valid_18; valid_19 <= _GEN_20 | valid_19; valid_20 <= _GEN_21 | valid_20; valid_21 <= _GEN_22 | valid_21; valid_22 <= _GEN_23 | valid_22; valid_23 <= _GEN_24 | valid_23; valid_24 <= _GEN_25 | valid_24; valid_25 <= _GEN_26 | valid_25; valid_26 <= _GEN_27 | valid_26; valid_27 <= _GEN_28 | valid_27; valid_28 <= _GEN_29 | valid_28; valid_29 <= _GEN_30 | valid_29; valid_30 <= _GEN_31 | valid_30; valid_31 <= _GEN_32 | valid_31; if (io_refill_valid) repl <= repl + 5'h1; end if (_GEN_1) begin vpn_0 <= io_refill_vpn; ppn_0 <= io_refill_ppn; flags_0 <= io_refill_flags; end if (_GEN_2) begin vpn_1 <= io_refill_vpn; ppn_1 <= io_refill_ppn; flags_1 <= io_refill_flags; end if (_GEN_3) begin vpn_2 <= io_refill_vpn; ppn_2 <= io_refill_ppn; flags_2 <= io_refill_flags; end if (_GEN_4) begin vpn_3 <= io_refill_vpn; ppn_3 <= io_refill_ppn; flags_3 <= io_refill_flags; end if (_GEN_5) begin vpn_4 <= io_refill_vpn; ppn_4 <= io_refill_ppn; flags_4 <= io_refill_flags; end if (_GEN_6) begin vpn_5 <= io_refill_vpn; ppn_5 <= io_refill_ppn; flags_5 <= io_refill_flags; end if (_GEN_7) begin vpn_6 <= io_refill_vpn; ppn_6 <= io_refill_ppn; flags_6 <= io_refill_flags; end if (_GEN_8) begin vpn_7 <= io_refill_vpn; ppn_7 <= io_refill_ppn; flags_7 <= io_refill_flags; end if (_GEN_9) begin vpn_8 <= io_refill_vpn; ppn_8 <= io_refill_ppn; flags_8 <= io_refill_flags; end if (_GEN_10) begin vpn_9 <= io_refill_vpn; ppn_9 <= io_refill_ppn; flags_9 <= io_refill_flags; end if (_GEN_11) begin vpn_10 <= io_refill_vpn; ppn_10 <= io_refill_ppn; flags_10 <= io_refill_flags; end if (_GEN_12) begin vpn_11 <= io_refill_vpn; ppn_11 <= io_refill_ppn; flags_11 <= io_refill_flags; end if (_GEN_13) begin vpn_12 <= io_refill_vpn; ppn_12 <= io_refill_ppn; flags_12 <= io_refill_flags; end if (_GEN_14) begin vpn_13 <= io_refill_vpn; ppn_13 <= io_refill_ppn; flags_13 <= io_refill_flags; end if (_GEN_15) begin vpn_14 <= io_refill_vpn; ppn_14 <= io_refill_ppn; flags_14 <= io_refill_flags; end if (_GEN_16) begin vpn_15 <= io_refill_vpn; ppn_15 <= io_refill_ppn; flags_15 <= io_refill_flags; end if (_GEN_17) begin vpn_16 <= io_refill_vpn; ppn_16 <= io_refill_ppn; flags_16 <= io_refill_flags; end if (_GEN_18) begin vpn_17 <= io_refill_vpn; ppn_17 <= io_refill_ppn; flags_17 <= io_refill_flags; end if (_GEN_19) begin vpn_18 <= io_refill_vpn; ppn_18 <= io_refill_ppn; flags_18 <= io_refill_flags; end if (_GEN_20) begin vpn_19 <= io_refill_vpn; ppn_19 <= io_refill_ppn; flags_19 <= io_refill_flags; end if (_GEN_21) begin vpn_20 <= io_refill_vpn; ppn_20 <= io_refill_ppn; flags_20 <= io_refill_flags; end if (_GEN_22) begin vpn_21 <= io_refill_vpn; ppn_21 <= io_refill_ppn; flags_21 <= io_refill_flags; end if (_GEN_23) begin vpn_22 <= io_refill_vpn; ppn_22 <= io_refill_ppn; flags_22 <= io_refill_flags; end if (_GEN_24) begin vpn_23 <= io_refill_vpn; ppn_23 <= io_refill_ppn; flags_23 <= io_refill_flags; end if (_GEN_25) begin vpn_24 <= io_refill_vpn; ppn_24 <= io_refill_ppn; flags_24 <= io_refill_flags; end if (_GEN_26) begin vpn_25 <= io_refill_vpn; ppn_25 <= io_refill_ppn; flags_25 <= io_refill_flags; end if (_GEN_27) begin vpn_26 <= io_refill_vpn; ppn_26 <= io_refill_ppn; flags_26 <= io_refill_flags; end if (_GEN_28) begin vpn_27 <= io_refill_vpn; ppn_27 <= io_refill_ppn; flags_27 <= io_refill_flags; end if (_GEN_29) begin vpn_28 <= io_refill_vpn; ppn_28 <= io_refill_ppn; flags_28 <= io_refill_flags; end if (_GEN_30) begin vpn_29 <= io_refill_vpn; ppn_29 <= io_refill_ppn; flags_29 <= io_refill_flags; end if (_GEN_31) begin vpn_30 <= io_refill_vpn; ppn_30 <= io_refill_ppn; flags_30 <= io_refill_flags; end if (_GEN_32) begin vpn_31 <= io_refill_vpn; ppn_31 <= io_refill_ppn; flags_31 <= io_refill_flags; end end // always @(posedge) assign io_resp_hit = hit & ~pageFault; assign io_resp_miss = io_req_valid & ~hit; assign io_resp_paddr = {8'h0, _GEN_0[hitIdx], io_req_vaddr[11:0]}; assign io_resp_pageFault = pageFault; endmodule