fix: resolve OoO simulation timeout
This commit is contained in:
0
generated-ooo/.Core.sv.stamp
Normal file
0
generated-ooo/.Core.sv.stamp
Normal file
60
generated-ooo/ALU.sv
Normal file
60
generated-ooo/ALU.sv
Normal file
@@ -0,0 +1,60 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module ALU(
|
||||
input [4:0] io_fn,
|
||||
input [63:0] io_a,
|
||||
io_b,
|
||||
input io_isWord,
|
||||
output [63:0] io_out
|
||||
);
|
||||
|
||||
wire [5:0] shamt = io_isWord ? {1'h0, io_b[4:0]} : io_b[5:0];
|
||||
wire [126:0] _raw_T_4 = {63'h0, io_a} << shamt;
|
||||
wire [63:0] _GEN = {58'h0, shamt};
|
||||
wire [64:0] _raw_T_22 =
|
||||
$unsigned($signed($signed({io_a[63], io_a}) / $signed({io_b[63], io_b})));
|
||||
wire [63:0] raw =
|
||||
io_fn == 5'h0
|
||||
? io_a + io_b
|
||||
: io_fn == 5'h1
|
||||
? io_a - io_b
|
||||
: io_fn == 5'h2
|
||||
? _raw_T_4[63:0]
|
||||
: io_fn == 5'h3
|
||||
? {63'h0, $signed(io_a) < $signed(io_b)}
|
||||
: io_fn == 5'h4
|
||||
? {63'h0, io_a < io_b}
|
||||
: io_fn == 5'h5
|
||||
? io_a ^ io_b
|
||||
: io_fn == 5'h6
|
||||
? io_a >> _GEN
|
||||
: io_fn == 5'h7
|
||||
? $signed($signed(io_a) >>> _GEN)
|
||||
: io_fn == 5'h8
|
||||
? io_a | io_b
|
||||
: io_fn == 5'h9
|
||||
? io_a & io_b
|
||||
: io_fn == 5'hA
|
||||
? io_a * io_b
|
||||
: io_fn == 5'hB
|
||||
? ((|io_b)
|
||||
? _raw_T_22[63:0]
|
||||
: 64'hFFFFFFFFFFFFFFFF)
|
||||
: io_fn == 5'hC
|
||||
? ((|io_b)
|
||||
? io_a / io_b
|
||||
: 64'hFFFFFFFFFFFFFFFF)
|
||||
: io_fn == 5'hD
|
||||
? ((|io_b)
|
||||
? $signed($signed(io_a)
|
||||
% $signed(io_b))
|
||||
: io_a)
|
||||
: io_fn == 5'hE
|
||||
? ((|io_b)
|
||||
? io_a % io_b
|
||||
: io_a)
|
||||
: io_fn == 5'hF
|
||||
? io_b
|
||||
: 64'h0;
|
||||
assign io_out = io_isWord ? {{32{raw[31]}}, raw[31:0]} : raw;
|
||||
endmodule
|
||||
|
||||
21
generated-ooo/BranchUnit.sv
Normal file
21
generated-ooo/BranchUnit.sv
Normal file
@@ -0,0 +1,21 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module BranchUnit(
|
||||
input [2:0] io_funct3,
|
||||
input [63:0] io_a,
|
||||
io_b,
|
||||
output io_taken
|
||||
);
|
||||
|
||||
wire _io_taken_T_11 = io_funct3 == 3'h0 & io_a == io_b;
|
||||
wire [7:0] _GEN =
|
||||
{{io_a >= io_b},
|
||||
{io_a < io_b},
|
||||
{$signed(io_a) >= $signed(io_b)},
|
||||
{$signed(io_a) < $signed(io_b)},
|
||||
{_io_taken_T_11},
|
||||
{_io_taken_T_11},
|
||||
{io_a != io_b},
|
||||
{_io_taken_T_11}};
|
||||
assign io_taken = _GEN[io_funct3];
|
||||
endmodule
|
||||
|
||||
260
generated-ooo/CSRFile.sv
Normal file
260
generated-ooo/CSRFile.sv
Normal file
@@ -0,0 +1,260 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module CSRFile(
|
||||
input clock,
|
||||
reset,
|
||||
io_cmd_valid,
|
||||
input [11:0] io_cmd_addr,
|
||||
input [2:0] io_cmd_cmd,
|
||||
input [63:0] io_cmd_rs1,
|
||||
input [4:0] io_cmd_zimm,
|
||||
input [11:0] io_readAddr,
|
||||
output [63:0] io_rdata,
|
||||
input io_trap,
|
||||
input [63:0] io_trapPc,
|
||||
io_trapCause,
|
||||
output [63:0] io_satp,
|
||||
io_mtvec,
|
||||
io_mepc
|
||||
);
|
||||
|
||||
reg [63:0] cycle;
|
||||
reg [63:0] mstatus;
|
||||
reg [63:0] mtvecReg;
|
||||
reg [63:0] mepcReg;
|
||||
reg [63:0] mcause;
|
||||
reg [63:0] mtval;
|
||||
reg [63:0] medeleg;
|
||||
reg [63:0] mideleg;
|
||||
reg [63:0] mie;
|
||||
reg [63:0] mip;
|
||||
reg [63:0] sstatus;
|
||||
reg [63:0] stvec;
|
||||
reg [63:0] sepc;
|
||||
reg [63:0] scause;
|
||||
reg [63:0] stval;
|
||||
reg [63:0] sscratch;
|
||||
reg [63:0] satpReg;
|
||||
always @(posedge clock) begin
|
||||
if (reset) begin
|
||||
cycle <= 64'h0;
|
||||
mstatus <= 64'h0;
|
||||
mtvecReg <= 64'h0;
|
||||
mepcReg <= 64'h0;
|
||||
mcause <= 64'h0;
|
||||
mtval <= 64'h0;
|
||||
medeleg <= 64'h0;
|
||||
mideleg <= 64'h0;
|
||||
mie <= 64'h0;
|
||||
mip <= 64'h0;
|
||||
sstatus <= 64'h0;
|
||||
stvec <= 64'h0;
|
||||
sepc <= 64'h0;
|
||||
scause <= 64'h0;
|
||||
stval <= 64'h0;
|
||||
sscratch <= 64'h0;
|
||||
satpReg <= 64'h0;
|
||||
end
|
||||
else begin
|
||||
automatic logic _GEN;
|
||||
automatic logic _GEN_0;
|
||||
automatic logic _GEN_1;
|
||||
automatic logic _GEN_2;
|
||||
automatic logic _GEN_3;
|
||||
automatic logic _GEN_4;
|
||||
automatic logic _GEN_5;
|
||||
automatic logic _GEN_6 = io_cmd_addr == 12'h343;
|
||||
automatic logic _GEN_7 = io_cmd_addr == 12'h344;
|
||||
automatic logic _GEN_8 = io_cmd_addr == 12'h100;
|
||||
automatic logic _GEN_9 = io_cmd_addr == 12'h105;
|
||||
automatic logic _GEN_10 = io_cmd_addr == 12'h140;
|
||||
automatic logic _GEN_11 = io_cmd_addr == 12'h141;
|
||||
automatic logic _GEN_12 = io_cmd_addr == 12'h142;
|
||||
automatic logic _GEN_13 = io_cmd_addr == 12'h143;
|
||||
automatic logic _GEN_14 = io_cmd_addr == 12'h180;
|
||||
automatic logic [63:0] _GEN_15;
|
||||
automatic logic [63:0] writeOld;
|
||||
automatic logic [63:0] operand;
|
||||
automatic logic [63:0] _next_T_1;
|
||||
automatic logic [63:0] _next_T_3;
|
||||
automatic logic [3:0][63:0] _GEN_16;
|
||||
automatic logic [63:0] next;
|
||||
automatic logic _GEN_17;
|
||||
_GEN = io_cmd_addr == 12'h300;
|
||||
_GEN_0 = io_cmd_addr == 12'h302;
|
||||
_GEN_1 = io_cmd_addr == 12'h303;
|
||||
_GEN_2 = io_cmd_addr == 12'h304;
|
||||
_GEN_3 = io_cmd_addr == 12'h305;
|
||||
_GEN_4 = io_cmd_addr == 12'h341;
|
||||
_GEN_5 = io_cmd_addr == 12'h342;
|
||||
_GEN_15 =
|
||||
io_cmd_addr == 12'h301
|
||||
? 64'h800000000014112D
|
||||
: _GEN_0
|
||||
? medeleg
|
||||
: _GEN_1
|
||||
? mideleg
|
||||
: _GEN_2
|
||||
? mie
|
||||
: _GEN_3
|
||||
? mtvecReg
|
||||
: _GEN_4
|
||||
? mepcReg
|
||||
: _GEN_5
|
||||
? mcause
|
||||
: _GEN_6
|
||||
? mtval
|
||||
: _GEN_7
|
||||
? mip
|
||||
: _GEN_8
|
||||
? sstatus
|
||||
: _GEN_9
|
||||
? stvec
|
||||
: _GEN_10
|
||||
? sscratch
|
||||
: _GEN_11
|
||||
? sepc
|
||||
: _GEN_12
|
||||
? scause
|
||||
: _GEN_13
|
||||
? stval
|
||||
: _GEN_14
|
||||
? satpReg
|
||||
: io_cmd_addr == 12'hF14
|
||||
| io_cmd_addr != 12'hC00
|
||||
? 64'h0
|
||||
: cycle;
|
||||
writeOld = _GEN ? mstatus : _GEN_15;
|
||||
operand = io_cmd_cmd[2] ? {59'h0, io_cmd_zimm} : io_cmd_rs1;
|
||||
_next_T_1 = writeOld | operand;
|
||||
_next_T_3 = writeOld & ~operand;
|
||||
_GEN_16 = {{_next_T_3}, {_next_T_1}, {operand}, {writeOld}};
|
||||
next = _GEN_16[io_cmd_cmd[1:0]];
|
||||
_GEN_17 = io_cmd_valid & (|io_cmd_cmd);
|
||||
cycle <= cycle + 64'h1;
|
||||
if (_GEN_17 & _GEN)
|
||||
mstatus <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | ~_GEN_3) begin
|
||||
end
|
||||
else
|
||||
mtvecReg <= next;
|
||||
if (io_trap) begin
|
||||
mepcReg <= io_trapPc;
|
||||
mcause <= io_trapCause;
|
||||
end
|
||||
else begin
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | ~_GEN_4) begin
|
||||
end
|
||||
else
|
||||
mepcReg <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | ~_GEN_5) begin
|
||||
end
|
||||
else
|
||||
mcause <= next;
|
||||
end
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | _GEN_5
|
||||
| ~_GEN_6) begin
|
||||
end
|
||||
else
|
||||
mtval <= next;
|
||||
if (~_GEN_17 | _GEN | ~_GEN_0) begin
|
||||
end
|
||||
else begin
|
||||
automatic logic [3:0][63:0] _GEN_18;
|
||||
_GEN_18 = {{_next_T_3}, {_next_T_1}, {operand}, {_GEN_15}};
|
||||
medeleg <= _GEN_18[io_cmd_cmd[1:0]];
|
||||
end
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | ~_GEN_1) begin
|
||||
end
|
||||
else
|
||||
mideleg <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | ~_GEN_2) begin
|
||||
end
|
||||
else
|
||||
mie <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6
|
||||
| ~_GEN_7) begin
|
||||
end
|
||||
else
|
||||
mip <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6
|
||||
| _GEN_7 | ~_GEN_8) begin
|
||||
end
|
||||
else
|
||||
sstatus <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6
|
||||
| _GEN_7 | _GEN_8 | ~_GEN_9) begin
|
||||
end
|
||||
else
|
||||
stvec <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6
|
||||
| _GEN_7 | _GEN_8 | _GEN_9 | _GEN_10 | ~_GEN_11) begin
|
||||
end
|
||||
else
|
||||
sepc <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6
|
||||
| _GEN_7 | _GEN_8 | _GEN_9 | _GEN_10 | _GEN_11 | ~_GEN_12) begin
|
||||
end
|
||||
else
|
||||
scause <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6
|
||||
| _GEN_7 | _GEN_8 | _GEN_9 | _GEN_10 | _GEN_11 | _GEN_12 | ~_GEN_13) begin
|
||||
end
|
||||
else
|
||||
stval <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6
|
||||
| _GEN_7 | _GEN_8 | _GEN_9 | ~_GEN_10) begin
|
||||
end
|
||||
else
|
||||
sscratch <= next;
|
||||
if (~_GEN_17 | _GEN | _GEN_0 | _GEN_1 | _GEN_2 | _GEN_3 | _GEN_4 | _GEN_5 | _GEN_6
|
||||
| _GEN_7 | _GEN_8 | _GEN_9 | _GEN_10 | _GEN_11 | _GEN_12 | _GEN_13
|
||||
| ~_GEN_14) begin
|
||||
end
|
||||
else
|
||||
satpReg <= next;
|
||||
end
|
||||
end // always @(posedge)
|
||||
assign io_rdata =
|
||||
io_readAddr == 12'h300
|
||||
? mstatus
|
||||
: io_readAddr == 12'h301
|
||||
? 64'h800000000014112D
|
||||
: io_readAddr == 12'h302
|
||||
? medeleg
|
||||
: io_readAddr == 12'h303
|
||||
? mideleg
|
||||
: io_readAddr == 12'h304
|
||||
? mie
|
||||
: io_readAddr == 12'h305
|
||||
? mtvecReg
|
||||
: io_readAddr == 12'h341
|
||||
? mepcReg
|
||||
: io_readAddr == 12'h342
|
||||
? mcause
|
||||
: io_readAddr == 12'h343
|
||||
? mtval
|
||||
: io_readAddr == 12'h344
|
||||
? mip
|
||||
: io_readAddr == 12'h100
|
||||
? sstatus
|
||||
: io_readAddr == 12'h105
|
||||
? stvec
|
||||
: io_readAddr == 12'h140
|
||||
? sscratch
|
||||
: io_readAddr == 12'h141
|
||||
? sepc
|
||||
: io_readAddr == 12'h142
|
||||
? scause
|
||||
: io_readAddr == 12'h143
|
||||
? stval
|
||||
: io_readAddr == 12'h180
|
||||
? satpReg
|
||||
: io_readAddr == 12'hF14
|
||||
| io_readAddr != 12'hC00
|
||||
? 64'h0
|
||||
: cycle;
|
||||
assign io_satp = satpReg;
|
||||
assign io_mtvec = mtvecReg;
|
||||
assign io_mepc = mepcReg;
|
||||
endmodule
|
||||
|
||||
83
generated-ooo/CommitStage.sv
Normal file
83
generated-ooo/CommitStage.sv
Normal file
@@ -0,0 +1,83 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module CommitStage(
|
||||
input io_robValid_0,
|
||||
io_robValid_1,
|
||||
input [4:0] io_robEntry_0_archDest,
|
||||
input io_robEntry_0_writesDest,
|
||||
input [3:0] io_robEntry_0_opClass,
|
||||
input [5:0] io_robEntry_0_dest,
|
||||
io_robEntry_0_oldDest,
|
||||
input io_robEntry_0_exception,
|
||||
input [63:0] io_robEntry_0_exceptionCause,
|
||||
io_robEntry_0_badAddr,
|
||||
input io_robEntry_0_branchMispredict,
|
||||
input [63:0] io_robEntry_0_redirectPc,
|
||||
input io_robEntry_0_csrValid,
|
||||
input [4:0] io_robEntry_1_archDest,
|
||||
input io_robEntry_1_writesDest,
|
||||
input [5:0] io_robEntry_1_dest,
|
||||
io_robEntry_1_oldDest,
|
||||
input io_robEntry_1_exception,
|
||||
input [63:0] io_robEntry_1_exceptionCause,
|
||||
io_robEntry_1_badAddr,
|
||||
input io_robEntry_1_branchMispredict,
|
||||
input [63:0] io_robEntry_1_redirectPc,
|
||||
input io_robEntry_1_csrValid,
|
||||
output io_commitReady_0,
|
||||
io_commitReady_1,
|
||||
io_freeOldPhys_0,
|
||||
io_freeOldPhys_1,
|
||||
output [5:0] io_oldPhys_0,
|
||||
io_oldPhys_1,
|
||||
output io_commitMapValid_0,
|
||||
io_commitMapValid_1,
|
||||
output [4:0] io_commitArch_0,
|
||||
io_commitArch_1,
|
||||
output [5:0] io_commitPhys_0,
|
||||
io_commitPhys_1,
|
||||
output io_flush,
|
||||
output [63:0] io_redirectPc,
|
||||
output io_exception,
|
||||
output [63:0] io_exceptionCause,
|
||||
io_badAddr
|
||||
);
|
||||
|
||||
wire firstTrap =
|
||||
io_robValid_0 & (io_robEntry_0_exception | io_robEntry_0_branchMispredict);
|
||||
wire secondTrap =
|
||||
io_robValid_1 & (io_robEntry_1_exception | io_robEntry_1_branchMispredict);
|
||||
wire io_commitReady_1_0 =
|
||||
io_robValid_1 & ~firstTrap & ~secondTrap
|
||||
& ~(io_robValid_0 & io_robValid_1 & io_robEntry_0_csrValid & io_robEntry_1_csrValid)
|
||||
& ~(io_robValid_0 & io_robEntry_0_opClass == 4'h4);
|
||||
wire _io_commitMapValid_0_T = io_robValid_0 & io_robEntry_0_writesDest;
|
||||
wire _io_commitMapValid_1_T = io_commitReady_1_0 & io_robEntry_1_writesDest;
|
||||
wire secondTrapSelected = ~io_robValid_0 & secondTrap;
|
||||
assign io_commitReady_0 = io_robValid_0;
|
||||
assign io_commitReady_1 = io_commitReady_1_0;
|
||||
assign io_freeOldPhys_0 =
|
||||
_io_commitMapValid_0_T & io_robEntry_0_oldDest != io_robEntry_0_dest;
|
||||
assign io_freeOldPhys_1 =
|
||||
_io_commitMapValid_1_T & io_robEntry_1_oldDest != io_robEntry_1_dest;
|
||||
assign io_oldPhys_0 = io_robEntry_0_oldDest;
|
||||
assign io_oldPhys_1 = io_robEntry_1_oldDest;
|
||||
assign io_commitMapValid_0 = _io_commitMapValid_0_T & (|io_robEntry_0_archDest);
|
||||
assign io_commitMapValid_1 = _io_commitMapValid_1_T & (|io_robEntry_1_archDest);
|
||||
assign io_commitArch_0 = io_robEntry_0_archDest;
|
||||
assign io_commitArch_1 = io_robEntry_1_archDest;
|
||||
assign io_commitPhys_0 = io_robEntry_0_dest;
|
||||
assign io_commitPhys_1 = io_robEntry_1_dest;
|
||||
assign io_flush = firstTrap | secondTrapSelected;
|
||||
assign io_redirectPc = firstTrap ? io_robEntry_0_redirectPc : io_robEntry_1_redirectPc;
|
||||
assign io_exception =
|
||||
firstTrap ? io_robEntry_0_exception : secondTrapSelected & io_robEntry_1_exception;
|
||||
assign io_exceptionCause =
|
||||
firstTrap
|
||||
? io_robEntry_0_exceptionCause
|
||||
: secondTrapSelected ? io_robEntry_1_exceptionCause : 64'h0;
|
||||
assign io_badAddr =
|
||||
firstTrap
|
||||
? io_robEntry_0_badAddr
|
||||
: secondTrapSelected ? io_robEntry_1_badAddr : 64'h0;
|
||||
endmodule
|
||||
|
||||
254
generated-ooo/Core.sv
Normal file
254
generated-ooo/Core.sv
Normal file
@@ -0,0 +1,254 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module Core(
|
||||
input clock,
|
||||
reset,
|
||||
output io_imem_req_valid,
|
||||
output [63:0] io_imem_req_bits,
|
||||
input io_imem_resp_valid,
|
||||
input [31:0] io_imem_resp_bits_0,
|
||||
io_imem_resp_bits_1,
|
||||
output io_dmem_req_valid,
|
||||
output [63:0] io_dmem_req_bits_addr,
|
||||
io_dmem_req_bits_data,
|
||||
output io_dmem_req_bits_isStore,
|
||||
output [2:0] io_dmem_req_bits_size,
|
||||
input io_dmem_resp_valid,
|
||||
input [63:0] io_dmem_resp_bits
|
||||
);
|
||||
|
||||
wire _backend_io_decodeReady;
|
||||
wire _backend_io_flush;
|
||||
wire [63:0] _backend_io_redirectPc;
|
||||
wire _id_io_outValid_0;
|
||||
wire _id_io_outValid_1;
|
||||
wire [63:0] _id_io_out_0_pc;
|
||||
wire [31:0] _id_io_out_0_inst;
|
||||
wire [4:0] _id_io_out_0_rs1;
|
||||
wire [4:0] _id_io_out_0_rs2;
|
||||
wire [4:0] _id_io_out_0_rd;
|
||||
wire [2:0] _id_io_out_0_funct3;
|
||||
wire [63:0] _id_io_out_0_immI;
|
||||
wire [63:0] _id_io_out_0_immS;
|
||||
wire [63:0] _id_io_out_0_immB;
|
||||
wire [63:0] _id_io_out_0_immU;
|
||||
wire [63:0] _id_io_out_0_immJ;
|
||||
wire [3:0] _id_io_out_0_opClass;
|
||||
wire [4:0] _id_io_out_0_aluFn;
|
||||
wire [2:0] _id_io_out_0_memWidth;
|
||||
wire _id_io_out_0_isLoad;
|
||||
wire _id_io_out_0_isStore;
|
||||
wire _id_io_out_0_isBranch;
|
||||
wire _id_io_out_0_isJal;
|
||||
wire _id_io_out_0_isJalr;
|
||||
wire _id_io_out_0_isLui;
|
||||
wire _id_io_out_0_isAuipc;
|
||||
wire _id_io_out_0_isOpImm;
|
||||
wire _id_io_out_0_isWord;
|
||||
wire _id_io_out_0_isSystem;
|
||||
wire _id_io_out_0_writesRd;
|
||||
wire _id_io_out_0_illegal;
|
||||
wire [63:0] _id_io_out_1_pc;
|
||||
wire [31:0] _id_io_out_1_inst;
|
||||
wire [4:0] _id_io_out_1_rs1;
|
||||
wire [4:0] _id_io_out_1_rs2;
|
||||
wire [4:0] _id_io_out_1_rd;
|
||||
wire [2:0] _id_io_out_1_funct3;
|
||||
wire [63:0] _id_io_out_1_immI;
|
||||
wire [63:0] _id_io_out_1_immS;
|
||||
wire [63:0] _id_io_out_1_immB;
|
||||
wire [63:0] _id_io_out_1_immU;
|
||||
wire [63:0] _id_io_out_1_immJ;
|
||||
wire [3:0] _id_io_out_1_opClass;
|
||||
wire [4:0] _id_io_out_1_aluFn;
|
||||
wire [2:0] _id_io_out_1_memWidth;
|
||||
wire _id_io_out_1_isLoad;
|
||||
wire _id_io_out_1_isStore;
|
||||
wire _id_io_out_1_isBranch;
|
||||
wire _id_io_out_1_isJal;
|
||||
wire _id_io_out_1_isJalr;
|
||||
wire _id_io_out_1_isLui;
|
||||
wire _id_io_out_1_isAuipc;
|
||||
wire _id_io_out_1_isOpImm;
|
||||
wire _id_io_out_1_isWord;
|
||||
wire _id_io_out_1_isSystem;
|
||||
wire _id_io_out_1_writesRd;
|
||||
wire _id_io_out_1_illegal;
|
||||
wire _frontend_io_outValid;
|
||||
wire [63:0] _frontend_io_out_pc;
|
||||
wire [31:0] _frontend_io_out_inst_0;
|
||||
wire [31:0] _frontend_io_out_inst_1;
|
||||
wire _frontend_io_out_laneValid_0;
|
||||
wire _frontend_io_out_laneValid_1;
|
||||
reg fetchValid;
|
||||
reg [63:0] fetchReg_pc;
|
||||
reg [31:0] fetchReg_inst_0;
|
||||
reg [31:0] fetchReg_inst_1;
|
||||
reg fetchReg_laneValid_0;
|
||||
reg fetchReg_laneValid_1;
|
||||
wire fetchReady = ~fetchValid | _backend_io_decodeReady;
|
||||
always @(posedge clock) begin
|
||||
if (reset)
|
||||
fetchValid <= 1'h0;
|
||||
else
|
||||
fetchValid <=
|
||||
~_backend_io_flush & (fetchReady ? _frontend_io_outValid : fetchValid);
|
||||
if (_backend_io_flush | ~fetchReady) begin
|
||||
end
|
||||
else begin
|
||||
fetchReg_pc <= _frontend_io_out_pc;
|
||||
fetchReg_inst_0 <= _frontend_io_out_inst_0;
|
||||
fetchReg_inst_1 <= _frontend_io_out_inst_1;
|
||||
fetchReg_laneValid_0 <= _frontend_io_out_laneValid_0;
|
||||
fetchReg_laneValid_1 <= _frontend_io_out_laneValid_1;
|
||||
end
|
||||
end // always @(posedge)
|
||||
Frontend frontend (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_redirectValid (_backend_io_flush),
|
||||
.io_redirectPc (_backend_io_redirectPc),
|
||||
.io_imemReqValid (io_imem_req_valid),
|
||||
.io_imemReqAddr (io_imem_req_bits),
|
||||
.io_imemRespValid (io_imem_resp_valid),
|
||||
.io_imemRespBits_0 (io_imem_resp_bits_0),
|
||||
.io_imemRespBits_1 (io_imem_resp_bits_1),
|
||||
.io_outReady (fetchReady),
|
||||
.io_outValid (_frontend_io_outValid),
|
||||
.io_out_pc (_frontend_io_out_pc),
|
||||
.io_out_inst_0 (_frontend_io_out_inst_0),
|
||||
.io_out_inst_1 (_frontend_io_out_inst_1),
|
||||
.io_out_laneValid_0 (_frontend_io_out_laneValid_0),
|
||||
.io_out_laneValid_1 (_frontend_io_out_laneValid_1)
|
||||
);
|
||||
IDStage id (
|
||||
.io_inValid (fetchValid),
|
||||
.io_in_pc (fetchReg_pc),
|
||||
.io_in_inst_0 (fetchReg_inst_0),
|
||||
.io_in_inst_1 (fetchReg_inst_1),
|
||||
.io_in_laneValid_0 (fetchReg_laneValid_0),
|
||||
.io_in_laneValid_1 (fetchReg_laneValid_1),
|
||||
.io_outValid_0 (_id_io_outValid_0),
|
||||
.io_outValid_1 (_id_io_outValid_1),
|
||||
.io_out_0_pc (_id_io_out_0_pc),
|
||||
.io_out_0_inst (_id_io_out_0_inst),
|
||||
.io_out_0_rs1 (_id_io_out_0_rs1),
|
||||
.io_out_0_rs2 (_id_io_out_0_rs2),
|
||||
.io_out_0_rd (_id_io_out_0_rd),
|
||||
.io_out_0_funct3 (_id_io_out_0_funct3),
|
||||
.io_out_0_immI (_id_io_out_0_immI),
|
||||
.io_out_0_immS (_id_io_out_0_immS),
|
||||
.io_out_0_immB (_id_io_out_0_immB),
|
||||
.io_out_0_immU (_id_io_out_0_immU),
|
||||
.io_out_0_immJ (_id_io_out_0_immJ),
|
||||
.io_out_0_opClass (_id_io_out_0_opClass),
|
||||
.io_out_0_aluFn (_id_io_out_0_aluFn),
|
||||
.io_out_0_memWidth (_id_io_out_0_memWidth),
|
||||
.io_out_0_isLoad (_id_io_out_0_isLoad),
|
||||
.io_out_0_isStore (_id_io_out_0_isStore),
|
||||
.io_out_0_isBranch (_id_io_out_0_isBranch),
|
||||
.io_out_0_isJal (_id_io_out_0_isJal),
|
||||
.io_out_0_isJalr (_id_io_out_0_isJalr),
|
||||
.io_out_0_isLui (_id_io_out_0_isLui),
|
||||
.io_out_0_isAuipc (_id_io_out_0_isAuipc),
|
||||
.io_out_0_isOpImm (_id_io_out_0_isOpImm),
|
||||
.io_out_0_isWord (_id_io_out_0_isWord),
|
||||
.io_out_0_isSystem (_id_io_out_0_isSystem),
|
||||
.io_out_0_writesRd (_id_io_out_0_writesRd),
|
||||
.io_out_0_illegal (_id_io_out_0_illegal),
|
||||
.io_out_1_pc (_id_io_out_1_pc),
|
||||
.io_out_1_inst (_id_io_out_1_inst),
|
||||
.io_out_1_rs1 (_id_io_out_1_rs1),
|
||||
.io_out_1_rs2 (_id_io_out_1_rs2),
|
||||
.io_out_1_rd (_id_io_out_1_rd),
|
||||
.io_out_1_funct3 (_id_io_out_1_funct3),
|
||||
.io_out_1_immI (_id_io_out_1_immI),
|
||||
.io_out_1_immS (_id_io_out_1_immS),
|
||||
.io_out_1_immB (_id_io_out_1_immB),
|
||||
.io_out_1_immU (_id_io_out_1_immU),
|
||||
.io_out_1_immJ (_id_io_out_1_immJ),
|
||||
.io_out_1_opClass (_id_io_out_1_opClass),
|
||||
.io_out_1_aluFn (_id_io_out_1_aluFn),
|
||||
.io_out_1_memWidth (_id_io_out_1_memWidth),
|
||||
.io_out_1_isLoad (_id_io_out_1_isLoad),
|
||||
.io_out_1_isStore (_id_io_out_1_isStore),
|
||||
.io_out_1_isBranch (_id_io_out_1_isBranch),
|
||||
.io_out_1_isJal (_id_io_out_1_isJal),
|
||||
.io_out_1_isJalr (_id_io_out_1_isJalr),
|
||||
.io_out_1_isLui (_id_io_out_1_isLui),
|
||||
.io_out_1_isAuipc (_id_io_out_1_isAuipc),
|
||||
.io_out_1_isOpImm (_id_io_out_1_isOpImm),
|
||||
.io_out_1_isWord (_id_io_out_1_isWord),
|
||||
.io_out_1_isSystem (_id_io_out_1_isSystem),
|
||||
.io_out_1_writesRd (_id_io_out_1_writesRd),
|
||||
.io_out_1_illegal (_id_io_out_1_illegal)
|
||||
);
|
||||
OoOBackend backend (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_decodeValid_0 (_id_io_outValid_0),
|
||||
.io_decodeValid_1 (_id_io_outValid_1),
|
||||
.io_decode_0_pc (_id_io_out_0_pc),
|
||||
.io_decode_0_inst (_id_io_out_0_inst),
|
||||
.io_decode_0_rs1 (_id_io_out_0_rs1),
|
||||
.io_decode_0_rs2 (_id_io_out_0_rs2),
|
||||
.io_decode_0_rd (_id_io_out_0_rd),
|
||||
.io_decode_0_funct3 (_id_io_out_0_funct3),
|
||||
.io_decode_0_immI (_id_io_out_0_immI),
|
||||
.io_decode_0_immS (_id_io_out_0_immS),
|
||||
.io_decode_0_immB (_id_io_out_0_immB),
|
||||
.io_decode_0_immU (_id_io_out_0_immU),
|
||||
.io_decode_0_immJ (_id_io_out_0_immJ),
|
||||
.io_decode_0_opClass (_id_io_out_0_opClass),
|
||||
.io_decode_0_aluFn (_id_io_out_0_aluFn),
|
||||
.io_decode_0_memWidth (_id_io_out_0_memWidth),
|
||||
.io_decode_0_isLoad (_id_io_out_0_isLoad),
|
||||
.io_decode_0_isStore (_id_io_out_0_isStore),
|
||||
.io_decode_0_isBranch (_id_io_out_0_isBranch),
|
||||
.io_decode_0_isJal (_id_io_out_0_isJal),
|
||||
.io_decode_0_isJalr (_id_io_out_0_isJalr),
|
||||
.io_decode_0_isLui (_id_io_out_0_isLui),
|
||||
.io_decode_0_isAuipc (_id_io_out_0_isAuipc),
|
||||
.io_decode_0_isOpImm (_id_io_out_0_isOpImm),
|
||||
.io_decode_0_isWord (_id_io_out_0_isWord),
|
||||
.io_decode_0_isSystem (_id_io_out_0_isSystem),
|
||||
.io_decode_0_writesRd (_id_io_out_0_writesRd),
|
||||
.io_decode_0_illegal (_id_io_out_0_illegal),
|
||||
.io_decode_1_pc (_id_io_out_1_pc),
|
||||
.io_decode_1_inst (_id_io_out_1_inst),
|
||||
.io_decode_1_rs1 (_id_io_out_1_rs1),
|
||||
.io_decode_1_rs2 (_id_io_out_1_rs2),
|
||||
.io_decode_1_rd (_id_io_out_1_rd),
|
||||
.io_decode_1_funct3 (_id_io_out_1_funct3),
|
||||
.io_decode_1_immI (_id_io_out_1_immI),
|
||||
.io_decode_1_immS (_id_io_out_1_immS),
|
||||
.io_decode_1_immB (_id_io_out_1_immB),
|
||||
.io_decode_1_immU (_id_io_out_1_immU),
|
||||
.io_decode_1_immJ (_id_io_out_1_immJ),
|
||||
.io_decode_1_opClass (_id_io_out_1_opClass),
|
||||
.io_decode_1_aluFn (_id_io_out_1_aluFn),
|
||||
.io_decode_1_memWidth (_id_io_out_1_memWidth),
|
||||
.io_decode_1_isLoad (_id_io_out_1_isLoad),
|
||||
.io_decode_1_isStore (_id_io_out_1_isStore),
|
||||
.io_decode_1_isBranch (_id_io_out_1_isBranch),
|
||||
.io_decode_1_isJal (_id_io_out_1_isJal),
|
||||
.io_decode_1_isJalr (_id_io_out_1_isJalr),
|
||||
.io_decode_1_isLui (_id_io_out_1_isLui),
|
||||
.io_decode_1_isAuipc (_id_io_out_1_isAuipc),
|
||||
.io_decode_1_isOpImm (_id_io_out_1_isOpImm),
|
||||
.io_decode_1_isWord (_id_io_out_1_isWord),
|
||||
.io_decode_1_isSystem (_id_io_out_1_isSystem),
|
||||
.io_decode_1_writesRd (_id_io_out_1_writesRd),
|
||||
.io_decode_1_illegal (_id_io_out_1_illegal),
|
||||
.io_decodeReady (_backend_io_decodeReady),
|
||||
.io_flush (_backend_io_flush),
|
||||
.io_redirectPc (_backend_io_redirectPc),
|
||||
.io_dmemReqValid (io_dmem_req_valid),
|
||||
.io_dmemReq_addr (io_dmem_req_bits_addr),
|
||||
.io_dmemReq_data (io_dmem_req_bits_data),
|
||||
.io_dmemReq_isStore (io_dmem_req_bits_isStore),
|
||||
.io_dmemReq_size (io_dmem_req_bits_size),
|
||||
.io_dmemRespValid (io_dmem_resp_valid),
|
||||
.io_dmemRespData (io_dmem_resp_bits)
|
||||
);
|
||||
endmodule
|
||||
|
||||
4352
generated-ooo/DCache.sv
Normal file
4352
generated-ooo/DCache.sv
Normal file
File diff suppressed because it is too large
Load Diff
636
generated-ooo/DTLB.sv
Normal file
636
generated-ooo/DTLB.sv
Normal file
@@ -0,0 +1,636 @@
|
||||
// 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
|
||||
|
||||
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
|
||||
|
||||
29
generated-ooo/ExecStage.sv
Normal file
29
generated-ooo/ExecStage.sv
Normal file
@@ -0,0 +1,29 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module ExecStage(
|
||||
input io_inValid,
|
||||
input [2:0] io_in_funct3,
|
||||
input [4:0] io_in_aluFn,
|
||||
input io_in_isWord,
|
||||
input [63:0] io_src1,
|
||||
io_src2,
|
||||
output io_outValid,
|
||||
output [63:0] io_result,
|
||||
output io_branchTaken
|
||||
);
|
||||
|
||||
ALU alu (
|
||||
.io_fn (io_in_aluFn),
|
||||
.io_a (io_src1),
|
||||
.io_b (io_src2),
|
||||
.io_isWord (io_in_isWord),
|
||||
.io_out (io_result)
|
||||
);
|
||||
BranchUnit branch (
|
||||
.io_funct3 (io_in_funct3),
|
||||
.io_a (io_src1),
|
||||
.io_b (io_src2),
|
||||
.io_taken (io_branchTaken)
|
||||
);
|
||||
assign io_outValid = io_inValid;
|
||||
endmodule
|
||||
|
||||
2245
generated-ooo/FreeList.sv
Normal file
2245
generated-ooo/FreeList.sv
Normal file
File diff suppressed because it is too large
Load Diff
62
generated-ooo/Frontend.sv
Normal file
62
generated-ooo/Frontend.sv
Normal file
@@ -0,0 +1,62 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module Frontend(
|
||||
input clock,
|
||||
reset,
|
||||
io_redirectValid,
|
||||
input [63:0] io_redirectPc,
|
||||
output io_imemReqValid,
|
||||
output [63:0] io_imemReqAddr,
|
||||
input io_imemRespValid,
|
||||
input [31:0] io_imemRespBits_0,
|
||||
io_imemRespBits_1,
|
||||
input io_outReady,
|
||||
output io_outValid,
|
||||
output [63:0] io_out_pc,
|
||||
output [31:0] io_out_inst_0,
|
||||
io_out_inst_1,
|
||||
output io_out_laneValid_0,
|
||||
io_out_laneValid_1
|
||||
);
|
||||
|
||||
wire _icache_io_respValid;
|
||||
wire [63:0] _icache_io_resp_pc;
|
||||
wire _icache_io_resp_laneValid_0;
|
||||
wire _icache_io_resp_laneValid_1;
|
||||
reg [63:0] pc;
|
||||
always @(posedge clock) begin
|
||||
if (reset)
|
||||
pc <= 64'h80000000;
|
||||
else if (io_redirectValid)
|
||||
pc <= io_redirectPc;
|
||||
else if (_icache_io_respValid & io_outReady)
|
||||
pc <=
|
||||
_icache_io_resp_pc
|
||||
+ {60'h0,
|
||||
{1'h0, _icache_io_resp_laneValid_0} + {1'h0, _icache_io_resp_laneValid_1},
|
||||
2'h0};
|
||||
end // always @(posedge)
|
||||
ICache icache (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_reqAddr (pc),
|
||||
.io_reqPc (pc),
|
||||
.io_flush (io_redirectValid),
|
||||
.io_respReady (io_outReady),
|
||||
.io_memReqValid (io_imemReqValid),
|
||||
.io_memReqAddr (io_imemReqAddr),
|
||||
.io_memRespValid (io_imemRespValid),
|
||||
.io_memRespBits_0 (io_imemRespBits_0),
|
||||
.io_memRespBits_1 (io_imemRespBits_1),
|
||||
.io_respValid (_icache_io_respValid),
|
||||
.io_resp_pc (_icache_io_resp_pc),
|
||||
.io_resp_inst_0 (io_out_inst_0),
|
||||
.io_resp_inst_1 (io_out_inst_1),
|
||||
.io_resp_laneValid_0 (_icache_io_resp_laneValid_0),
|
||||
.io_resp_laneValid_1 (_icache_io_resp_laneValid_1)
|
||||
);
|
||||
assign io_outValid = _icache_io_respValid;
|
||||
assign io_out_pc = _icache_io_resp_pc;
|
||||
assign io_out_laneValid_0 = _icache_io_resp_laneValid_0;
|
||||
assign io_out_laneValid_1 = _icache_io_resp_laneValid_1;
|
||||
endmodule
|
||||
|
||||
49536
generated-ooo/ICache.sv
Normal file
49536
generated-ooo/ICache.sv
Normal file
File diff suppressed because it is too large
Load Diff
128
generated-ooo/IDStage.sv
Normal file
128
generated-ooo/IDStage.sv
Normal file
@@ -0,0 +1,128 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module IDStage(
|
||||
input io_inValid,
|
||||
input [63:0] io_in_pc,
|
||||
input [31:0] io_in_inst_0,
|
||||
io_in_inst_1,
|
||||
input io_in_laneValid_0,
|
||||
io_in_laneValid_1,
|
||||
output io_outValid_0,
|
||||
io_outValid_1,
|
||||
output [63:0] io_out_0_pc,
|
||||
output [31:0] io_out_0_inst,
|
||||
output [4:0] io_out_0_rs1,
|
||||
io_out_0_rs2,
|
||||
io_out_0_rd,
|
||||
output [2:0] io_out_0_funct3,
|
||||
output [63:0] io_out_0_immI,
|
||||
io_out_0_immS,
|
||||
io_out_0_immB,
|
||||
io_out_0_immU,
|
||||
io_out_0_immJ,
|
||||
output [3:0] io_out_0_opClass,
|
||||
output [4:0] io_out_0_aluFn,
|
||||
output [2:0] io_out_0_memWidth,
|
||||
output io_out_0_isLoad,
|
||||
io_out_0_isStore,
|
||||
io_out_0_isBranch,
|
||||
io_out_0_isJal,
|
||||
io_out_0_isJalr,
|
||||
io_out_0_isLui,
|
||||
io_out_0_isAuipc,
|
||||
io_out_0_isOpImm,
|
||||
io_out_0_isWord,
|
||||
io_out_0_isSystem,
|
||||
io_out_0_writesRd,
|
||||
io_out_0_illegal,
|
||||
output [63:0] io_out_1_pc,
|
||||
output [31:0] io_out_1_inst,
|
||||
output [4:0] io_out_1_rs1,
|
||||
io_out_1_rs2,
|
||||
io_out_1_rd,
|
||||
output [2:0] io_out_1_funct3,
|
||||
output [63:0] io_out_1_immI,
|
||||
io_out_1_immS,
|
||||
io_out_1_immB,
|
||||
io_out_1_immU,
|
||||
io_out_1_immJ,
|
||||
output [3:0] io_out_1_opClass,
|
||||
output [4:0] io_out_1_aluFn,
|
||||
output [2:0] io_out_1_memWidth,
|
||||
output io_out_1_isLoad,
|
||||
io_out_1_isStore,
|
||||
io_out_1_isBranch,
|
||||
io_out_1_isJal,
|
||||
io_out_1_isJalr,
|
||||
io_out_1_isLui,
|
||||
io_out_1_isAuipc,
|
||||
io_out_1_isOpImm,
|
||||
io_out_1_isWord,
|
||||
io_out_1_isSystem,
|
||||
io_out_1_writesRd,
|
||||
io_out_1_illegal
|
||||
);
|
||||
|
||||
Decoder decoders_0 (
|
||||
.io_pc (io_in_pc),
|
||||
.io_inst (io_in_inst_0),
|
||||
.io_out_pc (io_out_0_pc),
|
||||
.io_out_inst (io_out_0_inst),
|
||||
.io_out_rs1 (io_out_0_rs1),
|
||||
.io_out_rs2 (io_out_0_rs2),
|
||||
.io_out_rd (io_out_0_rd),
|
||||
.io_out_funct3 (io_out_0_funct3),
|
||||
.io_out_immI (io_out_0_immI),
|
||||
.io_out_immS (io_out_0_immS),
|
||||
.io_out_immB (io_out_0_immB),
|
||||
.io_out_immU (io_out_0_immU),
|
||||
.io_out_immJ (io_out_0_immJ),
|
||||
.io_out_opClass (io_out_0_opClass),
|
||||
.io_out_aluFn (io_out_0_aluFn),
|
||||
.io_out_memWidth (io_out_0_memWidth),
|
||||
.io_out_isLoad (io_out_0_isLoad),
|
||||
.io_out_isStore (io_out_0_isStore),
|
||||
.io_out_isBranch (io_out_0_isBranch),
|
||||
.io_out_isJal (io_out_0_isJal),
|
||||
.io_out_isJalr (io_out_0_isJalr),
|
||||
.io_out_isLui (io_out_0_isLui),
|
||||
.io_out_isAuipc (io_out_0_isAuipc),
|
||||
.io_out_isOpImm (io_out_0_isOpImm),
|
||||
.io_out_isWord (io_out_0_isWord),
|
||||
.io_out_isSystem (io_out_0_isSystem),
|
||||
.io_out_writesRd (io_out_0_writesRd),
|
||||
.io_out_illegal (io_out_0_illegal)
|
||||
);
|
||||
Decoder decoders_1 (
|
||||
.io_pc (io_in_pc + 64'h4),
|
||||
.io_inst (io_in_inst_1),
|
||||
.io_out_pc (io_out_1_pc),
|
||||
.io_out_inst (io_out_1_inst),
|
||||
.io_out_rs1 (io_out_1_rs1),
|
||||
.io_out_rs2 (io_out_1_rs2),
|
||||
.io_out_rd (io_out_1_rd),
|
||||
.io_out_funct3 (io_out_1_funct3),
|
||||
.io_out_immI (io_out_1_immI),
|
||||
.io_out_immS (io_out_1_immS),
|
||||
.io_out_immB (io_out_1_immB),
|
||||
.io_out_immU (io_out_1_immU),
|
||||
.io_out_immJ (io_out_1_immJ),
|
||||
.io_out_opClass (io_out_1_opClass),
|
||||
.io_out_aluFn (io_out_1_aluFn),
|
||||
.io_out_memWidth (io_out_1_memWidth),
|
||||
.io_out_isLoad (io_out_1_isLoad),
|
||||
.io_out_isStore (io_out_1_isStore),
|
||||
.io_out_isBranch (io_out_1_isBranch),
|
||||
.io_out_isJal (io_out_1_isJal),
|
||||
.io_out_isJalr (io_out_1_isJalr),
|
||||
.io_out_isLui (io_out_1_isLui),
|
||||
.io_out_isAuipc (io_out_1_isAuipc),
|
||||
.io_out_isOpImm (io_out_1_isOpImm),
|
||||
.io_out_isWord (io_out_1_isWord),
|
||||
.io_out_isSystem (io_out_1_isSystem),
|
||||
.io_out_writesRd (io_out_1_writesRd),
|
||||
.io_out_illegal (io_out_1_illegal)
|
||||
);
|
||||
assign io_outValid_0 = io_inValid & io_in_laneValid_0;
|
||||
assign io_outValid_1 = io_inValid & io_in_laneValid_1;
|
||||
endmodule
|
||||
|
||||
266
generated-ooo/IssueQueue.sv
Normal file
266
generated-ooo/IssueQueue.sv
Normal file
@@ -0,0 +1,266 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module IssueQueue(
|
||||
input clock,
|
||||
reset,
|
||||
io_enqValid_0,
|
||||
io_enqValid_1,
|
||||
input [63:0] io_enq_0_decoded_pc,
|
||||
input [31:0] io_enq_0_decoded_inst,
|
||||
input [4:0] io_enq_0_decoded_rs1,
|
||||
io_enq_0_decoded_rs2,
|
||||
input [2:0] io_enq_0_decoded_funct3,
|
||||
input [63:0] io_enq_0_decoded_immI,
|
||||
io_enq_0_decoded_immS,
|
||||
io_enq_0_decoded_immB,
|
||||
io_enq_0_decoded_immU,
|
||||
io_enq_0_decoded_immJ,
|
||||
input [4:0] io_enq_0_decoded_aluFn,
|
||||
input [2:0] io_enq_0_decoded_memWidth,
|
||||
input io_enq_0_decoded_isLoad,
|
||||
io_enq_0_decoded_isStore,
|
||||
io_enq_0_decoded_isBranch,
|
||||
io_enq_0_decoded_isJal,
|
||||
io_enq_0_decoded_isJalr,
|
||||
io_enq_0_decoded_isLui,
|
||||
io_enq_0_decoded_isAuipc,
|
||||
io_enq_0_decoded_isOpImm,
|
||||
io_enq_0_decoded_isWord,
|
||||
io_enq_0_decoded_isSystem,
|
||||
io_enq_0_decoded_writesRd,
|
||||
io_enq_0_decoded_illegal,
|
||||
input [5:0] io_enq_0_prs1,
|
||||
io_enq_0_prs2,
|
||||
input io_enq_0_src1Ready,
|
||||
io_enq_0_src2Ready,
|
||||
input [5:0] io_enq_0_prd,
|
||||
io_enq_0_robIdx,
|
||||
input [63:0] io_enq_1_decoded_pc,
|
||||
input [31:0] io_enq_1_decoded_inst,
|
||||
input [4:0] io_enq_1_decoded_rs1,
|
||||
io_enq_1_decoded_rs2,
|
||||
input [2:0] io_enq_1_decoded_funct3,
|
||||
input [63:0] io_enq_1_decoded_immI,
|
||||
io_enq_1_decoded_immS,
|
||||
io_enq_1_decoded_immB,
|
||||
io_enq_1_decoded_immU,
|
||||
io_enq_1_decoded_immJ,
|
||||
input [4:0] io_enq_1_decoded_aluFn,
|
||||
input [2:0] io_enq_1_decoded_memWidth,
|
||||
input io_enq_1_decoded_isLoad,
|
||||
io_enq_1_decoded_isStore,
|
||||
io_enq_1_decoded_isBranch,
|
||||
io_enq_1_decoded_isJal,
|
||||
io_enq_1_decoded_isJalr,
|
||||
io_enq_1_decoded_isLui,
|
||||
io_enq_1_decoded_isAuipc,
|
||||
io_enq_1_decoded_isOpImm,
|
||||
io_enq_1_decoded_isWord,
|
||||
io_enq_1_decoded_isSystem,
|
||||
io_enq_1_decoded_writesRd,
|
||||
io_enq_1_decoded_illegal,
|
||||
input [5:0] io_enq_1_prs1,
|
||||
io_enq_1_prs2,
|
||||
input io_enq_1_src1Ready,
|
||||
io_enq_1_src2Ready,
|
||||
input [5:0] io_enq_1_prd,
|
||||
io_enq_1_robIdx,
|
||||
output io_enqReady_0,
|
||||
io_enqReady_1,
|
||||
input io_wakeup_0_valid,
|
||||
input [5:0] io_wakeup_0_phys,
|
||||
input io_wakeup_1_valid,
|
||||
input [5:0] io_wakeup_1_phys,
|
||||
output io_issueValid_0,
|
||||
io_issueValid_1,
|
||||
output [63:0] io_issue_0_decoded_pc,
|
||||
output [31:0] io_issue_0_decoded_inst,
|
||||
output [4:0] io_issue_0_decoded_rs1,
|
||||
output [2:0] io_issue_0_decoded_funct3,
|
||||
output [63:0] io_issue_0_decoded_immI,
|
||||
io_issue_0_decoded_immS,
|
||||
io_issue_0_decoded_immB,
|
||||
io_issue_0_decoded_immU,
|
||||
io_issue_0_decoded_immJ,
|
||||
output [4:0] io_issue_0_decoded_aluFn,
|
||||
output [2:0] io_issue_0_decoded_memWidth,
|
||||
output io_issue_0_decoded_isLoad,
|
||||
io_issue_0_decoded_isStore,
|
||||
io_issue_0_decoded_isBranch,
|
||||
io_issue_0_decoded_isJal,
|
||||
io_issue_0_decoded_isJalr,
|
||||
io_issue_0_decoded_isLui,
|
||||
io_issue_0_decoded_isAuipc,
|
||||
io_issue_0_decoded_isOpImm,
|
||||
io_issue_0_decoded_isWord,
|
||||
io_issue_0_decoded_isSystem,
|
||||
io_issue_0_decoded_writesRd,
|
||||
io_issue_0_decoded_illegal,
|
||||
output [5:0] io_issue_0_prs1,
|
||||
io_issue_0_prs2,
|
||||
io_issue_0_prd,
|
||||
io_issue_0_robIdx,
|
||||
output [63:0] io_issue_1_decoded_pc,
|
||||
output [31:0] io_issue_1_decoded_inst,
|
||||
output [4:0] io_issue_1_decoded_rs1,
|
||||
output [2:0] io_issue_1_decoded_funct3,
|
||||
output [63:0] io_issue_1_decoded_immI,
|
||||
io_issue_1_decoded_immS,
|
||||
io_issue_1_decoded_immB,
|
||||
io_issue_1_decoded_immU,
|
||||
io_issue_1_decoded_immJ,
|
||||
output [4:0] io_issue_1_decoded_aluFn,
|
||||
output [2:0] io_issue_1_decoded_memWidth,
|
||||
output io_issue_1_decoded_isLoad,
|
||||
io_issue_1_decoded_isStore,
|
||||
io_issue_1_decoded_isBranch,
|
||||
io_issue_1_decoded_isJal,
|
||||
io_issue_1_decoded_isJalr,
|
||||
io_issue_1_decoded_isLui,
|
||||
io_issue_1_decoded_isAuipc,
|
||||
io_issue_1_decoded_isOpImm,
|
||||
io_issue_1_decoded_isWord,
|
||||
io_issue_1_decoded_isSystem,
|
||||
io_issue_1_decoded_writesRd,
|
||||
io_issue_1_decoded_illegal,
|
||||
output [5:0] io_issue_1_prs1,
|
||||
io_issue_1_prs2,
|
||||
io_issue_1_prd,
|
||||
io_issue_1_robIdx,
|
||||
input io_issueReady_0,
|
||||
io_issueReady_1,
|
||||
io_flush
|
||||
);
|
||||
|
||||
ReservationStation intRs (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_enqValid_0 (io_enqValid_0),
|
||||
.io_enqValid_1 (io_enqValid_1),
|
||||
.io_enq_0_decoded_pc (io_enq_0_decoded_pc),
|
||||
.io_enq_0_decoded_inst (io_enq_0_decoded_inst),
|
||||
.io_enq_0_decoded_rs1 (io_enq_0_decoded_rs1),
|
||||
.io_enq_0_decoded_rs2 (io_enq_0_decoded_rs2),
|
||||
.io_enq_0_decoded_funct3 (io_enq_0_decoded_funct3),
|
||||
.io_enq_0_decoded_immI (io_enq_0_decoded_immI),
|
||||
.io_enq_0_decoded_immS (io_enq_0_decoded_immS),
|
||||
.io_enq_0_decoded_immB (io_enq_0_decoded_immB),
|
||||
.io_enq_0_decoded_immU (io_enq_0_decoded_immU),
|
||||
.io_enq_0_decoded_immJ (io_enq_0_decoded_immJ),
|
||||
.io_enq_0_decoded_aluFn (io_enq_0_decoded_aluFn),
|
||||
.io_enq_0_decoded_memWidth (io_enq_0_decoded_memWidth),
|
||||
.io_enq_0_decoded_isLoad (io_enq_0_decoded_isLoad),
|
||||
.io_enq_0_decoded_isStore (io_enq_0_decoded_isStore),
|
||||
.io_enq_0_decoded_isBranch (io_enq_0_decoded_isBranch),
|
||||
.io_enq_0_decoded_isJal (io_enq_0_decoded_isJal),
|
||||
.io_enq_0_decoded_isJalr (io_enq_0_decoded_isJalr),
|
||||
.io_enq_0_decoded_isLui (io_enq_0_decoded_isLui),
|
||||
.io_enq_0_decoded_isAuipc (io_enq_0_decoded_isAuipc),
|
||||
.io_enq_0_decoded_isOpImm (io_enq_0_decoded_isOpImm),
|
||||
.io_enq_0_decoded_isWord (io_enq_0_decoded_isWord),
|
||||
.io_enq_0_decoded_isSystem (io_enq_0_decoded_isSystem),
|
||||
.io_enq_0_decoded_writesRd (io_enq_0_decoded_writesRd),
|
||||
.io_enq_0_decoded_illegal (io_enq_0_decoded_illegal),
|
||||
.io_enq_0_prs1 (io_enq_0_prs1),
|
||||
.io_enq_0_prs2 (io_enq_0_prs2),
|
||||
.io_enq_0_src1Ready (io_enq_0_src1Ready),
|
||||
.io_enq_0_src2Ready (io_enq_0_src2Ready),
|
||||
.io_enq_0_prd (io_enq_0_prd),
|
||||
.io_enq_0_robIdx (io_enq_0_robIdx),
|
||||
.io_enq_1_decoded_pc (io_enq_1_decoded_pc),
|
||||
.io_enq_1_decoded_inst (io_enq_1_decoded_inst),
|
||||
.io_enq_1_decoded_rs1 (io_enq_1_decoded_rs1),
|
||||
.io_enq_1_decoded_rs2 (io_enq_1_decoded_rs2),
|
||||
.io_enq_1_decoded_funct3 (io_enq_1_decoded_funct3),
|
||||
.io_enq_1_decoded_immI (io_enq_1_decoded_immI),
|
||||
.io_enq_1_decoded_immS (io_enq_1_decoded_immS),
|
||||
.io_enq_1_decoded_immB (io_enq_1_decoded_immB),
|
||||
.io_enq_1_decoded_immU (io_enq_1_decoded_immU),
|
||||
.io_enq_1_decoded_immJ (io_enq_1_decoded_immJ),
|
||||
.io_enq_1_decoded_aluFn (io_enq_1_decoded_aluFn),
|
||||
.io_enq_1_decoded_memWidth (io_enq_1_decoded_memWidth),
|
||||
.io_enq_1_decoded_isLoad (io_enq_1_decoded_isLoad),
|
||||
.io_enq_1_decoded_isStore (io_enq_1_decoded_isStore),
|
||||
.io_enq_1_decoded_isBranch (io_enq_1_decoded_isBranch),
|
||||
.io_enq_1_decoded_isJal (io_enq_1_decoded_isJal),
|
||||
.io_enq_1_decoded_isJalr (io_enq_1_decoded_isJalr),
|
||||
.io_enq_1_decoded_isLui (io_enq_1_decoded_isLui),
|
||||
.io_enq_1_decoded_isAuipc (io_enq_1_decoded_isAuipc),
|
||||
.io_enq_1_decoded_isOpImm (io_enq_1_decoded_isOpImm),
|
||||
.io_enq_1_decoded_isWord (io_enq_1_decoded_isWord),
|
||||
.io_enq_1_decoded_isSystem (io_enq_1_decoded_isSystem),
|
||||
.io_enq_1_decoded_writesRd (io_enq_1_decoded_writesRd),
|
||||
.io_enq_1_decoded_illegal (io_enq_1_decoded_illegal),
|
||||
.io_enq_1_prs1 (io_enq_1_prs1),
|
||||
.io_enq_1_prs2 (io_enq_1_prs2),
|
||||
.io_enq_1_src1Ready (io_enq_1_src1Ready),
|
||||
.io_enq_1_src2Ready (io_enq_1_src2Ready),
|
||||
.io_enq_1_prd (io_enq_1_prd),
|
||||
.io_enq_1_robIdx (io_enq_1_robIdx),
|
||||
.io_enqReady_0 (io_enqReady_0),
|
||||
.io_enqReady_1 (io_enqReady_1),
|
||||
.io_wakeup_0_valid (io_wakeup_0_valid),
|
||||
.io_wakeup_0_phys (io_wakeup_0_phys),
|
||||
.io_wakeup_1_valid (io_wakeup_1_valid),
|
||||
.io_wakeup_1_phys (io_wakeup_1_phys),
|
||||
.io_issueValid_0 (io_issueValid_0),
|
||||
.io_issueValid_1 (io_issueValid_1),
|
||||
.io_issue_0_decoded_pc (io_issue_0_decoded_pc),
|
||||
.io_issue_0_decoded_inst (io_issue_0_decoded_inst),
|
||||
.io_issue_0_decoded_rs1 (io_issue_0_decoded_rs1),
|
||||
.io_issue_0_decoded_funct3 (io_issue_0_decoded_funct3),
|
||||
.io_issue_0_decoded_immI (io_issue_0_decoded_immI),
|
||||
.io_issue_0_decoded_immS (io_issue_0_decoded_immS),
|
||||
.io_issue_0_decoded_immB (io_issue_0_decoded_immB),
|
||||
.io_issue_0_decoded_immU (io_issue_0_decoded_immU),
|
||||
.io_issue_0_decoded_immJ (io_issue_0_decoded_immJ),
|
||||
.io_issue_0_decoded_aluFn (io_issue_0_decoded_aluFn),
|
||||
.io_issue_0_decoded_memWidth (io_issue_0_decoded_memWidth),
|
||||
.io_issue_0_decoded_isLoad (io_issue_0_decoded_isLoad),
|
||||
.io_issue_0_decoded_isStore (io_issue_0_decoded_isStore),
|
||||
.io_issue_0_decoded_isBranch (io_issue_0_decoded_isBranch),
|
||||
.io_issue_0_decoded_isJal (io_issue_0_decoded_isJal),
|
||||
.io_issue_0_decoded_isJalr (io_issue_0_decoded_isJalr),
|
||||
.io_issue_0_decoded_isLui (io_issue_0_decoded_isLui),
|
||||
.io_issue_0_decoded_isAuipc (io_issue_0_decoded_isAuipc),
|
||||
.io_issue_0_decoded_isOpImm (io_issue_0_decoded_isOpImm),
|
||||
.io_issue_0_decoded_isWord (io_issue_0_decoded_isWord),
|
||||
.io_issue_0_decoded_isSystem (io_issue_0_decoded_isSystem),
|
||||
.io_issue_0_decoded_writesRd (io_issue_0_decoded_writesRd),
|
||||
.io_issue_0_decoded_illegal (io_issue_0_decoded_illegal),
|
||||
.io_issue_0_prs1 (io_issue_0_prs1),
|
||||
.io_issue_0_prs2 (io_issue_0_prs2),
|
||||
.io_issue_0_prd (io_issue_0_prd),
|
||||
.io_issue_0_robIdx (io_issue_0_robIdx),
|
||||
.io_issue_1_decoded_pc (io_issue_1_decoded_pc),
|
||||
.io_issue_1_decoded_inst (io_issue_1_decoded_inst),
|
||||
.io_issue_1_decoded_rs1 (io_issue_1_decoded_rs1),
|
||||
.io_issue_1_decoded_funct3 (io_issue_1_decoded_funct3),
|
||||
.io_issue_1_decoded_immI (io_issue_1_decoded_immI),
|
||||
.io_issue_1_decoded_immS (io_issue_1_decoded_immS),
|
||||
.io_issue_1_decoded_immB (io_issue_1_decoded_immB),
|
||||
.io_issue_1_decoded_immU (io_issue_1_decoded_immU),
|
||||
.io_issue_1_decoded_immJ (io_issue_1_decoded_immJ),
|
||||
.io_issue_1_decoded_aluFn (io_issue_1_decoded_aluFn),
|
||||
.io_issue_1_decoded_memWidth (io_issue_1_decoded_memWidth),
|
||||
.io_issue_1_decoded_isLoad (io_issue_1_decoded_isLoad),
|
||||
.io_issue_1_decoded_isStore (io_issue_1_decoded_isStore),
|
||||
.io_issue_1_decoded_isBranch (io_issue_1_decoded_isBranch),
|
||||
.io_issue_1_decoded_isJal (io_issue_1_decoded_isJal),
|
||||
.io_issue_1_decoded_isJalr (io_issue_1_decoded_isJalr),
|
||||
.io_issue_1_decoded_isLui (io_issue_1_decoded_isLui),
|
||||
.io_issue_1_decoded_isAuipc (io_issue_1_decoded_isAuipc),
|
||||
.io_issue_1_decoded_isOpImm (io_issue_1_decoded_isOpImm),
|
||||
.io_issue_1_decoded_isWord (io_issue_1_decoded_isWord),
|
||||
.io_issue_1_decoded_isSystem (io_issue_1_decoded_isSystem),
|
||||
.io_issue_1_decoded_writesRd (io_issue_1_decoded_writesRd),
|
||||
.io_issue_1_decoded_illegal (io_issue_1_decoded_illegal),
|
||||
.io_issue_1_prs1 (io_issue_1_prs1),
|
||||
.io_issue_1_prs2 (io_issue_1_prs2),
|
||||
.io_issue_1_prd (io_issue_1_prd),
|
||||
.io_issue_1_robIdx (io_issue_1_robIdx),
|
||||
.io_issueReady_0 (io_issueReady_0),
|
||||
.io_issueReady_1 (io_issueReady_1),
|
||||
.io_flush (io_flush)
|
||||
);
|
||||
endmodule
|
||||
|
||||
266
generated-ooo/IssueStage.sv
Normal file
266
generated-ooo/IssueStage.sv
Normal file
@@ -0,0 +1,266 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module IssueStage(
|
||||
input clock,
|
||||
reset,
|
||||
io_inValid_0,
|
||||
io_inValid_1,
|
||||
input [63:0] io_in_0_decoded_pc,
|
||||
input [31:0] io_in_0_decoded_inst,
|
||||
input [4:0] io_in_0_decoded_rs1,
|
||||
io_in_0_decoded_rs2,
|
||||
input [2:0] io_in_0_decoded_funct3,
|
||||
input [63:0] io_in_0_decoded_immI,
|
||||
io_in_0_decoded_immS,
|
||||
io_in_0_decoded_immB,
|
||||
io_in_0_decoded_immU,
|
||||
io_in_0_decoded_immJ,
|
||||
input [4:0] io_in_0_decoded_aluFn,
|
||||
input [2:0] io_in_0_decoded_memWidth,
|
||||
input io_in_0_decoded_isLoad,
|
||||
io_in_0_decoded_isStore,
|
||||
io_in_0_decoded_isBranch,
|
||||
io_in_0_decoded_isJal,
|
||||
io_in_0_decoded_isJalr,
|
||||
io_in_0_decoded_isLui,
|
||||
io_in_0_decoded_isAuipc,
|
||||
io_in_0_decoded_isOpImm,
|
||||
io_in_0_decoded_isWord,
|
||||
io_in_0_decoded_isSystem,
|
||||
io_in_0_decoded_writesRd,
|
||||
io_in_0_decoded_illegal,
|
||||
input [5:0] io_in_0_prs1,
|
||||
io_in_0_prs2,
|
||||
input io_in_0_src1Ready,
|
||||
io_in_0_src2Ready,
|
||||
input [5:0] io_in_0_prd,
|
||||
io_in_0_robIdx,
|
||||
input [63:0] io_in_1_decoded_pc,
|
||||
input [31:0] io_in_1_decoded_inst,
|
||||
input [4:0] io_in_1_decoded_rs1,
|
||||
io_in_1_decoded_rs2,
|
||||
input [2:0] io_in_1_decoded_funct3,
|
||||
input [63:0] io_in_1_decoded_immI,
|
||||
io_in_1_decoded_immS,
|
||||
io_in_1_decoded_immB,
|
||||
io_in_1_decoded_immU,
|
||||
io_in_1_decoded_immJ,
|
||||
input [4:0] io_in_1_decoded_aluFn,
|
||||
input [2:0] io_in_1_decoded_memWidth,
|
||||
input io_in_1_decoded_isLoad,
|
||||
io_in_1_decoded_isStore,
|
||||
io_in_1_decoded_isBranch,
|
||||
io_in_1_decoded_isJal,
|
||||
io_in_1_decoded_isJalr,
|
||||
io_in_1_decoded_isLui,
|
||||
io_in_1_decoded_isAuipc,
|
||||
io_in_1_decoded_isOpImm,
|
||||
io_in_1_decoded_isWord,
|
||||
io_in_1_decoded_isSystem,
|
||||
io_in_1_decoded_writesRd,
|
||||
io_in_1_decoded_illegal,
|
||||
input [5:0] io_in_1_prs1,
|
||||
io_in_1_prs2,
|
||||
input io_in_1_src1Ready,
|
||||
io_in_1_src2Ready,
|
||||
input [5:0] io_in_1_prd,
|
||||
io_in_1_robIdx,
|
||||
output io_inReady_0,
|
||||
io_inReady_1,
|
||||
input io_wakeup_0_valid,
|
||||
input [5:0] io_wakeup_0_phys,
|
||||
input io_wakeup_1_valid,
|
||||
input [5:0] io_wakeup_1_phys,
|
||||
output io_outValid_0,
|
||||
io_outValid_1,
|
||||
output [63:0] io_out_0_decoded_pc,
|
||||
output [31:0] io_out_0_decoded_inst,
|
||||
output [4:0] io_out_0_decoded_rs1,
|
||||
output [2:0] io_out_0_decoded_funct3,
|
||||
output [63:0] io_out_0_decoded_immI,
|
||||
io_out_0_decoded_immS,
|
||||
io_out_0_decoded_immB,
|
||||
io_out_0_decoded_immU,
|
||||
io_out_0_decoded_immJ,
|
||||
output [4:0] io_out_0_decoded_aluFn,
|
||||
output [2:0] io_out_0_decoded_memWidth,
|
||||
output io_out_0_decoded_isLoad,
|
||||
io_out_0_decoded_isStore,
|
||||
io_out_0_decoded_isBranch,
|
||||
io_out_0_decoded_isJal,
|
||||
io_out_0_decoded_isJalr,
|
||||
io_out_0_decoded_isLui,
|
||||
io_out_0_decoded_isAuipc,
|
||||
io_out_0_decoded_isOpImm,
|
||||
io_out_0_decoded_isWord,
|
||||
io_out_0_decoded_isSystem,
|
||||
io_out_0_decoded_writesRd,
|
||||
io_out_0_decoded_illegal,
|
||||
output [5:0] io_out_0_prs1,
|
||||
io_out_0_prs2,
|
||||
io_out_0_prd,
|
||||
io_out_0_robIdx,
|
||||
output [63:0] io_out_1_decoded_pc,
|
||||
output [31:0] io_out_1_decoded_inst,
|
||||
output [4:0] io_out_1_decoded_rs1,
|
||||
output [2:0] io_out_1_decoded_funct3,
|
||||
output [63:0] io_out_1_decoded_immI,
|
||||
io_out_1_decoded_immS,
|
||||
io_out_1_decoded_immB,
|
||||
io_out_1_decoded_immU,
|
||||
io_out_1_decoded_immJ,
|
||||
output [4:0] io_out_1_decoded_aluFn,
|
||||
output [2:0] io_out_1_decoded_memWidth,
|
||||
output io_out_1_decoded_isLoad,
|
||||
io_out_1_decoded_isStore,
|
||||
io_out_1_decoded_isBranch,
|
||||
io_out_1_decoded_isJal,
|
||||
io_out_1_decoded_isJalr,
|
||||
io_out_1_decoded_isLui,
|
||||
io_out_1_decoded_isAuipc,
|
||||
io_out_1_decoded_isOpImm,
|
||||
io_out_1_decoded_isWord,
|
||||
io_out_1_decoded_isSystem,
|
||||
io_out_1_decoded_writesRd,
|
||||
io_out_1_decoded_illegal,
|
||||
output [5:0] io_out_1_prs1,
|
||||
io_out_1_prs2,
|
||||
io_out_1_prd,
|
||||
io_out_1_robIdx,
|
||||
input io_outReady_0,
|
||||
io_outReady_1,
|
||||
io_flush
|
||||
);
|
||||
|
||||
IssueQueue queue (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_enqValid_0 (io_inValid_0),
|
||||
.io_enqValid_1 (io_inValid_1),
|
||||
.io_enq_0_decoded_pc (io_in_0_decoded_pc),
|
||||
.io_enq_0_decoded_inst (io_in_0_decoded_inst),
|
||||
.io_enq_0_decoded_rs1 (io_in_0_decoded_rs1),
|
||||
.io_enq_0_decoded_rs2 (io_in_0_decoded_rs2),
|
||||
.io_enq_0_decoded_funct3 (io_in_0_decoded_funct3),
|
||||
.io_enq_0_decoded_immI (io_in_0_decoded_immI),
|
||||
.io_enq_0_decoded_immS (io_in_0_decoded_immS),
|
||||
.io_enq_0_decoded_immB (io_in_0_decoded_immB),
|
||||
.io_enq_0_decoded_immU (io_in_0_decoded_immU),
|
||||
.io_enq_0_decoded_immJ (io_in_0_decoded_immJ),
|
||||
.io_enq_0_decoded_aluFn (io_in_0_decoded_aluFn),
|
||||
.io_enq_0_decoded_memWidth (io_in_0_decoded_memWidth),
|
||||
.io_enq_0_decoded_isLoad (io_in_0_decoded_isLoad),
|
||||
.io_enq_0_decoded_isStore (io_in_0_decoded_isStore),
|
||||
.io_enq_0_decoded_isBranch (io_in_0_decoded_isBranch),
|
||||
.io_enq_0_decoded_isJal (io_in_0_decoded_isJal),
|
||||
.io_enq_0_decoded_isJalr (io_in_0_decoded_isJalr),
|
||||
.io_enq_0_decoded_isLui (io_in_0_decoded_isLui),
|
||||
.io_enq_0_decoded_isAuipc (io_in_0_decoded_isAuipc),
|
||||
.io_enq_0_decoded_isOpImm (io_in_0_decoded_isOpImm),
|
||||
.io_enq_0_decoded_isWord (io_in_0_decoded_isWord),
|
||||
.io_enq_0_decoded_isSystem (io_in_0_decoded_isSystem),
|
||||
.io_enq_0_decoded_writesRd (io_in_0_decoded_writesRd),
|
||||
.io_enq_0_decoded_illegal (io_in_0_decoded_illegal),
|
||||
.io_enq_0_prs1 (io_in_0_prs1),
|
||||
.io_enq_0_prs2 (io_in_0_prs2),
|
||||
.io_enq_0_src1Ready (io_in_0_src1Ready),
|
||||
.io_enq_0_src2Ready (io_in_0_src2Ready),
|
||||
.io_enq_0_prd (io_in_0_prd),
|
||||
.io_enq_0_robIdx (io_in_0_robIdx),
|
||||
.io_enq_1_decoded_pc (io_in_1_decoded_pc),
|
||||
.io_enq_1_decoded_inst (io_in_1_decoded_inst),
|
||||
.io_enq_1_decoded_rs1 (io_in_1_decoded_rs1),
|
||||
.io_enq_1_decoded_rs2 (io_in_1_decoded_rs2),
|
||||
.io_enq_1_decoded_funct3 (io_in_1_decoded_funct3),
|
||||
.io_enq_1_decoded_immI (io_in_1_decoded_immI),
|
||||
.io_enq_1_decoded_immS (io_in_1_decoded_immS),
|
||||
.io_enq_1_decoded_immB (io_in_1_decoded_immB),
|
||||
.io_enq_1_decoded_immU (io_in_1_decoded_immU),
|
||||
.io_enq_1_decoded_immJ (io_in_1_decoded_immJ),
|
||||
.io_enq_1_decoded_aluFn (io_in_1_decoded_aluFn),
|
||||
.io_enq_1_decoded_memWidth (io_in_1_decoded_memWidth),
|
||||
.io_enq_1_decoded_isLoad (io_in_1_decoded_isLoad),
|
||||
.io_enq_1_decoded_isStore (io_in_1_decoded_isStore),
|
||||
.io_enq_1_decoded_isBranch (io_in_1_decoded_isBranch),
|
||||
.io_enq_1_decoded_isJal (io_in_1_decoded_isJal),
|
||||
.io_enq_1_decoded_isJalr (io_in_1_decoded_isJalr),
|
||||
.io_enq_1_decoded_isLui (io_in_1_decoded_isLui),
|
||||
.io_enq_1_decoded_isAuipc (io_in_1_decoded_isAuipc),
|
||||
.io_enq_1_decoded_isOpImm (io_in_1_decoded_isOpImm),
|
||||
.io_enq_1_decoded_isWord (io_in_1_decoded_isWord),
|
||||
.io_enq_1_decoded_isSystem (io_in_1_decoded_isSystem),
|
||||
.io_enq_1_decoded_writesRd (io_in_1_decoded_writesRd),
|
||||
.io_enq_1_decoded_illegal (io_in_1_decoded_illegal),
|
||||
.io_enq_1_prs1 (io_in_1_prs1),
|
||||
.io_enq_1_prs2 (io_in_1_prs2),
|
||||
.io_enq_1_src1Ready (io_in_1_src1Ready),
|
||||
.io_enq_1_src2Ready (io_in_1_src2Ready),
|
||||
.io_enq_1_prd (io_in_1_prd),
|
||||
.io_enq_1_robIdx (io_in_1_robIdx),
|
||||
.io_enqReady_0 (io_inReady_0),
|
||||
.io_enqReady_1 (io_inReady_1),
|
||||
.io_wakeup_0_valid (io_wakeup_0_valid),
|
||||
.io_wakeup_0_phys (io_wakeup_0_phys),
|
||||
.io_wakeup_1_valid (io_wakeup_1_valid),
|
||||
.io_wakeup_1_phys (io_wakeup_1_phys),
|
||||
.io_issueValid_0 (io_outValid_0),
|
||||
.io_issueValid_1 (io_outValid_1),
|
||||
.io_issue_0_decoded_pc (io_out_0_decoded_pc),
|
||||
.io_issue_0_decoded_inst (io_out_0_decoded_inst),
|
||||
.io_issue_0_decoded_rs1 (io_out_0_decoded_rs1),
|
||||
.io_issue_0_decoded_funct3 (io_out_0_decoded_funct3),
|
||||
.io_issue_0_decoded_immI (io_out_0_decoded_immI),
|
||||
.io_issue_0_decoded_immS (io_out_0_decoded_immS),
|
||||
.io_issue_0_decoded_immB (io_out_0_decoded_immB),
|
||||
.io_issue_0_decoded_immU (io_out_0_decoded_immU),
|
||||
.io_issue_0_decoded_immJ (io_out_0_decoded_immJ),
|
||||
.io_issue_0_decoded_aluFn (io_out_0_decoded_aluFn),
|
||||
.io_issue_0_decoded_memWidth (io_out_0_decoded_memWidth),
|
||||
.io_issue_0_decoded_isLoad (io_out_0_decoded_isLoad),
|
||||
.io_issue_0_decoded_isStore (io_out_0_decoded_isStore),
|
||||
.io_issue_0_decoded_isBranch (io_out_0_decoded_isBranch),
|
||||
.io_issue_0_decoded_isJal (io_out_0_decoded_isJal),
|
||||
.io_issue_0_decoded_isJalr (io_out_0_decoded_isJalr),
|
||||
.io_issue_0_decoded_isLui (io_out_0_decoded_isLui),
|
||||
.io_issue_0_decoded_isAuipc (io_out_0_decoded_isAuipc),
|
||||
.io_issue_0_decoded_isOpImm (io_out_0_decoded_isOpImm),
|
||||
.io_issue_0_decoded_isWord (io_out_0_decoded_isWord),
|
||||
.io_issue_0_decoded_isSystem (io_out_0_decoded_isSystem),
|
||||
.io_issue_0_decoded_writesRd (io_out_0_decoded_writesRd),
|
||||
.io_issue_0_decoded_illegal (io_out_0_decoded_illegal),
|
||||
.io_issue_0_prs1 (io_out_0_prs1),
|
||||
.io_issue_0_prs2 (io_out_0_prs2),
|
||||
.io_issue_0_prd (io_out_0_prd),
|
||||
.io_issue_0_robIdx (io_out_0_robIdx),
|
||||
.io_issue_1_decoded_pc (io_out_1_decoded_pc),
|
||||
.io_issue_1_decoded_inst (io_out_1_decoded_inst),
|
||||
.io_issue_1_decoded_rs1 (io_out_1_decoded_rs1),
|
||||
.io_issue_1_decoded_funct3 (io_out_1_decoded_funct3),
|
||||
.io_issue_1_decoded_immI (io_out_1_decoded_immI),
|
||||
.io_issue_1_decoded_immS (io_out_1_decoded_immS),
|
||||
.io_issue_1_decoded_immB (io_out_1_decoded_immB),
|
||||
.io_issue_1_decoded_immU (io_out_1_decoded_immU),
|
||||
.io_issue_1_decoded_immJ (io_out_1_decoded_immJ),
|
||||
.io_issue_1_decoded_aluFn (io_out_1_decoded_aluFn),
|
||||
.io_issue_1_decoded_memWidth (io_out_1_decoded_memWidth),
|
||||
.io_issue_1_decoded_isLoad (io_out_1_decoded_isLoad),
|
||||
.io_issue_1_decoded_isStore (io_out_1_decoded_isStore),
|
||||
.io_issue_1_decoded_isBranch (io_out_1_decoded_isBranch),
|
||||
.io_issue_1_decoded_isJal (io_out_1_decoded_isJal),
|
||||
.io_issue_1_decoded_isJalr (io_out_1_decoded_isJalr),
|
||||
.io_issue_1_decoded_isLui (io_out_1_decoded_isLui),
|
||||
.io_issue_1_decoded_isAuipc (io_out_1_decoded_isAuipc),
|
||||
.io_issue_1_decoded_isOpImm (io_out_1_decoded_isOpImm),
|
||||
.io_issue_1_decoded_isWord (io_out_1_decoded_isWord),
|
||||
.io_issue_1_decoded_isSystem (io_out_1_decoded_isSystem),
|
||||
.io_issue_1_decoded_writesRd (io_out_1_decoded_writesRd),
|
||||
.io_issue_1_decoded_illegal (io_out_1_decoded_illegal),
|
||||
.io_issue_1_prs1 (io_out_1_prs1),
|
||||
.io_issue_1_prs2 (io_out_1_prs2),
|
||||
.io_issue_1_prd (io_out_1_prd),
|
||||
.io_issue_1_robIdx (io_out_1_robIdx),
|
||||
.io_issueReady_0 (io_outReady_0),
|
||||
.io_issueReady_1 (io_outReady_1),
|
||||
.io_flush (io_flush)
|
||||
);
|
||||
endmodule
|
||||
|
||||
113
generated-ooo/LSU.sv
Normal file
113
generated-ooo/LSU.sv
Normal file
@@ -0,0 +1,113 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module LSU(
|
||||
input clock,
|
||||
reset,
|
||||
io_reqValid,
|
||||
input [63:0] io_req_addr,
|
||||
io_req_data,
|
||||
input io_req_isStore,
|
||||
input [2:0] io_req_size,
|
||||
output io_reqReady,
|
||||
input [63:0] io_satp,
|
||||
output io_dmemReqValid,
|
||||
output [63:0] io_dmemReq_addr,
|
||||
io_dmemReq_data,
|
||||
output io_dmemReq_isStore,
|
||||
output [2:0] io_dmemReq_size,
|
||||
input io_dmemRespValid,
|
||||
input [63:0] io_dmemRespData,
|
||||
output io_respValid,
|
||||
output [63:0] io_respData,
|
||||
output io_pageFault
|
||||
);
|
||||
|
||||
wire _dcache_io_reqReady;
|
||||
wire _dcache_io_memReqValid;
|
||||
wire [63:0] _dcache_io_memReq_addr;
|
||||
wire [63:0] _dcache_io_memReq_data;
|
||||
wire _dcache_io_memReq_isStore;
|
||||
wire [2:0] _dcache_io_memReq_size;
|
||||
wire _dcache_io_respValid;
|
||||
wire _mmu_io_resp_pageFault;
|
||||
wire _mmu_io_ptwMemReq_valid;
|
||||
wire [63:0] _mmu_io_ptwMemReq_addr;
|
||||
wire _mmu_io_refill_valid;
|
||||
wire [26:0] _mmu_io_refill_vpn;
|
||||
wire [43:0] _mmu_io_refill_ppn;
|
||||
wire [7:0] _mmu_io_refill_flags;
|
||||
wire _dtlb_io_resp_hit;
|
||||
wire _dtlb_io_resp_miss;
|
||||
wire [63:0] _dtlb_io_resp_paddr;
|
||||
wire _dtlb_io_resp_pageFault;
|
||||
reg ptwOutstanding;
|
||||
wire translationFault = _dtlb_io_resp_pageFault | _mmu_io_resp_pageFault;
|
||||
always @(posedge clock) begin
|
||||
if (reset)
|
||||
ptwOutstanding <= 1'h0;
|
||||
else
|
||||
ptwOutstanding <=
|
||||
_mmu_io_ptwMemReq_valid | ~(io_dmemRespValid & ptwOutstanding) & ptwOutstanding;
|
||||
end // always @(posedge)
|
||||
DTLB dtlb (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_req_valid (io_reqValid & (|(io_satp[63:60]))),
|
||||
.io_req_vaddr (io_req_addr),
|
||||
.io_req_isStore (io_req_isStore),
|
||||
.io_resp_hit (_dtlb_io_resp_hit),
|
||||
.io_resp_miss (_dtlb_io_resp_miss),
|
||||
.io_resp_paddr (_dtlb_io_resp_paddr),
|
||||
.io_resp_pageFault (_dtlb_io_resp_pageFault),
|
||||
.io_refill_valid (_mmu_io_refill_valid),
|
||||
.io_refill_vpn (_mmu_io_refill_vpn),
|
||||
.io_refill_ppn (_mmu_io_refill_ppn),
|
||||
.io_refill_flags (_mmu_io_refill_flags)
|
||||
);
|
||||
MMU mmu (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_satp (io_satp),
|
||||
.io_req_valid (io_reqValid & (|(io_satp[63:60])) & _dtlb_io_resp_miss),
|
||||
.io_req_vaddr (io_req_addr),
|
||||
.io_req_isStore (io_req_isStore),
|
||||
.io_resp_pageFault (_mmu_io_resp_pageFault),
|
||||
.io_ptwMemReq_valid (_mmu_io_ptwMemReq_valid),
|
||||
.io_ptwMemReq_addr (_mmu_io_ptwMemReq_addr),
|
||||
.io_ptwMemResp_valid (io_dmemRespValid & ptwOutstanding),
|
||||
.io_ptwMemResp_data (io_dmemRespData),
|
||||
.io_refill_valid (_mmu_io_refill_valid),
|
||||
.io_refill_vpn (_mmu_io_refill_vpn),
|
||||
.io_refill_ppn (_mmu_io_refill_ppn),
|
||||
.io_refill_flags (_mmu_io_refill_flags)
|
||||
);
|
||||
DCache dcache (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_reqValid
|
||||
(io_reqValid & (~(|(io_satp[63:60])) | _dtlb_io_resp_hit) & ~translationFault),
|
||||
.io_req_addr ((|(io_satp[63:60])) ? _dtlb_io_resp_paddr : io_req_addr),
|
||||
.io_req_data (io_req_data),
|
||||
.io_req_isStore (io_req_isStore),
|
||||
.io_req_size (io_req_size),
|
||||
.io_reqReady (_dcache_io_reqReady),
|
||||
.io_memReqValid (_dcache_io_memReqValid),
|
||||
.io_memReq_addr (_dcache_io_memReq_addr),
|
||||
.io_memReq_data (_dcache_io_memReq_data),
|
||||
.io_memReq_isStore (_dcache_io_memReq_isStore),
|
||||
.io_memReq_size (_dcache_io_memReq_size),
|
||||
.io_memRespValid (io_dmemRespValid & ~ptwOutstanding),
|
||||
.io_memRespData (io_dmemRespData),
|
||||
.io_respValid (_dcache_io_respValid),
|
||||
.io_respData (io_respData)
|
||||
);
|
||||
assign io_reqReady = _dcache_io_reqReady & ~ptwOutstanding;
|
||||
assign io_dmemReqValid = _mmu_io_ptwMemReq_valid | _dcache_io_memReqValid;
|
||||
assign io_dmemReq_addr =
|
||||
_mmu_io_ptwMemReq_valid ? _mmu_io_ptwMemReq_addr : _dcache_io_memReq_addr;
|
||||
assign io_dmemReq_data = _mmu_io_ptwMemReq_valid ? 64'h0 : _dcache_io_memReq_data;
|
||||
assign io_dmemReq_isStore = ~_mmu_io_ptwMemReq_valid & _dcache_io_memReq_isStore;
|
||||
assign io_dmemReq_size = _mmu_io_ptwMemReq_valid ? 3'h3 : _dcache_io_memReq_size;
|
||||
assign io_respValid = _dcache_io_respValid | translationFault;
|
||||
assign io_pageFault = translationFault;
|
||||
endmodule
|
||||
|
||||
865
generated-ooo/LoadQueue.sv
Normal file
865
generated-ooo/LoadQueue.sv
Normal file
@@ -0,0 +1,865 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module LoadQueue(
|
||||
input clock,
|
||||
reset,
|
||||
io_enqValid,
|
||||
input [5:0] io_enqRobIdx,
|
||||
output [3:0] io_enqIdx,
|
||||
input io_addrValid,
|
||||
input [3:0] io_addrIdx,
|
||||
input [63:0] io_addr,
|
||||
input [2:0] io_size,
|
||||
input io_complete,
|
||||
input [3:0] io_completeIdx,
|
||||
input io_storeAddrValid,
|
||||
input [5:0] io_storeRobIdx,
|
||||
input [63:0] io_storeAddr,
|
||||
input [2:0] io_storeSize,
|
||||
output io_violation,
|
||||
input io_flush
|
||||
);
|
||||
|
||||
reg entries_0_valid;
|
||||
reg [5:0] entries_0_robIdx;
|
||||
reg entries_0_addrValid;
|
||||
reg [63:0] entries_0_addr;
|
||||
reg [2:0] entries_0_size;
|
||||
reg entries_0_completed;
|
||||
reg entries_1_valid;
|
||||
reg [5:0] entries_1_robIdx;
|
||||
reg entries_1_addrValid;
|
||||
reg [63:0] entries_1_addr;
|
||||
reg [2:0] entries_1_size;
|
||||
reg entries_1_completed;
|
||||
reg entries_2_valid;
|
||||
reg [5:0] entries_2_robIdx;
|
||||
reg entries_2_addrValid;
|
||||
reg [63:0] entries_2_addr;
|
||||
reg [2:0] entries_2_size;
|
||||
reg entries_2_completed;
|
||||
reg entries_3_valid;
|
||||
reg [5:0] entries_3_robIdx;
|
||||
reg entries_3_addrValid;
|
||||
reg [63:0] entries_3_addr;
|
||||
reg [2:0] entries_3_size;
|
||||
reg entries_3_completed;
|
||||
reg entries_4_valid;
|
||||
reg [5:0] entries_4_robIdx;
|
||||
reg entries_4_addrValid;
|
||||
reg [63:0] entries_4_addr;
|
||||
reg [2:0] entries_4_size;
|
||||
reg entries_4_completed;
|
||||
reg entries_5_valid;
|
||||
reg [5:0] entries_5_robIdx;
|
||||
reg entries_5_addrValid;
|
||||
reg [63:0] entries_5_addr;
|
||||
reg [2:0] entries_5_size;
|
||||
reg entries_5_completed;
|
||||
reg entries_6_valid;
|
||||
reg [5:0] entries_6_robIdx;
|
||||
reg entries_6_addrValid;
|
||||
reg [63:0] entries_6_addr;
|
||||
reg [2:0] entries_6_size;
|
||||
reg entries_6_completed;
|
||||
reg entries_7_valid;
|
||||
reg [5:0] entries_7_robIdx;
|
||||
reg entries_7_addrValid;
|
||||
reg [63:0] entries_7_addr;
|
||||
reg [2:0] entries_7_size;
|
||||
reg entries_7_completed;
|
||||
reg entries_8_valid;
|
||||
reg [5:0] entries_8_robIdx;
|
||||
reg entries_8_addrValid;
|
||||
reg [63:0] entries_8_addr;
|
||||
reg [2:0] entries_8_size;
|
||||
reg entries_8_completed;
|
||||
reg entries_9_valid;
|
||||
reg [5:0] entries_9_robIdx;
|
||||
reg entries_9_addrValid;
|
||||
reg [63:0] entries_9_addr;
|
||||
reg [2:0] entries_9_size;
|
||||
reg entries_9_completed;
|
||||
reg entries_10_valid;
|
||||
reg [5:0] entries_10_robIdx;
|
||||
reg entries_10_addrValid;
|
||||
reg [63:0] entries_10_addr;
|
||||
reg [2:0] entries_10_size;
|
||||
reg entries_10_completed;
|
||||
reg entries_11_valid;
|
||||
reg [5:0] entries_11_robIdx;
|
||||
reg entries_11_addrValid;
|
||||
reg [63:0] entries_11_addr;
|
||||
reg [2:0] entries_11_size;
|
||||
reg entries_11_completed;
|
||||
reg entries_12_valid;
|
||||
reg [5:0] entries_12_robIdx;
|
||||
reg entries_12_addrValid;
|
||||
reg [63:0] entries_12_addr;
|
||||
reg [2:0] entries_12_size;
|
||||
reg entries_12_completed;
|
||||
reg entries_13_valid;
|
||||
reg [5:0] entries_13_robIdx;
|
||||
reg entries_13_addrValid;
|
||||
reg [63:0] entries_13_addr;
|
||||
reg [2:0] entries_13_size;
|
||||
reg entries_13_completed;
|
||||
reg entries_14_valid;
|
||||
reg [5:0] entries_14_robIdx;
|
||||
reg entries_14_addrValid;
|
||||
reg [63:0] entries_14_addr;
|
||||
reg [2:0] entries_14_size;
|
||||
reg entries_14_completed;
|
||||
reg entries_15_valid;
|
||||
reg [5:0] entries_15_robIdx;
|
||||
reg entries_15_addrValid;
|
||||
reg [63:0] entries_15_addr;
|
||||
reg [2:0] entries_15_size;
|
||||
reg entries_15_completed;
|
||||
wire [14:0] enqOH =
|
||||
entries_0_valid
|
||||
? (entries_1_valid
|
||||
? (entries_2_valid
|
||||
? (entries_3_valid
|
||||
? (entries_4_valid
|
||||
? (entries_5_valid
|
||||
? (entries_6_valid
|
||||
? (entries_7_valid
|
||||
? (entries_8_valid
|
||||
? (entries_9_valid
|
||||
? (entries_10_valid
|
||||
? (entries_11_valid
|
||||
? (entries_12_valid
|
||||
? (entries_13_valid
|
||||
? (entries_14_valid
|
||||
? {~entries_15_valid,
|
||||
14'h0}
|
||||
: 15'h2000)
|
||||
: 15'h1000)
|
||||
: 15'h800)
|
||||
: 15'h400)
|
||||
: 15'h200)
|
||||
: 15'h100)
|
||||
: 15'h80)
|
||||
: 15'h40)
|
||||
: 15'h20)
|
||||
: 15'h10)
|
||||
: 15'h8)
|
||||
: 15'h4)
|
||||
: 15'h2)
|
||||
: 15'h1)
|
||||
: 15'h0;
|
||||
wire [6:0] _enqIdx_T_1 = enqOH[14:8] | enqOH[6:0];
|
||||
wire [2:0] _enqIdx_T_3 = _enqIdx_T_1[6:4] | _enqIdx_T_1[2:0];
|
||||
wire [3:0] enqIdx =
|
||||
{|(enqOH[14:7]),
|
||||
|(_enqIdx_T_1[6:3]),
|
||||
|(_enqIdx_T_3[2:1]),
|
||||
_enqIdx_T_3[2] | _enqIdx_T_3[0]};
|
||||
wire _violationVec_15_bm_T = io_storeSize == 3'h0;
|
||||
wire _violationVec_15_bm_T_2 = io_storeSize == 3'h1;
|
||||
wire _violationVec_15_bm_T_4 = io_storeSize == 3'h2;
|
||||
wire _violationVec_15_bm_T_6 = io_storeSize == 3'h3;
|
||||
wire [15:0] _io_violation_T =
|
||||
{io_storeAddrValid & entries_15_valid & entries_15_completed & entries_15_addrValid
|
||||
& entries_15_robIdx > io_storeRobIdx & entries_15_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_15_addr[2:0]
|
||||
| (entries_15_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_15_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_15_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_15_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_15_addr[2:0],
|
||||
io_storeAddrValid & entries_14_valid & entries_14_completed & entries_14_addrValid
|
||||
& entries_14_robIdx > io_storeRobIdx & entries_14_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_14_addr[2:0]
|
||||
| (entries_14_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_14_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_14_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_14_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_14_addr[2:0],
|
||||
io_storeAddrValid & entries_13_valid & entries_13_completed & entries_13_addrValid
|
||||
& entries_13_robIdx > io_storeRobIdx & entries_13_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_13_addr[2:0]
|
||||
| (entries_13_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_13_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_13_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_13_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_13_addr[2:0],
|
||||
io_storeAddrValid & entries_12_valid & entries_12_completed & entries_12_addrValid
|
||||
& entries_12_robIdx > io_storeRobIdx & entries_12_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_12_addr[2:0]
|
||||
| (entries_12_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_12_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_12_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_12_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_12_addr[2:0],
|
||||
io_storeAddrValid & entries_11_valid & entries_11_completed & entries_11_addrValid
|
||||
& entries_11_robIdx > io_storeRobIdx & entries_11_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_11_addr[2:0]
|
||||
| (entries_11_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_11_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_11_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_11_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_11_addr[2:0],
|
||||
io_storeAddrValid & entries_10_valid & entries_10_completed & entries_10_addrValid
|
||||
& entries_10_robIdx > io_storeRobIdx & entries_10_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_10_addr[2:0]
|
||||
| (entries_10_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_10_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_10_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_10_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_10_addr[2:0],
|
||||
io_storeAddrValid & entries_9_valid & entries_9_completed & entries_9_addrValid
|
||||
& entries_9_robIdx > io_storeRobIdx & entries_9_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_9_addr[2:0]
|
||||
| (entries_9_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_9_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_9_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_9_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_9_addr[2:0],
|
||||
io_storeAddrValid & entries_8_valid & entries_8_completed & entries_8_addrValid
|
||||
& entries_8_robIdx > io_storeRobIdx & entries_8_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_8_addr[2:0]
|
||||
| (entries_8_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_8_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_8_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_8_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_8_addr[2:0],
|
||||
io_storeAddrValid & entries_7_valid & entries_7_completed & entries_7_addrValid
|
||||
& entries_7_robIdx > io_storeRobIdx & entries_7_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_7_addr[2:0]
|
||||
| (entries_7_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_7_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_7_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_7_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_7_addr[2:0],
|
||||
io_storeAddrValid & entries_6_valid & entries_6_completed & entries_6_addrValid
|
||||
& entries_6_robIdx > io_storeRobIdx & entries_6_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_6_addr[2:0]
|
||||
| (entries_6_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_6_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_6_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_6_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_6_addr[2:0],
|
||||
io_storeAddrValid & entries_5_valid & entries_5_completed & entries_5_addrValid
|
||||
& entries_5_robIdx > io_storeRobIdx & entries_5_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_5_addr[2:0]
|
||||
| (entries_5_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_5_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_5_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_5_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_5_addr[2:0],
|
||||
io_storeAddrValid & entries_4_valid & entries_4_completed & entries_4_addrValid
|
||||
& entries_4_robIdx > io_storeRobIdx & entries_4_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_4_addr[2:0]
|
||||
| (entries_4_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_4_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_4_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_4_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_4_addr[2:0],
|
||||
io_storeAddrValid & entries_3_valid & entries_3_completed & entries_3_addrValid
|
||||
& entries_3_robIdx > io_storeRobIdx & entries_3_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_3_addr[2:0]
|
||||
| (entries_3_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_3_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_3_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_3_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_3_addr[2:0],
|
||||
io_storeAddrValid & entries_2_valid & entries_2_completed & entries_2_addrValid
|
||||
& entries_2_robIdx > io_storeRobIdx & entries_2_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_2_addr[2:0]
|
||||
| (entries_2_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_2_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_2_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_2_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_2_addr[2:0],
|
||||
io_storeAddrValid & entries_1_valid & entries_1_completed & entries_1_addrValid
|
||||
& entries_1_robIdx > io_storeRobIdx & entries_1_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_1_addr[2:0]
|
||||
| (entries_1_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_1_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_1_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_1_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_1_addr[2:0],
|
||||
io_storeAddrValid & entries_0_valid & entries_0_completed & entries_0_addrValid
|
||||
& entries_0_robIdx > io_storeRobIdx & entries_0_addr[63:3] == io_storeAddr[63:3]
|
||||
& (entries_0_addr[2:0]
|
||||
| (entries_0_size == 3'h3
|
||||
? 3'h7
|
||||
: entries_0_size == 3'h2
|
||||
? 3'h3
|
||||
: entries_0_size == 3'h1
|
||||
? 3'h1
|
||||
: entries_0_size == 3'h0 ? 3'h0 : 3'h7)) >= io_storeAddr[2:0]
|
||||
& (io_storeAddr[2:0]
|
||||
| (_violationVec_15_bm_T_6
|
||||
? 3'h7
|
||||
: _violationVec_15_bm_T_4
|
||||
? 3'h3
|
||||
: _violationVec_15_bm_T_2
|
||||
? 3'h1
|
||||
: _violationVec_15_bm_T ? 3'h0 : 3'h7)) >= entries_0_addr[2:0]};
|
||||
always @(posedge clock) begin
|
||||
if (reset) begin
|
||||
entries_0_valid <= 1'h0;
|
||||
entries_0_robIdx <= 6'h0;
|
||||
entries_0_addrValid <= 1'h0;
|
||||
entries_0_addr <= 64'h0;
|
||||
entries_0_size <= 3'h0;
|
||||
entries_0_completed <= 1'h0;
|
||||
entries_1_valid <= 1'h0;
|
||||
entries_1_robIdx <= 6'h0;
|
||||
entries_1_addrValid <= 1'h0;
|
||||
entries_1_addr <= 64'h0;
|
||||
entries_1_size <= 3'h0;
|
||||
entries_1_completed <= 1'h0;
|
||||
entries_2_valid <= 1'h0;
|
||||
entries_2_robIdx <= 6'h0;
|
||||
entries_2_addrValid <= 1'h0;
|
||||
entries_2_addr <= 64'h0;
|
||||
entries_2_size <= 3'h0;
|
||||
entries_2_completed <= 1'h0;
|
||||
entries_3_valid <= 1'h0;
|
||||
entries_3_robIdx <= 6'h0;
|
||||
entries_3_addrValid <= 1'h0;
|
||||
entries_3_addr <= 64'h0;
|
||||
entries_3_size <= 3'h0;
|
||||
entries_3_completed <= 1'h0;
|
||||
entries_4_valid <= 1'h0;
|
||||
entries_4_robIdx <= 6'h0;
|
||||
entries_4_addrValid <= 1'h0;
|
||||
entries_4_addr <= 64'h0;
|
||||
entries_4_size <= 3'h0;
|
||||
entries_4_completed <= 1'h0;
|
||||
entries_5_valid <= 1'h0;
|
||||
entries_5_robIdx <= 6'h0;
|
||||
entries_5_addrValid <= 1'h0;
|
||||
entries_5_addr <= 64'h0;
|
||||
entries_5_size <= 3'h0;
|
||||
entries_5_completed <= 1'h0;
|
||||
entries_6_valid <= 1'h0;
|
||||
entries_6_robIdx <= 6'h0;
|
||||
entries_6_addrValid <= 1'h0;
|
||||
entries_6_addr <= 64'h0;
|
||||
entries_6_size <= 3'h0;
|
||||
entries_6_completed <= 1'h0;
|
||||
entries_7_valid <= 1'h0;
|
||||
entries_7_robIdx <= 6'h0;
|
||||
entries_7_addrValid <= 1'h0;
|
||||
entries_7_addr <= 64'h0;
|
||||
entries_7_size <= 3'h0;
|
||||
entries_7_completed <= 1'h0;
|
||||
entries_8_valid <= 1'h0;
|
||||
entries_8_robIdx <= 6'h0;
|
||||
entries_8_addrValid <= 1'h0;
|
||||
entries_8_addr <= 64'h0;
|
||||
entries_8_size <= 3'h0;
|
||||
entries_8_completed <= 1'h0;
|
||||
entries_9_valid <= 1'h0;
|
||||
entries_9_robIdx <= 6'h0;
|
||||
entries_9_addrValid <= 1'h0;
|
||||
entries_9_addr <= 64'h0;
|
||||
entries_9_size <= 3'h0;
|
||||
entries_9_completed <= 1'h0;
|
||||
entries_10_valid <= 1'h0;
|
||||
entries_10_robIdx <= 6'h0;
|
||||
entries_10_addrValid <= 1'h0;
|
||||
entries_10_addr <= 64'h0;
|
||||
entries_10_size <= 3'h0;
|
||||
entries_10_completed <= 1'h0;
|
||||
entries_11_valid <= 1'h0;
|
||||
entries_11_robIdx <= 6'h0;
|
||||
entries_11_addrValid <= 1'h0;
|
||||
entries_11_addr <= 64'h0;
|
||||
entries_11_size <= 3'h0;
|
||||
entries_11_completed <= 1'h0;
|
||||
entries_12_valid <= 1'h0;
|
||||
entries_12_robIdx <= 6'h0;
|
||||
entries_12_addrValid <= 1'h0;
|
||||
entries_12_addr <= 64'h0;
|
||||
entries_12_size <= 3'h0;
|
||||
entries_12_completed <= 1'h0;
|
||||
entries_13_valid <= 1'h0;
|
||||
entries_13_robIdx <= 6'h0;
|
||||
entries_13_addrValid <= 1'h0;
|
||||
entries_13_addr <= 64'h0;
|
||||
entries_13_size <= 3'h0;
|
||||
entries_13_completed <= 1'h0;
|
||||
entries_14_valid <= 1'h0;
|
||||
entries_14_robIdx <= 6'h0;
|
||||
entries_14_addrValid <= 1'h0;
|
||||
entries_14_addr <= 64'h0;
|
||||
entries_14_size <= 3'h0;
|
||||
entries_14_completed <= 1'h0;
|
||||
entries_15_valid <= 1'h0;
|
||||
entries_15_robIdx <= 6'h0;
|
||||
entries_15_addrValid <= 1'h0;
|
||||
entries_15_addr <= 64'h0;
|
||||
entries_15_size <= 3'h0;
|
||||
entries_15_completed <= 1'h0;
|
||||
end
|
||||
else begin
|
||||
automatic logic _GEN =
|
||||
io_enqValid
|
||||
& (|{~entries_15_valid,
|
||||
~entries_14_valid,
|
||||
~entries_13_valid,
|
||||
~entries_12_valid,
|
||||
~entries_11_valid,
|
||||
~entries_10_valid,
|
||||
~entries_9_valid,
|
||||
~entries_8_valid,
|
||||
~entries_7_valid,
|
||||
~entries_6_valid,
|
||||
~entries_5_valid,
|
||||
~entries_4_valid,
|
||||
~entries_3_valid,
|
||||
~entries_2_valid,
|
||||
~entries_1_valid,
|
||||
~entries_0_valid});
|
||||
automatic logic _GEN_0;
|
||||
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;
|
||||
_GEN_0 = _GEN & enqIdx == 4'h0;
|
||||
_GEN_1 = _GEN & enqIdx == 4'h1;
|
||||
_GEN_2 = _GEN & enqIdx == 4'h2;
|
||||
_GEN_3 = _GEN & enqIdx == 4'h3;
|
||||
_GEN_4 = _GEN & enqIdx == 4'h4;
|
||||
_GEN_5 = _GEN & enqIdx == 4'h5;
|
||||
_GEN_6 = _GEN & enqIdx == 4'h6;
|
||||
_GEN_7 = _GEN & enqIdx == 4'h7;
|
||||
_GEN_8 = _GEN & enqIdx == 4'h8;
|
||||
_GEN_9 = _GEN & enqIdx == 4'h9;
|
||||
_GEN_10 = _GEN & enqIdx == 4'hA;
|
||||
_GEN_11 = _GEN & enqIdx == 4'hB;
|
||||
_GEN_12 = _GEN & enqIdx == 4'hC;
|
||||
_GEN_13 = _GEN & enqIdx == 4'hD;
|
||||
_GEN_14 = _GEN & enqIdx == 4'hE;
|
||||
_GEN_15 = _GEN & (&enqIdx);
|
||||
_GEN_16 = io_addrValid & io_addrIdx == 4'h0;
|
||||
_GEN_17 = io_addrValid & io_addrIdx == 4'h1;
|
||||
_GEN_18 = io_addrValid & io_addrIdx == 4'h2;
|
||||
_GEN_19 = io_addrValid & io_addrIdx == 4'h3;
|
||||
_GEN_20 = io_addrValid & io_addrIdx == 4'h4;
|
||||
_GEN_21 = io_addrValid & io_addrIdx == 4'h5;
|
||||
_GEN_22 = io_addrValid & io_addrIdx == 4'h6;
|
||||
_GEN_23 = io_addrValid & io_addrIdx == 4'h7;
|
||||
_GEN_24 = io_addrValid & io_addrIdx == 4'h8;
|
||||
_GEN_25 = io_addrValid & io_addrIdx == 4'h9;
|
||||
_GEN_26 = io_addrValid & io_addrIdx == 4'hA;
|
||||
_GEN_27 = io_addrValid & io_addrIdx == 4'hB;
|
||||
_GEN_28 = io_addrValid & io_addrIdx == 4'hC;
|
||||
_GEN_29 = io_addrValid & io_addrIdx == 4'hD;
|
||||
_GEN_30 = io_addrValid & io_addrIdx == 4'hE;
|
||||
_GEN_31 = io_addrValid & (&io_addrIdx);
|
||||
entries_0_valid <= ~io_flush & (_GEN_0 | entries_0_valid);
|
||||
if (io_flush) begin
|
||||
entries_0_robIdx <= 6'h0;
|
||||
entries_0_addr <= 64'h0;
|
||||
entries_0_size <= 3'h0;
|
||||
entries_1_robIdx <= 6'h0;
|
||||
entries_1_addr <= 64'h0;
|
||||
entries_1_size <= 3'h0;
|
||||
entries_2_robIdx <= 6'h0;
|
||||
entries_2_addr <= 64'h0;
|
||||
entries_2_size <= 3'h0;
|
||||
entries_3_robIdx <= 6'h0;
|
||||
entries_3_addr <= 64'h0;
|
||||
entries_3_size <= 3'h0;
|
||||
entries_4_robIdx <= 6'h0;
|
||||
entries_4_addr <= 64'h0;
|
||||
entries_4_size <= 3'h0;
|
||||
entries_5_robIdx <= 6'h0;
|
||||
entries_5_addr <= 64'h0;
|
||||
entries_5_size <= 3'h0;
|
||||
entries_6_robIdx <= 6'h0;
|
||||
entries_6_addr <= 64'h0;
|
||||
entries_6_size <= 3'h0;
|
||||
entries_7_robIdx <= 6'h0;
|
||||
entries_7_addr <= 64'h0;
|
||||
entries_7_size <= 3'h0;
|
||||
entries_8_robIdx <= 6'h0;
|
||||
entries_8_addr <= 64'h0;
|
||||
entries_8_size <= 3'h0;
|
||||
entries_9_robIdx <= 6'h0;
|
||||
entries_9_addr <= 64'h0;
|
||||
entries_9_size <= 3'h0;
|
||||
entries_10_robIdx <= 6'h0;
|
||||
entries_10_addr <= 64'h0;
|
||||
entries_10_size <= 3'h0;
|
||||
entries_11_robIdx <= 6'h0;
|
||||
entries_11_addr <= 64'h0;
|
||||
entries_11_size <= 3'h0;
|
||||
entries_12_robIdx <= 6'h0;
|
||||
entries_12_addr <= 64'h0;
|
||||
entries_12_size <= 3'h0;
|
||||
entries_13_robIdx <= 6'h0;
|
||||
entries_13_addr <= 64'h0;
|
||||
entries_13_size <= 3'h0;
|
||||
entries_14_robIdx <= 6'h0;
|
||||
entries_14_addr <= 64'h0;
|
||||
entries_14_size <= 3'h0;
|
||||
entries_15_robIdx <= 6'h0;
|
||||
entries_15_addr <= 64'h0;
|
||||
entries_15_size <= 3'h0;
|
||||
end
|
||||
else begin
|
||||
if (_GEN_0)
|
||||
entries_0_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_16) begin
|
||||
entries_0_addr <= io_addr;
|
||||
entries_0_size <= io_size;
|
||||
end
|
||||
if (_GEN_1)
|
||||
entries_1_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_17) begin
|
||||
entries_1_addr <= io_addr;
|
||||
entries_1_size <= io_size;
|
||||
end
|
||||
if (_GEN_2)
|
||||
entries_2_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_18) begin
|
||||
entries_2_addr <= io_addr;
|
||||
entries_2_size <= io_size;
|
||||
end
|
||||
if (_GEN_3)
|
||||
entries_3_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_19) begin
|
||||
entries_3_addr <= io_addr;
|
||||
entries_3_size <= io_size;
|
||||
end
|
||||
if (_GEN_4)
|
||||
entries_4_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_20) begin
|
||||
entries_4_addr <= io_addr;
|
||||
entries_4_size <= io_size;
|
||||
end
|
||||
if (_GEN_5)
|
||||
entries_5_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_21) begin
|
||||
entries_5_addr <= io_addr;
|
||||
entries_5_size <= io_size;
|
||||
end
|
||||
if (_GEN_6)
|
||||
entries_6_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_22) begin
|
||||
entries_6_addr <= io_addr;
|
||||
entries_6_size <= io_size;
|
||||
end
|
||||
if (_GEN_7)
|
||||
entries_7_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_23) begin
|
||||
entries_7_addr <= io_addr;
|
||||
entries_7_size <= io_size;
|
||||
end
|
||||
if (_GEN_8)
|
||||
entries_8_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_24) begin
|
||||
entries_8_addr <= io_addr;
|
||||
entries_8_size <= io_size;
|
||||
end
|
||||
if (_GEN_9)
|
||||
entries_9_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_25) begin
|
||||
entries_9_addr <= io_addr;
|
||||
entries_9_size <= io_size;
|
||||
end
|
||||
if (_GEN_10)
|
||||
entries_10_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_26) begin
|
||||
entries_10_addr <= io_addr;
|
||||
entries_10_size <= io_size;
|
||||
end
|
||||
if (_GEN_11)
|
||||
entries_11_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_27) begin
|
||||
entries_11_addr <= io_addr;
|
||||
entries_11_size <= io_size;
|
||||
end
|
||||
if (_GEN_12)
|
||||
entries_12_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_28) begin
|
||||
entries_12_addr <= io_addr;
|
||||
entries_12_size <= io_size;
|
||||
end
|
||||
if (_GEN_13)
|
||||
entries_13_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_29) begin
|
||||
entries_13_addr <= io_addr;
|
||||
entries_13_size <= io_size;
|
||||
end
|
||||
if (_GEN_14)
|
||||
entries_14_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_30) begin
|
||||
entries_14_addr <= io_addr;
|
||||
entries_14_size <= io_size;
|
||||
end
|
||||
if (_GEN_15)
|
||||
entries_15_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_31) begin
|
||||
entries_15_addr <= io_addr;
|
||||
entries_15_size <= io_size;
|
||||
end
|
||||
end
|
||||
entries_0_addrValid <= ~io_flush & (_GEN_16 | ~_GEN_0 & entries_0_addrValid);
|
||||
entries_0_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h0 | ~_GEN_0 & entries_0_completed);
|
||||
entries_1_valid <= ~io_flush & (_GEN_1 | entries_1_valid);
|
||||
entries_1_addrValid <= ~io_flush & (_GEN_17 | ~_GEN_1 & entries_1_addrValid);
|
||||
entries_1_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h1 | ~_GEN_1 & entries_1_completed);
|
||||
entries_2_valid <= ~io_flush & (_GEN_2 | entries_2_valid);
|
||||
entries_2_addrValid <= ~io_flush & (_GEN_18 | ~_GEN_2 & entries_2_addrValid);
|
||||
entries_2_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h2 | ~_GEN_2 & entries_2_completed);
|
||||
entries_3_valid <= ~io_flush & (_GEN_3 | entries_3_valid);
|
||||
entries_3_addrValid <= ~io_flush & (_GEN_19 | ~_GEN_3 & entries_3_addrValid);
|
||||
entries_3_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h3 | ~_GEN_3 & entries_3_completed);
|
||||
entries_4_valid <= ~io_flush & (_GEN_4 | entries_4_valid);
|
||||
entries_4_addrValid <= ~io_flush & (_GEN_20 | ~_GEN_4 & entries_4_addrValid);
|
||||
entries_4_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h4 | ~_GEN_4 & entries_4_completed);
|
||||
entries_5_valid <= ~io_flush & (_GEN_5 | entries_5_valid);
|
||||
entries_5_addrValid <= ~io_flush & (_GEN_21 | ~_GEN_5 & entries_5_addrValid);
|
||||
entries_5_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h5 | ~_GEN_5 & entries_5_completed);
|
||||
entries_6_valid <= ~io_flush & (_GEN_6 | entries_6_valid);
|
||||
entries_6_addrValid <= ~io_flush & (_GEN_22 | ~_GEN_6 & entries_6_addrValid);
|
||||
entries_6_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h6 | ~_GEN_6 & entries_6_completed);
|
||||
entries_7_valid <= ~io_flush & (_GEN_7 | entries_7_valid);
|
||||
entries_7_addrValid <= ~io_flush & (_GEN_23 | ~_GEN_7 & entries_7_addrValid);
|
||||
entries_7_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h7 | ~_GEN_7 & entries_7_completed);
|
||||
entries_8_valid <= ~io_flush & (_GEN_8 | entries_8_valid);
|
||||
entries_8_addrValid <= ~io_flush & (_GEN_24 | ~_GEN_8 & entries_8_addrValid);
|
||||
entries_8_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h8 | ~_GEN_8 & entries_8_completed);
|
||||
entries_9_valid <= ~io_flush & (_GEN_9 | entries_9_valid);
|
||||
entries_9_addrValid <= ~io_flush & (_GEN_25 | ~_GEN_9 & entries_9_addrValid);
|
||||
entries_9_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'h9 | ~_GEN_9 & entries_9_completed);
|
||||
entries_10_valid <= ~io_flush & (_GEN_10 | entries_10_valid);
|
||||
entries_10_addrValid <= ~io_flush & (_GEN_26 | ~_GEN_10 & entries_10_addrValid);
|
||||
entries_10_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'hA | ~_GEN_10 & entries_10_completed);
|
||||
entries_11_valid <= ~io_flush & (_GEN_11 | entries_11_valid);
|
||||
entries_11_addrValid <= ~io_flush & (_GEN_27 | ~_GEN_11 & entries_11_addrValid);
|
||||
entries_11_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'hB | ~_GEN_11 & entries_11_completed);
|
||||
entries_12_valid <= ~io_flush & (_GEN_12 | entries_12_valid);
|
||||
entries_12_addrValid <= ~io_flush & (_GEN_28 | ~_GEN_12 & entries_12_addrValid);
|
||||
entries_12_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'hC | ~_GEN_12 & entries_12_completed);
|
||||
entries_13_valid <= ~io_flush & (_GEN_13 | entries_13_valid);
|
||||
entries_13_addrValid <= ~io_flush & (_GEN_29 | ~_GEN_13 & entries_13_addrValid);
|
||||
entries_13_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'hD | ~_GEN_13 & entries_13_completed);
|
||||
entries_14_valid <= ~io_flush & (_GEN_14 | entries_14_valid);
|
||||
entries_14_addrValid <= ~io_flush & (_GEN_30 | ~_GEN_14 & entries_14_addrValid);
|
||||
entries_14_completed <=
|
||||
~io_flush
|
||||
& (io_complete & io_completeIdx == 4'hE | ~_GEN_14 & entries_14_completed);
|
||||
entries_15_valid <= ~io_flush & (_GEN_15 | entries_15_valid);
|
||||
entries_15_addrValid <= ~io_flush & (_GEN_31 | ~_GEN_15 & entries_15_addrValid);
|
||||
entries_15_completed <=
|
||||
~io_flush & (io_complete & (&io_completeIdx) | ~_GEN_15 & entries_15_completed);
|
||||
end
|
||||
end // always @(posedge)
|
||||
assign io_enqIdx = enqIdx;
|
||||
assign io_violation = |_io_violation_T;
|
||||
endmodule
|
||||
|
||||
42
generated-ooo/MMU.sv
Normal file
42
generated-ooo/MMU.sv
Normal file
@@ -0,0 +1,42 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module MMU(
|
||||
input clock,
|
||||
reset,
|
||||
input [63:0] io_satp,
|
||||
input io_req_valid,
|
||||
input [63:0] io_req_vaddr,
|
||||
input io_req_isStore,
|
||||
output io_resp_pageFault,
|
||||
io_ptwMemReq_valid,
|
||||
output [63:0] io_ptwMemReq_addr,
|
||||
input io_ptwMemResp_valid,
|
||||
input [63:0] io_ptwMemResp_data,
|
||||
output io_refill_valid,
|
||||
output [26:0] io_refill_vpn,
|
||||
output [43:0] io_refill_ppn,
|
||||
output [7:0] io_refill_flags
|
||||
);
|
||||
|
||||
wire _walker_io_respValid;
|
||||
wire _walker_io_pageFault;
|
||||
PageTableWalker walker (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_reqValid (io_req_valid & (|(io_satp[63:60]))),
|
||||
.io_reqVpn (io_req_vaddr[38:12]),
|
||||
.io_isStore (io_req_isStore),
|
||||
.io_satp (io_satp),
|
||||
.io_memReq_valid (io_ptwMemReq_valid),
|
||||
.io_memReq_addr (io_ptwMemReq_addr),
|
||||
.io_memResp_valid (io_ptwMemResp_valid),
|
||||
.io_memResp_data (io_ptwMemResp_data),
|
||||
.io_respValid (_walker_io_respValid),
|
||||
.io_refill_valid (io_refill_valid),
|
||||
.io_refill_vpn (io_refill_vpn),
|
||||
.io_refill_ppn (io_refill_ppn),
|
||||
.io_refill_flags (io_refill_flags),
|
||||
.io_pageFault (_walker_io_pageFault)
|
||||
);
|
||||
assign io_resp_pageFault = _walker_io_respValid & _walker_io_pageFault;
|
||||
endmodule
|
||||
|
||||
969
generated-ooo/OoOBackend.sv
Normal file
969
generated-ooo/OoOBackend.sv
Normal file
@@ -0,0 +1,969 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module OoOBackend(
|
||||
input clock,
|
||||
reset,
|
||||
io_decodeValid_0,
|
||||
io_decodeValid_1,
|
||||
input [63:0] io_decode_0_pc,
|
||||
input [31:0] io_decode_0_inst,
|
||||
input [4:0] io_decode_0_rs1,
|
||||
io_decode_0_rs2,
|
||||
io_decode_0_rd,
|
||||
input [2:0] io_decode_0_funct3,
|
||||
input [63:0] io_decode_0_immI,
|
||||
io_decode_0_immS,
|
||||
io_decode_0_immB,
|
||||
io_decode_0_immU,
|
||||
io_decode_0_immJ,
|
||||
input [3:0] io_decode_0_opClass,
|
||||
input [4:0] io_decode_0_aluFn,
|
||||
input [2:0] io_decode_0_memWidth,
|
||||
input io_decode_0_isLoad,
|
||||
io_decode_0_isStore,
|
||||
io_decode_0_isBranch,
|
||||
io_decode_0_isJal,
|
||||
io_decode_0_isJalr,
|
||||
io_decode_0_isLui,
|
||||
io_decode_0_isAuipc,
|
||||
io_decode_0_isOpImm,
|
||||
io_decode_0_isWord,
|
||||
io_decode_0_isSystem,
|
||||
io_decode_0_writesRd,
|
||||
io_decode_0_illegal,
|
||||
input [63:0] io_decode_1_pc,
|
||||
input [31:0] io_decode_1_inst,
|
||||
input [4:0] io_decode_1_rs1,
|
||||
io_decode_1_rs2,
|
||||
io_decode_1_rd,
|
||||
input [2:0] io_decode_1_funct3,
|
||||
input [63:0] io_decode_1_immI,
|
||||
io_decode_1_immS,
|
||||
io_decode_1_immB,
|
||||
io_decode_1_immU,
|
||||
io_decode_1_immJ,
|
||||
input [3:0] io_decode_1_opClass,
|
||||
input [4:0] io_decode_1_aluFn,
|
||||
input [2:0] io_decode_1_memWidth,
|
||||
input io_decode_1_isLoad,
|
||||
io_decode_1_isStore,
|
||||
io_decode_1_isBranch,
|
||||
io_decode_1_isJal,
|
||||
io_decode_1_isJalr,
|
||||
io_decode_1_isLui,
|
||||
io_decode_1_isAuipc,
|
||||
io_decode_1_isOpImm,
|
||||
io_decode_1_isWord,
|
||||
io_decode_1_isSystem,
|
||||
io_decode_1_writesRd,
|
||||
io_decode_1_illegal,
|
||||
output io_decodeReady,
|
||||
io_flush,
|
||||
output [63:0] io_redirectPc,
|
||||
output io_dmemReqValid,
|
||||
output [63:0] io_dmemReq_addr,
|
||||
io_dmemReq_data,
|
||||
output io_dmemReq_isStore,
|
||||
output [2:0] io_dmemReq_size,
|
||||
input io_dmemRespValid,
|
||||
input [63:0] io_dmemRespData
|
||||
);
|
||||
|
||||
wire [63:0] _csr_io_rdata;
|
||||
wire [63:0] _csr_io_satp;
|
||||
wire [63:0] _csr_io_mtvec;
|
||||
wire [63:0] _csr_io_mepc;
|
||||
wire _lsu_io_reqReady;
|
||||
wire _lsu_io_respValid;
|
||||
wire [63:0] _lsu_io_respData;
|
||||
wire _lsu_io_pageFault;
|
||||
wire [3:0] _sq_io_enqIdx;
|
||||
wire _sq_io_forwardValid;
|
||||
wire _sq_io_drainValid;
|
||||
wire [63:0] _sq_io_drain_addr;
|
||||
wire [63:0] _sq_io_drain_data;
|
||||
wire [2:0] _sq_io_drain_size;
|
||||
wire [3:0] _lq_io_enqIdx;
|
||||
wire _lq_io_violation;
|
||||
wire _commit_io_commitReady_0;
|
||||
wire _commit_io_commitReady_1;
|
||||
wire _commit_io_freeOldPhys_0;
|
||||
wire _commit_io_freeOldPhys_1;
|
||||
wire [5:0] _commit_io_oldPhys_0;
|
||||
wire [5:0] _commit_io_oldPhys_1;
|
||||
wire _commit_io_commitMapValid_0;
|
||||
wire _commit_io_commitMapValid_1;
|
||||
wire [4:0] _commit_io_commitArch_0;
|
||||
wire [4:0] _commit_io_commitArch_1;
|
||||
wire [5:0] _commit_io_commitPhys_0;
|
||||
wire [5:0] _commit_io_commitPhys_1;
|
||||
wire _commit_io_flush;
|
||||
wire [63:0] _commit_io_redirectPc;
|
||||
wire _commit_io_exception;
|
||||
wire [63:0] _commit_io_exceptionCause;
|
||||
wire [63:0] _commit_io_badAddr;
|
||||
wire _wb_1_io_wen;
|
||||
wire [5:0] _wb_1_io_waddr;
|
||||
wire [63:0] _wb_1_io_wdata;
|
||||
wire _wb_0_io_wen;
|
||||
wire [5:0] _wb_0_io_waddr;
|
||||
wire [63:0] _wb_0_io_wdata;
|
||||
wire _exec_1_io_outValid;
|
||||
wire [63:0] _exec_1_io_result;
|
||||
wire _exec_1_io_branchTaken;
|
||||
wire _exec_0_io_outValid;
|
||||
wire [63:0] _exec_0_io_result;
|
||||
wire _exec_0_io_branchTaken;
|
||||
wire [63:0] _prf_io_rdata_0;
|
||||
wire [63:0] _prf_io_rdata_1;
|
||||
wire [63:0] _prf_io_rdata_2;
|
||||
wire [63:0] _prf_io_rdata_3;
|
||||
wire _issue_io_inReady_0;
|
||||
wire _issue_io_inReady_1;
|
||||
wire _issue_io_outValid_0;
|
||||
wire _issue_io_outValid_1;
|
||||
wire [63:0] _issue_io_out_0_decoded_pc;
|
||||
wire [31:0] _issue_io_out_0_decoded_inst;
|
||||
wire [4:0] _issue_io_out_0_decoded_rs1;
|
||||
wire [2:0] _issue_io_out_0_decoded_funct3;
|
||||
wire [63:0] _issue_io_out_0_decoded_immI;
|
||||
wire [63:0] _issue_io_out_0_decoded_immS;
|
||||
wire [63:0] _issue_io_out_0_decoded_immB;
|
||||
wire [63:0] _issue_io_out_0_decoded_immU;
|
||||
wire [63:0] _issue_io_out_0_decoded_immJ;
|
||||
wire [4:0] _issue_io_out_0_decoded_aluFn;
|
||||
wire [2:0] _issue_io_out_0_decoded_memWidth;
|
||||
wire _issue_io_out_0_decoded_isLoad;
|
||||
wire _issue_io_out_0_decoded_isStore;
|
||||
wire _issue_io_out_0_decoded_isBranch;
|
||||
wire _issue_io_out_0_decoded_isJal;
|
||||
wire _issue_io_out_0_decoded_isJalr;
|
||||
wire _issue_io_out_0_decoded_isLui;
|
||||
wire _issue_io_out_0_decoded_isAuipc;
|
||||
wire _issue_io_out_0_decoded_isOpImm;
|
||||
wire _issue_io_out_0_decoded_isWord;
|
||||
wire _issue_io_out_0_decoded_isSystem;
|
||||
wire _issue_io_out_0_decoded_writesRd;
|
||||
wire _issue_io_out_0_decoded_illegal;
|
||||
wire [5:0] _issue_io_out_0_prs1;
|
||||
wire [5:0] _issue_io_out_0_prs2;
|
||||
wire [5:0] _issue_io_out_0_prd;
|
||||
wire [5:0] _issue_io_out_0_robIdx;
|
||||
wire [63:0] _issue_io_out_1_decoded_pc;
|
||||
wire [31:0] _issue_io_out_1_decoded_inst;
|
||||
wire [4:0] _issue_io_out_1_decoded_rs1;
|
||||
wire [2:0] _issue_io_out_1_decoded_funct3;
|
||||
wire [63:0] _issue_io_out_1_decoded_immI;
|
||||
wire [63:0] _issue_io_out_1_decoded_immS;
|
||||
wire [63:0] _issue_io_out_1_decoded_immB;
|
||||
wire [63:0] _issue_io_out_1_decoded_immU;
|
||||
wire [63:0] _issue_io_out_1_decoded_immJ;
|
||||
wire [4:0] _issue_io_out_1_decoded_aluFn;
|
||||
wire [2:0] _issue_io_out_1_decoded_memWidth;
|
||||
wire _issue_io_out_1_decoded_isLoad;
|
||||
wire _issue_io_out_1_decoded_isStore;
|
||||
wire _issue_io_out_1_decoded_isBranch;
|
||||
wire _issue_io_out_1_decoded_isJal;
|
||||
wire _issue_io_out_1_decoded_isJalr;
|
||||
wire _issue_io_out_1_decoded_isLui;
|
||||
wire _issue_io_out_1_decoded_isAuipc;
|
||||
wire _issue_io_out_1_decoded_isOpImm;
|
||||
wire _issue_io_out_1_decoded_isWord;
|
||||
wire _issue_io_out_1_decoded_isSystem;
|
||||
wire _issue_io_out_1_decoded_writesRd;
|
||||
wire _issue_io_out_1_decoded_illegal;
|
||||
wire [5:0] _issue_io_out_1_prs1;
|
||||
wire [5:0] _issue_io_out_1_prs2;
|
||||
wire [5:0] _issue_io_out_1_prd;
|
||||
wire [5:0] _issue_io_out_1_robIdx;
|
||||
wire _rename_io_outValid_0;
|
||||
wire _rename_io_outValid_1;
|
||||
wire [63:0] _rename_io_out_0_decoded_pc;
|
||||
wire [31:0] _rename_io_out_0_decoded_inst;
|
||||
wire [4:0] _rename_io_out_0_decoded_rs1;
|
||||
wire [4:0] _rename_io_out_0_decoded_rs2;
|
||||
wire [2:0] _rename_io_out_0_decoded_funct3;
|
||||
wire [63:0] _rename_io_out_0_decoded_immI;
|
||||
wire [63:0] _rename_io_out_0_decoded_immS;
|
||||
wire [63:0] _rename_io_out_0_decoded_immB;
|
||||
wire [63:0] _rename_io_out_0_decoded_immU;
|
||||
wire [63:0] _rename_io_out_0_decoded_immJ;
|
||||
wire [4:0] _rename_io_out_0_decoded_aluFn;
|
||||
wire [2:0] _rename_io_out_0_decoded_memWidth;
|
||||
wire _rename_io_out_0_decoded_isLoad;
|
||||
wire _rename_io_out_0_decoded_isStore;
|
||||
wire _rename_io_out_0_decoded_isBranch;
|
||||
wire _rename_io_out_0_decoded_isJal;
|
||||
wire _rename_io_out_0_decoded_isJalr;
|
||||
wire _rename_io_out_0_decoded_isLui;
|
||||
wire _rename_io_out_0_decoded_isAuipc;
|
||||
wire _rename_io_out_0_decoded_isOpImm;
|
||||
wire _rename_io_out_0_decoded_isWord;
|
||||
wire _rename_io_out_0_decoded_isSystem;
|
||||
wire _rename_io_out_0_decoded_writesRd;
|
||||
wire _rename_io_out_0_decoded_illegal;
|
||||
wire [5:0] _rename_io_out_0_prs1;
|
||||
wire [5:0] _rename_io_out_0_prs2;
|
||||
wire _rename_io_out_0_src1Ready;
|
||||
wire _rename_io_out_0_src2Ready;
|
||||
wire [5:0] _rename_io_out_0_prd;
|
||||
wire [5:0] _rename_io_out_0_robIdx;
|
||||
wire [63:0] _rename_io_out_1_decoded_pc;
|
||||
wire [31:0] _rename_io_out_1_decoded_inst;
|
||||
wire [4:0] _rename_io_out_1_decoded_rs1;
|
||||
wire [4:0] _rename_io_out_1_decoded_rs2;
|
||||
wire [2:0] _rename_io_out_1_decoded_funct3;
|
||||
wire [63:0] _rename_io_out_1_decoded_immI;
|
||||
wire [63:0] _rename_io_out_1_decoded_immS;
|
||||
wire [63:0] _rename_io_out_1_decoded_immB;
|
||||
wire [63:0] _rename_io_out_1_decoded_immU;
|
||||
wire [63:0] _rename_io_out_1_decoded_immJ;
|
||||
wire [4:0] _rename_io_out_1_decoded_aluFn;
|
||||
wire [2:0] _rename_io_out_1_decoded_memWidth;
|
||||
wire _rename_io_out_1_decoded_isLoad;
|
||||
wire _rename_io_out_1_decoded_isStore;
|
||||
wire _rename_io_out_1_decoded_isBranch;
|
||||
wire _rename_io_out_1_decoded_isJal;
|
||||
wire _rename_io_out_1_decoded_isJalr;
|
||||
wire _rename_io_out_1_decoded_isLui;
|
||||
wire _rename_io_out_1_decoded_isAuipc;
|
||||
wire _rename_io_out_1_decoded_isOpImm;
|
||||
wire _rename_io_out_1_decoded_isWord;
|
||||
wire _rename_io_out_1_decoded_isSystem;
|
||||
wire _rename_io_out_1_decoded_writesRd;
|
||||
wire _rename_io_out_1_decoded_illegal;
|
||||
wire [5:0] _rename_io_out_1_prs1;
|
||||
wire [5:0] _rename_io_out_1_prs2;
|
||||
wire _rename_io_out_1_src1Ready;
|
||||
wire _rename_io_out_1_src2Ready;
|
||||
wire [5:0] _rename_io_out_1_prd;
|
||||
wire [5:0] _rename_io_out_1_robIdx;
|
||||
wire _rename_io_canAccept;
|
||||
wire _rename_io_commitValid_0;
|
||||
wire _rename_io_commitValid_1;
|
||||
wire [5:0] _rename_io_commitEntry_0_robIdx;
|
||||
wire [4:0] _rename_io_commitEntry_0_archDest;
|
||||
wire _rename_io_commitEntry_0_writesDest;
|
||||
wire [3:0] _rename_io_commitEntry_0_opClass;
|
||||
wire [5:0] _rename_io_commitEntry_0_dest;
|
||||
wire [5:0] _rename_io_commitEntry_0_oldDest;
|
||||
wire _rename_io_commitEntry_0_exception;
|
||||
wire [63:0] _rename_io_commitEntry_0_exceptionCause;
|
||||
wire [63:0] _rename_io_commitEntry_0_badAddr;
|
||||
wire _rename_io_commitEntry_0_branchMispredict;
|
||||
wire [63:0] _rename_io_commitEntry_0_redirectPc;
|
||||
wire _rename_io_commitEntry_0_csrValid;
|
||||
wire [11:0] _rename_io_commitEntry_0_csrAddr;
|
||||
wire [2:0] _rename_io_commitEntry_0_csrCmd;
|
||||
wire [63:0] _rename_io_commitEntry_0_csrRs1;
|
||||
wire [4:0] _rename_io_commitEntry_0_csrZimm;
|
||||
wire [5:0] _rename_io_commitEntry_1_robIdx;
|
||||
wire [4:0] _rename_io_commitEntry_1_archDest;
|
||||
wire _rename_io_commitEntry_1_writesDest;
|
||||
wire [3:0] _rename_io_commitEntry_1_opClass;
|
||||
wire [5:0] _rename_io_commitEntry_1_dest;
|
||||
wire [5:0] _rename_io_commitEntry_1_oldDest;
|
||||
wire _rename_io_commitEntry_1_exception;
|
||||
wire [63:0] _rename_io_commitEntry_1_exceptionCause;
|
||||
wire [63:0] _rename_io_commitEntry_1_badAddr;
|
||||
wire _rename_io_commitEntry_1_branchMispredict;
|
||||
wire [63:0] _rename_io_commitEntry_1_redirectPc;
|
||||
wire _rename_io_commitEntry_1_csrValid;
|
||||
wire [11:0] _rename_io_commitEntry_1_csrAddr;
|
||||
wire [2:0] _rename_io_commitEntry_1_csrCmd;
|
||||
wire [63:0] _rename_io_commitEntry_1_csrRs1;
|
||||
wire [4:0] _rename_io_commitEntry_1_csrZimm;
|
||||
reg wakeupReg_0_valid;
|
||||
reg [5:0] wakeupReg_0_phys;
|
||||
reg wakeupReg_1_valid;
|
||||
reg [5:0] wakeupReg_1_phys;
|
||||
reg loadPending;
|
||||
reg [5:0] loadPendingRob;
|
||||
reg [5:0] loadPendingPhys;
|
||||
reg [3:0] loadPendingLq;
|
||||
wire loadRespValid = _lsu_io_respValid & loadPending;
|
||||
wire isMem0 = _issue_io_out_0_decoded_isLoad | _issue_io_out_0_decoded_isStore;
|
||||
wire memIssue_0 = _issue_io_outValid_0 & isMem0;
|
||||
wire isMem1 = _issue_io_out_1_decoded_isLoad | _issue_io_out_1_decoded_isStore;
|
||||
wire csrReadReq_0 =
|
||||
_issue_io_outValid_0 & _issue_io_out_0_decoded_isSystem
|
||||
& (|_issue_io_out_0_decoded_funct3);
|
||||
wire _memReady1_T_1 = _lsu_io_reqReady & ~loadPending;
|
||||
wire issue_io_outReady_0 = ~isMem0 | _memReady1_T_1;
|
||||
wire issue_io_outReady_1 =
|
||||
(~isMem1 | _memReady1_T_1 & ~memIssue_0)
|
||||
& ~(csrReadReq_0 & _issue_io_outValid_1 & _issue_io_out_1_decoded_isSystem
|
||||
& (|_issue_io_out_1_decoded_funct3));
|
||||
wire issueFire_0 = _issue_io_outValid_0 & issue_io_outReady_0;
|
||||
wire issueFire_1 = _issue_io_outValid_1 & issue_io_outReady_1;
|
||||
wire [2:0] sq_io_size =
|
||||
memIssue_0 ? _issue_io_out_0_decoded_memWidth : _issue_io_out_1_decoded_memWidth;
|
||||
wire _GEN =
|
||||
memIssue_0 ? _issue_io_out_0_decoded_isStore : _issue_io_out_1_decoded_isStore;
|
||||
wire [5:0] sq_io_enqRobIdx =
|
||||
memIssue_0 ? _issue_io_out_0_robIdx : _issue_io_out_1_robIdx;
|
||||
wire [63:0] _memAddr_T_1 =
|
||||
(memIssue_0 ? _prf_io_rdata_0 : _prf_io_rdata_2)
|
||||
+ (_GEN
|
||||
? (memIssue_0 ? _issue_io_out_0_decoded_immS : _issue_io_out_1_decoded_immS)
|
||||
: memIssue_0 ? _issue_io_out_0_decoded_immI : _issue_io_out_1_decoded_immI);
|
||||
wire _storeEnq_T = memIssue_0 | ~memIssue_0 & _issue_io_outValid_1 & isMem1;
|
||||
wire _GEN_0 = memIssue_0 ? issue_io_outReady_0 : issue_io_outReady_1;
|
||||
wire loadEnq =
|
||||
_storeEnq_T
|
||||
& (memIssue_0 ? _issue_io_out_0_decoded_isLoad : _issue_io_out_1_decoded_isLoad)
|
||||
& _GEN_0;
|
||||
wire storeEnq = _storeEnq_T & _GEN & _GEN_0;
|
||||
wire lsuLoadReq = loadEnq & ~_sq_io_forwardValid;
|
||||
wire _commitCsr0_T = _commit_io_commitReady_0 & _rename_io_commitValid_0;
|
||||
wire commitStore0 = _commitCsr0_T & _rename_io_commitEntry_0_opClass == 4'h4;
|
||||
wire _commitCsr1_T = _commit_io_commitReady_1 & _rename_io_commitValid_1;
|
||||
wire commitCsr0 = _commitCsr0_T & _rename_io_commitEntry_0_csrValid;
|
||||
wire _completeMispredict_0_T =
|
||||
_issue_io_out_0_decoded_isJal | _issue_io_out_0_decoded_isJalr;
|
||||
wire [63:0] _branchRedirect_T_1 = _issue_io_out_0_decoded_pc + 64'h4;
|
||||
wire [63:0] _jalrTarget_T = _prf_io_rdata_0 + _issue_io_out_0_decoded_immI;
|
||||
wire _completeMispredict_0_T_2 =
|
||||
_issue_io_out_0_decoded_isBranch & _exec_0_io_branchTaken;
|
||||
wire isEcall = _issue_io_out_0_decoded_inst == 32'h73;
|
||||
wire isEbreak = _issue_io_out_0_decoded_inst == 32'h100073;
|
||||
wire isMret = _issue_io_out_0_decoded_inst == 32'h30200073;
|
||||
wire _completeCause_0_T = loadRespValid & _lsu_io_pageFault;
|
||||
wire _completeMispredict_1_T =
|
||||
_issue_io_out_1_decoded_isJal | _issue_io_out_1_decoded_isJalr;
|
||||
wire [63:0] _branchRedirect_T_6 = _issue_io_out_1_decoded_pc + 64'h4;
|
||||
wire [63:0] _jalrTarget_T_3 = _prf_io_rdata_2 + _issue_io_out_1_decoded_immI;
|
||||
wire _completeMispredict_1_T_2 =
|
||||
_issue_io_out_1_decoded_isBranch & _exec_1_io_branchTaken;
|
||||
wire isEcall_1 = _issue_io_out_1_decoded_inst == 32'h73;
|
||||
wire isEbreak_1 = _issue_io_out_1_decoded_inst == 32'h100073;
|
||||
wire isMret_1 = _issue_io_out_1_decoded_inst == 32'h30200073;
|
||||
always @(posedge clock) begin
|
||||
automatic logic _GEN_1;
|
||||
_GEN_1 = loadEnq & ~_sq_io_forwardValid;
|
||||
if (reset) begin
|
||||
wakeupReg_0_valid <= 1'h0;
|
||||
wakeupReg_0_phys <= 6'h0;
|
||||
wakeupReg_1_valid <= 1'h0;
|
||||
wakeupReg_1_phys <= 6'h0;
|
||||
loadPending <= 1'h0;
|
||||
end
|
||||
else begin
|
||||
wakeupReg_0_valid <= _wb_0_io_wen;
|
||||
wakeupReg_0_phys <= _wb_0_io_waddr;
|
||||
wakeupReg_1_valid <= _wb_1_io_wen;
|
||||
wakeupReg_1_phys <= _wb_1_io_waddr;
|
||||
loadPending <= ~_commit_io_flush & (_GEN_1 | ~loadRespValid & loadPending);
|
||||
end
|
||||
if (_commit_io_flush | ~_GEN_1) begin
|
||||
end
|
||||
else begin
|
||||
loadPendingRob <= sq_io_enqRobIdx;
|
||||
loadPendingPhys <= memIssue_0 ? _issue_io_out_0_prd : _issue_io_out_1_prd;
|
||||
loadPendingLq <= _lq_io_enqIdx;
|
||||
end
|
||||
end // always @(posedge)
|
||||
RenameStage rename (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_inValid_0 (io_decodeValid_0 & _issue_io_inReady_0),
|
||||
.io_inValid_1 (io_decodeValid_1 & _issue_io_inReady_1),
|
||||
.io_in_0_pc (io_decode_0_pc),
|
||||
.io_in_0_inst (io_decode_0_inst),
|
||||
.io_in_0_rs1 (io_decode_0_rs1),
|
||||
.io_in_0_rs2 (io_decode_0_rs2),
|
||||
.io_in_0_rd (io_decode_0_rd),
|
||||
.io_in_0_funct3 (io_decode_0_funct3),
|
||||
.io_in_0_immI (io_decode_0_immI),
|
||||
.io_in_0_immS (io_decode_0_immS),
|
||||
.io_in_0_immB (io_decode_0_immB),
|
||||
.io_in_0_immU (io_decode_0_immU),
|
||||
.io_in_0_immJ (io_decode_0_immJ),
|
||||
.io_in_0_opClass (io_decode_0_opClass),
|
||||
.io_in_0_aluFn (io_decode_0_aluFn),
|
||||
.io_in_0_memWidth (io_decode_0_memWidth),
|
||||
.io_in_0_isLoad (io_decode_0_isLoad),
|
||||
.io_in_0_isStore (io_decode_0_isStore),
|
||||
.io_in_0_isBranch (io_decode_0_isBranch),
|
||||
.io_in_0_isJal (io_decode_0_isJal),
|
||||
.io_in_0_isJalr (io_decode_0_isJalr),
|
||||
.io_in_0_isLui (io_decode_0_isLui),
|
||||
.io_in_0_isAuipc (io_decode_0_isAuipc),
|
||||
.io_in_0_isOpImm (io_decode_0_isOpImm),
|
||||
.io_in_0_isWord (io_decode_0_isWord),
|
||||
.io_in_0_isSystem (io_decode_0_isSystem),
|
||||
.io_in_0_writesRd (io_decode_0_writesRd),
|
||||
.io_in_0_illegal (io_decode_0_illegal),
|
||||
.io_in_1_pc (io_decode_1_pc),
|
||||
.io_in_1_inst (io_decode_1_inst),
|
||||
.io_in_1_rs1 (io_decode_1_rs1),
|
||||
.io_in_1_rs2 (io_decode_1_rs2),
|
||||
.io_in_1_rd (io_decode_1_rd),
|
||||
.io_in_1_funct3 (io_decode_1_funct3),
|
||||
.io_in_1_immI (io_decode_1_immI),
|
||||
.io_in_1_immS (io_decode_1_immS),
|
||||
.io_in_1_immB (io_decode_1_immB),
|
||||
.io_in_1_immU (io_decode_1_immU),
|
||||
.io_in_1_immJ (io_decode_1_immJ),
|
||||
.io_in_1_opClass (io_decode_1_opClass),
|
||||
.io_in_1_aluFn (io_decode_1_aluFn),
|
||||
.io_in_1_memWidth (io_decode_1_memWidth),
|
||||
.io_in_1_isLoad (io_decode_1_isLoad),
|
||||
.io_in_1_isStore (io_decode_1_isStore),
|
||||
.io_in_1_isBranch (io_decode_1_isBranch),
|
||||
.io_in_1_isJal (io_decode_1_isJal),
|
||||
.io_in_1_isJalr (io_decode_1_isJalr),
|
||||
.io_in_1_isLui (io_decode_1_isLui),
|
||||
.io_in_1_isAuipc (io_decode_1_isAuipc),
|
||||
.io_in_1_isOpImm (io_decode_1_isOpImm),
|
||||
.io_in_1_isWord (io_decode_1_isWord),
|
||||
.io_in_1_isSystem (io_decode_1_isSystem),
|
||||
.io_in_1_writesRd (io_decode_1_writesRd),
|
||||
.io_in_1_illegal (io_decode_1_illegal),
|
||||
.io_outValid_0 (_rename_io_outValid_0),
|
||||
.io_outValid_1 (_rename_io_outValid_1),
|
||||
.io_out_0_decoded_pc (_rename_io_out_0_decoded_pc),
|
||||
.io_out_0_decoded_inst (_rename_io_out_0_decoded_inst),
|
||||
.io_out_0_decoded_rs1 (_rename_io_out_0_decoded_rs1),
|
||||
.io_out_0_decoded_rs2 (_rename_io_out_0_decoded_rs2),
|
||||
.io_out_0_decoded_funct3 (_rename_io_out_0_decoded_funct3),
|
||||
.io_out_0_decoded_immI (_rename_io_out_0_decoded_immI),
|
||||
.io_out_0_decoded_immS (_rename_io_out_0_decoded_immS),
|
||||
.io_out_0_decoded_immB (_rename_io_out_0_decoded_immB),
|
||||
.io_out_0_decoded_immU (_rename_io_out_0_decoded_immU),
|
||||
.io_out_0_decoded_immJ (_rename_io_out_0_decoded_immJ),
|
||||
.io_out_0_decoded_aluFn (_rename_io_out_0_decoded_aluFn),
|
||||
.io_out_0_decoded_memWidth (_rename_io_out_0_decoded_memWidth),
|
||||
.io_out_0_decoded_isLoad (_rename_io_out_0_decoded_isLoad),
|
||||
.io_out_0_decoded_isStore (_rename_io_out_0_decoded_isStore),
|
||||
.io_out_0_decoded_isBranch (_rename_io_out_0_decoded_isBranch),
|
||||
.io_out_0_decoded_isJal (_rename_io_out_0_decoded_isJal),
|
||||
.io_out_0_decoded_isJalr (_rename_io_out_0_decoded_isJalr),
|
||||
.io_out_0_decoded_isLui (_rename_io_out_0_decoded_isLui),
|
||||
.io_out_0_decoded_isAuipc (_rename_io_out_0_decoded_isAuipc),
|
||||
.io_out_0_decoded_isOpImm (_rename_io_out_0_decoded_isOpImm),
|
||||
.io_out_0_decoded_isWord (_rename_io_out_0_decoded_isWord),
|
||||
.io_out_0_decoded_isSystem (_rename_io_out_0_decoded_isSystem),
|
||||
.io_out_0_decoded_writesRd (_rename_io_out_0_decoded_writesRd),
|
||||
.io_out_0_decoded_illegal (_rename_io_out_0_decoded_illegal),
|
||||
.io_out_0_prs1 (_rename_io_out_0_prs1),
|
||||
.io_out_0_prs2 (_rename_io_out_0_prs2),
|
||||
.io_out_0_src1Ready (_rename_io_out_0_src1Ready),
|
||||
.io_out_0_src2Ready (_rename_io_out_0_src2Ready),
|
||||
.io_out_0_prd (_rename_io_out_0_prd),
|
||||
.io_out_0_robIdx (_rename_io_out_0_robIdx),
|
||||
.io_out_1_decoded_pc (_rename_io_out_1_decoded_pc),
|
||||
.io_out_1_decoded_inst (_rename_io_out_1_decoded_inst),
|
||||
.io_out_1_decoded_rs1 (_rename_io_out_1_decoded_rs1),
|
||||
.io_out_1_decoded_rs2 (_rename_io_out_1_decoded_rs2),
|
||||
.io_out_1_decoded_funct3 (_rename_io_out_1_decoded_funct3),
|
||||
.io_out_1_decoded_immI (_rename_io_out_1_decoded_immI),
|
||||
.io_out_1_decoded_immS (_rename_io_out_1_decoded_immS),
|
||||
.io_out_1_decoded_immB (_rename_io_out_1_decoded_immB),
|
||||
.io_out_1_decoded_immU (_rename_io_out_1_decoded_immU),
|
||||
.io_out_1_decoded_immJ (_rename_io_out_1_decoded_immJ),
|
||||
.io_out_1_decoded_aluFn (_rename_io_out_1_decoded_aluFn),
|
||||
.io_out_1_decoded_memWidth (_rename_io_out_1_decoded_memWidth),
|
||||
.io_out_1_decoded_isLoad (_rename_io_out_1_decoded_isLoad),
|
||||
.io_out_1_decoded_isStore (_rename_io_out_1_decoded_isStore),
|
||||
.io_out_1_decoded_isBranch (_rename_io_out_1_decoded_isBranch),
|
||||
.io_out_1_decoded_isJal (_rename_io_out_1_decoded_isJal),
|
||||
.io_out_1_decoded_isJalr (_rename_io_out_1_decoded_isJalr),
|
||||
.io_out_1_decoded_isLui (_rename_io_out_1_decoded_isLui),
|
||||
.io_out_1_decoded_isAuipc (_rename_io_out_1_decoded_isAuipc),
|
||||
.io_out_1_decoded_isOpImm (_rename_io_out_1_decoded_isOpImm),
|
||||
.io_out_1_decoded_isWord (_rename_io_out_1_decoded_isWord),
|
||||
.io_out_1_decoded_isSystem (_rename_io_out_1_decoded_isSystem),
|
||||
.io_out_1_decoded_writesRd (_rename_io_out_1_decoded_writesRd),
|
||||
.io_out_1_decoded_illegal (_rename_io_out_1_decoded_illegal),
|
||||
.io_out_1_prs1 (_rename_io_out_1_prs1),
|
||||
.io_out_1_prs2 (_rename_io_out_1_prs2),
|
||||
.io_out_1_src1Ready (_rename_io_out_1_src1Ready),
|
||||
.io_out_1_src2Ready (_rename_io_out_1_src2Ready),
|
||||
.io_out_1_prd (_rename_io_out_1_prd),
|
||||
.io_out_1_robIdx (_rename_io_out_1_robIdx),
|
||||
.io_canAccept (_rename_io_canAccept),
|
||||
.io_wbValid_0 (_wb_0_io_wen),
|
||||
.io_wbValid_1 (_wb_1_io_wen),
|
||||
.io_wbPhys_0 (_wb_0_io_waddr),
|
||||
.io_wbPhys_1 (_wb_1_io_waddr),
|
||||
.io_completeValid_0
|
||||
(issueFire_0 & ~_issue_io_out_0_decoded_isLoad | loadRespValid),
|
||||
.io_completeValid_1 (issueFire_1 & ~_issue_io_out_1_decoded_isLoad),
|
||||
.io_completeIdx_0
|
||||
(loadRespValid ? loadPendingRob : _issue_io_out_0_robIdx),
|
||||
.io_completeIdx_1 (_issue_io_out_1_robIdx),
|
||||
.io_completeException_0
|
||||
(issueFire_0
|
||||
& (_issue_io_out_0_decoded_illegal | isEcall | isEbreak | _lq_io_violation)
|
||||
| _completeCause_0_T),
|
||||
.io_completeException_1
|
||||
(issueFire_1
|
||||
& (_issue_io_out_1_decoded_illegal | isEcall_1 | isEbreak_1 | _lq_io_violation)),
|
||||
.io_completeCause_0
|
||||
({60'h0,
|
||||
_completeCause_0_T
|
||||
? 4'hD
|
||||
: issueFire_0 & isEbreak
|
||||
? 4'h3
|
||||
: issueFire_0 & isEcall
|
||||
? 4'hB
|
||||
: {2'h0, issueFire_0 & _issue_io_out_0_decoded_illegal, 1'h0}}),
|
||||
.io_completeCause_1
|
||||
({60'h0,
|
||||
issueFire_1 & isEbreak_1
|
||||
? 4'h3
|
||||
: issueFire_1 & isEcall_1
|
||||
? 4'hB
|
||||
: {2'h0, issueFire_1 & _issue_io_out_1_decoded_illegal, 1'h0}}),
|
||||
.io_completeBadAddr_0 (_issue_io_out_0_decoded_pc),
|
||||
.io_completeBadAddr_1 (_issue_io_out_1_decoded_pc),
|
||||
.io_completeMispredict_0
|
||||
(issueFire_0 & (_completeMispredict_0_T | isMret | _completeMispredict_0_T_2)),
|
||||
.io_completeMispredict_1
|
||||
(issueFire_1 & (_completeMispredict_1_T | isMret_1 | _completeMispredict_1_T_2)),
|
||||
.io_completeRedirectPc_0
|
||||
(isEcall | isEbreak
|
||||
? _csr_io_mtvec
|
||||
: isMret
|
||||
? _csr_io_mepc
|
||||
: _issue_io_out_0_decoded_isJal
|
||||
? _issue_io_out_0_decoded_pc + _issue_io_out_0_decoded_immJ
|
||||
: _issue_io_out_0_decoded_isJalr
|
||||
? {_jalrTarget_T[63:1], 1'h0}
|
||||
: _completeMispredict_0_T_2
|
||||
? _issue_io_out_0_decoded_pc + _issue_io_out_0_decoded_immB
|
||||
: _branchRedirect_T_1),
|
||||
.io_completeRedirectPc_1
|
||||
(isEcall_1 | isEbreak_1
|
||||
? _csr_io_mtvec
|
||||
: isMret_1
|
||||
? _csr_io_mepc
|
||||
: _issue_io_out_1_decoded_isJal
|
||||
? _issue_io_out_1_decoded_pc + _issue_io_out_1_decoded_immJ
|
||||
: _issue_io_out_1_decoded_isJalr
|
||||
? {_jalrTarget_T_3[63:1], 1'h0}
|
||||
: _completeMispredict_1_T_2
|
||||
? _issue_io_out_1_decoded_pc + _issue_io_out_1_decoded_immB
|
||||
: _branchRedirect_T_6),
|
||||
.io_completeCsrValid_0
|
||||
(issueFire_0 & _issue_io_out_0_decoded_isSystem & (|_issue_io_out_0_decoded_funct3)
|
||||
& ~(_issue_io_out_0_decoded_funct3[1] & _issue_io_out_0_decoded_rs1 == 5'h0)),
|
||||
.io_completeCsrValid_1
|
||||
(issueFire_1 & _issue_io_out_1_decoded_isSystem & (|_issue_io_out_1_decoded_funct3)
|
||||
& ~(_issue_io_out_1_decoded_funct3[1] & _issue_io_out_1_decoded_rs1 == 5'h0)),
|
||||
.io_completeCsrAddr_0 (_issue_io_out_0_decoded_inst[31:20]),
|
||||
.io_completeCsrAddr_1 (_issue_io_out_1_decoded_inst[31:20]),
|
||||
.io_completeCsrCmd_0 (_issue_io_out_0_decoded_funct3),
|
||||
.io_completeCsrCmd_1 (_issue_io_out_1_decoded_funct3),
|
||||
.io_completeCsrRs1_0 (_prf_io_rdata_0),
|
||||
.io_completeCsrRs1_1 (_prf_io_rdata_2),
|
||||
.io_completeCsrZimm_0 (_issue_io_out_0_decoded_rs1),
|
||||
.io_completeCsrZimm_1 (_issue_io_out_1_decoded_rs1),
|
||||
.io_commitReady_0 (_commit_io_commitReady_0),
|
||||
.io_commitReady_1 (_commit_io_commitReady_1),
|
||||
.io_commitValid_0 (_rename_io_commitValid_0),
|
||||
.io_commitValid_1 (_rename_io_commitValid_1),
|
||||
.io_commitEntry_0_robIdx (_rename_io_commitEntry_0_robIdx),
|
||||
.io_commitEntry_0_archDest (_rename_io_commitEntry_0_archDest),
|
||||
.io_commitEntry_0_writesDest (_rename_io_commitEntry_0_writesDest),
|
||||
.io_commitEntry_0_opClass (_rename_io_commitEntry_0_opClass),
|
||||
.io_commitEntry_0_dest (_rename_io_commitEntry_0_dest),
|
||||
.io_commitEntry_0_oldDest (_rename_io_commitEntry_0_oldDest),
|
||||
.io_commitEntry_0_exception (_rename_io_commitEntry_0_exception),
|
||||
.io_commitEntry_0_exceptionCause (_rename_io_commitEntry_0_exceptionCause),
|
||||
.io_commitEntry_0_badAddr (_rename_io_commitEntry_0_badAddr),
|
||||
.io_commitEntry_0_branchMispredict (_rename_io_commitEntry_0_branchMispredict),
|
||||
.io_commitEntry_0_redirectPc (_rename_io_commitEntry_0_redirectPc),
|
||||
.io_commitEntry_0_csrValid (_rename_io_commitEntry_0_csrValid),
|
||||
.io_commitEntry_0_csrAddr (_rename_io_commitEntry_0_csrAddr),
|
||||
.io_commitEntry_0_csrCmd (_rename_io_commitEntry_0_csrCmd),
|
||||
.io_commitEntry_0_csrRs1 (_rename_io_commitEntry_0_csrRs1),
|
||||
.io_commitEntry_0_csrZimm (_rename_io_commitEntry_0_csrZimm),
|
||||
.io_commitEntry_1_robIdx (_rename_io_commitEntry_1_robIdx),
|
||||
.io_commitEntry_1_archDest (_rename_io_commitEntry_1_archDest),
|
||||
.io_commitEntry_1_writesDest (_rename_io_commitEntry_1_writesDest),
|
||||
.io_commitEntry_1_opClass (_rename_io_commitEntry_1_opClass),
|
||||
.io_commitEntry_1_dest (_rename_io_commitEntry_1_dest),
|
||||
.io_commitEntry_1_oldDest (_rename_io_commitEntry_1_oldDest),
|
||||
.io_commitEntry_1_exception (_rename_io_commitEntry_1_exception),
|
||||
.io_commitEntry_1_exceptionCause (_rename_io_commitEntry_1_exceptionCause),
|
||||
.io_commitEntry_1_badAddr (_rename_io_commitEntry_1_badAddr),
|
||||
.io_commitEntry_1_branchMispredict (_rename_io_commitEntry_1_branchMispredict),
|
||||
.io_commitEntry_1_redirectPc (_rename_io_commitEntry_1_redirectPc),
|
||||
.io_commitEntry_1_csrValid (_rename_io_commitEntry_1_csrValid),
|
||||
.io_commitEntry_1_csrAddr (_rename_io_commitEntry_1_csrAddr),
|
||||
.io_commitEntry_1_csrCmd (_rename_io_commitEntry_1_csrCmd),
|
||||
.io_commitEntry_1_csrRs1 (_rename_io_commitEntry_1_csrRs1),
|
||||
.io_commitEntry_1_csrZimm (_rename_io_commitEntry_1_csrZimm),
|
||||
.io_commitMapValid_0 (_commit_io_commitMapValid_0),
|
||||
.io_commitMapValid_1 (_commit_io_commitMapValid_1),
|
||||
.io_commitArch_0 (_commit_io_commitArch_0),
|
||||
.io_commitArch_1 (_commit_io_commitArch_1),
|
||||
.io_commitPhys_0 (_commit_io_commitPhys_0),
|
||||
.io_commitPhys_1 (_commit_io_commitPhys_1),
|
||||
.io_commitFreeOld_0 (_commit_io_freeOldPhys_0),
|
||||
.io_commitFreeOld_1 (_commit_io_freeOldPhys_1),
|
||||
.io_commitOldPhys_0 (_commit_io_oldPhys_0),
|
||||
.io_commitOldPhys_1 (_commit_io_oldPhys_1),
|
||||
.io_flush (_commit_io_flush)
|
||||
);
|
||||
IssueStage issue (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_inValid_0 (_rename_io_outValid_0),
|
||||
.io_inValid_1 (_rename_io_outValid_1),
|
||||
.io_in_0_decoded_pc (_rename_io_out_0_decoded_pc),
|
||||
.io_in_0_decoded_inst (_rename_io_out_0_decoded_inst),
|
||||
.io_in_0_decoded_rs1 (_rename_io_out_0_decoded_rs1),
|
||||
.io_in_0_decoded_rs2 (_rename_io_out_0_decoded_rs2),
|
||||
.io_in_0_decoded_funct3 (_rename_io_out_0_decoded_funct3),
|
||||
.io_in_0_decoded_immI (_rename_io_out_0_decoded_immI),
|
||||
.io_in_0_decoded_immS (_rename_io_out_0_decoded_immS),
|
||||
.io_in_0_decoded_immB (_rename_io_out_0_decoded_immB),
|
||||
.io_in_0_decoded_immU (_rename_io_out_0_decoded_immU),
|
||||
.io_in_0_decoded_immJ (_rename_io_out_0_decoded_immJ),
|
||||
.io_in_0_decoded_aluFn (_rename_io_out_0_decoded_aluFn),
|
||||
.io_in_0_decoded_memWidth (_rename_io_out_0_decoded_memWidth),
|
||||
.io_in_0_decoded_isLoad (_rename_io_out_0_decoded_isLoad),
|
||||
.io_in_0_decoded_isStore (_rename_io_out_0_decoded_isStore),
|
||||
.io_in_0_decoded_isBranch (_rename_io_out_0_decoded_isBranch),
|
||||
.io_in_0_decoded_isJal (_rename_io_out_0_decoded_isJal),
|
||||
.io_in_0_decoded_isJalr (_rename_io_out_0_decoded_isJalr),
|
||||
.io_in_0_decoded_isLui (_rename_io_out_0_decoded_isLui),
|
||||
.io_in_0_decoded_isAuipc (_rename_io_out_0_decoded_isAuipc),
|
||||
.io_in_0_decoded_isOpImm (_rename_io_out_0_decoded_isOpImm),
|
||||
.io_in_0_decoded_isWord (_rename_io_out_0_decoded_isWord),
|
||||
.io_in_0_decoded_isSystem (_rename_io_out_0_decoded_isSystem),
|
||||
.io_in_0_decoded_writesRd (_rename_io_out_0_decoded_writesRd),
|
||||
.io_in_0_decoded_illegal (_rename_io_out_0_decoded_illegal),
|
||||
.io_in_0_prs1 (_rename_io_out_0_prs1),
|
||||
.io_in_0_prs2 (_rename_io_out_0_prs2),
|
||||
.io_in_0_src1Ready (_rename_io_out_0_src1Ready),
|
||||
.io_in_0_src2Ready (_rename_io_out_0_src2Ready),
|
||||
.io_in_0_prd (_rename_io_out_0_prd),
|
||||
.io_in_0_robIdx (_rename_io_out_0_robIdx),
|
||||
.io_in_1_decoded_pc (_rename_io_out_1_decoded_pc),
|
||||
.io_in_1_decoded_inst (_rename_io_out_1_decoded_inst),
|
||||
.io_in_1_decoded_rs1 (_rename_io_out_1_decoded_rs1),
|
||||
.io_in_1_decoded_rs2 (_rename_io_out_1_decoded_rs2),
|
||||
.io_in_1_decoded_funct3 (_rename_io_out_1_decoded_funct3),
|
||||
.io_in_1_decoded_immI (_rename_io_out_1_decoded_immI),
|
||||
.io_in_1_decoded_immS (_rename_io_out_1_decoded_immS),
|
||||
.io_in_1_decoded_immB (_rename_io_out_1_decoded_immB),
|
||||
.io_in_1_decoded_immU (_rename_io_out_1_decoded_immU),
|
||||
.io_in_1_decoded_immJ (_rename_io_out_1_decoded_immJ),
|
||||
.io_in_1_decoded_aluFn (_rename_io_out_1_decoded_aluFn),
|
||||
.io_in_1_decoded_memWidth (_rename_io_out_1_decoded_memWidth),
|
||||
.io_in_1_decoded_isLoad (_rename_io_out_1_decoded_isLoad),
|
||||
.io_in_1_decoded_isStore (_rename_io_out_1_decoded_isStore),
|
||||
.io_in_1_decoded_isBranch (_rename_io_out_1_decoded_isBranch),
|
||||
.io_in_1_decoded_isJal (_rename_io_out_1_decoded_isJal),
|
||||
.io_in_1_decoded_isJalr (_rename_io_out_1_decoded_isJalr),
|
||||
.io_in_1_decoded_isLui (_rename_io_out_1_decoded_isLui),
|
||||
.io_in_1_decoded_isAuipc (_rename_io_out_1_decoded_isAuipc),
|
||||
.io_in_1_decoded_isOpImm (_rename_io_out_1_decoded_isOpImm),
|
||||
.io_in_1_decoded_isWord (_rename_io_out_1_decoded_isWord),
|
||||
.io_in_1_decoded_isSystem (_rename_io_out_1_decoded_isSystem),
|
||||
.io_in_1_decoded_writesRd (_rename_io_out_1_decoded_writesRd),
|
||||
.io_in_1_decoded_illegal (_rename_io_out_1_decoded_illegal),
|
||||
.io_in_1_prs1 (_rename_io_out_1_prs1),
|
||||
.io_in_1_prs2 (_rename_io_out_1_prs2),
|
||||
.io_in_1_src1Ready (_rename_io_out_1_src1Ready),
|
||||
.io_in_1_src2Ready (_rename_io_out_1_src2Ready),
|
||||
.io_in_1_prd (_rename_io_out_1_prd),
|
||||
.io_in_1_robIdx (_rename_io_out_1_robIdx),
|
||||
.io_inReady_0 (_issue_io_inReady_0),
|
||||
.io_inReady_1 (_issue_io_inReady_1),
|
||||
.io_wakeup_0_valid (wakeupReg_0_valid),
|
||||
.io_wakeup_0_phys (wakeupReg_0_phys),
|
||||
.io_wakeup_1_valid (wakeupReg_1_valid),
|
||||
.io_wakeup_1_phys (wakeupReg_1_phys),
|
||||
.io_outValid_0 (_issue_io_outValid_0),
|
||||
.io_outValid_1 (_issue_io_outValid_1),
|
||||
.io_out_0_decoded_pc (_issue_io_out_0_decoded_pc),
|
||||
.io_out_0_decoded_inst (_issue_io_out_0_decoded_inst),
|
||||
.io_out_0_decoded_rs1 (_issue_io_out_0_decoded_rs1),
|
||||
.io_out_0_decoded_funct3 (_issue_io_out_0_decoded_funct3),
|
||||
.io_out_0_decoded_immI (_issue_io_out_0_decoded_immI),
|
||||
.io_out_0_decoded_immS (_issue_io_out_0_decoded_immS),
|
||||
.io_out_0_decoded_immB (_issue_io_out_0_decoded_immB),
|
||||
.io_out_0_decoded_immU (_issue_io_out_0_decoded_immU),
|
||||
.io_out_0_decoded_immJ (_issue_io_out_0_decoded_immJ),
|
||||
.io_out_0_decoded_aluFn (_issue_io_out_0_decoded_aluFn),
|
||||
.io_out_0_decoded_memWidth (_issue_io_out_0_decoded_memWidth),
|
||||
.io_out_0_decoded_isLoad (_issue_io_out_0_decoded_isLoad),
|
||||
.io_out_0_decoded_isStore (_issue_io_out_0_decoded_isStore),
|
||||
.io_out_0_decoded_isBranch (_issue_io_out_0_decoded_isBranch),
|
||||
.io_out_0_decoded_isJal (_issue_io_out_0_decoded_isJal),
|
||||
.io_out_0_decoded_isJalr (_issue_io_out_0_decoded_isJalr),
|
||||
.io_out_0_decoded_isLui (_issue_io_out_0_decoded_isLui),
|
||||
.io_out_0_decoded_isAuipc (_issue_io_out_0_decoded_isAuipc),
|
||||
.io_out_0_decoded_isOpImm (_issue_io_out_0_decoded_isOpImm),
|
||||
.io_out_0_decoded_isWord (_issue_io_out_0_decoded_isWord),
|
||||
.io_out_0_decoded_isSystem (_issue_io_out_0_decoded_isSystem),
|
||||
.io_out_0_decoded_writesRd (_issue_io_out_0_decoded_writesRd),
|
||||
.io_out_0_decoded_illegal (_issue_io_out_0_decoded_illegal),
|
||||
.io_out_0_prs1 (_issue_io_out_0_prs1),
|
||||
.io_out_0_prs2 (_issue_io_out_0_prs2),
|
||||
.io_out_0_prd (_issue_io_out_0_prd),
|
||||
.io_out_0_robIdx (_issue_io_out_0_robIdx),
|
||||
.io_out_1_decoded_pc (_issue_io_out_1_decoded_pc),
|
||||
.io_out_1_decoded_inst (_issue_io_out_1_decoded_inst),
|
||||
.io_out_1_decoded_rs1 (_issue_io_out_1_decoded_rs1),
|
||||
.io_out_1_decoded_funct3 (_issue_io_out_1_decoded_funct3),
|
||||
.io_out_1_decoded_immI (_issue_io_out_1_decoded_immI),
|
||||
.io_out_1_decoded_immS (_issue_io_out_1_decoded_immS),
|
||||
.io_out_1_decoded_immB (_issue_io_out_1_decoded_immB),
|
||||
.io_out_1_decoded_immU (_issue_io_out_1_decoded_immU),
|
||||
.io_out_1_decoded_immJ (_issue_io_out_1_decoded_immJ),
|
||||
.io_out_1_decoded_aluFn (_issue_io_out_1_decoded_aluFn),
|
||||
.io_out_1_decoded_memWidth (_issue_io_out_1_decoded_memWidth),
|
||||
.io_out_1_decoded_isLoad (_issue_io_out_1_decoded_isLoad),
|
||||
.io_out_1_decoded_isStore (_issue_io_out_1_decoded_isStore),
|
||||
.io_out_1_decoded_isBranch (_issue_io_out_1_decoded_isBranch),
|
||||
.io_out_1_decoded_isJal (_issue_io_out_1_decoded_isJal),
|
||||
.io_out_1_decoded_isJalr (_issue_io_out_1_decoded_isJalr),
|
||||
.io_out_1_decoded_isLui (_issue_io_out_1_decoded_isLui),
|
||||
.io_out_1_decoded_isAuipc (_issue_io_out_1_decoded_isAuipc),
|
||||
.io_out_1_decoded_isOpImm (_issue_io_out_1_decoded_isOpImm),
|
||||
.io_out_1_decoded_isWord (_issue_io_out_1_decoded_isWord),
|
||||
.io_out_1_decoded_isSystem (_issue_io_out_1_decoded_isSystem),
|
||||
.io_out_1_decoded_writesRd (_issue_io_out_1_decoded_writesRd),
|
||||
.io_out_1_decoded_illegal (_issue_io_out_1_decoded_illegal),
|
||||
.io_out_1_prs1 (_issue_io_out_1_prs1),
|
||||
.io_out_1_prs2 (_issue_io_out_1_prs2),
|
||||
.io_out_1_prd (_issue_io_out_1_prd),
|
||||
.io_out_1_robIdx (_issue_io_out_1_robIdx),
|
||||
.io_outReady_0 (issue_io_outReady_0),
|
||||
.io_outReady_1 (issue_io_outReady_1),
|
||||
.io_flush (_commit_io_flush)
|
||||
);
|
||||
PhysicalRegFile prf (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_raddr_0 (_issue_io_out_0_prs1),
|
||||
.io_raddr_1 (_issue_io_out_0_prs2),
|
||||
.io_raddr_2 (_issue_io_out_1_prs1),
|
||||
.io_raddr_3 (_issue_io_out_1_prs2),
|
||||
.io_rdata_0 (_prf_io_rdata_0),
|
||||
.io_rdata_1 (_prf_io_rdata_1),
|
||||
.io_rdata_2 (_prf_io_rdata_2),
|
||||
.io_rdata_3 (_prf_io_rdata_3),
|
||||
.io_wen_0 (_wb_0_io_wen),
|
||||
.io_wen_1 (_wb_1_io_wen),
|
||||
.io_waddr_0 (_wb_0_io_waddr),
|
||||
.io_waddr_1 (_wb_1_io_waddr),
|
||||
.io_wdata_0 (_wb_0_io_wdata),
|
||||
.io_wdata_1 (_wb_1_io_wdata)
|
||||
);
|
||||
ExecStage exec_0 (
|
||||
.io_inValid (issueFire_0),
|
||||
.io_in_funct3 (_issue_io_out_0_decoded_funct3),
|
||||
.io_in_aluFn (_issue_io_out_0_decoded_aluFn),
|
||||
.io_in_isWord (_issue_io_out_0_decoded_isWord),
|
||||
.io_src1 (_prf_io_rdata_0),
|
||||
.io_src2
|
||||
(_issue_io_out_0_decoded_isOpImm | _issue_io_out_0_decoded_isLoad
|
||||
| _issue_io_out_0_decoded_isJalr
|
||||
? _issue_io_out_0_decoded_immI
|
||||
: _prf_io_rdata_1),
|
||||
.io_outValid (_exec_0_io_outValid),
|
||||
.io_result (_exec_0_io_result),
|
||||
.io_branchTaken (_exec_0_io_branchTaken)
|
||||
);
|
||||
ExecStage exec_1 (
|
||||
.io_inValid (issueFire_1),
|
||||
.io_in_funct3 (_issue_io_out_1_decoded_funct3),
|
||||
.io_in_aluFn (_issue_io_out_1_decoded_aluFn),
|
||||
.io_in_isWord (_issue_io_out_1_decoded_isWord),
|
||||
.io_src1 (_prf_io_rdata_2),
|
||||
.io_src2
|
||||
(_issue_io_out_1_decoded_isOpImm | _issue_io_out_1_decoded_isLoad
|
||||
| _issue_io_out_1_decoded_isJalr
|
||||
? _issue_io_out_1_decoded_immI
|
||||
: _prf_io_rdata_3),
|
||||
.io_outValid (_exec_1_io_outValid),
|
||||
.io_result (_exec_1_io_result),
|
||||
.io_branchTaken (_exec_1_io_branchTaken)
|
||||
);
|
||||
WriteBackStage wb_0 (
|
||||
.io_valid
|
||||
(_exec_0_io_outValid & _issue_io_out_0_decoded_writesRd
|
||||
& ~_issue_io_out_0_decoded_isLoad | loadRespValid),
|
||||
.io_physDest (loadRespValid ? loadPendingPhys : _issue_io_out_0_prd),
|
||||
.io_data
|
||||
(loadRespValid
|
||||
? _lsu_io_respData
|
||||
: _issue_io_out_0_decoded_isLui
|
||||
? _issue_io_out_0_decoded_immU
|
||||
: _issue_io_out_0_decoded_isAuipc
|
||||
? _issue_io_out_0_decoded_pc + _issue_io_out_0_decoded_immU
|
||||
: _completeMispredict_0_T
|
||||
? _branchRedirect_T_1
|
||||
: _issue_io_out_0_decoded_isSystem
|
||||
& (|_issue_io_out_0_decoded_funct3)
|
||||
? _csr_io_rdata
|
||||
: _exec_0_io_result),
|
||||
.io_wen (_wb_0_io_wen),
|
||||
.io_waddr (_wb_0_io_waddr),
|
||||
.io_wdata (_wb_0_io_wdata)
|
||||
);
|
||||
WriteBackStage wb_1 (
|
||||
.io_valid
|
||||
(_exec_1_io_outValid & _issue_io_out_1_decoded_writesRd
|
||||
& ~_issue_io_out_1_decoded_isLoad),
|
||||
.io_physDest (_issue_io_out_1_prd),
|
||||
.io_data
|
||||
(_issue_io_out_1_decoded_isLui
|
||||
? _issue_io_out_1_decoded_immU
|
||||
: _issue_io_out_1_decoded_isAuipc
|
||||
? _issue_io_out_1_decoded_pc + _issue_io_out_1_decoded_immU
|
||||
: _completeMispredict_1_T
|
||||
? _branchRedirect_T_6
|
||||
: _issue_io_out_1_decoded_isSystem & (|_issue_io_out_1_decoded_funct3)
|
||||
? _csr_io_rdata
|
||||
: _exec_1_io_result),
|
||||
.io_wen (_wb_1_io_wen),
|
||||
.io_waddr (_wb_1_io_waddr),
|
||||
.io_wdata (_wb_1_io_wdata)
|
||||
);
|
||||
CommitStage commit (
|
||||
.io_robValid_0 (_rename_io_commitValid_0),
|
||||
.io_robValid_1 (_rename_io_commitValid_1),
|
||||
.io_robEntry_0_archDest (_rename_io_commitEntry_0_archDest),
|
||||
.io_robEntry_0_writesDest (_rename_io_commitEntry_0_writesDest),
|
||||
.io_robEntry_0_opClass (_rename_io_commitEntry_0_opClass),
|
||||
.io_robEntry_0_dest (_rename_io_commitEntry_0_dest),
|
||||
.io_robEntry_0_oldDest (_rename_io_commitEntry_0_oldDest),
|
||||
.io_robEntry_0_exception (_rename_io_commitEntry_0_exception),
|
||||
.io_robEntry_0_exceptionCause (_rename_io_commitEntry_0_exceptionCause),
|
||||
.io_robEntry_0_badAddr (_rename_io_commitEntry_0_badAddr),
|
||||
.io_robEntry_0_branchMispredict (_rename_io_commitEntry_0_branchMispredict),
|
||||
.io_robEntry_0_redirectPc (_rename_io_commitEntry_0_redirectPc),
|
||||
.io_robEntry_0_csrValid (_rename_io_commitEntry_0_csrValid),
|
||||
.io_robEntry_1_archDest (_rename_io_commitEntry_1_archDest),
|
||||
.io_robEntry_1_writesDest (_rename_io_commitEntry_1_writesDest),
|
||||
.io_robEntry_1_dest (_rename_io_commitEntry_1_dest),
|
||||
.io_robEntry_1_oldDest (_rename_io_commitEntry_1_oldDest),
|
||||
.io_robEntry_1_exception (_rename_io_commitEntry_1_exception),
|
||||
.io_robEntry_1_exceptionCause (_rename_io_commitEntry_1_exceptionCause),
|
||||
.io_robEntry_1_badAddr (_rename_io_commitEntry_1_badAddr),
|
||||
.io_robEntry_1_branchMispredict (_rename_io_commitEntry_1_branchMispredict),
|
||||
.io_robEntry_1_redirectPc (_rename_io_commitEntry_1_redirectPc),
|
||||
.io_robEntry_1_csrValid (_rename_io_commitEntry_1_csrValid),
|
||||
.io_commitReady_0 (_commit_io_commitReady_0),
|
||||
.io_commitReady_1 (_commit_io_commitReady_1),
|
||||
.io_freeOldPhys_0 (_commit_io_freeOldPhys_0),
|
||||
.io_freeOldPhys_1 (_commit_io_freeOldPhys_1),
|
||||
.io_oldPhys_0 (_commit_io_oldPhys_0),
|
||||
.io_oldPhys_1 (_commit_io_oldPhys_1),
|
||||
.io_commitMapValid_0 (_commit_io_commitMapValid_0),
|
||||
.io_commitMapValid_1 (_commit_io_commitMapValid_1),
|
||||
.io_commitArch_0 (_commit_io_commitArch_0),
|
||||
.io_commitArch_1 (_commit_io_commitArch_1),
|
||||
.io_commitPhys_0 (_commit_io_commitPhys_0),
|
||||
.io_commitPhys_1 (_commit_io_commitPhys_1),
|
||||
.io_flush (_commit_io_flush),
|
||||
.io_redirectPc (_commit_io_redirectPc),
|
||||
.io_exception (_commit_io_exception),
|
||||
.io_exceptionCause (_commit_io_exceptionCause),
|
||||
.io_badAddr (_commit_io_badAddr)
|
||||
);
|
||||
LoadQueue lq (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_enqValid (loadEnq),
|
||||
.io_enqRobIdx (sq_io_enqRobIdx),
|
||||
.io_enqIdx (_lq_io_enqIdx),
|
||||
.io_addrValid (loadEnq),
|
||||
.io_addrIdx (_lq_io_enqIdx),
|
||||
.io_addr (_memAddr_T_1),
|
||||
.io_size (sq_io_size),
|
||||
.io_complete (loadRespValid),
|
||||
.io_completeIdx (loadPendingLq),
|
||||
.io_storeAddrValid (storeEnq),
|
||||
.io_storeRobIdx (sq_io_enqRobIdx),
|
||||
.io_storeAddr (_memAddr_T_1),
|
||||
.io_storeSize (sq_io_size),
|
||||
.io_violation (_lq_io_violation),
|
||||
.io_flush (_commit_io_flush)
|
||||
);
|
||||
StoreQueue sq (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_enqValid (storeEnq),
|
||||
.io_enqRobIdx (sq_io_enqRobIdx),
|
||||
.io_enqIdx (_sq_io_enqIdx),
|
||||
.io_writeAddr (storeEnq),
|
||||
.io_writeData (storeEnq),
|
||||
.io_writeIdx (_sq_io_enqIdx),
|
||||
.io_addr (_memAddr_T_1),
|
||||
.io_data (memIssue_0 ? _prf_io_rdata_1 : _prf_io_rdata_3),
|
||||
.io_size (sq_io_size),
|
||||
.io_loadAddr (_memAddr_T_1),
|
||||
.io_loadRobIdx (sq_io_enqRobIdx),
|
||||
.io_forwardValid (_sq_io_forwardValid),
|
||||
.io_commitValid
|
||||
(commitStore0 | _commitCsr1_T & _rename_io_commitEntry_1_opClass == 4'h4),
|
||||
.io_commitRobIdx
|
||||
(commitStore0 ? _rename_io_commitEntry_0_robIdx : _rename_io_commitEntry_1_robIdx),
|
||||
.io_drainValid (_sq_io_drainValid),
|
||||
.io_drain_addr (_sq_io_drain_addr),
|
||||
.io_drain_data (_sq_io_drain_data),
|
||||
.io_drain_size (_sq_io_drain_size),
|
||||
.io_drainReady (~lsuLoadReq & _lsu_io_reqReady),
|
||||
.io_flush (_commit_io_flush)
|
||||
);
|
||||
LSU lsu (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_reqValid (lsuLoadReq | _sq_io_drainValid),
|
||||
.io_req_addr
|
||||
(lsuLoadReq ? _memAddr_T_1 : _sq_io_drainValid ? _sq_io_drain_addr : 64'h0),
|
||||
.io_req_data (lsuLoadReq | ~_sq_io_drainValid ? 64'h0 : _sq_io_drain_data),
|
||||
.io_req_isStore (~lsuLoadReq & _sq_io_drainValid),
|
||||
.io_req_size
|
||||
(lsuLoadReq ? sq_io_size : _sq_io_drainValid ? _sq_io_drain_size : 3'h0),
|
||||
.io_reqReady (_lsu_io_reqReady),
|
||||
.io_satp (_csr_io_satp),
|
||||
.io_dmemReqValid (io_dmemReqValid),
|
||||
.io_dmemReq_addr (io_dmemReq_addr),
|
||||
.io_dmemReq_data (io_dmemReq_data),
|
||||
.io_dmemReq_isStore (io_dmemReq_isStore),
|
||||
.io_dmemReq_size (io_dmemReq_size),
|
||||
.io_dmemRespValid (io_dmemRespValid),
|
||||
.io_dmemRespData (io_dmemRespData),
|
||||
.io_respValid (_lsu_io_respValid),
|
||||
.io_respData (_lsu_io_respData),
|
||||
.io_pageFault (_lsu_io_pageFault)
|
||||
);
|
||||
CSRFile csr (
|
||||
.clock (clock),
|
||||
.reset (reset),
|
||||
.io_cmd_valid (commitCsr0 | _commitCsr1_T & _rename_io_commitEntry_1_csrValid),
|
||||
.io_cmd_addr
|
||||
(commitCsr0 ? _rename_io_commitEntry_0_csrAddr : _rename_io_commitEntry_1_csrAddr),
|
||||
.io_cmd_cmd
|
||||
(commitCsr0 ? _rename_io_commitEntry_0_csrCmd : _rename_io_commitEntry_1_csrCmd),
|
||||
.io_cmd_rs1
|
||||
(commitCsr0 ? _rename_io_commitEntry_0_csrRs1 : _rename_io_commitEntry_1_csrRs1),
|
||||
.io_cmd_zimm
|
||||
(commitCsr0 ? _rename_io_commitEntry_0_csrZimm : _rename_io_commitEntry_1_csrZimm),
|
||||
.io_readAddr
|
||||
(csrReadReq_0 & issue_io_outReady_0
|
||||
? _issue_io_out_0_decoded_inst[31:20]
|
||||
: _issue_io_out_1_decoded_inst[31:20]),
|
||||
.io_rdata (_csr_io_rdata),
|
||||
.io_trap (_commit_io_flush & _commit_io_exception),
|
||||
.io_trapPc (_commit_io_badAddr),
|
||||
.io_trapCause (_commit_io_exceptionCause),
|
||||
.io_satp (_csr_io_satp),
|
||||
.io_mtvec (_csr_io_mtvec),
|
||||
.io_mepc (_csr_io_mepc)
|
||||
);
|
||||
assign io_decodeReady =
|
||||
_rename_io_canAccept & (&{_issue_io_inReady_1, _issue_io_inReady_0});
|
||||
assign io_flush = _commit_io_flush;
|
||||
assign io_redirectPc = _commit_io_exception ? _csr_io_mtvec : _commit_io_redirectPc;
|
||||
endmodule
|
||||
|
||||
102
generated-ooo/PageTableWalker.sv
Normal file
102
generated-ooo/PageTableWalker.sv
Normal file
@@ -0,0 +1,102 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module PageTableWalker(
|
||||
input clock,
|
||||
reset,
|
||||
io_reqValid,
|
||||
input [26:0] io_reqVpn,
|
||||
input io_isStore,
|
||||
input [63:0] io_satp,
|
||||
output io_memReq_valid,
|
||||
output [63:0] io_memReq_addr,
|
||||
input io_memResp_valid,
|
||||
input [63:0] io_memResp_data,
|
||||
output io_respValid,
|
||||
io_refill_valid,
|
||||
output [26:0] io_refill_vpn,
|
||||
output [43:0] io_refill_ppn,
|
||||
output [7:0] io_refill_flags,
|
||||
output io_pageFault
|
||||
);
|
||||
|
||||
reg [2:0] state;
|
||||
reg [26:0] vpnReg;
|
||||
reg isStoreReg;
|
||||
reg walkFault;
|
||||
reg [43:0] nextPpn;
|
||||
wire _io_memReq_addr_T = state == 3'h1;
|
||||
wire _io_memReq_addr_T_1 = state == 3'h2;
|
||||
reg [43:0] curPpn;
|
||||
wire _io_memReq_valid_T_3 = state == 3'h3;
|
||||
wire io_respValid_0 = state == 3'h4;
|
||||
always @(posedge clock) begin
|
||||
automatic logic pteIsLeaf;
|
||||
automatic logic invalidPte;
|
||||
automatic logic _GEN;
|
||||
automatic logic _GEN_0;
|
||||
automatic logic _GEN_1;
|
||||
automatic logic _GEN_2;
|
||||
pteIsLeaf = io_memResp_data[1] | io_memResp_data[3];
|
||||
invalidPte = ~(io_memResp_data[0]) | ~(io_memResp_data[1]) & io_memResp_data[2];
|
||||
_GEN = state == 3'h0;
|
||||
_GEN_0 = _io_memReq_addr_T | _io_memReq_addr_T_1;
|
||||
_GEN_1 = (_GEN_0 | _io_memReq_valid_T_3) & io_memResp_valid;
|
||||
_GEN_2 = invalidPte | pteIsLeaf;
|
||||
if (reset) begin
|
||||
state <= 3'h0;
|
||||
walkFault <= 1'h0;
|
||||
end
|
||||
else begin
|
||||
if (_GEN) begin
|
||||
if (io_reqValid)
|
||||
state <= 3'h1;
|
||||
end
|
||||
else if (_GEN_1)
|
||||
state <=
|
||||
_GEN_2 ? 3'h4 : _io_memReq_addr_T ? 3'h2 : _io_memReq_addr_T_1 ? 3'h3 : 3'h4;
|
||||
else if (io_respValid_0)
|
||||
state <= 3'h0;
|
||||
walkFault <=
|
||||
~_GEN
|
||||
& (_GEN_1
|
||||
? invalidPte
|
||||
| (pteIsLeaf
|
||||
? (isStoreReg
|
||||
? ~(io_memResp_data[2]) | ~(io_memResp_data[7])
|
||||
: ~(io_memResp_data[1])) | ~(io_memResp_data[6]) | walkFault
|
||||
: ~_GEN_0 | walkFault)
|
||||
: walkFault);
|
||||
end
|
||||
if (_GEN & io_reqValid) begin
|
||||
vpnReg <= io_reqVpn;
|
||||
isStoreReg <= io_isStore;
|
||||
end
|
||||
if (_GEN | ~_GEN_1 | invalidPte | ~pteIsLeaf) begin
|
||||
end
|
||||
else begin
|
||||
automatic logic [1:0] level =
|
||||
_io_memReq_addr_T ? 2'h2 : {1'h0, _io_memReq_addr_T_1};
|
||||
nextPpn <=
|
||||
{io_memResp_data[53:28],
|
||||
level[1] ? vpnReg[17:9] : io_memResp_data[27:19],
|
||||
level == 2'h0 ? io_memResp_data[18:10] : vpnReg[8:0]};
|
||||
end
|
||||
if (_GEN | ~_GEN_1 | _GEN_2) begin
|
||||
end
|
||||
else
|
||||
curPpn <= io_memResp_data[53:10];
|
||||
end // always @(posedge)
|
||||
assign io_memReq_valid = _io_memReq_addr_T | _io_memReq_addr_T_1 | _io_memReq_valid_T_3;
|
||||
assign io_memReq_addr =
|
||||
{8'h0,
|
||||
_io_memReq_addr_T
|
||||
? {io_satp[43:0], vpnReg[26:18]}
|
||||
: {curPpn, _io_memReq_addr_T_1 ? vpnReg[17:9] : vpnReg[8:0]},
|
||||
3'h0};
|
||||
assign io_respValid = io_respValid_0;
|
||||
assign io_refill_valid = io_respValid_0 & ~walkFault;
|
||||
assign io_refill_vpn = vpnReg;
|
||||
assign io_refill_ppn = nextPpn;
|
||||
assign io_refill_flags = io_memResp_data[7:0];
|
||||
assign io_pageFault = walkFault;
|
||||
endmodule
|
||||
|
||||
484
generated-ooo/PhysicalRegFile.sv
Normal file
484
generated-ooo/PhysicalRegFile.sv
Normal file
@@ -0,0 +1,484 @@
|
||||
// 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
|
||||
|
||||
9720
generated-ooo/ROB.sv
Normal file
9720
generated-ooo/ROB.sv
Normal file
File diff suppressed because it is too large
Load Diff
1019
generated-ooo/RenameStage.sv
Normal file
1019
generated-ooo/RenameStage.sv
Normal file
File diff suppressed because it is too large
Load Diff
565
generated-ooo/RenameTable.sv
Normal file
565
generated-ooo/RenameTable.sv
Normal file
@@ -0,0 +1,565 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module RenameTable(
|
||||
input clock,
|
||||
reset,
|
||||
input [4:0] io_rs1_0,
|
||||
io_rs1_1,
|
||||
io_rs2_0,
|
||||
io_rs2_1,
|
||||
io_rd_0,
|
||||
io_rd_1,
|
||||
input [5:0] io_newPhys_0,
|
||||
io_newPhys_1,
|
||||
input io_wen_0,
|
||||
io_wen_1,
|
||||
output [5:0] io_prs1_0,
|
||||
io_prs1_1,
|
||||
io_prs2_0,
|
||||
io_prs2_1,
|
||||
io_oldPrd_0,
|
||||
io_oldPrd_1,
|
||||
input io_commitWen_0,
|
||||
io_commitWen_1,
|
||||
input [4:0] io_commitRd_0,
|
||||
io_commitRd_1,
|
||||
input [5:0] io_commitPhys_0,
|
||||
io_commitPhys_1,
|
||||
input io_recover,
|
||||
output [5:0] io_committedPhys_0,
|
||||
io_committedPhys_1,
|
||||
io_committedPhys_2,
|
||||
io_committedPhys_3,
|
||||
io_committedPhys_4,
|
||||
io_committedPhys_5,
|
||||
io_committedPhys_6,
|
||||
io_committedPhys_7,
|
||||
io_committedPhys_8,
|
||||
io_committedPhys_9,
|
||||
io_committedPhys_10,
|
||||
io_committedPhys_11,
|
||||
io_committedPhys_12,
|
||||
io_committedPhys_13,
|
||||
io_committedPhys_14,
|
||||
io_committedPhys_15,
|
||||
io_committedPhys_16,
|
||||
io_committedPhys_17,
|
||||
io_committedPhys_18,
|
||||
io_committedPhys_19,
|
||||
io_committedPhys_20,
|
||||
io_committedPhys_21,
|
||||
io_committedPhys_22,
|
||||
io_committedPhys_23,
|
||||
io_committedPhys_24,
|
||||
io_committedPhys_25,
|
||||
io_committedPhys_26,
|
||||
io_committedPhys_27,
|
||||
io_committedPhys_28,
|
||||
io_committedPhys_29,
|
||||
io_committedPhys_30,
|
||||
io_committedPhys_31
|
||||
);
|
||||
|
||||
reg [5:0] speculative_0;
|
||||
reg [5:0] speculative_1;
|
||||
reg [5:0] speculative_2;
|
||||
reg [5:0] speculative_3;
|
||||
reg [5:0] speculative_4;
|
||||
reg [5:0] speculative_5;
|
||||
reg [5:0] speculative_6;
|
||||
reg [5:0] speculative_7;
|
||||
reg [5:0] speculative_8;
|
||||
reg [5:0] speculative_9;
|
||||
reg [5:0] speculative_10;
|
||||
reg [5:0] speculative_11;
|
||||
reg [5:0] speculative_12;
|
||||
reg [5:0] speculative_13;
|
||||
reg [5:0] speculative_14;
|
||||
reg [5:0] speculative_15;
|
||||
reg [5:0] speculative_16;
|
||||
reg [5:0] speculative_17;
|
||||
reg [5:0] speculative_18;
|
||||
reg [5:0] speculative_19;
|
||||
reg [5:0] speculative_20;
|
||||
reg [5:0] speculative_21;
|
||||
reg [5:0] speculative_22;
|
||||
reg [5:0] speculative_23;
|
||||
reg [5:0] speculative_24;
|
||||
reg [5:0] speculative_25;
|
||||
reg [5:0] speculative_26;
|
||||
reg [5:0] speculative_27;
|
||||
reg [5:0] speculative_28;
|
||||
reg [5:0] speculative_29;
|
||||
reg [5:0] speculative_30;
|
||||
reg [5:0] speculative_31;
|
||||
reg [5:0] committed_0;
|
||||
reg [5:0] committed_1;
|
||||
reg [5:0] committed_2;
|
||||
reg [5:0] committed_3;
|
||||
reg [5:0] committed_4;
|
||||
reg [5:0] committed_5;
|
||||
reg [5:0] committed_6;
|
||||
reg [5:0] committed_7;
|
||||
reg [5:0] committed_8;
|
||||
reg [5:0] committed_9;
|
||||
reg [5:0] committed_10;
|
||||
reg [5:0] committed_11;
|
||||
reg [5:0] committed_12;
|
||||
reg [5:0] committed_13;
|
||||
reg [5:0] committed_14;
|
||||
reg [5:0] committed_15;
|
||||
reg [5:0] committed_16;
|
||||
reg [5:0] committed_17;
|
||||
reg [5:0] committed_18;
|
||||
reg [5:0] committed_19;
|
||||
reg [5:0] committed_20;
|
||||
reg [5:0] committed_21;
|
||||
reg [5:0] committed_22;
|
||||
reg [5:0] committed_23;
|
||||
reg [5:0] committed_24;
|
||||
reg [5:0] committed_25;
|
||||
reg [5:0] committed_26;
|
||||
reg [5:0] committed_27;
|
||||
reg [5:0] committed_28;
|
||||
reg [5:0] committed_29;
|
||||
reg [5:0] committed_30;
|
||||
reg [5:0] committed_31;
|
||||
wire [31:0][5:0] _GEN =
|
||||
{{speculative_31},
|
||||
{speculative_30},
|
||||
{speculative_29},
|
||||
{speculative_28},
|
||||
{speculative_27},
|
||||
{speculative_26},
|
||||
{speculative_25},
|
||||
{speculative_24},
|
||||
{speculative_23},
|
||||
{speculative_22},
|
||||
{speculative_21},
|
||||
{speculative_20},
|
||||
{speculative_19},
|
||||
{speculative_18},
|
||||
{speculative_17},
|
||||
{speculative_16},
|
||||
{speculative_15},
|
||||
{speculative_14},
|
||||
{speculative_13},
|
||||
{speculative_12},
|
||||
{speculative_11},
|
||||
{speculative_10},
|
||||
{speculative_9},
|
||||
{speculative_8},
|
||||
{speculative_7},
|
||||
{speculative_6},
|
||||
{speculative_5},
|
||||
{speculative_4},
|
||||
{speculative_3},
|
||||
{speculative_2},
|
||||
{speculative_1},
|
||||
{speculative_0}};
|
||||
wire slot0Writes = io_wen_0 & (|io_rd_0);
|
||||
always @(posedge clock) begin
|
||||
if (reset) begin
|
||||
speculative_0 <= 6'h0;
|
||||
speculative_1 <= 6'h1;
|
||||
speculative_2 <= 6'h2;
|
||||
speculative_3 <= 6'h3;
|
||||
speculative_4 <= 6'h4;
|
||||
speculative_5 <= 6'h5;
|
||||
speculative_6 <= 6'h6;
|
||||
speculative_7 <= 6'h7;
|
||||
speculative_8 <= 6'h8;
|
||||
speculative_9 <= 6'h9;
|
||||
speculative_10 <= 6'hA;
|
||||
speculative_11 <= 6'hB;
|
||||
speculative_12 <= 6'hC;
|
||||
speculative_13 <= 6'hD;
|
||||
speculative_14 <= 6'hE;
|
||||
speculative_15 <= 6'hF;
|
||||
speculative_16 <= 6'h10;
|
||||
speculative_17 <= 6'h11;
|
||||
speculative_18 <= 6'h12;
|
||||
speculative_19 <= 6'h13;
|
||||
speculative_20 <= 6'h14;
|
||||
speculative_21 <= 6'h15;
|
||||
speculative_22 <= 6'h16;
|
||||
speculative_23 <= 6'h17;
|
||||
speculative_24 <= 6'h18;
|
||||
speculative_25 <= 6'h19;
|
||||
speculative_26 <= 6'h1A;
|
||||
speculative_27 <= 6'h1B;
|
||||
speculative_28 <= 6'h1C;
|
||||
speculative_29 <= 6'h1D;
|
||||
speculative_30 <= 6'h1E;
|
||||
speculative_31 <= 6'h1F;
|
||||
committed_0 <= 6'h0;
|
||||
committed_1 <= 6'h1;
|
||||
committed_2 <= 6'h2;
|
||||
committed_3 <= 6'h3;
|
||||
committed_4 <= 6'h4;
|
||||
committed_5 <= 6'h5;
|
||||
committed_6 <= 6'h6;
|
||||
committed_7 <= 6'h7;
|
||||
committed_8 <= 6'h8;
|
||||
committed_9 <= 6'h9;
|
||||
committed_10 <= 6'hA;
|
||||
committed_11 <= 6'hB;
|
||||
committed_12 <= 6'hC;
|
||||
committed_13 <= 6'hD;
|
||||
committed_14 <= 6'hE;
|
||||
committed_15 <= 6'hF;
|
||||
committed_16 <= 6'h10;
|
||||
committed_17 <= 6'h11;
|
||||
committed_18 <= 6'h12;
|
||||
committed_19 <= 6'h13;
|
||||
committed_20 <= 6'h14;
|
||||
committed_21 <= 6'h15;
|
||||
committed_22 <= 6'h16;
|
||||
committed_23 <= 6'h17;
|
||||
committed_24 <= 6'h18;
|
||||
committed_25 <= 6'h19;
|
||||
committed_26 <= 6'h1A;
|
||||
committed_27 <= 6'h1B;
|
||||
committed_28 <= 6'h1C;
|
||||
committed_29 <= 6'h1D;
|
||||
committed_30 <= 6'h1E;
|
||||
committed_31 <= 6'h1F;
|
||||
end
|
||||
else if (io_recover) begin
|
||||
speculative_0 <= committed_0;
|
||||
speculative_1 <= committed_1;
|
||||
speculative_2 <= committed_2;
|
||||
speculative_3 <= committed_3;
|
||||
speculative_4 <= committed_4;
|
||||
speculative_5 <= committed_5;
|
||||
speculative_6 <= committed_6;
|
||||
speculative_7 <= committed_7;
|
||||
speculative_8 <= committed_8;
|
||||
speculative_9 <= committed_9;
|
||||
speculative_10 <= committed_10;
|
||||
speculative_11 <= committed_11;
|
||||
speculative_12 <= committed_12;
|
||||
speculative_13 <= committed_13;
|
||||
speculative_14 <= committed_14;
|
||||
speculative_15 <= committed_15;
|
||||
speculative_16 <= committed_16;
|
||||
speculative_17 <= committed_17;
|
||||
speculative_18 <= committed_18;
|
||||
speculative_19 <= committed_19;
|
||||
speculative_20 <= committed_20;
|
||||
speculative_21 <= committed_21;
|
||||
speculative_22 <= committed_22;
|
||||
speculative_23 <= committed_23;
|
||||
speculative_24 <= committed_24;
|
||||
speculative_25 <= committed_25;
|
||||
speculative_26 <= committed_26;
|
||||
speculative_27 <= committed_27;
|
||||
speculative_28 <= committed_28;
|
||||
speculative_29 <= committed_29;
|
||||
speculative_30 <= committed_30;
|
||||
speculative_31 <= committed_31;
|
||||
end
|
||||
else begin
|
||||
automatic logic _GEN_0;
|
||||
automatic logic _GEN_1;
|
||||
automatic logic _GEN_2 = io_wen_1 & (|io_rd_1);
|
||||
automatic logic _GEN_3 = io_commitWen_1 & (|io_commitRd_1);
|
||||
_GEN_0 = io_wen_0 & (|io_rd_0);
|
||||
_GEN_1 = io_commitWen_0 & (|io_commitRd_0);
|
||||
if (_GEN_2 & ~(|io_rd_1))
|
||||
speculative_0 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h0)
|
||||
speculative_0 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h1)
|
||||
speculative_1 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h1)
|
||||
speculative_1 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h2)
|
||||
speculative_2 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h2)
|
||||
speculative_2 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h3)
|
||||
speculative_3 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h3)
|
||||
speculative_3 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h4)
|
||||
speculative_4 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h4)
|
||||
speculative_4 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h5)
|
||||
speculative_5 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h5)
|
||||
speculative_5 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h6)
|
||||
speculative_6 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h6)
|
||||
speculative_6 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h7)
|
||||
speculative_7 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h7)
|
||||
speculative_7 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h8)
|
||||
speculative_8 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h8)
|
||||
speculative_8 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h9)
|
||||
speculative_9 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h9)
|
||||
speculative_9 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'hA)
|
||||
speculative_10 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'hA)
|
||||
speculative_10 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'hB)
|
||||
speculative_11 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'hB)
|
||||
speculative_11 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'hC)
|
||||
speculative_12 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'hC)
|
||||
speculative_12 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'hD)
|
||||
speculative_13 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'hD)
|
||||
speculative_13 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'hE)
|
||||
speculative_14 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'hE)
|
||||
speculative_14 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'hF)
|
||||
speculative_15 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'hF)
|
||||
speculative_15 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h10)
|
||||
speculative_16 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h10)
|
||||
speculative_16 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h11)
|
||||
speculative_17 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h11)
|
||||
speculative_17 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h12)
|
||||
speculative_18 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h12)
|
||||
speculative_18 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h13)
|
||||
speculative_19 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h13)
|
||||
speculative_19 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h14)
|
||||
speculative_20 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h14)
|
||||
speculative_20 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h15)
|
||||
speculative_21 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h15)
|
||||
speculative_21 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h16)
|
||||
speculative_22 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h16)
|
||||
speculative_22 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h17)
|
||||
speculative_23 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h17)
|
||||
speculative_23 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h18)
|
||||
speculative_24 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h18)
|
||||
speculative_24 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h19)
|
||||
speculative_25 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h19)
|
||||
speculative_25 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h1A)
|
||||
speculative_26 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h1A)
|
||||
speculative_26 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h1B)
|
||||
speculative_27 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h1B)
|
||||
speculative_27 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h1C)
|
||||
speculative_28 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h1C)
|
||||
speculative_28 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h1D)
|
||||
speculative_29 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h1D)
|
||||
speculative_29 <= io_newPhys_0;
|
||||
if (_GEN_2 & io_rd_1 == 5'h1E)
|
||||
speculative_30 <= io_newPhys_1;
|
||||
else if (_GEN_0 & io_rd_0 == 5'h1E)
|
||||
speculative_30 <= io_newPhys_0;
|
||||
if (_GEN_2 & (&io_rd_1))
|
||||
speculative_31 <= io_newPhys_1;
|
||||
else if (_GEN_0 & (&io_rd_0))
|
||||
speculative_31 <= io_newPhys_0;
|
||||
if (_GEN_3 & ~(|io_commitRd_1))
|
||||
committed_0 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & ~(|io_commitRd_0))
|
||||
committed_0 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h1)
|
||||
committed_1 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h1)
|
||||
committed_1 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h2)
|
||||
committed_2 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h2)
|
||||
committed_2 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h3)
|
||||
committed_3 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h3)
|
||||
committed_3 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h4)
|
||||
committed_4 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h4)
|
||||
committed_4 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h5)
|
||||
committed_5 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h5)
|
||||
committed_5 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h6)
|
||||
committed_6 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h6)
|
||||
committed_6 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h7)
|
||||
committed_7 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h7)
|
||||
committed_7 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h8)
|
||||
committed_8 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h8)
|
||||
committed_8 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h9)
|
||||
committed_9 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h9)
|
||||
committed_9 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'hA)
|
||||
committed_10 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'hA)
|
||||
committed_10 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'hB)
|
||||
committed_11 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'hB)
|
||||
committed_11 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'hC)
|
||||
committed_12 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'hC)
|
||||
committed_12 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'hD)
|
||||
committed_13 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'hD)
|
||||
committed_13 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'hE)
|
||||
committed_14 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'hE)
|
||||
committed_14 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'hF)
|
||||
committed_15 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'hF)
|
||||
committed_15 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h10)
|
||||
committed_16 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h10)
|
||||
committed_16 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h11)
|
||||
committed_17 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h11)
|
||||
committed_17 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h12)
|
||||
committed_18 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h12)
|
||||
committed_18 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h13)
|
||||
committed_19 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h13)
|
||||
committed_19 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h14)
|
||||
committed_20 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h14)
|
||||
committed_20 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h15)
|
||||
committed_21 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h15)
|
||||
committed_21 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h16)
|
||||
committed_22 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h16)
|
||||
committed_22 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h17)
|
||||
committed_23 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h17)
|
||||
committed_23 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h18)
|
||||
committed_24 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h18)
|
||||
committed_24 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h19)
|
||||
committed_25 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h19)
|
||||
committed_25 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h1A)
|
||||
committed_26 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h1A)
|
||||
committed_26 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h1B)
|
||||
committed_27 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h1B)
|
||||
committed_27 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h1C)
|
||||
committed_28 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h1C)
|
||||
committed_28 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h1D)
|
||||
committed_29 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h1D)
|
||||
committed_29 <= io_commitPhys_0;
|
||||
if (_GEN_3 & io_commitRd_1 == 5'h1E)
|
||||
committed_30 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & io_commitRd_0 == 5'h1E)
|
||||
committed_30 <= io_commitPhys_0;
|
||||
if (_GEN_3 & (&io_commitRd_1))
|
||||
committed_31 <= io_commitPhys_1;
|
||||
else if (_GEN_1 & (&io_commitRd_0))
|
||||
committed_31 <= io_commitPhys_0;
|
||||
end
|
||||
end // always @(posedge)
|
||||
assign io_prs1_0 = _GEN[io_rs1_0];
|
||||
assign io_prs1_1 = slot0Writes & io_rd_0 == io_rs1_1 ? io_newPhys_0 : _GEN[io_rs1_1];
|
||||
assign io_prs2_0 = _GEN[io_rs2_0];
|
||||
assign io_prs2_1 = slot0Writes & io_rd_0 == io_rs2_1 ? io_newPhys_0 : _GEN[io_rs2_1];
|
||||
assign io_oldPrd_0 = _GEN[io_rd_0];
|
||||
assign io_oldPrd_1 = slot0Writes & io_rd_0 == io_rd_1 ? io_newPhys_0 : _GEN[io_rd_1];
|
||||
assign io_committedPhys_0 = committed_0;
|
||||
assign io_committedPhys_1 = committed_1;
|
||||
assign io_committedPhys_2 = committed_2;
|
||||
assign io_committedPhys_3 = committed_3;
|
||||
assign io_committedPhys_4 = committed_4;
|
||||
assign io_committedPhys_5 = committed_5;
|
||||
assign io_committedPhys_6 = committed_6;
|
||||
assign io_committedPhys_7 = committed_7;
|
||||
assign io_committedPhys_8 = committed_8;
|
||||
assign io_committedPhys_9 = committed_9;
|
||||
assign io_committedPhys_10 = committed_10;
|
||||
assign io_committedPhys_11 = committed_11;
|
||||
assign io_committedPhys_12 = committed_12;
|
||||
assign io_committedPhys_13 = committed_13;
|
||||
assign io_committedPhys_14 = committed_14;
|
||||
assign io_committedPhys_15 = committed_15;
|
||||
assign io_committedPhys_16 = committed_16;
|
||||
assign io_committedPhys_17 = committed_17;
|
||||
assign io_committedPhys_18 = committed_18;
|
||||
assign io_committedPhys_19 = committed_19;
|
||||
assign io_committedPhys_20 = committed_20;
|
||||
assign io_committedPhys_21 = committed_21;
|
||||
assign io_committedPhys_22 = committed_22;
|
||||
assign io_committedPhys_23 = committed_23;
|
||||
assign io_committedPhys_24 = committed_24;
|
||||
assign io_committedPhys_25 = committed_25;
|
||||
assign io_committedPhys_26 = committed_26;
|
||||
assign io_committedPhys_27 = committed_27;
|
||||
assign io_committedPhys_28 = committed_28;
|
||||
assign io_committedPhys_29 = committed_29;
|
||||
assign io_committedPhys_30 = committed_30;
|
||||
assign io_committedPhys_31 = committed_31;
|
||||
endmodule
|
||||
|
||||
3006
generated-ooo/ReservationStation.sv
Normal file
3006
generated-ooo/ReservationStation.sv
Normal file
File diff suppressed because it is too large
Load Diff
961
generated-ooo/StoreQueue.sv
Normal file
961
generated-ooo/StoreQueue.sv
Normal file
@@ -0,0 +1,961 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module StoreQueue(
|
||||
input clock,
|
||||
reset,
|
||||
io_enqValid,
|
||||
input [5:0] io_enqRobIdx,
|
||||
output [3:0] io_enqIdx,
|
||||
input io_writeAddr,
|
||||
io_writeData,
|
||||
input [3:0] io_writeIdx,
|
||||
input [63:0] io_addr,
|
||||
io_data,
|
||||
input [2:0] io_size,
|
||||
input [63:0] io_loadAddr,
|
||||
input [5:0] io_loadRobIdx,
|
||||
output io_forwardValid,
|
||||
input io_commitValid,
|
||||
input [5:0] io_commitRobIdx,
|
||||
output io_drainValid,
|
||||
output [63:0] io_drain_addr,
|
||||
io_drain_data,
|
||||
output [2:0] io_drain_size,
|
||||
input io_drainReady,
|
||||
io_flush
|
||||
);
|
||||
|
||||
reg entries_0_valid;
|
||||
reg [5:0] entries_0_robIdx;
|
||||
reg entries_0_addrValid;
|
||||
reg entries_0_dataValid;
|
||||
reg [63:0] entries_0_addr;
|
||||
reg [63:0] entries_0_data;
|
||||
reg [2:0] entries_0_size;
|
||||
reg entries_0_committed;
|
||||
reg entries_1_valid;
|
||||
reg [5:0] entries_1_robIdx;
|
||||
reg entries_1_addrValid;
|
||||
reg entries_1_dataValid;
|
||||
reg [63:0] entries_1_addr;
|
||||
reg [63:0] entries_1_data;
|
||||
reg [2:0] entries_1_size;
|
||||
reg entries_1_committed;
|
||||
reg entries_2_valid;
|
||||
reg [5:0] entries_2_robIdx;
|
||||
reg entries_2_addrValid;
|
||||
reg entries_2_dataValid;
|
||||
reg [63:0] entries_2_addr;
|
||||
reg [63:0] entries_2_data;
|
||||
reg [2:0] entries_2_size;
|
||||
reg entries_2_committed;
|
||||
reg entries_3_valid;
|
||||
reg [5:0] entries_3_robIdx;
|
||||
reg entries_3_addrValid;
|
||||
reg entries_3_dataValid;
|
||||
reg [63:0] entries_3_addr;
|
||||
reg [63:0] entries_3_data;
|
||||
reg [2:0] entries_3_size;
|
||||
reg entries_3_committed;
|
||||
reg entries_4_valid;
|
||||
reg [5:0] entries_4_robIdx;
|
||||
reg entries_4_addrValid;
|
||||
reg entries_4_dataValid;
|
||||
reg [63:0] entries_4_addr;
|
||||
reg [63:0] entries_4_data;
|
||||
reg [2:0] entries_4_size;
|
||||
reg entries_4_committed;
|
||||
reg entries_5_valid;
|
||||
reg [5:0] entries_5_robIdx;
|
||||
reg entries_5_addrValid;
|
||||
reg entries_5_dataValid;
|
||||
reg [63:0] entries_5_addr;
|
||||
reg [63:0] entries_5_data;
|
||||
reg [2:0] entries_5_size;
|
||||
reg entries_5_committed;
|
||||
reg entries_6_valid;
|
||||
reg [5:0] entries_6_robIdx;
|
||||
reg entries_6_addrValid;
|
||||
reg entries_6_dataValid;
|
||||
reg [63:0] entries_6_addr;
|
||||
reg [63:0] entries_6_data;
|
||||
reg [2:0] entries_6_size;
|
||||
reg entries_6_committed;
|
||||
reg entries_7_valid;
|
||||
reg [5:0] entries_7_robIdx;
|
||||
reg entries_7_addrValid;
|
||||
reg entries_7_dataValid;
|
||||
reg [63:0] entries_7_addr;
|
||||
reg [63:0] entries_7_data;
|
||||
reg [2:0] entries_7_size;
|
||||
reg entries_7_committed;
|
||||
reg entries_8_valid;
|
||||
reg [5:0] entries_8_robIdx;
|
||||
reg entries_8_addrValid;
|
||||
reg entries_8_dataValid;
|
||||
reg [63:0] entries_8_addr;
|
||||
reg [63:0] entries_8_data;
|
||||
reg [2:0] entries_8_size;
|
||||
reg entries_8_committed;
|
||||
reg entries_9_valid;
|
||||
reg [5:0] entries_9_robIdx;
|
||||
reg entries_9_addrValid;
|
||||
reg entries_9_dataValid;
|
||||
reg [63:0] entries_9_addr;
|
||||
reg [63:0] entries_9_data;
|
||||
reg [2:0] entries_9_size;
|
||||
reg entries_9_committed;
|
||||
reg entries_10_valid;
|
||||
reg [5:0] entries_10_robIdx;
|
||||
reg entries_10_addrValid;
|
||||
reg entries_10_dataValid;
|
||||
reg [63:0] entries_10_addr;
|
||||
reg [63:0] entries_10_data;
|
||||
reg [2:0] entries_10_size;
|
||||
reg entries_10_committed;
|
||||
reg entries_11_valid;
|
||||
reg [5:0] entries_11_robIdx;
|
||||
reg entries_11_addrValid;
|
||||
reg entries_11_dataValid;
|
||||
reg [63:0] entries_11_addr;
|
||||
reg [63:0] entries_11_data;
|
||||
reg [2:0] entries_11_size;
|
||||
reg entries_11_committed;
|
||||
reg entries_12_valid;
|
||||
reg [5:0] entries_12_robIdx;
|
||||
reg entries_12_addrValid;
|
||||
reg entries_12_dataValid;
|
||||
reg [63:0] entries_12_addr;
|
||||
reg [63:0] entries_12_data;
|
||||
reg [2:0] entries_12_size;
|
||||
reg entries_12_committed;
|
||||
reg entries_13_valid;
|
||||
reg [5:0] entries_13_robIdx;
|
||||
reg entries_13_addrValid;
|
||||
reg entries_13_dataValid;
|
||||
reg [63:0] entries_13_addr;
|
||||
reg [63:0] entries_13_data;
|
||||
reg [2:0] entries_13_size;
|
||||
reg entries_13_committed;
|
||||
reg entries_14_valid;
|
||||
reg [5:0] entries_14_robIdx;
|
||||
reg entries_14_addrValid;
|
||||
reg entries_14_dataValid;
|
||||
reg [63:0] entries_14_addr;
|
||||
reg [63:0] entries_14_data;
|
||||
reg [2:0] entries_14_size;
|
||||
reg entries_14_committed;
|
||||
reg entries_15_valid;
|
||||
reg [5:0] entries_15_robIdx;
|
||||
reg entries_15_addrValid;
|
||||
reg entries_15_dataValid;
|
||||
reg [63:0] entries_15_addr;
|
||||
reg [63:0] entries_15_data;
|
||||
reg [2:0] entries_15_size;
|
||||
reg entries_15_committed;
|
||||
wire [14:0] enqOH =
|
||||
entries_0_valid
|
||||
? (entries_1_valid
|
||||
? (entries_2_valid
|
||||
? (entries_3_valid
|
||||
? (entries_4_valid
|
||||
? (entries_5_valid
|
||||
? (entries_6_valid
|
||||
? (entries_7_valid
|
||||
? (entries_8_valid
|
||||
? (entries_9_valid
|
||||
? (entries_10_valid
|
||||
? (entries_11_valid
|
||||
? (entries_12_valid
|
||||
? (entries_13_valid
|
||||
? (entries_14_valid
|
||||
? {~entries_15_valid,
|
||||
14'h0}
|
||||
: 15'h2000)
|
||||
: 15'h1000)
|
||||
: 15'h800)
|
||||
: 15'h400)
|
||||
: 15'h200)
|
||||
: 15'h100)
|
||||
: 15'h80)
|
||||
: 15'h40)
|
||||
: 15'h20)
|
||||
: 15'h10)
|
||||
: 15'h8)
|
||||
: 15'h4)
|
||||
: 15'h2)
|
||||
: 15'h1)
|
||||
: 15'h0;
|
||||
wire [6:0] _enqIdx_T_1 = enqOH[14:8] | enqOH[6:0];
|
||||
wire [2:0] _enqIdx_T_3 = _enqIdx_T_1[6:4] | _enqIdx_T_1[2:0];
|
||||
wire [3:0] enqIdx =
|
||||
{|(enqOH[14:7]),
|
||||
|(_enqIdx_T_1[6:3]),
|
||||
|(_enqIdx_T_3[2:1]),
|
||||
_enqIdx_T_3[2] | _enqIdx_T_3[0]};
|
||||
wire drainVec_0 =
|
||||
entries_0_valid & entries_0_committed & entries_0_addrValid & entries_0_dataValid;
|
||||
wire drainVec_1 =
|
||||
entries_1_valid & entries_1_committed & entries_1_addrValid & entries_1_dataValid;
|
||||
wire drainVec_2 =
|
||||
entries_2_valid & entries_2_committed & entries_2_addrValid & entries_2_dataValid;
|
||||
wire drainVec_3 =
|
||||
entries_3_valid & entries_3_committed & entries_3_addrValid & entries_3_dataValid;
|
||||
wire drainVec_4 =
|
||||
entries_4_valid & entries_4_committed & entries_4_addrValid & entries_4_dataValid;
|
||||
wire drainVec_5 =
|
||||
entries_5_valid & entries_5_committed & entries_5_addrValid & entries_5_dataValid;
|
||||
wire drainVec_6 =
|
||||
entries_6_valid & entries_6_committed & entries_6_addrValid & entries_6_dataValid;
|
||||
wire drainVec_7 =
|
||||
entries_7_valid & entries_7_committed & entries_7_addrValid & entries_7_dataValid;
|
||||
wire drainVec_8 =
|
||||
entries_8_valid & entries_8_committed & entries_8_addrValid & entries_8_dataValid;
|
||||
wire drainVec_9 =
|
||||
entries_9_valid & entries_9_committed & entries_9_addrValid & entries_9_dataValid;
|
||||
wire drainVec_10 =
|
||||
entries_10_valid & entries_10_committed & entries_10_addrValid & entries_10_dataValid;
|
||||
wire drainVec_11 =
|
||||
entries_11_valid & entries_11_committed & entries_11_addrValid & entries_11_dataValid;
|
||||
wire drainVec_12 =
|
||||
entries_12_valid & entries_12_committed & entries_12_addrValid & entries_12_dataValid;
|
||||
wire drainVec_13 =
|
||||
entries_13_valid & entries_13_committed & entries_13_addrValid & entries_13_dataValid;
|
||||
wire drainVec_14 =
|
||||
entries_14_valid & entries_14_committed & entries_14_addrValid & entries_14_dataValid;
|
||||
wire drainVec_15 =
|
||||
entries_15_valid & entries_15_committed & entries_15_addrValid & entries_15_dataValid;
|
||||
wire [15:0] _io_drainValid_T =
|
||||
{drainVec_15,
|
||||
drainVec_14,
|
||||
drainVec_13,
|
||||
drainVec_12,
|
||||
drainVec_11,
|
||||
drainVec_10,
|
||||
drainVec_9,
|
||||
drainVec_8,
|
||||
drainVec_7,
|
||||
drainVec_6,
|
||||
drainVec_5,
|
||||
drainVec_4,
|
||||
drainVec_3,
|
||||
drainVec_2,
|
||||
drainVec_1,
|
||||
drainVec_0};
|
||||
wire [14:0] drainOH =
|
||||
drainVec_0
|
||||
? 15'h0
|
||||
: drainVec_1
|
||||
? 15'h1
|
||||
: drainVec_2
|
||||
? 15'h2
|
||||
: drainVec_3
|
||||
? 15'h4
|
||||
: drainVec_4
|
||||
? 15'h8
|
||||
: drainVec_5
|
||||
? 15'h10
|
||||
: drainVec_6
|
||||
? 15'h20
|
||||
: drainVec_7
|
||||
? 15'h40
|
||||
: drainVec_8
|
||||
? 15'h80
|
||||
: drainVec_9
|
||||
? 15'h100
|
||||
: drainVec_10
|
||||
? 15'h200
|
||||
: drainVec_11
|
||||
? 15'h400
|
||||
: drainVec_12
|
||||
? 15'h800
|
||||
: drainVec_13
|
||||
? 15'h1000
|
||||
: drainVec_14
|
||||
? 15'h2000
|
||||
: {drainVec_15, 14'h0};
|
||||
wire [6:0] _drainIdx_T_1 = drainOH[14:8] | drainOH[6:0];
|
||||
wire [2:0] _drainIdx_T_3 = _drainIdx_T_1[6:4] | _drainIdx_T_1[2:0];
|
||||
wire [3:0] drainIdx =
|
||||
{|(drainOH[14:7]),
|
||||
|(_drainIdx_T_1[6:3]),
|
||||
|(_drainIdx_T_3[2:1]),
|
||||
_drainIdx_T_3[2] | _drainIdx_T_3[0]};
|
||||
wire [15:0][63:0] _GEN =
|
||||
{{entries_15_addr},
|
||||
{entries_14_addr},
|
||||
{entries_13_addr},
|
||||
{entries_12_addr},
|
||||
{entries_11_addr},
|
||||
{entries_10_addr},
|
||||
{entries_9_addr},
|
||||
{entries_8_addr},
|
||||
{entries_7_addr},
|
||||
{entries_6_addr},
|
||||
{entries_5_addr},
|
||||
{entries_4_addr},
|
||||
{entries_3_addr},
|
||||
{entries_2_addr},
|
||||
{entries_1_addr},
|
||||
{entries_0_addr}};
|
||||
wire [15:0][63:0] _GEN_0 =
|
||||
{{entries_15_data},
|
||||
{entries_14_data},
|
||||
{entries_13_data},
|
||||
{entries_12_data},
|
||||
{entries_11_data},
|
||||
{entries_10_data},
|
||||
{entries_9_data},
|
||||
{entries_8_data},
|
||||
{entries_7_data},
|
||||
{entries_6_data},
|
||||
{entries_5_data},
|
||||
{entries_4_data},
|
||||
{entries_3_data},
|
||||
{entries_2_data},
|
||||
{entries_1_data},
|
||||
{entries_0_data}};
|
||||
wire [15:0][2:0] _GEN_1 =
|
||||
{{entries_15_size},
|
||||
{entries_14_size},
|
||||
{entries_13_size},
|
||||
{entries_12_size},
|
||||
{entries_11_size},
|
||||
{entries_10_size},
|
||||
{entries_9_size},
|
||||
{entries_8_size},
|
||||
{entries_7_size},
|
||||
{entries_6_size},
|
||||
{entries_5_size},
|
||||
{entries_4_size},
|
||||
{entries_3_size},
|
||||
{entries_2_size},
|
||||
{entries_1_size},
|
||||
{entries_0_size}};
|
||||
always @(posedge clock) begin
|
||||
if (reset) begin
|
||||
entries_0_valid <= 1'h0;
|
||||
entries_0_robIdx <= 6'h0;
|
||||
entries_0_addrValid <= 1'h0;
|
||||
entries_0_dataValid <= 1'h0;
|
||||
entries_0_addr <= 64'h0;
|
||||
entries_0_data <= 64'h0;
|
||||
entries_0_size <= 3'h0;
|
||||
entries_0_committed <= 1'h0;
|
||||
entries_1_valid <= 1'h0;
|
||||
entries_1_robIdx <= 6'h0;
|
||||
entries_1_addrValid <= 1'h0;
|
||||
entries_1_dataValid <= 1'h0;
|
||||
entries_1_addr <= 64'h0;
|
||||
entries_1_data <= 64'h0;
|
||||
entries_1_size <= 3'h0;
|
||||
entries_1_committed <= 1'h0;
|
||||
entries_2_valid <= 1'h0;
|
||||
entries_2_robIdx <= 6'h0;
|
||||
entries_2_addrValid <= 1'h0;
|
||||
entries_2_dataValid <= 1'h0;
|
||||
entries_2_addr <= 64'h0;
|
||||
entries_2_data <= 64'h0;
|
||||
entries_2_size <= 3'h0;
|
||||
entries_2_committed <= 1'h0;
|
||||
entries_3_valid <= 1'h0;
|
||||
entries_3_robIdx <= 6'h0;
|
||||
entries_3_addrValid <= 1'h0;
|
||||
entries_3_dataValid <= 1'h0;
|
||||
entries_3_addr <= 64'h0;
|
||||
entries_3_data <= 64'h0;
|
||||
entries_3_size <= 3'h0;
|
||||
entries_3_committed <= 1'h0;
|
||||
entries_4_valid <= 1'h0;
|
||||
entries_4_robIdx <= 6'h0;
|
||||
entries_4_addrValid <= 1'h0;
|
||||
entries_4_dataValid <= 1'h0;
|
||||
entries_4_addr <= 64'h0;
|
||||
entries_4_data <= 64'h0;
|
||||
entries_4_size <= 3'h0;
|
||||
entries_4_committed <= 1'h0;
|
||||
entries_5_valid <= 1'h0;
|
||||
entries_5_robIdx <= 6'h0;
|
||||
entries_5_addrValid <= 1'h0;
|
||||
entries_5_dataValid <= 1'h0;
|
||||
entries_5_addr <= 64'h0;
|
||||
entries_5_data <= 64'h0;
|
||||
entries_5_size <= 3'h0;
|
||||
entries_5_committed <= 1'h0;
|
||||
entries_6_valid <= 1'h0;
|
||||
entries_6_robIdx <= 6'h0;
|
||||
entries_6_addrValid <= 1'h0;
|
||||
entries_6_dataValid <= 1'h0;
|
||||
entries_6_addr <= 64'h0;
|
||||
entries_6_data <= 64'h0;
|
||||
entries_6_size <= 3'h0;
|
||||
entries_6_committed <= 1'h0;
|
||||
entries_7_valid <= 1'h0;
|
||||
entries_7_robIdx <= 6'h0;
|
||||
entries_7_addrValid <= 1'h0;
|
||||
entries_7_dataValid <= 1'h0;
|
||||
entries_7_addr <= 64'h0;
|
||||
entries_7_data <= 64'h0;
|
||||
entries_7_size <= 3'h0;
|
||||
entries_7_committed <= 1'h0;
|
||||
entries_8_valid <= 1'h0;
|
||||
entries_8_robIdx <= 6'h0;
|
||||
entries_8_addrValid <= 1'h0;
|
||||
entries_8_dataValid <= 1'h0;
|
||||
entries_8_addr <= 64'h0;
|
||||
entries_8_data <= 64'h0;
|
||||
entries_8_size <= 3'h0;
|
||||
entries_8_committed <= 1'h0;
|
||||
entries_9_valid <= 1'h0;
|
||||
entries_9_robIdx <= 6'h0;
|
||||
entries_9_addrValid <= 1'h0;
|
||||
entries_9_dataValid <= 1'h0;
|
||||
entries_9_addr <= 64'h0;
|
||||
entries_9_data <= 64'h0;
|
||||
entries_9_size <= 3'h0;
|
||||
entries_9_committed <= 1'h0;
|
||||
entries_10_valid <= 1'h0;
|
||||
entries_10_robIdx <= 6'h0;
|
||||
entries_10_addrValid <= 1'h0;
|
||||
entries_10_dataValid <= 1'h0;
|
||||
entries_10_addr <= 64'h0;
|
||||
entries_10_data <= 64'h0;
|
||||
entries_10_size <= 3'h0;
|
||||
entries_10_committed <= 1'h0;
|
||||
entries_11_valid <= 1'h0;
|
||||
entries_11_robIdx <= 6'h0;
|
||||
entries_11_addrValid <= 1'h0;
|
||||
entries_11_dataValid <= 1'h0;
|
||||
entries_11_addr <= 64'h0;
|
||||
entries_11_data <= 64'h0;
|
||||
entries_11_size <= 3'h0;
|
||||
entries_11_committed <= 1'h0;
|
||||
entries_12_valid <= 1'h0;
|
||||
entries_12_robIdx <= 6'h0;
|
||||
entries_12_addrValid <= 1'h0;
|
||||
entries_12_dataValid <= 1'h0;
|
||||
entries_12_addr <= 64'h0;
|
||||
entries_12_data <= 64'h0;
|
||||
entries_12_size <= 3'h0;
|
||||
entries_12_committed <= 1'h0;
|
||||
entries_13_valid <= 1'h0;
|
||||
entries_13_robIdx <= 6'h0;
|
||||
entries_13_addrValid <= 1'h0;
|
||||
entries_13_dataValid <= 1'h0;
|
||||
entries_13_addr <= 64'h0;
|
||||
entries_13_data <= 64'h0;
|
||||
entries_13_size <= 3'h0;
|
||||
entries_13_committed <= 1'h0;
|
||||
entries_14_valid <= 1'h0;
|
||||
entries_14_robIdx <= 6'h0;
|
||||
entries_14_addrValid <= 1'h0;
|
||||
entries_14_dataValid <= 1'h0;
|
||||
entries_14_addr <= 64'h0;
|
||||
entries_14_data <= 64'h0;
|
||||
entries_14_size <= 3'h0;
|
||||
entries_14_committed <= 1'h0;
|
||||
entries_15_valid <= 1'h0;
|
||||
entries_15_robIdx <= 6'h0;
|
||||
entries_15_addrValid <= 1'h0;
|
||||
entries_15_dataValid <= 1'h0;
|
||||
entries_15_addr <= 64'h0;
|
||||
entries_15_data <= 64'h0;
|
||||
entries_15_size <= 3'h0;
|
||||
entries_15_committed <= 1'h0;
|
||||
end
|
||||
else begin
|
||||
automatic logic _GEN_2 =
|
||||
io_enqValid
|
||||
& (|{~entries_15_valid,
|
||||
~entries_14_valid,
|
||||
~entries_13_valid,
|
||||
~entries_12_valid,
|
||||
~entries_11_valid,
|
||||
~entries_10_valid,
|
||||
~entries_9_valid,
|
||||
~entries_8_valid,
|
||||
~entries_7_valid,
|
||||
~entries_6_valid,
|
||||
~entries_5_valid,
|
||||
~entries_4_valid,
|
||||
~entries_3_valid,
|
||||
~entries_2_valid,
|
||||
~entries_1_valid,
|
||||
~entries_0_valid});
|
||||
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 = io_writeIdx == 4'h0;
|
||||
automatic logic _GEN_20;
|
||||
automatic logic _GEN_21 = io_writeIdx == 4'h1;
|
||||
automatic logic _GEN_22;
|
||||
automatic logic _GEN_23 = io_writeIdx == 4'h2;
|
||||
automatic logic _GEN_24;
|
||||
automatic logic _GEN_25 = io_writeIdx == 4'h3;
|
||||
automatic logic _GEN_26;
|
||||
automatic logic _GEN_27 = io_writeIdx == 4'h4;
|
||||
automatic logic _GEN_28;
|
||||
automatic logic _GEN_29 = io_writeIdx == 4'h5;
|
||||
automatic logic _GEN_30;
|
||||
automatic logic _GEN_31 = io_writeIdx == 4'h6;
|
||||
automatic logic _GEN_32;
|
||||
automatic logic _GEN_33 = io_writeIdx == 4'h7;
|
||||
automatic logic _GEN_34;
|
||||
automatic logic _GEN_35 = io_writeIdx == 4'h8;
|
||||
automatic logic _GEN_36;
|
||||
automatic logic _GEN_37 = io_writeIdx == 4'h9;
|
||||
automatic logic _GEN_38;
|
||||
automatic logic _GEN_39 = io_writeIdx == 4'hA;
|
||||
automatic logic _GEN_40;
|
||||
automatic logic _GEN_41 = io_writeIdx == 4'hB;
|
||||
automatic logic _GEN_42;
|
||||
automatic logic _GEN_43 = io_writeIdx == 4'hC;
|
||||
automatic logic _GEN_44;
|
||||
automatic logic _GEN_45 = io_writeIdx == 4'hD;
|
||||
automatic logic _GEN_46;
|
||||
automatic logic _GEN_47 = io_writeIdx == 4'hE;
|
||||
automatic logic _GEN_48;
|
||||
automatic logic _GEN_49;
|
||||
automatic logic _GEN_50;
|
||||
automatic logic _GEN_51;
|
||||
automatic logic _GEN_52;
|
||||
automatic logic _GEN_53;
|
||||
automatic logic _GEN_54;
|
||||
automatic logic _GEN_55;
|
||||
automatic logic _GEN_56;
|
||||
automatic logic _GEN_57;
|
||||
automatic logic _GEN_58;
|
||||
automatic logic _GEN_59;
|
||||
automatic logic _GEN_60;
|
||||
automatic logic _GEN_61;
|
||||
automatic logic _GEN_62;
|
||||
automatic logic _GEN_63;
|
||||
automatic logic _GEN_64;
|
||||
automatic logic _GEN_65;
|
||||
automatic logic _GEN_66 = (|_io_drainValid_T) & io_drainReady;
|
||||
_GEN_3 = _GEN_2 & enqIdx == 4'h0;
|
||||
_GEN_4 = _GEN_2 & enqIdx == 4'h1;
|
||||
_GEN_5 = _GEN_2 & enqIdx == 4'h2;
|
||||
_GEN_6 = _GEN_2 & enqIdx == 4'h3;
|
||||
_GEN_7 = _GEN_2 & enqIdx == 4'h4;
|
||||
_GEN_8 = _GEN_2 & enqIdx == 4'h5;
|
||||
_GEN_9 = _GEN_2 & enqIdx == 4'h6;
|
||||
_GEN_10 = _GEN_2 & enqIdx == 4'h7;
|
||||
_GEN_11 = _GEN_2 & enqIdx == 4'h8;
|
||||
_GEN_12 = _GEN_2 & enqIdx == 4'h9;
|
||||
_GEN_13 = _GEN_2 & enqIdx == 4'hA;
|
||||
_GEN_14 = _GEN_2 & enqIdx == 4'hB;
|
||||
_GEN_15 = _GEN_2 & enqIdx == 4'hC;
|
||||
_GEN_16 = _GEN_2 & enqIdx == 4'hD;
|
||||
_GEN_17 = _GEN_2 & enqIdx == 4'hE;
|
||||
_GEN_18 = _GEN_2 & (&enqIdx);
|
||||
_GEN_20 = io_writeAddr & _GEN_19;
|
||||
_GEN_22 = io_writeAddr & _GEN_21;
|
||||
_GEN_24 = io_writeAddr & _GEN_23;
|
||||
_GEN_26 = io_writeAddr & _GEN_25;
|
||||
_GEN_28 = io_writeAddr & _GEN_27;
|
||||
_GEN_30 = io_writeAddr & _GEN_29;
|
||||
_GEN_32 = io_writeAddr & _GEN_31;
|
||||
_GEN_34 = io_writeAddr & _GEN_33;
|
||||
_GEN_36 = io_writeAddr & _GEN_35;
|
||||
_GEN_38 = io_writeAddr & _GEN_37;
|
||||
_GEN_40 = io_writeAddr & _GEN_39;
|
||||
_GEN_42 = io_writeAddr & _GEN_41;
|
||||
_GEN_44 = io_writeAddr & _GEN_43;
|
||||
_GEN_46 = io_writeAddr & _GEN_45;
|
||||
_GEN_48 = io_writeAddr & _GEN_47;
|
||||
_GEN_49 = io_writeAddr & (&io_writeIdx);
|
||||
_GEN_50 = io_writeData & _GEN_19;
|
||||
_GEN_51 = io_writeData & _GEN_21;
|
||||
_GEN_52 = io_writeData & _GEN_23;
|
||||
_GEN_53 = io_writeData & _GEN_25;
|
||||
_GEN_54 = io_writeData & _GEN_27;
|
||||
_GEN_55 = io_writeData & _GEN_29;
|
||||
_GEN_56 = io_writeData & _GEN_31;
|
||||
_GEN_57 = io_writeData & _GEN_33;
|
||||
_GEN_58 = io_writeData & _GEN_35;
|
||||
_GEN_59 = io_writeData & _GEN_37;
|
||||
_GEN_60 = io_writeData & _GEN_39;
|
||||
_GEN_61 = io_writeData & _GEN_41;
|
||||
_GEN_62 = io_writeData & _GEN_43;
|
||||
_GEN_63 = io_writeData & _GEN_45;
|
||||
_GEN_64 = io_writeData & _GEN_47;
|
||||
_GEN_65 = io_writeData & (&io_writeIdx);
|
||||
entries_0_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h0) & (_GEN_3 | entries_0_valid);
|
||||
if (io_flush) begin
|
||||
entries_0_robIdx <= 6'h0;
|
||||
entries_0_addr <= 64'h0;
|
||||
entries_0_data <= 64'h0;
|
||||
entries_0_size <= 3'h0;
|
||||
entries_1_robIdx <= 6'h0;
|
||||
entries_1_addr <= 64'h0;
|
||||
entries_1_data <= 64'h0;
|
||||
entries_1_size <= 3'h0;
|
||||
entries_2_robIdx <= 6'h0;
|
||||
entries_2_addr <= 64'h0;
|
||||
entries_2_data <= 64'h0;
|
||||
entries_2_size <= 3'h0;
|
||||
entries_3_robIdx <= 6'h0;
|
||||
entries_3_addr <= 64'h0;
|
||||
entries_3_data <= 64'h0;
|
||||
entries_3_size <= 3'h0;
|
||||
entries_4_robIdx <= 6'h0;
|
||||
entries_4_addr <= 64'h0;
|
||||
entries_4_data <= 64'h0;
|
||||
entries_4_size <= 3'h0;
|
||||
entries_5_robIdx <= 6'h0;
|
||||
entries_5_addr <= 64'h0;
|
||||
entries_5_data <= 64'h0;
|
||||
entries_5_size <= 3'h0;
|
||||
entries_6_robIdx <= 6'h0;
|
||||
entries_6_addr <= 64'h0;
|
||||
entries_6_data <= 64'h0;
|
||||
entries_6_size <= 3'h0;
|
||||
entries_7_robIdx <= 6'h0;
|
||||
entries_7_addr <= 64'h0;
|
||||
entries_7_data <= 64'h0;
|
||||
entries_7_size <= 3'h0;
|
||||
entries_8_robIdx <= 6'h0;
|
||||
entries_8_addr <= 64'h0;
|
||||
entries_8_data <= 64'h0;
|
||||
entries_8_size <= 3'h0;
|
||||
entries_9_robIdx <= 6'h0;
|
||||
entries_9_addr <= 64'h0;
|
||||
entries_9_data <= 64'h0;
|
||||
entries_9_size <= 3'h0;
|
||||
entries_10_robIdx <= 6'h0;
|
||||
entries_10_addr <= 64'h0;
|
||||
entries_10_data <= 64'h0;
|
||||
entries_10_size <= 3'h0;
|
||||
entries_11_robIdx <= 6'h0;
|
||||
entries_11_addr <= 64'h0;
|
||||
entries_11_data <= 64'h0;
|
||||
entries_11_size <= 3'h0;
|
||||
entries_12_robIdx <= 6'h0;
|
||||
entries_12_addr <= 64'h0;
|
||||
entries_12_data <= 64'h0;
|
||||
entries_12_size <= 3'h0;
|
||||
entries_13_robIdx <= 6'h0;
|
||||
entries_13_addr <= 64'h0;
|
||||
entries_13_data <= 64'h0;
|
||||
entries_13_size <= 3'h0;
|
||||
entries_14_robIdx <= 6'h0;
|
||||
entries_14_addr <= 64'h0;
|
||||
entries_14_data <= 64'h0;
|
||||
entries_14_size <= 3'h0;
|
||||
entries_15_robIdx <= 6'h0;
|
||||
entries_15_addr <= 64'h0;
|
||||
entries_15_data <= 64'h0;
|
||||
entries_15_size <= 3'h0;
|
||||
end
|
||||
else begin
|
||||
if (_GEN_3)
|
||||
entries_0_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_20) begin
|
||||
entries_0_addr <= io_addr;
|
||||
entries_0_size <= io_size;
|
||||
end
|
||||
if (_GEN_50)
|
||||
entries_0_data <= io_data;
|
||||
if (_GEN_4)
|
||||
entries_1_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_22) begin
|
||||
entries_1_addr <= io_addr;
|
||||
entries_1_size <= io_size;
|
||||
end
|
||||
if (_GEN_51)
|
||||
entries_1_data <= io_data;
|
||||
if (_GEN_5)
|
||||
entries_2_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_24) begin
|
||||
entries_2_addr <= io_addr;
|
||||
entries_2_size <= io_size;
|
||||
end
|
||||
if (_GEN_52)
|
||||
entries_2_data <= io_data;
|
||||
if (_GEN_6)
|
||||
entries_3_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_26) begin
|
||||
entries_3_addr <= io_addr;
|
||||
entries_3_size <= io_size;
|
||||
end
|
||||
if (_GEN_53)
|
||||
entries_3_data <= io_data;
|
||||
if (_GEN_7)
|
||||
entries_4_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_28) begin
|
||||
entries_4_addr <= io_addr;
|
||||
entries_4_size <= io_size;
|
||||
end
|
||||
if (_GEN_54)
|
||||
entries_4_data <= io_data;
|
||||
if (_GEN_8)
|
||||
entries_5_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_30) begin
|
||||
entries_5_addr <= io_addr;
|
||||
entries_5_size <= io_size;
|
||||
end
|
||||
if (_GEN_55)
|
||||
entries_5_data <= io_data;
|
||||
if (_GEN_9)
|
||||
entries_6_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_32) begin
|
||||
entries_6_addr <= io_addr;
|
||||
entries_6_size <= io_size;
|
||||
end
|
||||
if (_GEN_56)
|
||||
entries_6_data <= io_data;
|
||||
if (_GEN_10)
|
||||
entries_7_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_34) begin
|
||||
entries_7_addr <= io_addr;
|
||||
entries_7_size <= io_size;
|
||||
end
|
||||
if (_GEN_57)
|
||||
entries_7_data <= io_data;
|
||||
if (_GEN_11)
|
||||
entries_8_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_36) begin
|
||||
entries_8_addr <= io_addr;
|
||||
entries_8_size <= io_size;
|
||||
end
|
||||
if (_GEN_58)
|
||||
entries_8_data <= io_data;
|
||||
if (_GEN_12)
|
||||
entries_9_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_38) begin
|
||||
entries_9_addr <= io_addr;
|
||||
entries_9_size <= io_size;
|
||||
end
|
||||
if (_GEN_59)
|
||||
entries_9_data <= io_data;
|
||||
if (_GEN_13)
|
||||
entries_10_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_40) begin
|
||||
entries_10_addr <= io_addr;
|
||||
entries_10_size <= io_size;
|
||||
end
|
||||
if (_GEN_60)
|
||||
entries_10_data <= io_data;
|
||||
if (_GEN_14)
|
||||
entries_11_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_42) begin
|
||||
entries_11_addr <= io_addr;
|
||||
entries_11_size <= io_size;
|
||||
end
|
||||
if (_GEN_61)
|
||||
entries_11_data <= io_data;
|
||||
if (_GEN_15)
|
||||
entries_12_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_44) begin
|
||||
entries_12_addr <= io_addr;
|
||||
entries_12_size <= io_size;
|
||||
end
|
||||
if (_GEN_62)
|
||||
entries_12_data <= io_data;
|
||||
if (_GEN_16)
|
||||
entries_13_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_46) begin
|
||||
entries_13_addr <= io_addr;
|
||||
entries_13_size <= io_size;
|
||||
end
|
||||
if (_GEN_63)
|
||||
entries_13_data <= io_data;
|
||||
if (_GEN_17)
|
||||
entries_14_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_48) begin
|
||||
entries_14_addr <= io_addr;
|
||||
entries_14_size <= io_size;
|
||||
end
|
||||
if (_GEN_64)
|
||||
entries_14_data <= io_data;
|
||||
if (_GEN_18)
|
||||
entries_15_robIdx <= io_enqRobIdx;
|
||||
if (_GEN_49) begin
|
||||
entries_15_addr <= io_addr;
|
||||
entries_15_size <= io_size;
|
||||
end
|
||||
if (_GEN_65)
|
||||
entries_15_data <= io_data;
|
||||
end
|
||||
entries_0_addrValid <= ~io_flush & (_GEN_20 | ~_GEN_3 & entries_0_addrValid);
|
||||
entries_0_dataValid <= ~io_flush & (_GEN_50 | ~_GEN_3 & entries_0_dataValid);
|
||||
entries_0_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_0_valid & entries_0_robIdx == io_commitRobIdx
|
||||
| ~_GEN_3 & entries_0_committed);
|
||||
entries_1_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h1) & (_GEN_4 | entries_1_valid);
|
||||
entries_1_addrValid <= ~io_flush & (_GEN_22 | ~_GEN_4 & entries_1_addrValid);
|
||||
entries_1_dataValid <= ~io_flush & (_GEN_51 | ~_GEN_4 & entries_1_dataValid);
|
||||
entries_1_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_1_valid & entries_1_robIdx == io_commitRobIdx
|
||||
| ~_GEN_4 & entries_1_committed);
|
||||
entries_2_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h2) & (_GEN_5 | entries_2_valid);
|
||||
entries_2_addrValid <= ~io_flush & (_GEN_24 | ~_GEN_5 & entries_2_addrValid);
|
||||
entries_2_dataValid <= ~io_flush & (_GEN_52 | ~_GEN_5 & entries_2_dataValid);
|
||||
entries_2_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_2_valid & entries_2_robIdx == io_commitRobIdx
|
||||
| ~_GEN_5 & entries_2_committed);
|
||||
entries_3_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h3) & (_GEN_6 | entries_3_valid);
|
||||
entries_3_addrValid <= ~io_flush & (_GEN_26 | ~_GEN_6 & entries_3_addrValid);
|
||||
entries_3_dataValid <= ~io_flush & (_GEN_53 | ~_GEN_6 & entries_3_dataValid);
|
||||
entries_3_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_3_valid & entries_3_robIdx == io_commitRobIdx
|
||||
| ~_GEN_6 & entries_3_committed);
|
||||
entries_4_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h4) & (_GEN_7 | entries_4_valid);
|
||||
entries_4_addrValid <= ~io_flush & (_GEN_28 | ~_GEN_7 & entries_4_addrValid);
|
||||
entries_4_dataValid <= ~io_flush & (_GEN_54 | ~_GEN_7 & entries_4_dataValid);
|
||||
entries_4_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_4_valid & entries_4_robIdx == io_commitRobIdx
|
||||
| ~_GEN_7 & entries_4_committed);
|
||||
entries_5_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h5) & (_GEN_8 | entries_5_valid);
|
||||
entries_5_addrValid <= ~io_flush & (_GEN_30 | ~_GEN_8 & entries_5_addrValid);
|
||||
entries_5_dataValid <= ~io_flush & (_GEN_55 | ~_GEN_8 & entries_5_dataValid);
|
||||
entries_5_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_5_valid & entries_5_robIdx == io_commitRobIdx
|
||||
| ~_GEN_8 & entries_5_committed);
|
||||
entries_6_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h6) & (_GEN_9 | entries_6_valid);
|
||||
entries_6_addrValid <= ~io_flush & (_GEN_32 | ~_GEN_9 & entries_6_addrValid);
|
||||
entries_6_dataValid <= ~io_flush & (_GEN_56 | ~_GEN_9 & entries_6_dataValid);
|
||||
entries_6_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_6_valid & entries_6_robIdx == io_commitRobIdx
|
||||
| ~_GEN_9 & entries_6_committed);
|
||||
entries_7_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h7) & (_GEN_10 | entries_7_valid);
|
||||
entries_7_addrValid <= ~io_flush & (_GEN_34 | ~_GEN_10 & entries_7_addrValid);
|
||||
entries_7_dataValid <= ~io_flush & (_GEN_57 | ~_GEN_10 & entries_7_dataValid);
|
||||
entries_7_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_7_valid & entries_7_robIdx == io_commitRobIdx
|
||||
| ~_GEN_10 & entries_7_committed);
|
||||
entries_8_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h8) & (_GEN_11 | entries_8_valid);
|
||||
entries_8_addrValid <= ~io_flush & (_GEN_36 | ~_GEN_11 & entries_8_addrValid);
|
||||
entries_8_dataValid <= ~io_flush & (_GEN_58 | ~_GEN_11 & entries_8_dataValid);
|
||||
entries_8_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_8_valid & entries_8_robIdx == io_commitRobIdx
|
||||
| ~_GEN_11 & entries_8_committed);
|
||||
entries_9_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'h9) & (_GEN_12 | entries_9_valid);
|
||||
entries_9_addrValid <= ~io_flush & (_GEN_38 | ~_GEN_12 & entries_9_addrValid);
|
||||
entries_9_dataValid <= ~io_flush & (_GEN_59 | ~_GEN_12 & entries_9_dataValid);
|
||||
entries_9_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_9_valid & entries_9_robIdx == io_commitRobIdx
|
||||
| ~_GEN_12 & entries_9_committed);
|
||||
entries_10_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'hA) & (_GEN_13 | entries_10_valid);
|
||||
entries_10_addrValid <= ~io_flush & (_GEN_40 | ~_GEN_13 & entries_10_addrValid);
|
||||
entries_10_dataValid <= ~io_flush & (_GEN_60 | ~_GEN_13 & entries_10_dataValid);
|
||||
entries_10_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_10_valid & entries_10_robIdx == io_commitRobIdx
|
||||
| ~_GEN_13 & entries_10_committed);
|
||||
entries_11_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'hB) & (_GEN_14 | entries_11_valid);
|
||||
entries_11_addrValid <= ~io_flush & (_GEN_42 | ~_GEN_14 & entries_11_addrValid);
|
||||
entries_11_dataValid <= ~io_flush & (_GEN_61 | ~_GEN_14 & entries_11_dataValid);
|
||||
entries_11_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_11_valid & entries_11_robIdx == io_commitRobIdx
|
||||
| ~_GEN_14 & entries_11_committed);
|
||||
entries_12_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'hC) & (_GEN_15 | entries_12_valid);
|
||||
entries_12_addrValid <= ~io_flush & (_GEN_44 | ~_GEN_15 & entries_12_addrValid);
|
||||
entries_12_dataValid <= ~io_flush & (_GEN_62 | ~_GEN_15 & entries_12_dataValid);
|
||||
entries_12_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_12_valid & entries_12_robIdx == io_commitRobIdx
|
||||
| ~_GEN_15 & entries_12_committed);
|
||||
entries_13_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'hD) & (_GEN_16 | entries_13_valid);
|
||||
entries_13_addrValid <= ~io_flush & (_GEN_46 | ~_GEN_16 & entries_13_addrValid);
|
||||
entries_13_dataValid <= ~io_flush & (_GEN_63 | ~_GEN_16 & entries_13_dataValid);
|
||||
entries_13_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_13_valid & entries_13_robIdx == io_commitRobIdx
|
||||
| ~_GEN_16 & entries_13_committed);
|
||||
entries_14_valid <=
|
||||
~(io_flush | _GEN_66 & drainIdx == 4'hE) & (_GEN_17 | entries_14_valid);
|
||||
entries_14_addrValid <= ~io_flush & (_GEN_48 | ~_GEN_17 & entries_14_addrValid);
|
||||
entries_14_dataValid <= ~io_flush & (_GEN_64 | ~_GEN_17 & entries_14_dataValid);
|
||||
entries_14_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_14_valid & entries_14_robIdx == io_commitRobIdx
|
||||
| ~_GEN_17 & entries_14_committed);
|
||||
entries_15_valid <=
|
||||
~(io_flush | _GEN_66 & (&drainIdx)) & (_GEN_18 | entries_15_valid);
|
||||
entries_15_addrValid <= ~io_flush & (_GEN_49 | ~_GEN_18 & entries_15_addrValid);
|
||||
entries_15_dataValid <= ~io_flush & (_GEN_65 | ~_GEN_18 & entries_15_dataValid);
|
||||
entries_15_committed <=
|
||||
~io_flush
|
||||
& (io_commitValid & entries_15_valid & entries_15_robIdx == io_commitRobIdx
|
||||
| ~_GEN_18 & entries_15_committed);
|
||||
end
|
||||
end // always @(posedge)
|
||||
assign io_enqIdx = enqIdx;
|
||||
assign io_forwardValid =
|
||||
|{entries_15_valid & entries_15_addrValid & entries_15_dataValid
|
||||
& entries_15_robIdx < io_loadRobIdx & entries_15_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_14_valid & entries_14_addrValid & entries_14_dataValid
|
||||
& entries_14_robIdx < io_loadRobIdx & entries_14_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_13_valid & entries_13_addrValid & entries_13_dataValid
|
||||
& entries_13_robIdx < io_loadRobIdx & entries_13_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_12_valid & entries_12_addrValid & entries_12_dataValid
|
||||
& entries_12_robIdx < io_loadRobIdx & entries_12_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_11_valid & entries_11_addrValid & entries_11_dataValid
|
||||
& entries_11_robIdx < io_loadRobIdx & entries_11_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_10_valid & entries_10_addrValid & entries_10_dataValid
|
||||
& entries_10_robIdx < io_loadRobIdx & entries_10_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_9_valid & entries_9_addrValid & entries_9_dataValid
|
||||
& entries_9_robIdx < io_loadRobIdx & entries_9_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_8_valid & entries_8_addrValid & entries_8_dataValid
|
||||
& entries_8_robIdx < io_loadRobIdx & entries_8_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_7_valid & entries_7_addrValid & entries_7_dataValid
|
||||
& entries_7_robIdx < io_loadRobIdx & entries_7_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_6_valid & entries_6_addrValid & entries_6_dataValid
|
||||
& entries_6_robIdx < io_loadRobIdx & entries_6_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_5_valid & entries_5_addrValid & entries_5_dataValid
|
||||
& entries_5_robIdx < io_loadRobIdx & entries_5_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_4_valid & entries_4_addrValid & entries_4_dataValid
|
||||
& entries_4_robIdx < io_loadRobIdx & entries_4_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_3_valid & entries_3_addrValid & entries_3_dataValid
|
||||
& entries_3_robIdx < io_loadRobIdx & entries_3_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_2_valid & entries_2_addrValid & entries_2_dataValid
|
||||
& entries_2_robIdx < io_loadRobIdx & entries_2_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_1_valid & entries_1_addrValid & entries_1_dataValid
|
||||
& entries_1_robIdx < io_loadRobIdx & entries_1_addr[63:3] == io_loadAddr[63:3],
|
||||
entries_0_valid & entries_0_addrValid & entries_0_dataValid
|
||||
& entries_0_robIdx < io_loadRobIdx & entries_0_addr[63:3] == io_loadAddr[63:3]};
|
||||
assign io_drainValid = |_io_drainValid_T;
|
||||
assign io_drain_addr = _GEN[drainIdx];
|
||||
assign io_drain_data = _GEN_0[drainIdx];
|
||||
assign io_drain_size = _GEN_1[drainIdx];
|
||||
endmodule
|
||||
|
||||
15
generated-ooo/WriteBackStage.sv
Normal file
15
generated-ooo/WriteBackStage.sv
Normal file
@@ -0,0 +1,15 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
module WriteBackStage(
|
||||
input io_valid,
|
||||
input [5:0] io_physDest,
|
||||
input [63:0] io_data,
|
||||
output io_wen,
|
||||
output [5:0] io_waddr,
|
||||
output [63:0] io_wdata
|
||||
);
|
||||
|
||||
assign io_wen = io_valid;
|
||||
assign io_waddr = io_physDest;
|
||||
assign io_wdata = io_data;
|
||||
endmodule
|
||||
|
||||
27
generated-ooo/data_1024x256.sv
Normal file
27
generated-ooo/data_1024x256.sv
Normal file
@@ -0,0 +1,27 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
// VCS coverage exclude_file
|
||||
module data_1024x256(
|
||||
input [9:0] R0_addr,
|
||||
input R0_en,
|
||||
R0_clk,
|
||||
output [255:0] R0_data,
|
||||
input [9:0] W0_addr,
|
||||
input W0_en,
|
||||
W0_clk,
|
||||
input [255:0] W0_data
|
||||
);
|
||||
|
||||
reg [255:0] Memory[0:1023];
|
||||
reg _R0_en_d0;
|
||||
reg [9:0] _R0_addr_d0;
|
||||
always @(posedge R0_clk) begin
|
||||
_R0_en_d0 <= R0_en;
|
||||
_R0_addr_d0 <= R0_addr;
|
||||
end // always @(posedge)
|
||||
always @(posedge W0_clk) begin
|
||||
if (W0_en)
|
||||
Memory[W0_addr] <= W0_data;
|
||||
end // always @(posedge)
|
||||
assign R0_data = _R0_en_d0 ? Memory[_R0_addr_d0] : 256'bx;
|
||||
endmodule
|
||||
|
||||
27
generated-ooo/data_64x4096.sv
Normal file
27
generated-ooo/data_64x4096.sv
Normal file
@@ -0,0 +1,27 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
// VCS coverage exclude_file
|
||||
module data_64x4096(
|
||||
input [5:0] R0_addr,
|
||||
input R0_en,
|
||||
R0_clk,
|
||||
output [4095:0] R0_data,
|
||||
input [5:0] W0_addr,
|
||||
input W0_en,
|
||||
W0_clk,
|
||||
input [4095:0] W0_data
|
||||
);
|
||||
|
||||
reg [4095:0] Memory[0:63];
|
||||
reg _R0_en_d0;
|
||||
reg [5:0] _R0_addr_d0;
|
||||
always @(posedge R0_clk) begin
|
||||
_R0_en_d0 <= R0_en;
|
||||
_R0_addr_d0 <= R0_addr;
|
||||
end // always @(posedge)
|
||||
always @(posedge W0_clk) begin
|
||||
if (W0_en)
|
||||
Memory[W0_addr] <= W0_data;
|
||||
end // always @(posedge)
|
||||
assign R0_data = _R0_en_d0 ? Memory[_R0_addr_d0] : 4096'bx;
|
||||
endmodule
|
||||
|
||||
31
generated-ooo/filelist.f
Normal file
31
generated-ooo/filelist.f
Normal file
@@ -0,0 +1,31 @@
|
||||
tags_1024x204.sv
|
||||
data_1024x256.sv
|
||||
ICache.sv
|
||||
Frontend.sv
|
||||
Decoder.sv
|
||||
IDStage.sv
|
||||
RenameTable.sv
|
||||
FreeList.sv
|
||||
ROB.sv
|
||||
RenameStage.sv
|
||||
ReservationStation.sv
|
||||
IssueQueue.sv
|
||||
IssueStage.sv
|
||||
PhysicalRegFile.sv
|
||||
ALU.sv
|
||||
BranchUnit.sv
|
||||
ExecStage.sv
|
||||
WriteBackStage.sv
|
||||
CommitStage.sv
|
||||
LoadQueue.sv
|
||||
StoreQueue.sv
|
||||
DTLB.sv
|
||||
PageTableWalker.sv
|
||||
MMU.sv
|
||||
tags_64x416.sv
|
||||
data_64x4096.sv
|
||||
DCache.sv
|
||||
LSU.sv
|
||||
CSRFile.sv
|
||||
OoOBackend.sv
|
||||
Core.sv
|
||||
27
generated-ooo/tags_1024x204.sv
Normal file
27
generated-ooo/tags_1024x204.sv
Normal file
@@ -0,0 +1,27 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
// VCS coverage exclude_file
|
||||
module tags_1024x204(
|
||||
input [9:0] R0_addr,
|
||||
input R0_en,
|
||||
R0_clk,
|
||||
output [203:0] R0_data,
|
||||
input [9:0] W0_addr,
|
||||
input W0_en,
|
||||
W0_clk,
|
||||
input [203:0] W0_data
|
||||
);
|
||||
|
||||
reg [203:0] Memory[0:1023];
|
||||
reg _R0_en_d0;
|
||||
reg [9:0] _R0_addr_d0;
|
||||
always @(posedge R0_clk) begin
|
||||
_R0_en_d0 <= R0_en;
|
||||
_R0_addr_d0 <= R0_addr;
|
||||
end // always @(posedge)
|
||||
always @(posedge W0_clk) begin
|
||||
if (W0_en)
|
||||
Memory[W0_addr] <= W0_data;
|
||||
end // always @(posedge)
|
||||
assign R0_data = _R0_en_d0 ? Memory[_R0_addr_d0] : 204'bx;
|
||||
endmodule
|
||||
|
||||
27
generated-ooo/tags_64x416.sv
Normal file
27
generated-ooo/tags_64x416.sv
Normal file
@@ -0,0 +1,27 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
// VCS coverage exclude_file
|
||||
module tags_64x416(
|
||||
input [5:0] R0_addr,
|
||||
input R0_en,
|
||||
R0_clk,
|
||||
output [415:0] R0_data,
|
||||
input [5:0] W0_addr,
|
||||
input W0_en,
|
||||
W0_clk,
|
||||
input [415:0] W0_data
|
||||
);
|
||||
|
||||
reg [415:0] Memory[0:63];
|
||||
reg _R0_en_d0;
|
||||
reg [5:0] _R0_addr_d0;
|
||||
always @(posedge R0_clk) begin
|
||||
_R0_en_d0 <= R0_en;
|
||||
_R0_addr_d0 <= R0_addr;
|
||||
end // always @(posedge)
|
||||
always @(posedge W0_clk) begin
|
||||
if (W0_en)
|
||||
Memory[W0_addr] <= W0_data;
|
||||
end // always @(posedge)
|
||||
assign R0_data = _R0_en_d0 ? Memory[_R0_addr_d0] : 416'bx;
|
||||
endmodule
|
||||
|
||||
38
generated-ooo/verification/OoOBackend_Verification.sv
Normal file
38
generated-ooo/verification/OoOBackend_Verification.sv
Normal file
@@ -0,0 +1,38 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
|
||||
// Users can define 'PRINTF_COND' to add an extra gate to prints.
|
||||
`ifndef PRINTF_COND_
|
||||
`ifdef PRINTF_COND
|
||||
`define PRINTF_COND_ (`PRINTF_COND)
|
||||
`else // PRINTF_COND
|
||||
`define PRINTF_COND_ 1
|
||||
`endif // PRINTF_COND
|
||||
`endif // not def PRINTF_COND_
|
||||
module OoOBackend_Verification();
|
||||
`ifndef SYNTHESIS
|
||||
always @(posedge OoOBackend.clock) begin
|
||||
automatic logic [63:0] _GEN;
|
||||
_GEN =
|
||||
OoOBackend.memSlot
|
||||
? OoOBackend.issue_io_out_1_decoded_pc
|
||||
: OoOBackend.issue_io_out_0_decoded_pc;
|
||||
if ((`PRINTF_COND_) & OoOBackend._storeEnq_T & _GEN < 64'h80000050
|
||||
& ~OoOBackend.reset)
|
||||
$fwrite(32'h80000002,
|
||||
"[mem-issue] pc=0x%x inst=0x%x isLoad=%d isStore=%d prs1=%d src1=0x%x immS=0x%x addr=0x%x ready=%d\n",
|
||||
_GEN,
|
||||
OoOBackend.memSlot
|
||||
? OoOBackend.issue_io_out_1_decoded_inst
|
||||
: OoOBackend.issue_io_out_0_decoded_inst, OoOBackend._layer_probe_0,
|
||||
OoOBackend._layer_probe_1,
|
||||
OoOBackend.memSlot
|
||||
? OoOBackend.issue_io_out_1_prs1
|
||||
: OoOBackend.issue_io_out_0_prs1, OoOBackend.memSrc1,
|
||||
OoOBackend._layer_probe, OoOBackend.memAddr,
|
||||
OoOBackend.memSlot
|
||||
? OoOBackend.issue_io_outReady_1
|
||||
: OoOBackend.issue_io_outReady_0);
|
||||
end // always @(posedge)
|
||||
`endif // not def SYNTHESIS
|
||||
endmodule
|
||||
|
||||
32
generated-ooo/verification/RenameStage_Verification.sv
Normal file
32
generated-ooo/verification/RenameStage_Verification.sv
Normal file
@@ -0,0 +1,32 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
|
||||
// Users can define 'PRINTF_COND' to add an extra gate to prints.
|
||||
`ifndef PRINTF_COND_
|
||||
`ifdef PRINTF_COND
|
||||
`define PRINTF_COND_ (`PRINTF_COND)
|
||||
`else // PRINTF_COND
|
||||
`define PRINTF_COND_ 1
|
||||
`endif // PRINTF_COND
|
||||
`endif // not def PRINTF_COND_
|
||||
module RenameStage_Verification();
|
||||
`ifndef SYNTHESIS
|
||||
always @(posedge RenameStage.clock) begin
|
||||
if ((`PRINTF_COND_) & RenameStage.io_outValid_0_0
|
||||
& RenameStage.io_in_0_pc < 64'h80000050 & ~RenameStage.reset)
|
||||
$fwrite(32'h80000002,
|
||||
"[rename] pc=0x%x inst=0x%x rs1=%d prs1=%d src1Ready=%d src1FromOlder=%d rd=%d prd=%d\n",
|
||||
RenameStage.io_in_0_pc, RenameStage.io_in_0_inst, RenameStage.io_in_0_rs1,
|
||||
RenameStage.table_io_prs1_0, RenameStage.io_out_0_src1Ready_0, 1'h0,
|
||||
RenameStage.io_in_0_rd, RenameStage.io_out_0_prd_0);
|
||||
if ((`PRINTF_COND_) & RenameStage.io_outValid_1_0
|
||||
& RenameStage.io_in_1_pc < 64'h80000050 & ~RenameStage.reset)
|
||||
$fwrite(32'h80000002,
|
||||
"[rename] pc=0x%x inst=0x%x rs1=%d prs1=%d src1Ready=%d src1FromOlder=%d rd=%d prd=%d\n",
|
||||
RenameStage.io_in_1_pc, RenameStage.io_in_1_inst, RenameStage.io_in_1_rs1,
|
||||
RenameStage.table_io_prs1_1, RenameStage.io_out_1_src1Ready_0,
|
||||
RenameStage.src1FromOlder, RenameStage.io_in_1_rd,
|
||||
RenameStage.io_out_1_prd_0);
|
||||
end // always @(posedge)
|
||||
`endif // not def SYNTHESIS
|
||||
endmodule
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
`ifndef layers_Core_Verification_Assert
|
||||
`define layers_Core_Verification_Assert
|
||||
`include "layers-Core-Verification.sv"
|
||||
`endif // not def layers_Core_Verification_Assert
|
||||
@@ -0,0 +1,5 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
`ifndef layers_Core_Verification_Assume
|
||||
`define layers_Core_Verification_Assume
|
||||
`include "layers-Core-Verification.sv"
|
||||
`endif // not def layers_Core_Verification_Assume
|
||||
@@ -0,0 +1,5 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
`ifndef layers_Core_Verification_Cover
|
||||
`define layers_Core_Verification_Cover
|
||||
`include "layers-Core-Verification.sv"
|
||||
`endif // not def layers_Core_Verification_Cover
|
||||
4
generated-ooo/verification/layers-Core-Verification.sv
Normal file
4
generated-ooo/verification/layers-Core-Verification.sv
Normal file
@@ -0,0 +1,4 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
`ifndef layers_Core_Verification
|
||||
`define layers_Core_Verification
|
||||
`endif // not def layers_Core_Verification
|
||||
@@ -0,0 +1,6 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
`ifndef layers_OoOBackend_Verification
|
||||
`define layers_OoOBackend_Verification
|
||||
`include "layers-RenameStage-Verification.sv"
|
||||
bind OoOBackend OoOBackend_Verification verification ();
|
||||
`endif // not def layers_OoOBackend_Verification
|
||||
@@ -0,0 +1,5 @@
|
||||
// Generated by CIRCT firtool-1.139.0
|
||||
`ifndef layers_RenameStage_Verification
|
||||
`define layers_RenameStage_Verification
|
||||
bind RenameStage RenameStage_Verification verification ();
|
||||
`endif // not def layers_RenameStage_Verification
|
||||
Reference in New Issue
Block a user