timer_irq connectivity bug fix
diff --git a/verilog/dv/riscv_regress/Makefile b/verilog/dv/riscv_regress/Makefile
index f6e545f..8aac4cc 100644
--- a/verilog/dv/riscv_regress/Makefile
+++ b/verilog/dv/riscv_regress/Makefile
@@ -172,14 +172,14 @@
ifeq (,$(findstring e,$(ARCH_lowercase)))
# These tests cannot be compiled for RVE
# Comment this target if you don't want to run the riscv_isa
- TARGETS += riscv_isa
+ #TARGETS += riscv_isa
# Comment this target if you don't want to run the riscv_compliance
- TARGETS += riscv_compliance
+ #TARGETS += riscv_compliance
endif
# Comment this target if you don't want to run the isr_sample
-#TARGETS += isr_sample
+TARGETS += isr_sample
# Comment this target if you don't want to run the coremark
#TARGETS += coremark
@@ -283,15 +283,20 @@
printf "$$(cat $(test_results)) \n"
run_iverilog_wf: $(test_info)
- $(MAKE) -C $(root_dir)/sim build_iverilog_wf SIM_CFG_DEF=$(SIM_CFG_DEF) SIM_TRACE_DEF=$(SIM_TRACE_DEF) SIM_BUILD_OPTS=$(SIM_BUILD_OPTS); \
- printf "" > $(test_results); \
cd $(bld_dir); \
- iverilog-vpi ../../sim/iverilog_vpi/system.c; \
+ iverilog -g2005-sv -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
+ -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_RTL_PATH) -I $(UPRJ_VERILOG_PATH) \
+ -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ -I $(UPRJ_INCLUDE_PATH1) -I $(UPRJ_INCLUDE_PATH2) -I $(UPRJ_INCLUDE_PATH3) \
+ -I $(UPRJ_INCLUDE_PATH4) -I $(UPRJ_TESTS_PATH) \
+ $(sv_list) \
+ -o $(top_module).vvp; \
+ printf "" > $(test_results); \
+ iverilog-vpi ../../../vpi/system/system.c; \
vvp -M. -msystem $(top_module).vvp \
+test_info=$(test_info) \
+test_results=$(test_results) \
- +imem_pattern=$(imem_pattern) \
- +dmem_pattern=$(dmem_pattern) \
| tee $(sim_results) ;\
printf "Simulation performed on $$(vvp -V) \n" ;\
printf " Test | build | simulation \n" ; \
diff --git a/verilog/rtl/syntacore/scr1/sim/tests/isr_sample/isr_sample.S b/verilog/rtl/syntacore/scr1/sim/tests/isr_sample/isr_sample.S
index 6855370..288b8fb 100644
--- a/verilog/rtl/syntacore/scr1/sim/tests/isr_sample/isr_sample.S
+++ b/verilog/rtl/syntacore/scr1/sim/tests/isr_sample/isr_sample.S
@@ -11,9 +11,9 @@
#define MCAUSE_TMR_IRQ (1 << 31 | IRQ_M_TIMER)
// IPIC
-#define IRQ_LINES_ADDR 0xF0000100 // simulation
-#define TRIG_EXT_IRQ_ADDR 0xF0000100 // external irq is triggered when tb memory is set to non-zero
-#define TRIG_SW_IRQ_ADDR 0xF0000200 // software irq is triggered when tb memory is set to non-zero
+#define IRQ_LINES_ADDR 0x3000000C // simulation
+#define TRIG_EXT_IRQ_ADDR 0x3000000C // external irq is triggered when tb memory is set to non-zero // Bit [15:0]
+#define TRIG_SW_IRQ_ADDR 0x3000000C // software irq is triggered when tb memory is set to non-zero // Bit [16]
#define IPIC_EOI 0xBF4 // end of interrupt
#define IPIC_SOI 0xBF5 // start of interrupt
@@ -178,8 +178,8 @@
/// configuring software interrupt ///
csrw mie, zero // disable all interrupts
li t0, TRIG_SW_IRQ_ADDR
- li t1, 0x00000001
- sh t1, (t0) //send command to generate software interrupt
+ li t1, 0x00010000
+ sw t1, (t0) //send command to generate software interrupt
li t0, MSIE
csrs mie, t0 // enable software interrupt
nop
@@ -272,7 +272,7 @@
csrc mie, t0 // disable software interrupt
li t0, TRIG_SW_IRQ_ADDR
li t1, 0x00000000
- sh t1, (t0) // send command to stop generating software interrupt
+ sw t1, (t0) // send command to stop generating software interrupt
li t0, MIP_MSIP
csrc mip, t0
csrr t1, mip
diff --git a/verilog/rtl/syntacore/scr1/src/includes/scr1_arch_description.svh b/verilog/rtl/syntacore/scr1/src/includes/scr1_arch_description.svh
index 71b9928..c00ffe3 100644
--- a/verilog/rtl/syntacore/scr1/src/includes/scr1_arch_description.svh
+++ b/verilog/rtl/syntacore/scr1/src/includes/scr1_arch_description.svh
@@ -227,7 +227,7 @@
// Addresses used in testbench
localparam [`SCR1_XLEN-1:0] SCR1_SIM_EXIT_ADDR = 32'h0000_00F8;
localparam [`SCR1_XLEN-1:0] SCR1_SIM_PRINT_ADDR = 32'hF000_0000;
-localparam [`SCR1_XLEN-1:0] SCR1_SIM_EXT_IRQ_ADDR = 32'hF000_0100;
-localparam [`SCR1_XLEN-1:0] SCR1_SIM_SOFT_IRQ_ADDR = 32'hF000_0200;
+localparam [`SCR1_XLEN-1:0] SCR1_SIM_EXT_IRQ_ADDR = 32'h3000_000C; // Bit [15:0]
+localparam [`SCR1_XLEN-1:0] SCR1_SIM_SOFT_IRQ_ADDR = 32'h3000_000C; // Bit[16]
`endif // SCR1_ARCH_DESCRIPTION_SVH
diff --git a/verilog/rtl/syntacore/scr1/src/top/scr1_intf.sv b/verilog/rtl/syntacore/scr1/src/top/scr1_intf.sv
index bb51ee9..b0efee3 100644
--- a/verilog/rtl/syntacore/scr1/src/top/scr1_intf.sv
+++ b/verilog/rtl/syntacore/scr1/src/top/scr1_intf.sv
@@ -121,6 +121,7 @@
`endif
// Memory-mapped external timer
output logic [63:0] timer_val, // Machine timer value
+ output logic timer_irq,
// Instruction Memory Interface
output logic core_imem_req_ack, // IMEM request acknowledge
input logic core_imem_req, // IMEM request
@@ -197,7 +198,6 @@
logic [`SCR1_DMEM_DWIDTH-1:0] timer_dmem_rdata;
logic [1:0] timer_dmem_resp;
-logic timer_irq;
//---------------------------------------------------------------------------------
diff --git a/verilog/rtl/syntacore/scr1/src/top/scr1_top_wb.sv b/verilog/rtl/syntacore/scr1/src/top/scr1_top_wb.sv
index 302adda..adc8f86 100644
--- a/verilog/rtl/syntacore/scr1/src/top/scr1_top_wb.sv
+++ b/verilog/rtl/syntacore/scr1/src/top/scr1_top_wb.sv
@@ -40,6 +40,8 @@
//// Async fifo added in imem and dmem path ////
//// v2: July 7, 2021, Dinesh A ////
//// 64bit debug signal added ////
+//// v3: Aug 23, 2021, Dinesh A ////
+//// timer_irq connective bug fix ////
//// ////
//////////////////////////////////////////////////////////////////////
//// ////
@@ -293,6 +295,7 @@
`endif
// Memory-mapped external timer
.timer_val (timer_val), // Machine timer value
+ .timer_irq (timer_irq), // Machine timer value
// Instruction Memory Interface
.core_imem_req_ack (core_imem_req_ack), // IMEM request acknowledge
.core_imem_req (core_imem_req), // IMEM request