summaryrefslogtreecommitdiff
path: root/tb/platform.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-09-25 05:14:25 -0600
committerAlejandro Soto <alejandro@34project.org>2023-09-25 05:14:25 -0600
commitd18a37a740db37707e5266e5ca6a8fd956737197 (patch)
tree3e2d6ea6d354d8cac722f864f5b8c51fd881e2a9 /tb/platform.sv
parent27978501a87c5bb7a9fd78e376e8f6772cad009e (diff)
tb: implement cache ring
Diffstat (limited to 'tb/platform.sv')
-rw-r--r--tb/platform.sv208
1 files changed, 200 insertions, 8 deletions
diff --git a/tb/platform.sv b/tb/platform.sv
index 2dade78..570ee4e 100644
--- a/tb/platform.sv
+++ b/tb/platform.sv
@@ -1,3 +1,5 @@
+`include "cache/defs.sv"
+
module platform
(
input wire clk_clk, // clk.clk
@@ -52,14 +54,22 @@ module platform
output wire [7:0] vga_dac_B // .B
);
- logic[31:0] avl_address /*verilator public*/;
- logic avl_read /*verilator public*/;
- logic avl_write /*verilator public*/;
- logic avl_irq /*verilator public_flat_rw @(negedge clk_clk)*/;
- logic[31:0] avl_readdata /*verilator public_flat_rw @(negedge clk_clk)*/;
- logic[31:0] avl_writedata /*verilator public*/;
- logic avl_waitrequest /*verilator public_flat_rw @(negedge clk_clk)*/;
- logic[3:0] avl_byteenable /*verilator public*/;
+ logic[31:0] avl_address /*verilator public*/;
+ logic avl_read /*verilator public*/;
+ logic avl_write /*verilator public*/;
+ logic avl_irq /*verilator public_flat_rw @(negedge clk_clk)*/;
+ logic[127:0] avl_readdata /*verilator public_flat_rw @(negedge clk_clk)*/;
+ logic[127:0] avl_writedata /*verilator public*/;
+ logic avl_waitrequest /*verilator public_flat_rw @(negedge clk_clk)*/;
+ logic[15:0] avl_byteenable /*verilator public*/;
+
+ logic[31:0] core_avl_address;
+ logic core_avl_read;
+ logic core_avl_write;
+ logic[31:0] core_avl_readdata;
+ logic[31:0] core_avl_writedata;
+ logic core_avl_waitrequest;
+ logic[3:0] core_avl_byteenable;
bus_master master_0
(
@@ -75,6 +85,13 @@ module platform
.cpu_clk(master_0_core_cpu_clk),
.cpu_rst_n(master_0_core_cpu_rst_n),
.irq(master_0_core_irq),
+ .avl_address(core_avl_address),
+ .avl_read(core_avl_read),
+ .avl_write(core_avl_write),
+ .avl_readdata(core_avl_readdata),
+ .avl_writedata(core_avl_writedata),
+ .avl_waitrequest(core_avl_waitrequest),
+ .avl_byteenable(core_avl_byteenable),
.*
);
@@ -83,4 +100,179 @@ module platform
.*
);
+ ring_req data_0, data_1, data_2, data_3;
+ ring_token token_0, token_1, token_2, token_3;
+
+ logic data_valid_0, data_valid_1, data_valid_2, data_valid_3,
+ data_ready_0, data_ready_1, data_ready_2, data_ready_3,
+ token_valid_0, token_valid_1, token_valid_2, token_valid_3;
+
+ cache #(.TOKEN_AT_RESET(0)) c0
+ (
+ .clk(clk_clk),
+ .rst_n(reset_reset_n),
+ .core_address(core_avl_address[31:2]),
+ .core_read(core_avl_read),
+ .core_write(core_avl_write),
+ .core_writedata(core_avl_writedata),
+ .core_byteenable(core_avl_byteenable),
+ .core_waitrequest(core_avl_waitrequest),
+ .core_readdata(core_avl_readdata),
+
+ //.dbg_address(),
+ .dbg_read(0),
+ .dbg_write(0),
+ .dbg_writedata(),
+ .dbg_waitrequest(),
+ .dbg_readdata(),
+
+ .mem_waitrequest(avl_waitrequest),
+ .mem_readdata(avl_readdata),
+ .mem_address(avl_address),
+ .mem_read(avl_read),
+ .mem_write(avl_write),
+ .mem_writedata(avl_writedata),
+ .mem_byteenable(avl_byteenable),
+
+ .in_data_valid(data_valid_3),
+ .in_data(data_3),
+ .in_data_ready(data_ready_0),
+
+ .out_data_valid(data_valid_0),
+ .out_data(data_0),
+ .out_data_ready(data_ready_1),
+
+ .in_token(token_3),
+ .in_token_valid(token_valid_3),
+
+ .out_token(token_0),
+ .out_token_valid(token_valid_0)
+ );
+
+ cache #(.TOKEN_AT_RESET(0)) c1
+ (
+ .clk(clk_clk),
+ .rst_n(reset_reset_n),
+ .core_address(),
+ .core_read(0),
+ .core_write(0),
+ .core_writedata(),
+ .core_byteenable(),
+ .core_waitrequest(),
+ .core_readdata(),
+
+ //.dbg_address(),
+ .dbg_read(0),
+ .dbg_write(0),
+ .dbg_writedata(),
+ .dbg_waitrequest(),
+ .dbg_readdata(),
+
+ .mem_waitrequest(1),
+ .mem_readdata(),
+ .mem_address(),
+ .mem_read(),
+ .mem_write(),
+ .mem_writedata(),
+ .mem_byteenable(),
+
+ .in_data_valid(data_valid_0),
+ .in_data(data_0),
+ .in_data_ready(data_ready_1),
+
+ .out_data_valid(data_valid_1),
+ .out_data(data_1),
+ .out_data_ready(data_ready_2),
+
+ .in_token(token_0),
+ .in_token_valid(token_valid_0),
+
+ .out_token(token_1),
+ .out_token_valid(token_valid_1)
+ );
+
+ cache #(.TOKEN_AT_RESET(0)) c2
+ (
+ .clk(clk_clk),
+ .rst_n(reset_reset_n),
+ .core_address(),
+ .core_read(0),
+ .core_write(0),
+ .core_writedata(),
+ .core_byteenable(),
+ .core_waitrequest(),
+ .core_readdata(),
+
+ //.dbg_address(),
+ .dbg_read(0),
+ .dbg_write(0),
+ .dbg_writedata(),
+ .dbg_waitrequest(),
+ .dbg_readdata(),
+
+ .mem_waitrequest(1),
+ .mem_readdata(),
+ .mem_address(),
+ .mem_read(),
+ .mem_write(),
+ .mem_writedata(),
+ .mem_byteenable(),
+
+ .in_data_valid(data_valid_1),
+ .in_data(data_1),
+ .in_data_ready(data_ready_2),
+
+ .out_data_valid(data_valid_2),
+ .out_data(data_2),
+ .out_data_ready(data_ready_3),
+
+ .in_token(token_1),
+ .in_token_valid(token_valid_1),
+
+ .out_token(token_2),
+ .out_token_valid(token_valid_2)
+ );
+
+ cache #(.TOKEN_AT_RESET(1)) c3
+ (
+ .clk(clk_clk),
+ .rst_n(reset_reset_n),
+ .core_address(),
+ .core_read(0),
+ .core_write(0),
+ .core_writedata(),
+ .core_byteenable(),
+ .core_waitrequest(),
+ .core_readdata(),
+
+ //.dbg_address(),
+ .dbg_read(0),
+ .dbg_write(0),
+ .dbg_writedata(),
+ .dbg_waitrequest(),
+ .dbg_readdata(),
+
+ .mem_waitrequest(1),
+ .mem_readdata(),
+ .mem_address(),
+ .mem_read(),
+ .mem_write(),
+ .mem_writedata(),
+ .mem_byteenable(),
+
+ .in_data_valid(data_valid_2),
+ .in_data(data_2),
+ .in_data_ready(data_ready_3),
+
+ .out_data_valid(data_valid_3),
+ .out_data(data_3),
+ .out_data_ready(data_ready_0),
+
+ .in_token(token_2),
+ .in_token_valid(token_valid_2),
+
+ .out_token(token_3),
+ .out_token_valid(token_valid_3)
+ );
+
endmodule