From 72e06ef4fe740269e032430f0dc4d36be385a02f Mon Sep 17 00:00:00 2001 From: Krishna Yalamarthy Date: Sat, 13 Mar 2021 22:01:25 -0500 Subject: [PATCH] Tex CSRs write support added --- driver/tests/tex_demo/common.h | 2 + driver/tests/tex_demo/demo | Bin 48680 -> 48696 bytes driver/tests/tex_demo/demo.cpp | 1 + driver/tests/tex_demo/kernel.c | 4 +- hw/VX_config.h | 29 ++++++++++++- hw/rtl/VX_config.vh | 25 +++++++++++ hw/rtl/VX_csr_data.v | 8 +++- hw/rtl/VX_csr_unit.v | 4 +- hw/rtl/VX_define.vh | 1 + hw/rtl/VX_execute.v | 6 ++- hw/rtl/VX_gpu_unit.v | 2 + hw/rtl/interfaces/VX_tex_csr_if.v | 20 +++++++++ hw/rtl/interfaces/VX_tex_req_if.v | 1 + hw/rtl/tex_unit/VX_tex_unit.v | 70 +++++++++++++++++++++++++++++- 14 files changed, 166 insertions(+), 7 deletions(-) create mode 100644 hw/rtl/interfaces/VX_tex_csr_if.v diff --git a/driver/tests/tex_demo/common.h b/driver/tests/tex_demo/common.h index d6540ae1..d24a889c 100644 --- a/driver/tests/tex_demo/common.h +++ b/driver/tests/tex_demo/common.h @@ -3,6 +3,8 @@ #define KERNEL_ARG_DEV_MEM_ADDR 0x7ffff000 +// #include + struct kernel_arg_t { uint32_t num_tasks; uint32_t task_size; diff --git a/driver/tests/tex_demo/demo b/driver/tests/tex_demo/demo index faa176c1f1f99c50b1aa190529c615f7f604ba98..922905c550b4e28bf17d96db10408ae0bb1461bc 100755 GIT binary patch delta 12304 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 delta 12183 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 diff --git a/driver/tests/tex_demo/demo.cpp b/driver/tests/tex_demo/demo.cpp index a28d675d..229734a5 100644 --- a/driver/tests/tex_demo/demo.cpp +++ b/driver/tests/tex_demo/demo.cpp @@ -141,6 +141,7 @@ int main(int argc, char *argv[]) { kernel_arg.num_tasks = num_tasks; kernel_arg.task_size = count; + kernel_arg.device_ptr = device; std::cout << "dev_src0=" << std::hex << kernel_arg.src0_ptr << std::endl; std::cout << "dev_src1=" << std::hex << kernel_arg.src1_ptr << std::endl; diff --git a/driver/tests/tex_demo/kernel.c b/driver/tests/tex_demo/kernel.c index c142eefb..9a936c1d 100644 --- a/driver/tests/tex_demo/kernel.c +++ b/driver/tests/tex_demo/kernel.c @@ -14,7 +14,9 @@ void kernel_body(int task_id, void* arg) { unsigned u = 1; unsigned v = 1; unsigned t = 1; - + + // vx_csr_set(_arg->device_ptr, 0, 0xfd0, 0xffd); + uint32_t offset = task_id * count; for (uint32_t i = 0; i < count; ++i) { diff --git a/hw/VX_config.h b/hw/VX_config.h index f967463e..05339ece 100644 --- a/hw/VX_config.h +++ b/hw/VX_config.h @@ -1,5 +1,5 @@ // auto-generated by gen_config.py. DO NOT EDIT -// Generated at 2021-03-12 17:51:37.263369 +// Generated at 2021-03-13 13:57:30.622905 #ifndef VX_USER_CONFIG #define VX_USER_CONFIG @@ -7,7 +7,7 @@ #endif // auto-generated by gen_config.py. DO NOT EDIT -// Generated at 2021-03-12 17:51:37.265050 +// Generated at 2021-03-13 13:57:30.624676 // Translated from VX_config.vh: @@ -246,6 +246,31 @@ #define CSR_NW 0xFC1 #define CSR_NC 0xFC2 +////////// Texture Unit CSRs ///////////// +#define CSR_TEX_BEGIN 0xFD0 +// Unit 1 +#define CSR_TEX0_ADDR CSR_TEX_BEGIN +#define CSR_TEX0_FORMAT CSR_TEX_BEGIN + 0x1 +#define CSR_TEX0_WIDTH CSR_TEX_BEGIN + 0x2 +#define CSR_TEX0_HEIGHT CSR_TEX_BEGIN + 0x3 +#define CSR_TEX0_STRIDE CSR_TEX_BEGIN + 0x4 +#define CSR_TEX0_WRAP_U CSR_TEX_BEGIN + 0x5 +#define CSR_TEX0_WRAP_V CSR_TEX_BEGIN + 0x6 +#define CSR_TEX0_MIN_FILTER CSR_TEX_BEGIN + 0x7 +#define CSR_TEX0_MAX_FILTER CSR_TEX_BEGIN + 0x8 + +// Unit 2 +#define CSR_TEX1_ADDR CSR_TEX_BEGIN + 0x9 +#define CSR_TEX1_FORMAT CSR_TEX_BEGIN + 0xA +#define CSR_TEX1_WIDTH CSR_TEX_BEGIN + 0xB +#define CSR_TEX1_HEIGHT CSR_TEX_BEGIN + 0xC +#define CSR_TEX1_STRIDE CSR_TEX_BEGIN + 0xD +#define CSR_TEX1_WRAP_U CSR_TEX_BEGIN + 0xE +#define CSR_TEX1_WRAP_V CSR_TEX_BEGIN + 0xF +#define CSR_TEX1_MIN_FILTER CSR_TEX_BEGIN + 0x10 +#define CSR_TEX1_MAX_FILTER CSR_TEX_BEGIN + 0x11 + +#define CSR_TEX_END CSR_TEX1_MAX_FILTER // Pipeline Queues //////////////////////////////////////////////////////////// // Size of LSU Request Queue diff --git a/hw/rtl/VX_config.vh b/hw/rtl/VX_config.vh index ae09cdc0..fa9d2af4 100644 --- a/hw/rtl/VX_config.vh +++ b/hw/rtl/VX_config.vh @@ -233,6 +233,31 @@ `define CSR_NW 12'hFC1 `define CSR_NC 12'hFC2 +////////// Texture Unit CSRs ///////////// +`define CSR_TEX_BEGIN 12'hFD0 +// Unit 1 +`define CSR_TEX0_ADDR `CSR_TEX_BEGIN +`define CSR_TEX0_FORMAT `CSR_TEX_BEGIN + 12'h1 +`define CSR_TEX0_WIDTH `CSR_TEX_BEGIN + 12'h2 +`define CSR_TEX0_HEIGHT `CSR_TEX_BEGIN + 12'h3 +`define CSR_TEX0_STRIDE `CSR_TEX_BEGIN + 12'h4 +`define CSR_TEX0_WRAP_U `CSR_TEX_BEGIN + 12'h5 +`define CSR_TEX0_WRAP_V `CSR_TEX_BEGIN + 12'h6 +`define CSR_TEX0_MIN_FILTER `CSR_TEX_BEGIN + 12'h7 +`define CSR_TEX0_MAX_FILTER `CSR_TEX_BEGIN + 12'h8 + +// Unit 2 +`define CSR_TEX1_ADDR `CSR_TEX_BEGIN + 12'h9 +`define CSR_TEX1_FORMAT `CSR_TEX_BEGIN + 12'hA +`define CSR_TEX1_WIDTH `CSR_TEX_BEGIN + 12'hB +`define CSR_TEX1_HEIGHT `CSR_TEX_BEGIN + 12'hC +`define CSR_TEX1_STRIDE `CSR_TEX_BEGIN + 12'hD +`define CSR_TEX1_WRAP_U `CSR_TEX_BEGIN + 12'hE +`define CSR_TEX1_WRAP_V `CSR_TEX_BEGIN + 12'hF +`define CSR_TEX1_MIN_FILTER `CSR_TEX_BEGIN + 12'h10 +`define CSR_TEX1_MAX_FILTER `CSR_TEX_BEGIN + 12'h11 + +`define CSR_TEX_END `CSR_TEX1_MAX_FILTER // Pipeline Queues //////////////////////////////////////////////////////////// // Size of LSU Request Queue diff --git a/hw/rtl/VX_csr_data.v b/hw/rtl/VX_csr_data.v index 64e237e4..05fe8250 100644 --- a/hw/rtl/VX_csr_data.v +++ b/hw/rtl/VX_csr_data.v @@ -13,6 +13,7 @@ module VX_csr_data #( VX_cmt_to_csr_if cmt_to_csr_if, VX_fpu_to_csr_if fpu_to_csr_if, + VX_tex_csr_if tex_csr_if, input wire read_enable, input wire[`CSR_ADDR_BITS-1:0] read_addr, @@ -53,7 +54,7 @@ module VX_csr_data #( | fcsr[fpu_to_csr_if.write_wid][`FFG_BITS-1:0]; end - if (write_enable) begin + if (write_enable && (write_addr > `CSR_TEX_END || write_addr < `CSR_TEX_BEGIN)) begin case (write_addr) `CSR_FFLAGS: fcsr[write_wid][`FFG_BITS-1:0] <= write_data[`FFG_BITS-1:0]; `CSR_FRM: fcsr[write_wid][`FRM_BITS+`FFG_BITS-1:`FFG_BITS] <= write_data[`FRM_BITS-1:0]; @@ -79,6 +80,11 @@ module VX_csr_data #( end end + //write tex csrs + assign tex_csr_if.write_addr = write_addr; + assign tex_csr_if.write_data = write_data; + assign tex_csr_if.write_enable = write_enable; + always @(posedge clk) begin if (reset) begin csr_cycle <= 0; diff --git a/hw/rtl/VX_csr_unit.v b/hw/rtl/VX_csr_unit.v index a282afe1..325dbdd1 100644 --- a/hw/rtl/VX_csr_unit.v +++ b/hw/rtl/VX_csr_unit.v @@ -12,7 +12,8 @@ module VX_csr_unit #( `endif VX_cmt_to_csr_if cmt_to_csr_if, - VX_fpu_to_csr_if fpu_to_csr_if, + VX_fpu_to_csr_if fpu_to_csr_if, + VX_tex_csr_if tex_csr_if, VX_csr_io_req_if csr_io_req_if, VX_csr_io_rsp_if csr_io_rsp_if, @@ -62,6 +63,7 @@ module VX_csr_unit #( `endif .cmt_to_csr_if (cmt_to_csr_if), .fpu_to_csr_if (fpu_to_csr_if), + .tex_csr_if (tex_csr_if), .read_enable (csr_pipe_req_if.valid), .read_addr (csr_pipe_req_if.addr), .read_wid (csr_pipe_req_if.wid), diff --git a/hw/rtl/VX_define.vh b/hw/rtl/VX_define.vh index db1be050..139b2a05 100644 --- a/hw/rtl/VX_define.vh +++ b/hw/rtl/VX_define.vh @@ -385,6 +385,7 @@ `define XDRAM_TAG_WIDTH (`DDRAM_TAG_WIDTH+`CLOG2(2)) ////////////////////////// Texture Unit Configurable Knobs ////////////////////////////// +`define NUM_TEX_UNITS 2 `define MADDRW 8 `define MAXWTW 8 `define MAXHTW 8 diff --git a/hw/rtl/VX_execute.v b/hw/rtl/VX_execute.v index 81e0b1cc..5ac78f35 100644 --- a/hw/rtl/VX_execute.v +++ b/hw/rtl/VX_execute.v @@ -45,6 +45,8 @@ module VX_execute #( output wire ebreak ); VX_fpu_to_csr_if fpu_to_csr_if(); + VX_tex_csr_if tex_csr_if(); + wire[`NUM_WARPS-1:0] csr_pending; wire[`NUM_WARPS-1:0] fpu_pending; @@ -82,6 +84,7 @@ module VX_execute #( `endif .cmt_to_csr_if (cmt_to_csr_if), .fpu_to_csr_if (fpu_to_csr_if), + .tex_csr_if (tex_csr_if), .csr_io_req_if (csr_io_req_if), .csr_io_rsp_if (csr_io_rsp_if), .csr_req_if (csr_req_if), @@ -129,7 +132,8 @@ module VX_execute #( .reset (reset), .gpu_req_if (gpu_req_if), .warp_ctl_if (warp_ctl_if), - .gpu_commit_if (gpu_commit_if) + .gpu_commit_if (gpu_commit_if), + .tex_csr_if (tex_csr_if) ); assign ebreak = alu_req_if.valid diff --git a/hw/rtl/VX_gpu_unit.v b/hw/rtl/VX_gpu_unit.v index dadf50c7..9cad586d 100644 --- a/hw/rtl/VX_gpu_unit.v +++ b/hw/rtl/VX_gpu_unit.v @@ -10,6 +10,7 @@ module VX_gpu_unit #( // Inputs VX_gpu_req_if gpu_req_if, + VX_tex_csr_if tex_csr_if, // Outputs VX_warp_ctl_if warp_ctl_if, @@ -99,6 +100,7 @@ module VX_gpu_unit #( .reset (reset), .tex_req_if (tex_req_if), + .tex_csr_if (tex_csr_if), .tex_rsp_if (tex_rsp_if) ); diff --git a/hw/rtl/interfaces/VX_tex_csr_if.v b/hw/rtl/interfaces/VX_tex_csr_if.v new file mode 100644 index 00000000..02422290 --- /dev/null +++ b/hw/rtl/interfaces/VX_tex_csr_if.v @@ -0,0 +1,20 @@ +`ifndef VX_TEX_CSR_IF +`define VX_TEX_CSR_IF + +`include "VX_define.vh" + +interface VX_tex_csr_if (); + + // wire read_enable; + // wire[`CSR_ADDR_BITS-1:0] read_addr; + // wire[`NW_BITS-1:0] read_wid; + // wire[31:0] read_data; + + wire write_enable; + wire[`CSR_ADDR_BITS-1:0] write_addr; + // wire[`NW_BITS-1:0] write_wid; + wire[`CSR_WIDTH-1:0] write_data; + +endinterface + +`endif \ No newline at end of file diff --git a/hw/rtl/interfaces/VX_tex_req_if.v b/hw/rtl/interfaces/VX_tex_req_if.v index 1d3fdf58..e8290587 100644 --- a/hw/rtl/interfaces/VX_tex_req_if.v +++ b/hw/rtl/interfaces/VX_tex_req_if.v @@ -8,6 +8,7 @@ interface VX_tex_req_if (); wire [`NUM_THREADS-1:0][31:0] u; wire [`NUM_THREADS-1:0][31:0] v; wire [`NUM_THREADS-1:0][31:0] lod_t; + // wire [`NUM_THREADS-1:0][7:0] t; // wire [`MADDRW-1:0] addr; // wire [`MAXWTW-1:0] width; // wire [`MAXHTW-1:0] height; diff --git a/hw/rtl/tex_unit/VX_tex_unit.v b/hw/rtl/tex_unit/VX_tex_unit.v index d026a562..6961cb3c 100644 --- a/hw/rtl/tex_unit/VX_tex_unit.v +++ b/hw/rtl/tex_unit/VX_tex_unit.v @@ -8,6 +8,7 @@ module VX_tex_unit #( input wire reset, // Inputs VX_tex_req_if tex_req_if, + VX_tex_csr_if tex_csr_if, // Outputs VX_tex_rsp_if tex_rsp_if @@ -43,8 +44,58 @@ module VX_tex_unit #( // output wire cache_rsp_ready ); - `UNUSED_VAR (clk) + // `UNUSED_VAR (clk) `UNUSED_VAR (reset) + `UNUSED_VAR (reset) + + `UNUSED_VAR(tex_addr) + `UNUSED_VAR(tex_format) + `UNUSED_VAR(tex_width) + `UNUSED_VAR(tex_height) + `UNUSED_VAR(tex_stride) + `UNUSED_VAR(tex_wrap_u) + `UNUSED_VAR(tex_wrap_v) + `UNUSED_VAR(tex_min_filter) + `UNUSED_VAR(tex_max_filter) + + reg [`CSR_WIDTH-1:0] tex_addr [`NUM_TEX_UNITS-1: 0]; + reg [`CSR_WIDTH-1:0] tex_format [`NUM_TEX_UNITS-1: 0]; + reg [`CSR_WIDTH-1:0] tex_width [`NUM_TEX_UNITS-1: 0]; + reg [`CSR_WIDTH-1:0] tex_height [`NUM_TEX_UNITS-1: 0]; + reg [`CSR_WIDTH-1:0] tex_stride [`NUM_TEX_UNITS-1: 0]; + reg [`CSR_WIDTH-1:0] tex_wrap_u [`NUM_TEX_UNITS-1: 0]; + reg [`CSR_WIDTH-1:0] tex_wrap_v [`NUM_TEX_UNITS-1: 0]; + reg [`CSR_WIDTH-1:0] tex_min_filter [`NUM_TEX_UNITS-1: 0]; + reg [`CSR_WIDTH-1:0] tex_max_filter [`NUM_TEX_UNITS-1: 0]; + + //tex csr programming, need to make make consistent with `NUM_TEX_UNITS + always @(posedge clk ) begin + if (tex_csr_if.write_enable) begin + case (tex_csr_if.write_addr) + `CSR_TEX0_ADDR : tex_addr[0] <= tex_csr_if.write_data; + `CSR_TEX0_FORMAT : tex_format[0] <= tex_csr_if.write_data; + `CSR_TEX0_WIDTH : tex_width[0] <= tex_csr_if.write_data; + `CSR_TEX0_HEIGHT : tex_height[0] <= tex_csr_if.write_data; + `CSR_TEX0_STRIDE : tex_stride[0] <= tex_csr_if.write_data; + `CSR_TEX0_WRAP_U : tex_wrap_u[0] <= tex_csr_if.write_data; + `CSR_TEX0_WRAP_V : tex_wrap_v[0] <= tex_csr_if.write_data; + `CSR_TEX0_MIN_FILTER : tex_min_filter[0] <= tex_csr_if.write_data; + `CSR_TEX0_MAX_FILTER : tex_max_filter[0] <= tex_csr_if.write_data; + + `CSR_TEX1_ADDR : tex_addr[1] <= tex_csr_if.write_data; + `CSR_TEX1_FORMAT : tex_format[1] <= tex_csr_if.write_data; + `CSR_TEX1_WIDTH : tex_width[1] <= tex_csr_if.write_data; + `CSR_TEX1_HEIGHT : tex_height[1] <= tex_csr_if.write_data; + `CSR_TEX1_STRIDE : tex_stride[1] <= tex_csr_if.write_data; + `CSR_TEX1_WRAP_U : tex_wrap_u[1] <= tex_csr_if.write_data; + `CSR_TEX1_WRAP_V : tex_wrap_v[1] <= tex_csr_if.write_data; + `CSR_TEX1_MIN_FILTER : tex_min_filter[1] <= tex_csr_if.write_data; + `CSR_TEX1_MAX_FILTER : tex_max_filter[1] <= tex_csr_if.write_data; + default: + assert(tex_csr_if.write_addr > `CSR_TEX_END || tex_csr_if.write_addr < `CSR_TEX_BEGIN) else $error("%t: invalid CSR write address: %0h", $time, tex_csr_if.write_addr); + endcase + end + end for (genvar i = 0; i < `NUM_THREADS; i++) begin assign tex_rsp_if.data[i] = 32'hFAAF; @@ -52,4 +103,21 @@ module VX_tex_unit #( assign tex_rsp_if.ready = 1'b1; + `ifdef DBG_PRINT_TEX_CSRS + always @(posedge clk) begin + if (tex_csr_if.write_addr <= `CSR_TEX_END || tex_csr_if.write_addr >= `CSR_TEX_BEGIN) begin + $display("%t: core%0d-tex_csr: csr_tex0_addr, csr_data=%0h", $time, CORE_ID, tex_addr[0]); + $display("%t: core%0d-tex_csr: csr_tex0_format, csr_data=%0h", $time, CORE_ID, tex_format[0]); + $display("%t: core%0d-tex_csr: csr_tex0_width, csr_data=%0h", $time, CORE_ID, tex_width[0]); + $display("%t: core%0d-tex_csr: csr_tex0_height, csr_data=%0h", $time, CORE_ID, tex_height[0]); + $display("%t: core%0d-tex_csr: csr_tex0_stride, csr_data=%0h", $time, CORE_ID, tex_stride[0]); + $display("%t: core%0d-tex_csr: csr_tex0_wrap_u, csr_data=%0h", $time, CORE_ID, tex_wrap_u[0]); + $display("%t: core%0d-tex_csr: csr_tex0_wrap_v, csr_data=%0h", $time, CORE_ID, tex_wrap_v[0]); + $display("%t: core%0d-tex_csr: csr_tex0_min_filter, csr_data=%0h", $time, CORE_ID, tex_min_filter[0]); + $display("%t: core%0d-tex_csr: csr_tex0_max_filter, csr_data=%0h", $time, CORE_ID, tex_max_filter[0]); + end + end + `endif + + endmodule \ No newline at end of file