Merge branch 'rtl' of https://github.com/hansungk/vortex-private into rtl
This commit is contained in:
@@ -495,28 +495,34 @@ module Vortex import VX_gpu_pkg::*; #(
|
|||||||
// .busy(busy)
|
// .busy(busy)
|
||||||
// );
|
// );
|
||||||
|
|
||||||
always @(*) begin
|
always @(posedge clock) begin
|
||||||
if (busy === 1'b0) begin
|
if (!reset) begin
|
||||||
$display("---------------- no more active warps ----------------");
|
if (finished) begin
|
||||||
`ifdef SIMULATION
|
`ifdef SIMULATION
|
||||||
if ($time >= 60000) begin
|
$display("---------------- core%2d has no more active warps ----------------", CORE_ID);
|
||||||
$display("simulation has probably ended. exiting");
|
$display("simulation has ended. exiting");
|
||||||
@(posedge clock) $finish();
|
$finish();
|
||||||
|
`endif
|
||||||
|
// `ifdef SIMULATION
|
||||||
|
// if ($time >= 60000) begin
|
||||||
|
// $display("simulation has probably ended. exiting");
|
||||||
|
// @(posedge clock) $finish();
|
||||||
|
// end
|
||||||
|
// `endif
|
||||||
|
// TODO: lane assumed to be 4
|
||||||
|
// `ifndef SYNTHESIS
|
||||||
|
// for (integer j = 0; j < `NUM_WARPS; j++) begin
|
||||||
|
// $display("warp %2d", j);
|
||||||
|
// for (integer k = 0; k < `NUM_REGS; k += 1)
|
||||||
|
// $display("x%2d: %08x %08x %08x %08x", k,
|
||||||
|
// pipeline.issue.gpr_stage.iports[/*thread*/0].dp_ram1.not_out_reg.reg_dump.ram[j * `NUM_REGS + k],
|
||||||
|
// pipeline.issue.gpr_stage.iports[/*thread*/1].dp_ram1.not_out_reg.reg_dump.ram[j * `NUM_REGS + k],
|
||||||
|
// pipeline.issue.gpr_stage.iports[/*thread*/2].dp_ram1.not_out_reg.reg_dump.ram[j * `NUM_REGS + k],
|
||||||
|
// pipeline.issue.gpr_stage.iports[/*thread*/3].dp_ram1.not_out_reg.reg_dump.ram[j * `NUM_REGS + k]);
|
||||||
|
// end
|
||||||
|
// `endif
|
||||||
|
// @(posedge clock) $finish();
|
||||||
end
|
end
|
||||||
`endif
|
|
||||||
// TODO: lane assumed to be 4
|
|
||||||
// `ifndef SYNTHESIS
|
|
||||||
// for (integer j = 0; j < `NUM_WARPS; j++) begin
|
|
||||||
// $display("warp %2d", j);
|
|
||||||
// for (integer k = 0; k < `NUM_REGS; k += 1)
|
|
||||||
// $display("x%2d: %08x %08x %08x %08x", k,
|
|
||||||
// pipeline.issue.gpr_stage.iports[/*thread*/0].dp_ram1.not_out_reg.reg_dump.ram[j * `NUM_REGS + k],
|
|
||||||
// pipeline.issue.gpr_stage.iports[/*thread*/1].dp_ram1.not_out_reg.reg_dump.ram[j * `NUM_REGS + k],
|
|
||||||
// pipeline.issue.gpr_stage.iports[/*thread*/2].dp_ram1.not_out_reg.reg_dump.ram[j * `NUM_REGS + k],
|
|
||||||
// pipeline.issue.gpr_stage.iports[/*thread*/3].dp_ram1.not_out_reg.reg_dump.ram[j * `NUM_REGS + k]);
|
|
||||||
// end
|
|
||||||
// `endif
|
|
||||||
// @(posedge clock) $finish();
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -532,66 +532,70 @@ module VX_mem_scheduler #(
|
|||||||
|
|
||||||
`ifndef NDEBUG
|
`ifndef NDEBUG
|
||||||
wire [NUM_BANKS-1:0] mem_req_fire_s = mem_req_valid_s & mem_req_ready_s;
|
wire [NUM_BANKS-1:0] mem_req_fire_s = mem_req_valid_s & mem_req_ready_s;
|
||||||
always @(posedge clk) begin
|
always @(negedge clk) begin
|
||||||
if (req_valid && req_ready) begin
|
if (!reset) begin
|
||||||
if (req_rw) begin
|
if (req_valid && req_ready) begin
|
||||||
`TRACE(1, ("%d: %s-core-req-wr: valid=%b, addr=", $time, INST_ID, req_mask));
|
if (req_rw) begin
|
||||||
`TRACE_ARRAY1D(1, req_addr, NUM_REQS);
|
`TRACE(1, ("%d: %s-core-req-wr: valid=%b, addr=", $time, INST_ID, req_mask));
|
||||||
`TRACE(1, (", byteen="));
|
`TRACE_ARRAY1D(1, req_addr, NUM_REQS);
|
||||||
`TRACE_ARRAY1D(1, req_byteen, NUM_REQS);
|
`TRACE(1, (", byteen="));
|
||||||
`TRACE(1, (", data="));
|
`TRACE_ARRAY1D(1, req_byteen, NUM_REQS);
|
||||||
`TRACE_ARRAY1D(1, req_data, NUM_REQS);
|
`TRACE(1, (", data="));
|
||||||
end else begin
|
`TRACE_ARRAY1D(1, req_data, NUM_REQS);
|
||||||
`TRACE(1, ("%d: %s-core-req-rd: valid=%b, addr=", $time, INST_ID, req_mask));
|
end else begin
|
||||||
`TRACE_ARRAY1D(1, req_addr, NUM_REQS);
|
`TRACE(1, ("%d: %s-core-req-rd: valid=%b, addr=", $time, INST_ID, req_mask));
|
||||||
|
`TRACE_ARRAY1D(1, req_addr, NUM_REQS);
|
||||||
|
end
|
||||||
|
`TRACE(1, (", tag=0x%0h, tag_only=0x%0h (#%0d)\n", req_tag, req_tag[TAG_ONLY_WIDTH-1:0], req_dbg_uuid));
|
||||||
end
|
end
|
||||||
`TRACE(1, (", tag=0x%0h, tag_only=0x%0h (#%0d)\n", req_tag, req_tag[TAG_ONLY_WIDTH-1:0], req_dbg_uuid));
|
if (rsp_valid && rsp_ready) begin
|
||||||
end
|
`TRACE(1, ("%d: %s-rsp: valid=%b, sop=%b, eop=%b, data=", $time, INST_ID, rsp_mask, rsp_sop, rsp_eop));
|
||||||
if (rsp_valid && rsp_ready) begin
|
`TRACE_ARRAY1D(1, rsp_data, NUM_REQS);
|
||||||
`TRACE(1, ("%d: %s-rsp: valid=%b, sop=%b, eop=%b, data=", $time, INST_ID, rsp_mask, rsp_sop, rsp_eop));
|
`TRACE(1, (", tag=0x%0h, tag_only=0x%0h (#%0d)\n", rsp_tag, rsp_tag[TAG_ONLY_WIDTH-1:0], rsp_dbg_uuid));
|
||||||
`TRACE_ARRAY1D(1, rsp_data, NUM_REQS);
|
end
|
||||||
`TRACE(1, (", tag=0x%0h, tag_only=0x%0h (#%0d)\n", rsp_tag, rsp_tag[TAG_ONLY_WIDTH-1:0], rsp_dbg_uuid));
|
if (| mem_req_fire_s) begin
|
||||||
end
|
if (| mem_req_rw_s) begin
|
||||||
if (| mem_req_fire_s) begin
|
`TRACE(1, ("%d: %s-mem-req-wr: valid=%b, addr=", $time, INST_ID, mem_req_fire_s));
|
||||||
if (| mem_req_rw_s) begin
|
`TRACE_ARRAY1D(1, mem_req_addr_s, NUM_BANKS);
|
||||||
`TRACE(1, ("%d: %s-mem-req-wr: valid=%b, addr=", $time, INST_ID, mem_req_fire_s));
|
`TRACE(1, (", byteen="));
|
||||||
`TRACE_ARRAY1D(1, mem_req_addr_s, NUM_BANKS);
|
`TRACE_ARRAY1D(1, mem_req_byteen_s, NUM_BANKS);
|
||||||
`TRACE(1, (", byteen="));
|
`TRACE(1, (", data="));
|
||||||
`TRACE_ARRAY1D(1, mem_req_byteen_s, NUM_BANKS);
|
`TRACE_ARRAY1D(1, mem_req_data_s, NUM_BANKS);
|
||||||
`TRACE(1, (", data="));
|
end else begin
|
||||||
`TRACE_ARRAY1D(1, mem_req_data_s, NUM_BANKS);
|
`TRACE(1, ("%d: %s-mem-req-rd: valid=%b, addr=", $time, INST_ID, mem_req_fire_s));
|
||||||
end else begin
|
`TRACE_ARRAY1D(1, mem_req_addr_s, NUM_BANKS);
|
||||||
`TRACE(1, ("%d: %s-mem-req-rd: valid=%b, addr=", $time, INST_ID, mem_req_fire_s));
|
end
|
||||||
`TRACE_ARRAY1D(1, mem_req_addr_s, NUM_BANKS);
|
`TRACE(1, (", ibuf_idx=%0d, batch_idx=%0d (#%0d)\n", ibuf_waddr, req_batch_idx, mem_req_dbg_uuid));
|
||||||
|
end
|
||||||
|
if (mem_rsp_fire_s) begin
|
||||||
|
`TRACE(1, ("%d: %s-mem-rsp: valid=%b, data=", $time, INST_ID, mem_rsp_mask_s));
|
||||||
|
`TRACE_ARRAY1D(1, mem_rsp_data_s, NUM_BANKS);
|
||||||
|
`TRACE(1, (", ibuf_idx=%0d, batch_idx=%0d (#%0d)\n", ibuf_raddr, rsp_batch_idx, mem_rsp_dbg_uuid));
|
||||||
end
|
end
|
||||||
`TRACE(1, (", ibuf_idx=%0d, batch_idx=%0d (#%0d)\n", ibuf_waddr, req_batch_idx, mem_req_dbg_uuid));
|
|
||||||
end
|
|
||||||
if (mem_rsp_fire_s) begin
|
|
||||||
`TRACE(1, ("%d: %s-mem-rsp: valid=%b, data=", $time, INST_ID, mem_rsp_mask_s));
|
|
||||||
`TRACE_ARRAY1D(1, mem_rsp_data_s, NUM_BANKS);
|
|
||||||
`TRACE(1, (", ibuf_idx=%0d, batch_idx=%0d (#%0d)\n", ibuf_raddr, rsp_batch_idx, mem_rsp_dbg_uuid));
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
`else
|
`else
|
||||||
always @(posedge clk) begin
|
always @(negedge clk) begin
|
||||||
if (req_valid && req_ready) begin
|
if (!reset) begin
|
||||||
if (req_rw) begin
|
if (req_valid && req_ready) begin
|
||||||
`TRACE(1, ("%d: %s-core-req-wr: valid=%b, addr=", $time, INST_ID, req_mask));
|
if (req_rw) begin
|
||||||
`TRACE_ARRAY1D(1, req_addr, NUM_REQS);
|
`TRACE(1, ("%d: %s-core-req-wr: valid=%b, addr=", $time, INST_ID, req_mask));
|
||||||
`TRACE(1, (", byteen="));
|
`TRACE_ARRAY1D(1, req_addr, NUM_REQS);
|
||||||
`TRACE_ARRAY1D(1, req_byteen, NUM_REQS);
|
`TRACE(1, (", byteen="));
|
||||||
`TRACE(1, (", data="));
|
`TRACE_ARRAY1D(1, req_byteen, NUM_REQS);
|
||||||
`TRACE_ARRAY1D(1, req_data, NUM_REQS);
|
`TRACE(1, (", data="));
|
||||||
end else begin
|
`TRACE_ARRAY1D(1, req_data, NUM_REQS);
|
||||||
`TRACE(1, ("%d: %s-core-req-rd: valid=%b, addr=", $time, INST_ID, req_mask));
|
end else begin
|
||||||
`TRACE_ARRAY1D(1, req_addr, NUM_REQS);
|
`TRACE(1, ("%d: %s-core-req-rd: valid=%b, addr=", $time, INST_ID, req_mask));
|
||||||
|
`TRACE_ARRAY1D(1, req_addr, NUM_REQS);
|
||||||
|
end
|
||||||
|
`TRACE(1, (", tag=0x%0h, tag_only=0x%0h\n", req_tag, req_tag[TAG_ONLY_WIDTH-1:0]));
|
||||||
|
end
|
||||||
|
if (rsp_valid && rsp_ready) begin
|
||||||
|
`TRACE(1, ("%d: %s-rsp: valid=%b, sop=%b, eop=%b, data=", $time, INST_ID, rsp_mask, rsp_sop, rsp_eop));
|
||||||
|
`TRACE_ARRAY1D(1, rsp_data, NUM_REQS);
|
||||||
|
`TRACE(1, (", tag=0x%0h, tag_only=0x%0h\n", rsp_tag, rsp_tag[TAG_ONLY_WIDTH-1:0]));
|
||||||
end
|
end
|
||||||
`TRACE(1, (", tag=0x%0h, tag_only=0x%0h\n", req_tag, req_tag[TAG_ONLY_WIDTH-1:0]));
|
|
||||||
end
|
|
||||||
if (rsp_valid && rsp_ready) begin
|
|
||||||
`TRACE(1, ("%d: %s-rsp: valid=%b, sop=%b, eop=%b, data=", $time, INST_ID, rsp_mask, rsp_sop, rsp_eop));
|
|
||||||
`TRACE_ARRAY1D(1, rsp_data, NUM_REQS);
|
|
||||||
`TRACE(1, (", tag=0x%0h, tag_only=0x%0h\n", rsp_tag, rsp_tag[TAG_ONLY_WIDTH-1:0]));
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
`endif
|
`endif
|
||||||
|
|||||||
Reference in New Issue
Block a user