fix: resolve OoO simulation timeout
This commit is contained in:
161
generated-ooo/Decoder.sv
Normal file
161
generated-ooo/Decoder.sv
Normal file
@@ -0,0 +1,161 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module Decoder(
|
||||
input [63:0] io_pc,
|
||||
input [31:0] io_inst,
|
||||
output [63:0] io_out_pc,
|
||||
output [31:0] io_out_inst,
|
||||
output [4:0] io_out_rs1,
|
||||
io_out_rs2,
|
||||
io_out_rd,
|
||||
output [2:0] io_out_funct3,
|
||||
output [63:0] io_out_immI,
|
||||
io_out_immS,
|
||||
io_out_immB,
|
||||
io_out_immU,
|
||||
io_out_immJ,
|
||||
output [3:0] io_out_opClass,
|
||||
output [4:0] io_out_aluFn,
|
||||
output [2:0] io_out_memWidth,
|
||||
output io_out_isLoad,
|
||||
io_out_isStore,
|
||||
io_out_isBranch,
|
||||
io_out_isJal,
|
||||
io_out_isJalr,
|
||||
io_out_isLui,
|
||||
io_out_isAuipc,
|
||||
io_out_isOpImm,
|
||||
io_out_isWord,
|
||||
io_out_isSystem,
|
||||
io_out_writesRd,
|
||||
io_out_illegal
|
||||
);
|
||||
|
||||
wire [7:0][1:0] _GEN = '{2'h3, 2'h2, 2'h1, 2'h0, 2'h3, 2'h2, 2'h1, 2'h0};
|
||||
wire d_isLui = io_inst[6:0] == 7'h37;
|
||||
wire _GEN_0 = io_inst[6:0] == 7'h17;
|
||||
wire _GEN_1 = io_inst[6:0] == 7'h6F;
|
||||
wire _GEN_2 = d_isLui | _GEN_0;
|
||||
wire _GEN_3 = io_inst[6:0] == 7'h67;
|
||||
wire _GEN_4 = io_inst[6:0] == 7'h63;
|
||||
wire _GEN_5 = io_inst[6:0] == 7'h3;
|
||||
wire _GEN_6 = io_inst[6:0] == 7'h23;
|
||||
wire _d_isWord_T = io_inst[6:0] == 7'h1B;
|
||||
wire _GEN_7 = io_inst[6:0] == 7'h13 | _d_isWord_T;
|
||||
wire _GEN_8 = _GEN_0 | _GEN_1 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6;
|
||||
wire _GEN_9 = d_isLui | _GEN_8;
|
||||
wire [4:0] _d_aluFn_T_3 = {3'h0, io_inst[14:12] == 3'h1, 1'h0};
|
||||
wire [7:0][4:0] _GEN_10 =
|
||||
{{5'h9},
|
||||
{5'h8},
|
||||
{{4'h3, io_inst[30]}},
|
||||
{5'h5},
|
||||
{5'h4},
|
||||
{5'h3},
|
||||
{_d_aluFn_T_3},
|
||||
{_d_aluFn_T_3}};
|
||||
wire _d_isWord_T_1 = io_inst[6:0] == 7'h3B;
|
||||
wire _GEN_11 = io_inst[6:0] == 7'h33 | _d_isWord_T_1;
|
||||
wire [7:0][4:0] _GEN_12 =
|
||||
{{5'h9},
|
||||
{5'h8},
|
||||
{{4'h3, io_inst[30]}},
|
||||
{5'h5},
|
||||
{5'h4},
|
||||
{5'h3},
|
||||
{5'h2},
|
||||
{{4'h0, io_inst[30]}}};
|
||||
wire _GEN_13 = io_inst[6:0] == 7'hF;
|
||||
wire _GEN_14 = io_inst[6:0] == 7'h73;
|
||||
wire _GEN_15 = io_inst[6:0] == 7'h2F;
|
||||
wire _GEN_16 = _GEN_13 | _GEN_14;
|
||||
wire _GEN_17 = _GEN_7 | _GEN_11 | _GEN_16;
|
||||
wire _GEN_18 = _GEN_6 | _GEN_17;
|
||||
wire _GEN_19 = _GEN_1 | _GEN_3 | _GEN_4;
|
||||
assign io_out_pc = io_pc;
|
||||
assign io_out_inst = io_inst;
|
||||
assign io_out_rs1 = io_inst[19:15];
|
||||
assign io_out_rs2 = io_inst[24:20];
|
||||
assign io_out_rd = io_inst[11:7];
|
||||
assign io_out_funct3 = io_inst[14:12];
|
||||
assign io_out_immI = {{52{io_inst[31]}}, io_inst[31:20]};
|
||||
assign io_out_immS = {{52{io_inst[31]}}, io_inst[31:25], io_inst[11:7]};
|
||||
assign io_out_immB =
|
||||
{{52{io_inst[31]}}, io_inst[7], io_inst[30:25], io_inst[11:8], 1'h0};
|
||||
assign io_out_immU = {{32{io_inst[31]}}, io_inst[31:12], 12'h0};
|
||||
assign io_out_immJ =
|
||||
{{44{io_inst[31]}}, io_inst[19:12], io_inst[20], io_inst[30:21], 1'h0};
|
||||
assign io_out_opClass =
|
||||
_GEN_2
|
||||
? 4'h1
|
||||
: _GEN_19
|
||||
? 4'h2
|
||||
: _GEN_5
|
||||
? 4'h3
|
||||
: _GEN_6
|
||||
? 4'h4
|
||||
: _GEN_7 | _GEN_11 ? 4'h1 : _GEN_16 ? 4'h5 : _GEN_15 ? 4'h3 : 4'h0;
|
||||
assign io_out_aluFn =
|
||||
d_isLui
|
||||
? 5'hF
|
||||
: _GEN_8
|
||||
? 5'h0
|
||||
: _GEN_7
|
||||
? _GEN_10[io_inst[14:12]]
|
||||
: _GEN_11
|
||||
? (io_inst[31:25] == 7'h1
|
||||
? ((&(io_inst[14:12]))
|
||||
? 5'hE
|
||||
: io_inst[14:12] == 3'h6
|
||||
? 5'hD
|
||||
: io_inst[14:12] == 3'h5
|
||||
? 5'hC
|
||||
: {4'h5, io_inst[14:12] == 3'h4})
|
||||
: _GEN_12[io_inst[14:12]])
|
||||
: 5'h0;
|
||||
assign io_out_memWidth =
|
||||
d_isLui | _GEN_0 | _GEN_1 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_18 | ~_GEN_15
|
||||
? {1'h0, _GEN[io_inst[14:12]]}
|
||||
: {2'h1, io_inst[14:12] != 3'h2};
|
||||
assign io_out_isLoad = ~(d_isLui | _GEN_0 | _GEN_19) & (_GEN_5 | ~_GEN_18 & _GEN_15);
|
||||
assign io_out_isStore =
|
||||
~(d_isLui | _GEN_0 | _GEN_1 | _GEN_3 | _GEN_4 | _GEN_5)
|
||||
& (_GEN_6 | ~_GEN_17 & _GEN_15);
|
||||
assign io_out_isBranch = ~(d_isLui | _GEN_0 | _GEN_1 | _GEN_3) & _GEN_4;
|
||||
assign io_out_isJal = ~_GEN_2 & _GEN_1;
|
||||
assign io_out_isJalr = ~(d_isLui | _GEN_0 | _GEN_1) & _GEN_3;
|
||||
assign io_out_isLui = d_isLui;
|
||||
assign io_out_isAuipc = ~d_isLui & _GEN_0;
|
||||
assign io_out_isOpImm = ~_GEN_9 & _GEN_7;
|
||||
assign io_out_isWord = ~_GEN_9 & (_GEN_7 ? _d_isWord_T : _GEN_11 & _d_isWord_T_1);
|
||||
assign io_out_isSystem =
|
||||
~(d_isLui | _GEN_0 | _GEN_1 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6 | _GEN_7 | _GEN_11
|
||||
| _GEN_13) & _GEN_14;
|
||||
assign io_out_writesRd =
|
||||
d_isLui
|
||||
? (|(io_inst[11:7]))
|
||||
: _GEN_0
|
||||
? (|(io_inst[11:7]))
|
||||
: _GEN_1
|
||||
? (|(io_inst[11:7]))
|
||||
: _GEN_3
|
||||
? (|(io_inst[11:7]))
|
||||
: ~_GEN_4
|
||||
& (_GEN_5
|
||||
? (|(io_inst[11:7]))
|
||||
: ~_GEN_6
|
||||
& (_GEN_7
|
||||
? (|(io_inst[11:7]))
|
||||
: _GEN_11
|
||||
? (|(io_inst[11:7]))
|
||||
: ~_GEN_13
|
||||
& (_GEN_14
|
||||
? (|(io_inst[11:7])) & (|(io_inst[14:12]))
|
||||
: _GEN_15 & (|(io_inst[11:7])))));
|
||||
assign io_out_illegal =
|
||||
io_inst[6:0] != 7'h37 & io_inst[6:0] != 7'h17 & io_inst[6:0] != 7'h6F
|
||||
& io_inst[6:0] != 7'h67 & io_inst[6:0] != 7'h63 & io_inst[6:0] != 7'h3
|
||||
& io_inst[6:0] != 7'h23 & io_inst[6:0] != 7'h13 & io_inst[6:0] != 7'h1B
|
||||
& io_inst[6:0] != 7'h33 & io_inst[6:0] != 7'h3B & io_inst[6:0] != 7'hF
|
||||
& io_inst[6:0] != 7'h73 & io_inst[6:0] != 7'h2F;
|
||||
endmodule
|
||||
|
||||
Reference in New Issue
Block a user