485 lines
14 KiB
Systemverilog
485 lines
14 KiB
Systemverilog
// Generated by CIRCT firtool-1.139.0
|
|
module PhysicalRegFile(
|
|
input clock,
|
|
reset,
|
|
input [5:0] io_raddr_0,
|
|
io_raddr_1,
|
|
io_raddr_2,
|
|
io_raddr_3,
|
|
output [63:0] io_rdata_0,
|
|
io_rdata_1,
|
|
io_rdata_2,
|
|
io_rdata_3,
|
|
input io_wen_0,
|
|
io_wen_1,
|
|
input [5:0] io_waddr_0,
|
|
io_waddr_1,
|
|
input [63:0] io_wdata_0,
|
|
io_wdata_1
|
|
);
|
|
|
|
reg [63:0] regs_0;
|
|
reg [63:0] regs_1;
|
|
reg [63:0] regs_2;
|
|
reg [63:0] regs_3;
|
|
reg [63:0] regs_4;
|
|
reg [63:0] regs_5;
|
|
reg [63:0] regs_6;
|
|
reg [63:0] regs_7;
|
|
reg [63:0] regs_8;
|
|
reg [63:0] regs_9;
|
|
reg [63:0] regs_10;
|
|
reg [63:0] regs_11;
|
|
reg [63:0] regs_12;
|
|
reg [63:0] regs_13;
|
|
reg [63:0] regs_14;
|
|
reg [63:0] regs_15;
|
|
reg [63:0] regs_16;
|
|
reg [63:0] regs_17;
|
|
reg [63:0] regs_18;
|
|
reg [63:0] regs_19;
|
|
reg [63:0] regs_20;
|
|
reg [63:0] regs_21;
|
|
reg [63:0] regs_22;
|
|
reg [63:0] regs_23;
|
|
reg [63:0] regs_24;
|
|
reg [63:0] regs_25;
|
|
reg [63:0] regs_26;
|
|
reg [63:0] regs_27;
|
|
reg [63:0] regs_28;
|
|
reg [63:0] regs_29;
|
|
reg [63:0] regs_30;
|
|
reg [63:0] regs_31;
|
|
reg [63:0] regs_32;
|
|
reg [63:0] regs_33;
|
|
reg [63:0] regs_34;
|
|
reg [63:0] regs_35;
|
|
reg [63:0] regs_36;
|
|
reg [63:0] regs_37;
|
|
reg [63:0] regs_38;
|
|
reg [63:0] regs_39;
|
|
reg [63:0] regs_40;
|
|
reg [63:0] regs_41;
|
|
reg [63:0] regs_42;
|
|
reg [63:0] regs_43;
|
|
reg [63:0] regs_44;
|
|
reg [63:0] regs_45;
|
|
reg [63:0] regs_46;
|
|
reg [63:0] regs_47;
|
|
reg [63:0] regs_48;
|
|
reg [63:0] regs_49;
|
|
reg [63:0] regs_50;
|
|
reg [63:0] regs_51;
|
|
reg [63:0] regs_52;
|
|
reg [63:0] regs_53;
|
|
reg [63:0] regs_54;
|
|
reg [63:0] regs_55;
|
|
reg [63:0] regs_56;
|
|
reg [63:0] regs_57;
|
|
reg [63:0] regs_58;
|
|
reg [63:0] regs_59;
|
|
reg [63:0] regs_60;
|
|
reg [63:0] regs_61;
|
|
reg [63:0] regs_62;
|
|
reg [63:0] regs_63;
|
|
wire [63:0][63:0] _GEN =
|
|
{{regs_63},
|
|
{regs_62},
|
|
{regs_61},
|
|
{regs_60},
|
|
{regs_59},
|
|
{regs_58},
|
|
{regs_57},
|
|
{regs_56},
|
|
{regs_55},
|
|
{regs_54},
|
|
{regs_53},
|
|
{regs_52},
|
|
{regs_51},
|
|
{regs_50},
|
|
{regs_49},
|
|
{regs_48},
|
|
{regs_47},
|
|
{regs_46},
|
|
{regs_45},
|
|
{regs_44},
|
|
{regs_43},
|
|
{regs_42},
|
|
{regs_41},
|
|
{regs_40},
|
|
{regs_39},
|
|
{regs_38},
|
|
{regs_37},
|
|
{regs_36},
|
|
{regs_35},
|
|
{regs_34},
|
|
{regs_33},
|
|
{regs_32},
|
|
{regs_31},
|
|
{regs_30},
|
|
{regs_29},
|
|
{regs_28},
|
|
{regs_27},
|
|
{regs_26},
|
|
{regs_25},
|
|
{regs_24},
|
|
{regs_23},
|
|
{regs_22},
|
|
{regs_21},
|
|
{regs_20},
|
|
{regs_19},
|
|
{regs_18},
|
|
{regs_17},
|
|
{regs_16},
|
|
{regs_15},
|
|
{regs_14},
|
|
{regs_13},
|
|
{regs_12},
|
|
{regs_11},
|
|
{regs_10},
|
|
{regs_9},
|
|
{regs_8},
|
|
{regs_7},
|
|
{regs_6},
|
|
{regs_5},
|
|
{regs_4},
|
|
{regs_3},
|
|
{regs_2},
|
|
{regs_1},
|
|
{regs_0}};
|
|
always @(posedge clock) begin
|
|
if (reset) begin
|
|
regs_0 <= 64'h0;
|
|
regs_1 <= 64'h0;
|
|
regs_2 <= 64'h0;
|
|
regs_3 <= 64'h0;
|
|
regs_4 <= 64'h0;
|
|
regs_5 <= 64'h0;
|
|
regs_6 <= 64'h0;
|
|
regs_7 <= 64'h0;
|
|
regs_8 <= 64'h0;
|
|
regs_9 <= 64'h0;
|
|
regs_10 <= 64'h0;
|
|
regs_11 <= 64'h0;
|
|
regs_12 <= 64'h0;
|
|
regs_13 <= 64'h0;
|
|
regs_14 <= 64'h0;
|
|
regs_15 <= 64'h0;
|
|
regs_16 <= 64'h0;
|
|
regs_17 <= 64'h0;
|
|
regs_18 <= 64'h0;
|
|
regs_19 <= 64'h0;
|
|
regs_20 <= 64'h0;
|
|
regs_21 <= 64'h0;
|
|
regs_22 <= 64'h0;
|
|
regs_23 <= 64'h0;
|
|
regs_24 <= 64'h0;
|
|
regs_25 <= 64'h0;
|
|
regs_26 <= 64'h0;
|
|
regs_27 <= 64'h0;
|
|
regs_28 <= 64'h0;
|
|
regs_29 <= 64'h0;
|
|
regs_30 <= 64'h0;
|
|
regs_31 <= 64'h0;
|
|
regs_32 <= 64'h0;
|
|
regs_33 <= 64'h0;
|
|
regs_34 <= 64'h0;
|
|
regs_35 <= 64'h0;
|
|
regs_36 <= 64'h0;
|
|
regs_37 <= 64'h0;
|
|
regs_38 <= 64'h0;
|
|
regs_39 <= 64'h0;
|
|
regs_40 <= 64'h0;
|
|
regs_41 <= 64'h0;
|
|
regs_42 <= 64'h0;
|
|
regs_43 <= 64'h0;
|
|
regs_44 <= 64'h0;
|
|
regs_45 <= 64'h0;
|
|
regs_46 <= 64'h0;
|
|
regs_47 <= 64'h0;
|
|
regs_48 <= 64'h0;
|
|
regs_49 <= 64'h0;
|
|
regs_50 <= 64'h0;
|
|
regs_51 <= 64'h0;
|
|
regs_52 <= 64'h0;
|
|
regs_53 <= 64'h0;
|
|
regs_54 <= 64'h0;
|
|
regs_55 <= 64'h0;
|
|
regs_56 <= 64'h0;
|
|
regs_57 <= 64'h0;
|
|
regs_58 <= 64'h0;
|
|
regs_59 <= 64'h0;
|
|
regs_60 <= 64'h0;
|
|
regs_61 <= 64'h0;
|
|
regs_62 <= 64'h0;
|
|
regs_63 <= 64'h0;
|
|
end
|
|
else begin
|
|
automatic logic _GEN_0;
|
|
automatic logic _GEN_1 = io_wen_1 & (|io_waddr_1);
|
|
_GEN_0 = io_wen_0 & (|io_waddr_0);
|
|
if (_GEN_1 & ~(|io_waddr_1))
|
|
regs_0 <= io_wdata_1;
|
|
else if (_GEN_0 & ~(|io_waddr_0))
|
|
regs_0 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h1)
|
|
regs_1 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h1)
|
|
regs_1 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h2)
|
|
regs_2 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h2)
|
|
regs_2 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h3)
|
|
regs_3 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h3)
|
|
regs_3 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h4)
|
|
regs_4 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h4)
|
|
regs_4 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h5)
|
|
regs_5 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h5)
|
|
regs_5 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h6)
|
|
regs_6 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h6)
|
|
regs_6 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h7)
|
|
regs_7 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h7)
|
|
regs_7 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h8)
|
|
regs_8 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h8)
|
|
regs_8 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h9)
|
|
regs_9 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h9)
|
|
regs_9 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'hA)
|
|
regs_10 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'hA)
|
|
regs_10 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'hB)
|
|
regs_11 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'hB)
|
|
regs_11 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'hC)
|
|
regs_12 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'hC)
|
|
regs_12 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'hD)
|
|
regs_13 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'hD)
|
|
regs_13 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'hE)
|
|
regs_14 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'hE)
|
|
regs_14 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'hF)
|
|
regs_15 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'hF)
|
|
regs_15 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h10)
|
|
regs_16 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h10)
|
|
regs_16 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h11)
|
|
regs_17 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h11)
|
|
regs_17 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h12)
|
|
regs_18 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h12)
|
|
regs_18 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h13)
|
|
regs_19 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h13)
|
|
regs_19 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h14)
|
|
regs_20 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h14)
|
|
regs_20 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h15)
|
|
regs_21 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h15)
|
|
regs_21 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h16)
|
|
regs_22 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h16)
|
|
regs_22 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h17)
|
|
regs_23 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h17)
|
|
regs_23 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h18)
|
|
regs_24 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h18)
|
|
regs_24 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h19)
|
|
regs_25 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h19)
|
|
regs_25 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h1A)
|
|
regs_26 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h1A)
|
|
regs_26 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h1B)
|
|
regs_27 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h1B)
|
|
regs_27 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h1C)
|
|
regs_28 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h1C)
|
|
regs_28 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h1D)
|
|
regs_29 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h1D)
|
|
regs_29 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h1E)
|
|
regs_30 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h1E)
|
|
regs_30 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h1F)
|
|
regs_31 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h1F)
|
|
regs_31 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h20)
|
|
regs_32 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h20)
|
|
regs_32 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h21)
|
|
regs_33 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h21)
|
|
regs_33 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h22)
|
|
regs_34 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h22)
|
|
regs_34 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h23)
|
|
regs_35 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h23)
|
|
regs_35 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h24)
|
|
regs_36 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h24)
|
|
regs_36 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h25)
|
|
regs_37 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h25)
|
|
regs_37 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h26)
|
|
regs_38 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h26)
|
|
regs_38 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h27)
|
|
regs_39 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h27)
|
|
regs_39 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h28)
|
|
regs_40 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h28)
|
|
regs_40 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h29)
|
|
regs_41 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h29)
|
|
regs_41 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h2A)
|
|
regs_42 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h2A)
|
|
regs_42 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h2B)
|
|
regs_43 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h2B)
|
|
regs_43 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h2C)
|
|
regs_44 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h2C)
|
|
regs_44 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h2D)
|
|
regs_45 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h2D)
|
|
regs_45 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h2E)
|
|
regs_46 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h2E)
|
|
regs_46 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h2F)
|
|
regs_47 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h2F)
|
|
regs_47 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h30)
|
|
regs_48 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h30)
|
|
regs_48 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h31)
|
|
regs_49 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h31)
|
|
regs_49 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h32)
|
|
regs_50 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h32)
|
|
regs_50 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h33)
|
|
regs_51 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h33)
|
|
regs_51 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h34)
|
|
regs_52 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h34)
|
|
regs_52 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h35)
|
|
regs_53 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h35)
|
|
regs_53 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h36)
|
|
regs_54 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h36)
|
|
regs_54 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h37)
|
|
regs_55 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h37)
|
|
regs_55 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h38)
|
|
regs_56 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h38)
|
|
regs_56 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h39)
|
|
regs_57 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h39)
|
|
regs_57 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h3A)
|
|
regs_58 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h3A)
|
|
regs_58 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h3B)
|
|
regs_59 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h3B)
|
|
regs_59 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h3C)
|
|
regs_60 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h3C)
|
|
regs_60 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h3D)
|
|
regs_61 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h3D)
|
|
regs_61 <= io_wdata_0;
|
|
if (_GEN_1 & io_waddr_1 == 6'h3E)
|
|
regs_62 <= io_wdata_1;
|
|
else if (_GEN_0 & io_waddr_0 == 6'h3E)
|
|
regs_62 <= io_wdata_0;
|
|
if (_GEN_1 & (&io_waddr_1))
|
|
regs_63 <= io_wdata_1;
|
|
else if (_GEN_0 & (&io_waddr_0))
|
|
regs_63 <= io_wdata_0;
|
|
end
|
|
end // always @(posedge)
|
|
assign io_rdata_0 = io_raddr_0 == 6'h0 ? 64'h0 : _GEN[io_raddr_0];
|
|
assign io_rdata_1 = io_raddr_1 == 6'h0 ? 64'h0 : _GEN[io_raddr_1];
|
|
assign io_rdata_2 = io_raddr_2 == 6'h0 ? 64'h0 : _GEN[io_raddr_2];
|
|
assign io_rdata_3 = io_raddr_3 == 6'h0 ? 64'h0 : _GEN[io_raddr_3];
|
|
endmodule
|
|
|