Files
gps/hardware/generated/genesys2-soc-verilog/RVCExpander.sv
T
2026-08-06 22:14:52 +03:00

375 lines
21 KiB
Systemverilog

// Generated by CIRCT firtool-1.151.0
module RVCExpander(
input [31:0] io_in,
output [31:0] io_out_bits,
output [4:0] io_out_rd,
io_out_rs1,
io_out_rs2,
io_out_rs3,
output io_rvc
);
wire [2:0] _io_out_s_funct_T_2 = {io_in[12], io_in[6:5]};
wire [2:0] _io_out_s_funct_T_4 = {_io_out_s_funct_T_2 == 3'h1, 2'h0};
wire [7:0][2:0] _GEN =
{{3'h3},
{3'h2},
{3'h0},
{3'h0},
{3'h7},
{3'h6},
{_io_out_s_funct_T_4},
{_io_out_s_funct_T_4}};
wire [3:0] _GEN_0 = {4{io_in[12]}};
wire [6:0] io_out_s_load_opc = (|(io_in[11:7])) ? 7'h3 : 7'h1F;
wire _io_out_s_jr_mv_T_1 = |(io_in[6:2]);
wire _io_out_s_jalr_add_T_1 = |(io_in[6:2]);
wire [4:0] _io_out_T_2 = {io_in[1:0], io_in[15:13]};
wire _io_out_T_3 = _io_out_T_2 == 5'h1;
wire _io_out_T_5 = _io_out_T_2 == 5'h2;
wire _io_out_T_7 = _io_out_T_2 == 5'h3;
wire _io_out_T_9 = _io_out_T_2 == 5'h4;
wire _io_out_T_11 = _io_out_T_2 == 5'h5;
wire _io_out_T_13 = _io_out_T_2 == 5'h6;
wire _io_out_T_15 = _io_out_T_2 == 5'h7;
wire _io_out_T_17 = _io_out_T_2 == 5'h8;
wire _io_out_T_19 = _io_out_T_2 == 5'h9;
wire _GEN_1 = _io_out_T_19 | _io_out_T_17;
wire _io_out_T_21 = _io_out_T_2 == 5'hA;
wire _io_out_T_23 = _io_out_T_2 == 5'hB;
wire _io_out_T_25 = _io_out_T_2 == 5'hC;
wire _io_out_T_27 = _io_out_T_2 == 5'hD;
wire _io_out_T_29 = _io_out_T_2 == 5'hE;
wire _io_out_T_31 = _io_out_T_2 == 5'hF;
wire _io_out_T_33 = _io_out_T_2 == 5'h10;
wire _io_out_T_35 = _io_out_T_2 == 5'h11;
wire _io_out_T_37 = _io_out_T_2 == 5'h12;
wire _io_out_T_39 = _io_out_T_2 == 5'h13;
wire _GEN_2 = _io_out_T_39 | _io_out_T_37 | _io_out_T_35 | _io_out_T_33;
wire _io_out_T_41 = _io_out_T_2 == 5'h14;
wire [31:0] _io_out_T_42_bits =
_io_out_T_41
? {7'h0,
io_in[12]
? (_io_out_s_jalr_add_T_1
? {io_in[6:2], io_in[11:7], 3'h0, io_in[11:7], 7'h33}
: (|(io_in[11:7]))
? {io_in[6:2], io_in[11:7], 15'hE7}
: {io_in[6:3], 1'h1, io_in[11:7], 15'h73})
: {io_in[6:2],
_io_out_s_jr_mv_T_1
? {8'h0, io_in[11:7], 7'h33}
: {io_in[11:7], (|(io_in[11:7])) ? 15'h67 : 15'h1F}}}
: _io_out_T_39
? {3'h0,
io_in[4:2],
io_in[12],
io_in[6:5],
11'h13,
io_in[11:7],
io_out_s_load_opc}
: _io_out_T_37
? {4'h0,
io_in[3:2],
io_in[12],
io_in[6:4],
10'h12,
io_in[11:7],
io_out_s_load_opc}
: _io_out_T_35
? {3'h0, io_in[4:2], io_in[12], io_in[6:5], 11'h13, io_in[11:7], 7'h7}
: _io_out_T_33
? {6'h0,
io_in[12],
io_in[6:2],
io_in[11:7],
3'h1,
io_in[11:7],
7'h13}
: _io_out_T_31
? {_GEN_0,
io_in[6:5],
io_in[2],
7'h1,
io_in[9:7],
3'h1,
io_in[11:10],
io_in[4:3],
io_in[12],
7'h63}
: _io_out_T_29
? {_GEN_0,
io_in[6:5],
io_in[2],
7'h1,
io_in[9:7],
3'h0,
io_in[11:10],
io_in[4:3],
io_in[12],
7'h63}
: _io_out_T_27
? {io_in[12],
io_in[8],
io_in[10:9],
io_in[6],
io_in[7],
io_in[2],
io_in[11],
io_in[5:3],
{9{io_in[12]}},
12'h6F}
: _io_out_T_25
? ((&(io_in[11:10]))
? {1'h0,
{8'h1,
io_in[4:2],
2'h1,
io_in[9:7],
_GEN[_io_out_s_funct_T_2],
2'h1,
io_in[9:7],
3'h3,
io_in[12],
3'h3} | {io_in[6:5] == 2'h0, 30'h0}}
: {io_in[11:10] == 2'h2
? {{7{io_in[12]}},
io_in[6:2],
2'h1,
io_in[9:7],
5'h1D}
: {1'h0,
io_in[11:10] == 2'h1,
4'h0,
io_in[12],
io_in[6:2],
2'h1,
io_in[9:7],
5'h15},
io_in[9:7],
7'h13})
: _io_out_T_23
? {{3{io_in[12]}},
io_in[11:7] == 5'h0 | io_in[11:7] == 5'h2
? {io_in[4:3],
io_in[5],
io_in[2],
io_in[6],
4'h0,
io_in[11:7],
3'h0,
io_in[11:7],
(|{{7{io_in[12]}}, io_in[6:2]})
? 7'h13
: 7'h1F}
: {{12{io_in[12]}},
io_in[6:2],
io_in[11:7],
3'h3,
{{7{io_in[12]}}, io_in[6:2]} == 12'h0,
3'h7}}
: _io_out_T_21
? {{7{io_in[12]}},
io_in[6:2],
8'h0,
io_in[11:7],
7'h13}
: _io_out_T_19
? {{7{io_in[12]}},
io_in[6:2],
io_in[11:7],
3'h0,
io_in[11:7],
4'h3,
io_in[11:7] == 5'h0,
2'h3}
: _io_out_T_17
? {{7{io_in[12]}},
io_in[6:2],
io_in[11:7],
3'h0,
io_in[11:7],
7'h13}
: _io_out_T_15
? {4'h0,
io_in[6:5],
io_in[12],
2'h1,
io_in[4:2],
2'h1,
io_in[9:7],
3'h3,
io_in[11:10],
10'h23}
: _io_out_T_13
? {5'h0,
io_in[5],
io_in[12],
2'h1,
io_in[4:2],
2'h1,
io_in[9:7],
3'h2,
io_in[11:10],
io_in[6],
9'h23}
: _io_out_T_11
? {4'h0,
io_in[6:5],
io_in[12],
2'h1,
io_in[4:2],
2'h1,
io_in[9:7],
3'h3,
io_in[11:10],
10'h27}
: _io_out_T_9
? {5'h0,
io_in[5],
io_in[12],
2'h1,
io_in[4:2],
2'h1,
io_in[9:7],
3'h2,
io_in[11:10],
io_in[6],
9'h3F}
: _io_out_T_7
? {4'h0,
io_in[6:5],
io_in[12:10],
5'h1,
io_in[9:7],
5'hD,
io_in[4:2],
7'h3}
: _io_out_T_5
? {5'h0,
io_in[5],
io_in[12:10],
io_in[6],
4'h1,
io_in[9:7],
5'h9,
io_in[4:2],
7'h3}
: _io_out_T_3
? {4'h0,
io_in[6:5],
io_in[12:10],
5'h1,
io_in[9:7],
5'hD,
io_in[4:2],
7'h7}
: {2'h0,
io_in[10:7],
io_in[12:11],
io_in[5],
io_in[6],
12'h41,
io_in[4:2],
(|(io_in[12:5]))
? 7'h13
: 7'h1F};
wire _io_out_T_43 = _io_out_T_2 == 5'h15;
wire _io_out_T_45 = _io_out_T_2 == 5'h16;
wire _io_out_T_47 = _io_out_T_2 == 5'h17;
wire _GEN_3 = _io_out_T_47 | _io_out_T_45 | _io_out_T_43;
wire _io_out_T_49 = _io_out_T_2 == 5'h18;
wire _io_out_T_51 = _io_out_T_2 == 5'h19;
wire _io_out_T_53 = _io_out_T_2 == 5'h1A;
wire _io_out_T_55 = _io_out_T_2 == 5'h1B;
wire _io_out_T_57 = _io_out_T_2 == 5'h1C;
wire _io_out_T_59 = _io_out_T_2 == 5'h1D;
wire _io_out_T_61 = _io_out_T_2 == 5'h1E;
wire _io_out_T_63 = &_io_out_T_2;
wire _GEN_4 =
_io_out_T_63 | _io_out_T_61 | _io_out_T_59 | _io_out_T_57 | _io_out_T_55
| _io_out_T_53 | _io_out_T_51 | _io_out_T_49;
assign io_out_bits =
_GEN_4
? io_in
: _io_out_T_47
? {3'h0, io_in[9:7], io_in[12], io_in[6:2], 8'h13, io_in[11:10], 10'h23}
: _io_out_T_45
? {4'h0, io_in[8:7], io_in[12], io_in[6:2], 8'h12, io_in[11:9], 9'h23}
: _io_out_T_43
? {3'h0, io_in[9:7], io_in[12], io_in[6:2], 8'h13, io_in[11:10], 10'h27}
: _io_out_T_42_bits;
assign io_out_rd =
_io_out_T_63 | _io_out_T_61 | _io_out_T_59 | _io_out_T_57 | _io_out_T_55
| _io_out_T_53 | _io_out_T_51 | _io_out_T_49 | _GEN_3
? io_in[11:7]
: _io_out_T_41
? (io_in[12]
? (_io_out_s_jalr_add_T_1 ? io_in[11:7] : 5'h1)
: _io_out_s_jr_mv_T_1 ? io_in[11:7] : 5'h0)
: _GEN_2
? io_in[11:7]
: _io_out_T_31
? 5'h0
: _io_out_T_29
? {2'h1, io_in[9:7]}
: _io_out_T_27
? 5'h0
: _io_out_T_25
? {2'h1, io_in[9:7]}
: _io_out_T_23 | _io_out_T_21 | _GEN_1
? io_in[11:7]
: {2'h1, io_in[4:2]};
assign io_out_rs1 =
_GEN_4
? io_in[19:15]
: _GEN_3
? 5'h2
: _io_out_T_41
? (io_in[12] | ~_io_out_s_jr_mv_T_1 ? io_in[11:7] : 5'h0)
: _io_out_T_39 | _io_out_T_37 | _io_out_T_35
? 5'h2
: _io_out_T_33
? io_in[11:7]
: _io_out_T_31
? {2'h1, io_in[9:7]}
: _io_out_T_29
? {2'h1, io_in[9:7]}
: _io_out_T_27
? {2'h1, io_in[9:7]}
: _io_out_T_25
? {2'h1, io_in[9:7]}
: _io_out_T_23
? io_in[11:7]
: _io_out_T_21
? 5'h0
: _GEN_1
? io_in[11:7]
: _io_out_T_15
? {2'h1, io_in[9:7]}
: _io_out_T_13
? {2'h1, io_in[9:7]}
: _io_out_T_11
? {2'h1, io_in[9:7]}
: _io_out_T_9
? {2'h1, io_in[9:7]}
: _io_out_T_7
? {2'h1, io_in[9:7]}
: _io_out_T_5
? {2'h1,
io_in[9:7]}
: _io_out_T_3
? {2'h1,
io_in[9:7]}
: 5'h2;
assign io_out_rs2 =
_GEN_4
? io_in[24:20]
: _io_out_T_47 | _io_out_T_45 | _io_out_T_43 | _io_out_T_41 | _GEN_2
? io_in[6:2]
: _io_out_T_31 | _io_out_T_29 ? 5'h0 : {2'h1, io_in[4:2]};
assign io_out_rs3 = io_in[31:27];
assign io_rvc = io_in[1:0] != 2'h3;
endmodule