makefile precheck cleanup
diff --git a/Makefile b/Makefile
index 67a92ac..b89e69f 100644
--- a/Makefile
+++ b/Makefile
@@ -20,6 +20,7 @@
MCW_ROOT?=$(PWD)/mgmt_core_wrapper
SIM?=RTL
DUMP?=OFF
+RISC_CORE ?=0
export SKYWATER_COMMIT=c094b6e83a4f9298e47f696ec5a7fd53535ec5eb
export OPEN_PDKS_COMMIT=7519dfb04400f224f140749cda44ee7de6f5e095
@@ -41,6 +42,22 @@
CARAVEL_TAG := $(MPW_TAG)
endif
+# Install caravel as submodule, (1): submodule, (0): clone
+SUBMODULE?=1
+
+#RISCV COMPLIANCE test Environment
+COREMARK_DIR = verilog/dv/riscv_regress/dependencies/coremark
+RISCV_COMP_DIR = verilog/dv/riscv_regress/dependencies/riscv-compliance
+RISCV_TEST_DIR = verilog/dv/riscv_regress/dependencies/riscv-tests
+
+COREMARK_REPO = https://github.com/eembc/coremark
+RISCV_COMP_REPO = https://github.com/riscv/riscv-compliance
+RISCV_TEST_REPO = https://github.com/riscv/riscv-tests
+
+COREMARK_BRANCH = 7f420b6bdbff436810ef75381059944e2b0d79e8
+RISCV_COMP_BRANCH = d51259b2a949be3af02e776c39e135402675ac9b
+RISCV_TEST_BRANCH = e30978a71921159aec38eeefd848fca4ed39a826
+
# Include Caravel Makefile Targets
.PHONY: % : check-caravel
%:
@@ -75,8 +92,8 @@
dv-targets-gl-sdf=$(dv_patterns:%=verify-%-gl-sdf)
TARGET_PATH=$(shell pwd)
-verify_command="cd ${TARGET_PATH}/verilog/dv/$* && export SIM=${SIM} DUMP=${DUMP} && make"
-dv_base_dependencies=
+verify_command="cd ${TARGET_PATH}/verilog/dv/$* && export SIM=${SIM} DUMP=${DUMP} RISC_CORE=${RISC_CORE} && make"
+dv_base_dependencies= ./verilog/dv/% check-coremark_repo check-riscv_comp_repo check-riscv_test_repo
docker_run_verify=\
docker run -v ${TARGET_PATH}:${TARGET_PATH} -v ${PDK_ROOT}:${PDK_ROOT} \
-v ${CARAVEL_ROOT}:${CARAVEL_ROOT} \
@@ -93,14 +110,8 @@
.PHONY: harden
harden: $(blocks)
-.PHONY: verify-all-rtl
-verify-all-rtl: $(dv-targets-rtl)
-
-.PHONY: verify-all-gl
-verify-all-gl: $(dv-targets-gl)
-
-.PHONY: verify-all-gl-sdf
-verify-all-gl-sdf: $(dv-targets-gl-sdf)
+.PHONY: verify
+verify: $(dv-targets)
$(dv-targets-rtl): SIM=RTL
$(dv-targets-rtl): verify-%-rtl: $(dv_base_dependencies)
@@ -201,6 +212,27 @@
exit 1; \
fi
+check-coremark_repo:
+ @if [ ! -d "$(COREMARK_DIR)" ]; then \
+ echo "Installing Core Mark Repo.."; \
+ git clone $(COREMARK_REPO) $(COREMARK_DIR); \
+ cd $(COREMARK_DIR); git checkout $(COREMARK_BRANCH); \
+ fi
+
+check-riscv_comp_repo:
+ @if [ ! -d "$(RISCV_COMP_DIR)" ]; then \
+ echo "Installing Risc V Complance Repo.."; \
+ git clone $(RISCV_COMP_REPO) $(RISCV_COMP_DIR); \
+ cd $(RISCV_COMP_DIR); git checkout $(RISCV_COMP_BRANCH); \
+ fi
+
+check-riscv_test_repo:
+ @if [ ! -d "$(RISCV_TEST_DIR)" ]; then \
+ echo "Installing RiscV Test Repo.."; \
+ git clone $(RISCV_TEST_REPO) $(RISCV_TEST_DIR); \
+ cd $(RISCV_TEST_DIR); git checkout $(RISCV_TEST_BRANCH); \
+ fi
+
zip:
gzip -f def/*
gzip -f lef/*
@@ -223,6 +255,3 @@
help:
cd $(CARAVEL_ROOT) && $(MAKE) help
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
-
-
-
diff --git a/verilog/dv/c_func/inc/pwm.h b/verilog/dv/c_func/inc/pwm.h
new file mode 100644
index 0000000..580a9a8
--- /dev/null
+++ b/verilog/dv/c_func/inc/pwm.h
@@ -0,0 +1,8 @@
+
+void InitTimers ();
+void InitTimersSafe (); //doesn't init timers responsible for time keeping functions
+void pwmWrite (uint8_t pin, uint8_t val);
+void pwmWriteHR (uint8_t pin, uint16_t val); //accepts a 16 bit value and maps it down to the timer for maximum resolution
+bool SetPinFrequency (int8_t pin, uint32_t frequency);
+bool SetPinFrequencySafe(int8_t pin, uint32_t frequency); //does not set timers responsible for time keeping functions
+float GetPinResolution(uint8_t pin); //gets the PWM resolution of a pin in base 2, 0 is returned if the pin is not connected to a timer
diff --git a/verilog/dv/c_func/inc/user_reg_map.h b/verilog/dv/c_func/inc/user_reg_map.h
new file mode 100644
index 0000000..4508fb2
--- /dev/null
+++ b/verilog/dv/c_func/inc/user_reg_map.h
@@ -0,0 +1,38 @@
+
+
+//-------------------------------------
+// PinMux Register
+// ------------------------------------
+#define reg_pinmux_chip_id (*(volatile uint32_t*)0x30020000) // reg_0 - Chip ID
+#define reg_pinmux_gbl_cfg0 (*(volatile uint32_t*)0x30020004) // reg_1 - Global Config-2
+#define reg_pinmux_gbl_cfg1 (*(volatile uint32_t*)0x30020008) // reg_2 - Global Config-1
+#define reg_pinmux_gbl_intr_msk (*(volatile uint32_t*)0x3002000C) // reg_3 - Global Interrupt Mask
+#define reg_pinmux_gbl_intr (*(volatile uint32_t*)0x30020010) // reg_4 - Global Interrupt
+#define reg_pinmux_gpio_idata (*(volatile uint32_t*)0x30020014) // reg_5 - GPIO Data In
+#define reg_pinmux_gpio_odata (*(volatile uint32_t*)0x30020018) // reg_6 - GPIO Data Out
+#define reg_pinmux_gpio_dsel (*(volatile uint32_t*)0x3002001C) // reg_7 - GPIO Direction Select
+#define reg_pinmux_gpio_type (*(volatile uint32_t*)0x30020020) // reg_8 - GPIO TYPE - Static/Waveform
+#define reg_pinmux_gpio_intr_stat (*(volatile uint32_t*)0x30020024) // reg_9 - GPIO Interrupt status
+#define reg_pinmux_gpio_intr_clr (*(volatile uint32_t*)0x30020024) // reg_9 - GPIO Interrupt Clear
+#define reg_pinmux_gpio_intr_set (*(volatile uint32_t*)0x30020028) // reg_10 - GPIO Interrupt Set
+#define reg_pinmux_gpio_intr_mask (*(volatile uint32_t*)0x3002002C) // reg_11 - GPIO Interrupt Mask
+#define reg_pinmux_gpio_pos_intr (*(volatile uint32_t*)0x30020030) // reg_12 - GPIO Posedge Interrupt
+#define reg_pinmux_gpio_neg_intr (*(volatile uint32_t*)0x30020034) // reg_13 - GPIO Neg Interrupt
+#define reg_pinmux_gpio_multi_func (*(volatile uint32_t*)0x30020038) // reg_14 - GPIO Multi Function
+#define reg_pinmux_soft_reg_0 (*(volatile uint32_t*)0x3002003C) // reg_15 - Soft Register
+#define reg_pinmux_cfg_pwm0 (*(volatile uint32_t*)0x30020040) // reg_16 - PWM Reg-0
+#define reg_pinmux_cfg_pwm1 (*(volatile uint32_t*)0x30020044) // reg_17 - PWM Reg-1
+#define reg_pinmux_cfg_pwm2 (*(volatile uint32_t*)0x30020048) // reg_18 - PWM Reg-2
+#define reg_pinmux_cfg_pwm3 (*(volatile uint32_t*)0x3002004C) // reg_19 - PWM Reg-3
+#define reg_pinmux_cfg_pwm4 (*(volatile uint32_t*)0x30020050) // reg_20 - PWM Reg-4
+#define reg_pinmux_cfg_pwm5 (*(volatile uint32_t*)0x30020054) // reg_21 - PWM Reg-5
+#define reg_pinmux_soft_reg_1 (*(volatile uint32_t*)0x30020058) // reg_22 - Sof Register
+#define reg_pinmux_soft_reg_2 (*(volatile uint32_t*)0x3002005C) // reg_23 - Sof Register
+#define reg_pinmux_soft_reg_3 (*(volatile uint32_t*)0x30020060) // reg_24 - Sof Register
+#define reg_pinmux_soft_reg_4 (*(volatile uint32_t*)0x30020064) // reg_25 - Sof Register
+#define reg_pinmux_soft_reg_5 (*(volatile uint32_t*)0x30020068) // reg_26 - Sof Register
+#define reg_pinmux_soft_reg_6 (*(volatile uint32_t*)0x3002006C) // reg_27 - Sof Register
+#define reg_pinmux_cfg_timer0 (*(volatile uint32_t*)0x30020070) // reg_28 - Timer-0
+#define reg_pinmux_cfg_timer1 (*(volatile uint32_t*)0x30020074) // reg_28 - Timer-1
+#define reg_pinmux_cfg_timer2 (*(volatile uint32_t*)0x30020078) // reg_28 - Timer-2
+
diff --git a/verilog/dv/uart_master/uart_master_tb.v b/verilog/dv/uart_master/uart_master_tb.v
index 004f8d7..1442c8c 100644
--- a/verilog/dv/uart_master/uart_master_tb.v
+++ b/verilog/dv/uart_master/uart_master_tb.v
@@ -24,7 +24,6 @@
`include "spiflash.v"
`include "uart_agent.v"
`include "user_reg_map.v"
-`define ADDR_SPACE_PINMUX 32'h3002_0000
module uart_master_tb;
reg clock;
diff --git a/verilog/dv/user_i2cm/user_i2cm_tb.v b/verilog/dv/user_i2cm/user_i2cm_tb.v
index 148833e..c9bcd8b 100644
--- a/verilog/dv/user_i2cm/user_i2cm_tb.v
+++ b/verilog/dv/user_i2cm/user_i2cm_tb.v
@@ -155,7 +155,7 @@
repeat (100) @(posedge clock);
@(posedge clock);
- $display("---------- Initialize I2C Master: %x ----------",`ADDR_SPACE_I2CM);
+ $display("---------- Initialize I2C Master ----------");
//Wrire Prescale registers
wb_user_core_write(`ADDR_SPACE_I2CM+(8'h0<<2),8'hC7);
diff --git a/verilog/rtl/pinmux/src/pinmux.sv b/verilog/rtl/pinmux/src/pinmux.sv
index 2fb66d0..aed3a9d 100755
--- a/verilog/rtl/pinmux/src/pinmux.sv
+++ b/verilog/rtl/pinmux/src/pinmux.sv
@@ -130,8 +130,6 @@
output logic pulse1m_mclk,
output logic [31:0] pinmux_debug
-
-
);