summaryrefslogtreecommitdiff
path: root/rtl
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2024-05-06 16:51:17 -0600
committerAlejandro Soto <alejandro@34project.org>2024-05-06 16:51:17 -0600
commitfaea27c352b078410e4b2eed9063b6e5833f6af3 (patch)
tree48213b92a29fd37c5b0be51fba70b5b308c3a865 /rtl
parent95c35cdd306868599e6ee11cbfbe4495a0ab843f (diff)
rtl/if_common: add id, resp, size, strb signals to if_axib
Diffstat (limited to '')
-rw-r--r--rtl/gfx/gfx_shader_front.sv17
-rw-r--r--rtl/if_common/if_axib.sv111
2 files changed, 91 insertions, 37 deletions
diff --git a/rtl/gfx/gfx_shader_front.sv b/rtl/gfx/gfx_shader_front.sv
index 0a2b8b8..3398e52 100644
--- a/rtl/gfx/gfx_shader_front.sv
+++ b/rtl/gfx/gfx_shader_front.sv
@@ -122,14 +122,23 @@ import gfx::*;
group_id groups[BIND_STAGES];
icache_line_tag araddr, request_addr;
- assign mem.bready = 0;
- assign mem.wvalid = 0;
- assign mem.awvalid = 0;
-
+ assign mem.arid = '0;
assign mem.arlen = ($bits(mem.arlen))'($bits(oword) / $bits(word) - 1);
+ assign mem.arsize = 3'b101; // 32 bits/beat
assign mem.araddr = {araddr, ($clog2($bits(oword)) - $clog2($bits(word)) + SUBWORD_BITS)'('0)};
assign mem.arburst = 2'b01; // Incremental mode
+ assign mem.awid = '0;
+ assign mem.awlen = mem.arlen;
+ assign mem.awsize = mem.arsize;
+ assign mem.awburst = mem.arburst;
+ assign mem.awvalid = 0;
+
+ assign mem.wstrb = '0;
+ assign mem.wvalid = 0;
+
+ assign mem.bready = 0;
+
assign runnable_in.tx.data = loop_group;
assign runnable_in.tx.valid = loop_valid;
diff --git a/rtl/if_common/if_axib.sv b/rtl/if_common/if_axib.sv
index 6db8518..3d703de 100644
--- a/rtl/if_common/if_axib.sv
+++ b/rtl/if_common/if_axib.sv
@@ -1,80 +1,125 @@
-// AXI4 con burst
+// AXI4 full modulo prot, cache, lock, QoS, region
interface if_axib
-#(int WIDTH = 32);
+#(int ADDR_WIDTH = 32,
+ int DATA_WIDTH = 32,
+ int ID_WIDTH = 8);
- logic awvalid,
- awready;
- logic[7:0] awlen;
- logic[1:0] awburst;
- logic[WIDTH - 1:0] awaddr;
+ logic awvalid,
+ awready;
+ logic[ID_WIDTH - 1:0] awid;
+ logic[7:0] awlen;
+ logic[2:0] awsize;
+ logic[1:0] awburst;
+ logic[ADDR_WIDTH - 1:0] awaddr;
- logic wlast;
- logic wvalid;
- logic wready;
- logic[WIDTH - 1:0] wdata;
+ logic wvalid;
+ logic wready;
+ logic[DATA_WIDTH - 1:0] wdata;
+ logic wlast;
+ logic[(DATA_WIDTH + 7) / 8 - 1:0] wstrb;
- logic bvalid;
- logic bready;
+ logic bvalid;
+ logic bready;
+ logic[ID_WIDTH - 1:0] bid;
+ logic[1:0] bresp;
- logic arvalid,
- arready;
- logic[7:0] arlen;
- logic[1:0] arburst;
- logic[WIDTH - 1:0] araddr;
+ logic arvalid,
+ arready;
+ logic[ID_WIDTH - 1:0] arid;
+ logic[7:0] arlen;
+ logic[2:0] arsize;
+ logic[1:0] arburst;
+ logic[ADDR_WIDTH - 1:0] araddr;
- logic rlast;
- logic rvalid;
- logic rready;
- logic[WIDTH - 1:0] rdata;
+ logic rvalid;
+ logic rready;
+ logic[ID_WIDTH - 1:0] rid;
+ logic[DATA_WIDTH - 1:0] rdata;
+ logic[1:0] rresp;
+ logic rlast;
modport m
(
input awready,
+
wready,
+
+ bid,
+ bresp,
bvalid,
+
arready,
+
+ rid,
+ rdata,
rlast,
+ rresp,
rvalid,
- rdata,
- output awlen,
+ output awid,
+ awlen,
+ awaddr,
+ awsize,
awburst,
awvalid,
- awaddr,
+
+ wdata,
wlast,
+ wstrb,
wvalid,
- wdata,
+
bready,
+
+ arid,
arlen,
+ araddr,
+ arsize,
arburst,
arvalid,
- araddr,
+
rready
);
modport s
(
- input awlen,
+ input awid,
+ awlen,
+ awaddr,
+ awsize,
awburst,
awvalid,
- awaddr,
+
+ wdata,
wlast,
+ wstrb,
wvalid,
- wdata,
+
bready,
+
+ arid,
arlen,
+ araddr,
+ arsize,
arburst,
arvalid,
- araddr,
+
rready,
output awready,
+
wready,
+
+ bid,
+ bresp,
bvalid,
+
arready,
+
+ rid,
+ rdata,
rlast,
- rvalid,
- rdata
+ rresp,
+ rvalid
);
endinterface