icache and dcache bypass option added
diff --git a/verilog/dv/Makefile b/verilog/dv/Makefile
index bc570fe..749e090 100644
--- a/verilog/dv/Makefile
+++ b/verilog/dv/Makefile
@@ -19,7 +19,7 @@
.SUFFIXES:
.SILENT: clean all
-PATTERNS = wb_port risc_boot user_risc_boot user_uart user_uart1 user_qspi user_i2cm riscv_regress user_basic user_usb user_pwm user_timer user_uart_master uart_master user_sram_exec
+PATTERNS = wb_port risc_boot user_risc_boot user_uart user_uart1 user_qspi user_i2cm riscv_regress user_basic user_usb user_pwm user_timer user_uart_master uart_master user_sram_exec user_cache_bypass
all: ${PATTERNS}
for i in ${PATTERNS}; do \
diff --git a/verilog/dv/firmware/link.ld b/verilog/dv/firmware/link.ld
index 222363d..b2a0030 100644
--- a/verilog/dv/firmware/link.ld
+++ b/verilog/dv/firmware/link.ld
@@ -25,7 +25,7 @@
ENTRY(_start)
MEMORY {
- ROM (rxx) : ORIGIN = 0x0, LENGTH = 64K
+ ROM (rxx) : ORIGIN = 0x0, LENGTH = 128K
RAM (rwx) : ORIGIN = 0x08000000, LENGTH = 64K
TCM (rwx) : ORIGIN = 0x0C480000, LENGTH = 2K
}
diff --git a/verilog/dv/user_basic/user_basic_tb.v b/verilog/dv/user_basic/user_basic_tb.v
index 1face2a..27fd494 100644
--- a/verilog/dv/user_basic/user_basic_tb.v
+++ b/verilog/dv/user_basic/user_basic_tb.v
@@ -278,8 +278,8 @@
wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1);
wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h8273_8343);
- wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h0306_2022);
- wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h0004_5000);
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h1306_2022);
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h0004_6000);
end
diff --git a/verilog/rtl/pinmux/src/pinmux_reg.sv b/verilog/rtl/pinmux/src/pinmux_reg.sv
index 7bab960..2d972d8 100644
--- a/verilog/rtl/pinmux/src/pinmux_reg.sv
+++ b/verilog/rtl/pinmux/src/pinmux_reg.sv
@@ -716,7 +716,7 @@
//-----------------------------------------
// Software Reg-2, Release date: <DAY><MONTH><YEAR>
// ----------------------------------------
-gen_32b_reg #(32'h0306_2022) u_reg_23 (
+gen_32b_reg #(32'h1306_2022) u_reg_23 (
//List of Inputs
.reset_n (h_reset_n ),
.clk (mclk ),
@@ -729,9 +729,9 @@
);
//-----------------------------------------
-// Software Reg-3: Poject Revison 4.5 = 0004500
+// Software Reg-3: Poject Revison 4.6 = 0004600
// ----------------------------------------
-gen_32b_reg #(32'h0004_5000) u_reg_24 (
+gen_32b_reg #(32'h0004_6000) u_reg_24 (
//List of Inputs
.reset_n (h_reset_n ),
.clk (mclk ),
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index d022dad..f8c579f 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -212,6 +212,8 @@
//// @digitial io [33] port ////
//// 4.5 June 2 2022, Dinesh A ////
//// 1. DFFRAM Replaced by SRAM ////
+//// 4.6 June 13 2022, Dinesh A ////
+//// 1. icache and dcache bypass config addded ////
//////////////////////////////////////////////////////////////////////
//// ////
//// Copyright (C) 2000 Authors and OPENCORES.ORG ////
@@ -362,8 +364,11 @@
wire wbd_riscv_dmem_we_i ; // write
wire [WB_WIDTH-1:0] wbd_riscv_dmem_dat_i ; // data output
wire [3:0] wbd_riscv_dmem_sel_i ; // byte enable
+wire [2:0] wbd_riscv_dmem_bl_i ; // byte enable
+wire wbd_riscv_dmem_bry_i ; // burst access ready
wire [WB_WIDTH-1:0] wbd_riscv_dmem_dat_o ; // data input
wire wbd_riscv_dmem_ack_o ; // acknowlegement
+wire wbd_riscv_dmem_lack_o ; // acknowlegement
wire wbd_riscv_dmem_err_o ; // error
//---------------------------------------------------------------------
@@ -614,6 +619,8 @@
wire [3:0] cfg_riscv_sram_lphase = cfg_riscv_ctrl[3:0];
wire [2:0] cfg_riscv_cache_ctrl = cfg_riscv_ctrl[6:4];
wire [1:0] cfg_riscv_debug_sel = cfg_riscv_ctrl[9:8];
+wire cfg_bypass_icache = cfg_riscv_ctrl[10];
+wire cfg_bypass_dcache = cfg_riscv_ctrl[11];
/////////////////////////////////////////////////////////
// Clock Skew Ctrl
@@ -734,6 +741,8 @@
.riscv_debug (riscv_debug ),
.cfg_sram_lphase (cfg_riscv_sram_lphase ),
.cfg_cache_ctrl (cfg_riscv_cache_ctrl ),
+ .cfg_bypass_icache (cfg_bypass_icache ),
+ .cfg_bypass_dcache (cfg_bypass_dcache ),
// Clock
.core_clk (cpu_clk ),
@@ -843,8 +852,11 @@
.wbd_dmem_we_o (wbd_riscv_dmem_we_i ),
.wbd_dmem_dat_o (wbd_riscv_dmem_dat_i ),
.wbd_dmem_sel_o (wbd_riscv_dmem_sel_i ),
+ .wbd_dmem_bl_o (wbd_riscv_dmem_bl_i ),
+ .wbd_dmem_bry_o (wbd_riscv_dmem_bry_i ),
.wbd_dmem_dat_i (wbd_riscv_dmem_dat_o ),
.wbd_dmem_ack_i (wbd_riscv_dmem_ack_o ),
+ .wbd_dmem_lack_i (wbd_riscv_dmem_lack_o ),
.wbd_dmem_err_i (wbd_riscv_dmem_err_o )
);
@@ -1051,11 +1063,14 @@
.m1_wbd_dat_i (wbd_riscv_dmem_dat_i ),
.m1_wbd_adr_i (wbd_riscv_dmem_adr_i ),
.m1_wbd_sel_i (wbd_riscv_dmem_sel_i ),
+ .m1_wbd_bl_i (wbd_riscv_dmem_bl_i ),
+ .m1_wbd_bry_i (wbd_riscv_dmem_bry_i ),
.m1_wbd_we_i (wbd_riscv_dmem_we_i ),
.m1_wbd_cyc_i (wbd_riscv_dmem_stb_i ),
.m1_wbd_stb_i (wbd_riscv_dmem_stb_i ),
.m1_wbd_dat_o (wbd_riscv_dmem_dat_o ),
.m1_wbd_ack_o (wbd_riscv_dmem_ack_o ),
+ .m1_wbd_lack_o (wbd_riscv_dmem_lack_o ),
.m1_wbd_err_o (wbd_riscv_dmem_err_o ),
// Master 2 Interface
diff --git a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
index 8ab9487..9fb6344 100644
--- a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
+++ b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
@@ -136,6 +136,8 @@
input logic [31:0] m1_wbd_dat_i,
input logic [31:0] m1_wbd_adr_i,
input logic [3:0] m1_wbd_sel_i,
+ input logic [2:0] m1_wbd_bl_i,
+ input logic m1_wbd_bry_i,
input logic m1_wbd_we_i,
input logic m1_wbd_cyc_i,
input logic m1_wbd_stb_i,
@@ -363,6 +365,8 @@
.m1_wbd_dat_i (m1_wbd_dat_i ),
.m1_wbd_adr_i (m1_wbd_adr_i ),
.m1_wbd_sel_i (m1_wbd_sel_i ),
+ .m1_wbd_bl_i (m1_wbd_bl_i ),
+ .m1_wbd_bry_i (m1_wbd_bry_i ),
.m1_wbd_we_i (m1_wbd_we_i ),
.m1_wbd_cyc_i (m1_wbd_cyc_i ),
.m1_wbd_stb_i (m1_wbd_stb_i ),
@@ -441,6 +445,8 @@
.m1_wbd_dat_i (m1_wbd_dat_i ),
.m1_wbd_adr_i (m1_wbd_adr_i ),
.m1_wbd_sel_i (m1_wbd_sel_i ),
+ .m1_wbd_bl_i (m1_wbd_bl_i ),
+ .m1_wbd_bry_i (m1_wbd_bry_i ),
.m1_wbd_we_i (m1_wbd_we_i ),
.m1_wbd_cyc_i (m1_wbd_cyc_i ),
.m1_wbd_stb_i (m1_wbd_stb_i ),
@@ -519,6 +525,8 @@
.m1_wbd_dat_i (m1_wbd_dat_i ),
.m1_wbd_adr_i (m1_wbd_adr_i ),
.m1_wbd_sel_i (m1_wbd_sel_i ),
+ .m1_wbd_bl_i (m1_wbd_bl_i ),
+ .m1_wbd_bry_i (m1_wbd_bry_i ),
.m1_wbd_we_i (m1_wbd_we_i ),
.m1_wbd_cyc_i (m1_wbd_cyc_i ),
.m1_wbd_stb_i (m1_wbd_stb_i ),
diff --git a/verilog/rtl/wb_interconnect/src/wb_slave_port.sv b/verilog/rtl/wb_interconnect/src/wb_slave_port.sv
index 87f0d4a..bc70ea2 100644
--- a/verilog/rtl/wb_interconnect/src/wb_slave_port.sv
+++ b/verilog/rtl/wb_interconnect/src/wb_slave_port.sv
@@ -61,6 +61,8 @@
input logic [31:0] m1_wbd_dat_i,
input logic [31:0] m1_wbd_adr_i,
input logic [3:0] m1_wbd_sel_i,
+ input logic [2:0] m1_wbd_bl_i,
+ input logic m1_wbd_bry_i,
input logic m1_wbd_we_i,
input logic m1_wbd_cyc_i,
input logic m1_wbd_stb_i,
@@ -172,8 +174,8 @@
assign m1_wb_wr.wbd_dat = m1_wbd_dat_i;
assign m1_wb_wr.wbd_adr = {m1_wbd_adr_i[31:2],2'b00};
assign m1_wb_wr.wbd_sel = m1_wbd_sel_i;
-assign m1_wb_wr.wbd_bl = 'h1;
-assign m1_wb_wr.wbd_bry = 'b1;
+assign m1_wb_wr.wbd_bl = {7'b0,m1_wbd_bl_i};
+assign m1_wb_wr.wbd_bry = m1_wbd_bry_i;
assign m1_wb_wr.wbd_we = m1_wbd_we_i;
assign m1_wb_wr.wbd_cyc = m1_wbd_cyc_i;
assign m1_wb_wr.wbd_stb = m1_stb_i;
diff --git a/verilog/rtl/yifive/ycr1c b/verilog/rtl/yifive/ycr1c
index d7a1662..a7ce700 160000
--- a/verilog/rtl/yifive/ycr1c
+++ b/verilog/rtl/yifive/ycr1c
@@ -1 +1 @@
-Subproject commit d7a16620e3212cf1d2777a8040fc4f2cf4598764
+Subproject commit a7ce700b3004622c78c52c0ee22bf740bc6c86e5