config change, move ucode
This commit is contained in:
@@ -322,7 +322,7 @@ module Vortex import VX_gpu_pkg::*; #(
|
|||||||
end
|
end
|
||||||
// Delay reset signal by a few cycles to make time for resetting the DCR
|
// Delay reset signal by a few cycles to make time for resetting the DCR
|
||||||
// (device configuration registers).
|
// (device configuration registers).
|
||||||
assign core_reset = reset || (reset_start_counter != 4'h0) || intr_reset;
|
assign core_reset = reset || (reset_start_counter != 4'h0); // || intr_reset;
|
||||||
|
|
||||||
// A small FSM that tries to set DCR "properly" in the same order as
|
// A small FSM that tries to set DCR "properly" in the same order as
|
||||||
// defined in VX_types.vh.
|
// defined in VX_types.vh.
|
||||||
|
|||||||
@@ -23,20 +23,21 @@
|
|||||||
`define SV_DPI
|
`define SV_DPI
|
||||||
`endif // SIMULATION
|
`endif // SIMULATION
|
||||||
|
|
||||||
`ifdef SYNTHESIS
|
|
||||||
`define GPR_RESET
|
`define GPR_RESET
|
||||||
|
`define GPR_DUPLICATED
|
||||||
|
`define GBAR_ENABLE
|
||||||
|
`define GBAR_CLUSTER_ENABLE
|
||||||
`define LSU_DUP_DISABLE
|
`define LSU_DUP_DISABLE
|
||||||
`define ICACHE_DISABLE
|
`define ICACHE_DISABLE
|
||||||
`define DCACHE_DISABLE
|
`define DCACHE_DISABLE
|
||||||
`define GBAR_ENABLE
|
|
||||||
`define GBAR_CLUSTER_ENABLE
|
|
||||||
`define FPU_FPNEW
|
|
||||||
`define NUM_BARRIERS 8
|
`define NUM_BARRIERS 8
|
||||||
`define NUM_CORES 2
|
`define NUM_CORES 4
|
||||||
`define NUM_THREADS 8
|
`define NUM_THREADS 8
|
||||||
`define NUM_WARPS 8
|
`define NUM_WARPS 8
|
||||||
`define EXT_T_DISABLE
|
|
||||||
|
|
||||||
|
`ifdef SYNTHESIS
|
||||||
|
`define FPU_FPNEW
|
||||||
`define FIRESIM
|
`define FIRESIM
|
||||||
`endif // SYNTHESIS
|
`endif // SYNTHESIS
|
||||||
|
|
||||||
@@ -206,7 +207,7 @@
|
|||||||
`define UNUSED_ARG(x) /* verilator lint_off UNUSED */ \
|
`define UNUSED_ARG(x) /* verilator lint_off UNUSED */ \
|
||||||
x \
|
x \
|
||||||
/* verilator lint_on UNUSED */
|
/* verilator lint_on UNUSED */
|
||||||
`define TRACE(level, args) $display args
|
`define TRACE(level, args) $write args
|
||||||
`endif
|
`endif
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,105 @@ module VX_uop_sequencer import VX_gpu_pkg::*; (
|
|||||||
|
|
||||||
always @(*) begin
|
always @(*) begin
|
||||||
case (upc)
|
case (upc)
|
||||||
`include "VX_tensor_ucode.vh"
|
`ifdef EXT_T_ENABLE
|
||||||
|
// uop metadata (sequencing, next state), execution metadata (EX_TYPE, OP_TYPE, OP_MOD), wb, use pc, use imm, pc, imm, rd, rs1, rs2, rs3
|
||||||
|
HMMA_SET0_STEP0_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET0_STEP0_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(0), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(16), `FREG(0), `FREG(8), `FREG(16)};
|
||||||
|
end
|
||||||
|
HMMA_SET0_STEP0_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET0_STEP1_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(0), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(17), `FREG(1), `FREG(9), `FREG(17)};
|
||||||
|
end
|
||||||
|
HMMA_SET0_STEP1_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET0_STEP1_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(1), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(18), `FREG(0), `FREG(8), `FREG(18)};
|
||||||
|
end
|
||||||
|
HMMA_SET0_STEP1_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET0_STEP2_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(1), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(19), `FREG(1), `FREG(9), `FREG(19)};
|
||||||
|
end
|
||||||
|
HMMA_SET0_STEP2_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET0_STEP2_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(2), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(20), `FREG(0), `FREG(8), `FREG(20)};
|
||||||
|
end
|
||||||
|
HMMA_SET0_STEP2_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET0_STEP3_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(2), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(21), `FREG(1), `FREG(9), `FREG(21)};
|
||||||
|
end
|
||||||
|
HMMA_SET0_STEP3_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET0_STEP3_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(3), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(22), `FREG(0), `FREG(8), `FREG(22)};
|
||||||
|
end
|
||||||
|
HMMA_SET0_STEP3_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET1_STEP0_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(3), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(23), `FREG(1), `FREG(9), `FREG(23)};
|
||||||
|
end
|
||||||
|
HMMA_SET1_STEP0_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET1_STEP0_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(0), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(16), `FREG(2), `FREG(10), `FREG(16)};
|
||||||
|
end
|
||||||
|
HMMA_SET1_STEP0_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET1_STEP1_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(0), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(17), `FREG(3), `FREG(11), `FREG(17)};
|
||||||
|
end
|
||||||
|
HMMA_SET1_STEP1_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET1_STEP1_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(1), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(18), `FREG(2), `FREG(10), `FREG(18)};
|
||||||
|
end
|
||||||
|
HMMA_SET1_STEP1_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET1_STEP2_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(1), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(19), `FREG(3), `FREG(11), `FREG(19)};
|
||||||
|
end
|
||||||
|
HMMA_SET1_STEP2_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET1_STEP2_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(2), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(20), `FREG(2), `FREG(10), `FREG(20)};
|
||||||
|
end
|
||||||
|
HMMA_SET1_STEP2_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET1_STEP3_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(2), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(21), `FREG(3), `FREG(11), `FREG(21)};
|
||||||
|
end
|
||||||
|
HMMA_SET1_STEP3_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET1_STEP3_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(3), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(22), `FREG(2), `FREG(10), `FREG(22)};
|
||||||
|
end
|
||||||
|
HMMA_SET1_STEP3_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET2_STEP0_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(3), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(23), `FREG(3), `FREG(11), `FREG(23)};
|
||||||
|
end
|
||||||
|
HMMA_SET2_STEP0_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET2_STEP0_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(0), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(16), `FREG(4), `FREG(12), `FREG(16)};
|
||||||
|
end
|
||||||
|
HMMA_SET2_STEP0_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET2_STEP1_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(0), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(17), `FREG(5), `FREG(13), `FREG(17)};
|
||||||
|
end
|
||||||
|
HMMA_SET2_STEP1_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET2_STEP1_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(1), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(18), `FREG(4), `FREG(12), `FREG(18)};
|
||||||
|
end
|
||||||
|
HMMA_SET2_STEP1_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET2_STEP2_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(1), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(19), `FREG(5), `FREG(13), `FREG(19)};
|
||||||
|
end
|
||||||
|
HMMA_SET2_STEP2_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET2_STEP2_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(2), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(20), `FREG(4), `FREG(12), `FREG(20)};
|
||||||
|
end
|
||||||
|
HMMA_SET2_STEP2_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET2_STEP3_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(2), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(21), `FREG(5), `FREG(13), `FREG(21)};
|
||||||
|
end
|
||||||
|
HMMA_SET2_STEP3_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET2_STEP3_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(3), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(22), `FREG(4), `FREG(12), `FREG(22)};
|
||||||
|
end
|
||||||
|
HMMA_SET2_STEP3_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET3_STEP0_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(3), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(23), `FREG(5), `FREG(13), `FREG(23)};
|
||||||
|
end
|
||||||
|
HMMA_SET3_STEP0_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET3_STEP0_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(0), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(16), `FREG(6), `FREG(14), `FREG(16)};
|
||||||
|
end
|
||||||
|
HMMA_SET3_STEP0_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET3_STEP1_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(0), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(17), `FREG(7), `FREG(15), `FREG(17)};
|
||||||
|
end
|
||||||
|
HMMA_SET3_STEP1_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET3_STEP1_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(1), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(18), `FREG(6), `FREG(14), `FREG(18)};
|
||||||
|
end
|
||||||
|
HMMA_SET3_STEP1_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET3_STEP2_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(1), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(19), `FREG(7), `FREG(15), `FREG(19)};
|
||||||
|
end
|
||||||
|
HMMA_SET3_STEP2_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET3_STEP2_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(2), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(20), `FREG(6), `FREG(14), `FREG(20)};
|
||||||
|
end
|
||||||
|
HMMA_SET3_STEP2_1: begin
|
||||||
|
uop = {NEXT, HMMA_SET3_STEP3_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(2), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(21), `FREG(7), `FREG(15), `FREG(21)};
|
||||||
|
end
|
||||||
|
HMMA_SET3_STEP3_0: begin
|
||||||
|
uop = {NEXT, HMMA_SET3_STEP3_1, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(3), `INST_MOD_BITS'(0), 1'b1, 1'b0, 1'b0, 32'b0, 32'b0, `FREG(22), `FREG(6), `FREG(14), `FREG(22)};
|
||||||
|
end
|
||||||
|
HMMA_SET3_STEP3_1: begin
|
||||||
|
uop = {FINISH, HMMA_SET0_STEP0_0, `EX_BITS'(`EX_TENSOR), `INST_OP_BITS'(3), `INST_MOD_BITS'(1), 1'b1, 1'b0, 1'b0, 32'b1, 32'b1, `FREG(23), `FREG(7), `FREG(15), `FREG(23)};
|
||||||
|
end
|
||||||
|
`endif
|
||||||
default: begin
|
default: begin
|
||||||
uop = '0;
|
uop = '0;
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user