Files
tatu/generated-ooo/DTLB.sv
2026-06-27 03:38:34 +00:00

637 lines
18 KiB
Systemverilog

// 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