riscv 4 core integration and test bench clean-up
diff --git a/.gitmodules b/.gitmodules
index 453828c..45e8010 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,6 @@
-[submodule "verilog/rtl/qspim"]
+[submodule "verilog/rtl/yifive/ycr4c"]
+ path = verilog/rtl/yifive/ycr4c
+ url = https://github.com/dineshannayya/ycr4c.git
+[submodule "verilog/rtl/qspim1"]
path = verilog/rtl/qspim
url = https://github.com/dineshannayya/qspim.git
-[submodule "verilog/rtl/yifive/ycr2c"]
- path = verilog/rtl/yifive/ycr2c
- url = https://github.com/dineshannayya/ycr2c.git
diff --git a/openlane/ycr4_iconnect/base.sdc b/openlane/ycr4_iconnect/base.sdc
new file mode 100644
index 0000000..00fe508
--- /dev/null
+++ b/openlane/ycr4_iconnect/base.sdc
@@ -0,0 +1,32 @@
+###############################################################################
+# Timing Constraints
+###############################################################################
+create_clock -name core_clk -period 20.0000 [get_ports {core_clk}]
+create_clock -name rtc_clk -period 40.0000 [get_ports {rtc_clk}]
+create_clock -name wb_clk -period 10.0000 [get_ports {wb_clk}]
+
+set_clock_transition 0.1500 [all_clocks]
+set_clock_uncertainty -setup 0.2500 [all_clocks]
+set_clock_uncertainty -hold 0.2500 [all_clocks]
+
+set ::env(SYNTH_TIMING_DERATE) 0.05
+puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
+set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
+set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
+
+set_clock_groups -name async_clock -asynchronous \
+ -group [get_clocks {core_clk}]\
+ -group [get_clocks {rtc_clk}]\
+ -group [get_clocks {wb_clk}] -comment {Async Clock group}
+
+###############################################################################
+# Environment
+###############################################################################
+set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin $::env(SYNTH_DRIVING_CELL_PIN) [all_inputs]
+set cap_load [expr $::env(SYNTH_CAP_LOAD) / 1000.0]
+puts "\[INFO\]: Setting load to: $cap_load"
+set_load $cap_load [all_outputs]
+
+###############################################################################
+# Design Rules
+###############################################################################
diff --git a/openlane/ycr4_iconnect/config.tcl b/openlane/ycr4_iconnect/config.tcl
new file mode 100644
index 0000000..fbd79bd
--- /dev/null
+++ b/openlane/ycr4_iconnect/config.tcl
@@ -0,0 +1,95 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+set script_dir [file dirname [file normalize [info script]]]
+
+set ::env(ROUTING_CORES) "6"
+
+set ::env(DESIGN_NAME) ycr4_iconnect
+set ::env(DESIGN_IS_CORE) "1"
+set ::env(FP_PDN_CORE_RING) "1"
+
+# Timing configuration
+set ::env(CLOCK_PERIOD) "10"
+set ::env(CLOCK_PORT) "core_clk rtc_clk"
+
+set ::env(SYNTH_MAX_FANOUT) 4
+
+## CTS BUFFER
+set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8"
+set ::env(CTS_SINK_CLUSTERING_SIZE) "16"
+set ::env(CLOCK_BUFFER_FANOUT) "8"
+set ::env(LEC_ENABLE) 0
+
+set ::env(VERILOG_FILES) "\
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/top/ycr4_iconnect.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/top/ycr4_cross_bar.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/top/ycr4_router.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/top/ycr_dmem_router.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/top/ycr_tcm.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/top/ycr_timer.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/lib/ycr_arb.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/primitives/ycr_reset_cells.sv \
+ "
+set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr4c/src/includes ]
+set ::env(SYNTH_READ_BLACKBOX_LIB) 1
+set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
+
+
+set ::env(SDC_FILE) "$script_dir/base.sdc"
+set ::env(BASE_SDC_FILE) "$script_dir/base.sdc"
+
+set ::env(LEC_ENABLE) 0
+
+## Floorplan
+set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 400 2200"
+
+#set ::env(PDN_CFG) $script_dir/pdn_cfg.tcl
+#set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg
+set ::env(PL_TARGET_DENSITY) 0.20
+set ::env(CELL_PAD) "10"
+
+#set ::env(PL_ROUTABILITY_DRIVEN) "1"
+set ::env(PL_TIME_DRIVEN) "1"
+
+### PDN
+#set ::env(FP_PDN_CHECK_NODES) "0"
+#set ::env(FP_PDN_HORIZONTAL_HALO) "10"
+#set ::env(FP_PDN_VERTICAL_HALO) "10"
+#
+#set ::env(FP_PDN_VOFFSET) "5"
+#set ::env(FP_PDN_VPITCH) "80"
+#set ::env(FP_PDN_VSPACING) "15.5"
+#set ::env(FP_PDN_VWIDTH) "3.1"
+#
+#set ::env(FP_PDN_HOFFSET) "10"
+#set ::env(FP_PDN_HPITCH) "100"
+#set ::env(FP_PDN_HSPACING) "10"
+#set ::env(FP_PDN_HWIDTH) "3.1"
+
+
+set ::env(GLB_RT_MAXLAYER) 5
+set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 20
+set ::env(DIODE_INSERTION_STRATEGY) 3
+
+
+set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
+set ::env(QUIT_ON_MAGIC_DRC) "1"
+set ::env(QUIT_ON_LVS_ERROR) "0"
+set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
+
+
diff --git a/openlane/ycr4_iconnect/drc_exclude.cells b/openlane/ycr4_iconnect/drc_exclude.cells
new file mode 100644
index 0000000..0ecc9c0
--- /dev/null
+++ b/openlane/ycr4_iconnect/drc_exclude.cells
@@ -0,0 +1,55 @@
+sky130_fd_sc_hd__a2111oi_0
+sky130_fd_sc_hd__a21boi_0
+sky130_fd_sc_hd__and2_0
+sky130_fd_sc_hd__buf_16
+sky130_fd_sc_hd__clkdlybuf4s15_1
+sky130_fd_sc_hd__clkdlybuf4s18_1
+sky130_fd_sc_hd__clkdlybuf4s25_1
+sky130_fd_sc_hd__clkdlybuf4s50_1
+sky130_fd_sc_hd__fa_4
+sky130_fd_sc_hd__lpflow_bleeder_1
+sky130_fd_sc_hd__lpflow_clkbufkapwr_1
+sky130_fd_sc_hd__lpflow_clkbufkapwr_16
+sky130_fd_sc_hd__lpflow_clkbufkapwr_2
+sky130_fd_sc_hd__lpflow_clkbufkapwr_4
+sky130_fd_sc_hd__lpflow_clkbufkapwr_8
+sky130_fd_sc_hd__lpflow_clkinvkapwr_1
+sky130_fd_sc_hd__lpflow_clkinvkapwr_16
+sky130_fd_sc_hd__lpflow_clkinvkapwr_2
+sky130_fd_sc_hd__lpflow_clkinvkapwr_4
+sky130_fd_sc_hd__lpflow_clkinvkapwr_8
+sky130_fd_sc_hd__lpflow_decapkapwr_12
+sky130_fd_sc_hd__lpflow_decapkapwr_3
+sky130_fd_sc_hd__lpflow_decapkapwr_4
+sky130_fd_sc_hd__lpflow_decapkapwr_6
+sky130_fd_sc_hd__lpflow_decapkapwr_8
+sky130_fd_sc_hd__lpflow_inputiso0n_1
+sky130_fd_sc_hd__lpflow_inputiso0p_1
+sky130_fd_sc_hd__lpflow_inputiso1n_1
+sky130_fd_sc_hd__lpflow_inputiso1p_1
+sky130_fd_sc_hd__lpflow_inputisolatch_1
+sky130_fd_sc_hd__lpflow_isobufsrc_1
+sky130_fd_sc_hd__lpflow_isobufsrc_16
+sky130_fd_sc_hd__lpflow_isobufsrc_2
+sky130_fd_sc_hd__lpflow_isobufsrc_4
+sky130_fd_sc_hd__lpflow_isobufsrc_8
+sky130_fd_sc_hd__lpflow_isobufsrckapwr_16
+sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1
+sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2
+sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4
+sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4
+sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1
+sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2
+sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4
+sky130_fd_sc_hd__mux4_4
+sky130_fd_sc_hd__o21ai_0
+sky130_fd_sc_hd__o311ai_0
+sky130_fd_sc_hd__or2_0
+sky130_fd_sc_hd__probe_p_8
+sky130_fd_sc_hd__probec_p_8
+sky130_fd_sc_hd__xor3_1
+sky130_fd_sc_hd__xor3_2
+sky130_fd_sc_hd__xor3_4
+sky130_fd_sc_hd__xnor3_1
+sky130_fd_sc_hd__xnor3_2
+sky130_fd_sc_hd__xnor3_4
\ No newline at end of file
diff --git a/openlane/ycr4_iconnect/pin_order.cfg b/openlane/ycr4_iconnect/pin_order.cfg
new file mode 100644
index 0000000..7d1ffa2
--- /dev/null
+++ b/openlane/ycr4_iconnect/pin_order.cfg
@@ -0,0 +1,1674 @@
+#BUS_SORT
+#MANUAL_PLACE
+
+#S
+core_icache_req_ack 000 0 2
+core_icache_req
+core_icache_cmd
+core_icache_addr\[31\]
+core_icache_addr\[30\]
+core_icache_addr\[29\]
+core_icache_addr\[28\]
+core_icache_addr\[27\]
+core_icache_addr\[26\]
+core_icache_addr\[25\]
+core_icache_addr\[24\]
+core_icache_addr\[23\]
+core_icache_addr\[22\]
+core_icache_addr\[21\]
+core_icache_addr\[20\]
+core_icache_addr\[19\]
+core_icache_addr\[18\]
+core_icache_addr\[17\]
+core_icache_addr\[16\]
+core_icache_addr\[15\]
+core_icache_addr\[14\]
+core_icache_addr\[13\]
+core_icache_addr\[12\]
+core_icache_addr\[11\]
+core_icache_addr\[10\]
+core_icache_addr\[9\]
+core_icache_addr\[8\]
+core_icache_addr\[7\]
+core_icache_addr\[6\]
+core_icache_addr\[5\]
+core_icache_addr\[4\]
+core_icache_addr\[3\]
+core_icache_addr\[2\]
+core_icache_addr\[1\]
+core_icache_addr\[0\]
+core_icache_bl\[2\]
+core_icache_bl\[1\]
+core_icache_bl\[0\]
+core_icache_width\[1\]
+core_icache_width\[0\]
+core_icache_rdata\[31\]
+core_icache_rdata\[30\]
+core_icache_rdata\[29\]
+core_icache_rdata\[28\]
+core_icache_rdata\[27\]
+core_icache_rdata\[26\]
+core_icache_rdata\[25\]
+core_icache_rdata\[24\]
+core_icache_rdata\[23\]
+core_icache_rdata\[22\]
+core_icache_rdata\[21\]
+core_icache_rdata\[20\]
+core_icache_rdata\[19\]
+core_icache_rdata\[18\]
+core_icache_rdata\[17\]
+core_icache_rdata\[16\]
+core_icache_rdata\[15\]
+core_icache_rdata\[14\]
+core_icache_rdata\[13\]
+core_icache_rdata\[12\]
+core_icache_rdata\[11\]
+core_icache_rdata\[10\]
+core_icache_rdata\[9\]
+core_icache_rdata\[8\]
+core_icache_rdata\[7\]
+core_icache_rdata\[6\]
+core_icache_rdata\[5\]
+core_icache_rdata\[4\]
+core_icache_rdata\[3\]
+core_icache_rdata\[2\]
+core_icache_rdata\[1\]
+core_icache_rdata\[0\]
+core_icache_resp\[1\]
+core_icache_resp\[0\]
+
+
+core_dcache_req_ack 100 0 2
+core_dcache_req
+core_dcache_cmd
+core_dcache_width\[1\]
+core_dcache_width\[0\]
+core_dcache_addr\[31\]
+core_dcache_addr\[30\]
+core_dcache_addr\[29\]
+core_dcache_addr\[28\]
+core_dcache_addr\[27\]
+core_dcache_addr\[26\]
+core_dcache_addr\[25\]
+core_dcache_addr\[24\]
+core_dcache_addr\[23\]
+core_dcache_addr\[22\]
+core_dcache_addr\[21\]
+core_dcache_addr\[20\]
+core_dcache_addr\[19\]
+core_dcache_addr\[18\]
+core_dcache_addr\[17\]
+core_dcache_addr\[16\]
+core_dcache_addr\[15\]
+core_dcache_addr\[14\]
+core_dcache_addr\[13\]
+core_dcache_addr\[12\]
+core_dcache_addr\[11\]
+core_dcache_addr\[10\]
+core_dcache_addr\[9\]
+core_dcache_addr\[8\]
+core_dcache_addr\[7\]
+core_dcache_addr\[6\]
+core_dcache_addr\[5\]
+core_dcache_addr\[4\]
+core_dcache_addr\[3\]
+core_dcache_addr\[2\]
+core_dcache_addr\[1\]
+core_dcache_addr\[0\]
+core_dcache_wdata\[31\]
+core_dcache_wdata\[30\]
+core_dcache_wdata\[29\]
+core_dcache_wdata\[28\]
+core_dcache_wdata\[27\]
+core_dcache_wdata\[26\]
+core_dcache_wdata\[25\]
+core_dcache_wdata\[24\]
+core_dcache_wdata\[23\]
+core_dcache_wdata\[22\]
+core_dcache_wdata\[21\]
+core_dcache_wdata\[20\]
+core_dcache_wdata\[19\]
+core_dcache_wdata\[18\]
+core_dcache_wdata\[17\]
+core_dcache_wdata\[16\]
+core_dcache_wdata\[15\]
+core_dcache_wdata\[14\]
+core_dcache_wdata\[13\]
+core_dcache_wdata\[12\]
+core_dcache_wdata\[11\]
+core_dcache_wdata\[10\]
+core_dcache_wdata\[9\]
+core_dcache_wdata\[8\]
+core_dcache_wdata\[7\]
+core_dcache_wdata\[6\]
+core_dcache_wdata\[5\]
+core_dcache_wdata\[4\]
+core_dcache_wdata\[3\]
+core_dcache_wdata\[2\]
+core_dcache_wdata\[1\]
+core_dcache_wdata\[0\]
+core_dcache_rdata\[31\]
+core_dcache_rdata\[30\]
+core_dcache_rdata\[29\]
+core_dcache_rdata\[28\]
+core_dcache_rdata\[27\]
+core_dcache_rdata\[26\]
+core_dcache_rdata\[25\]
+core_dcache_rdata\[24\]
+core_dcache_rdata\[23\]
+core_dcache_rdata\[22\]
+core_dcache_rdata\[21\]
+core_dcache_rdata\[20\]
+core_dcache_rdata\[19\]
+core_dcache_rdata\[18\]
+core_dcache_rdata\[17\]
+core_dcache_rdata\[16\]
+core_dcache_rdata\[15\]
+core_dcache_rdata\[14\]
+core_dcache_rdata\[13\]
+core_dcache_rdata\[12\]
+core_dcache_rdata\[11\]
+core_dcache_rdata\[10\]
+core_dcache_rdata\[9\]
+core_dcache_rdata\[8\]
+core_dcache_rdata\[7\]
+core_dcache_rdata\[6\]
+core_dcache_rdata\[5\]
+core_dcache_rdata\[4\]
+core_dcache_rdata\[3\]
+core_dcache_rdata\[2\]
+core_dcache_rdata\[1\]
+core_dcache_rdata\[0\]
+core_dcache_resp\[1\]
+core_dcache_resp\[0\]
+
+core_dmem_req_ack 0200 0 2
+core_dmem_req
+core_dmem_cmd
+core_dmem_width\[1\]
+core_dmem_width\[0\]
+core_dmem_addr\[31\]
+core_dmem_addr\[30\]
+core_dmem_addr\[29\]
+core_dmem_addr\[28\]
+core_dmem_addr\[27\]
+core_dmem_addr\[26\]
+core_dmem_addr\[25\]
+core_dmem_addr\[24\]
+core_dmem_addr\[23\]
+core_dmem_addr\[22\]
+core_dmem_addr\[21\]
+core_dmem_addr\[20\]
+core_dmem_addr\[19\]
+core_dmem_addr\[18\]
+core_dmem_addr\[17\]
+core_dmem_addr\[16\]
+core_dmem_addr\[15\]
+core_dmem_addr\[14\]
+core_dmem_addr\[13\]
+core_dmem_addr\[12\]
+core_dmem_addr\[11\]
+core_dmem_addr\[10\]
+core_dmem_addr\[9\]
+core_dmem_addr\[8\]
+core_dmem_addr\[7\]
+core_dmem_addr\[6\]
+core_dmem_addr\[5\]
+core_dmem_addr\[4\]
+core_dmem_addr\[3\]
+core_dmem_addr\[2\]
+core_dmem_addr\[1\]
+core_dmem_addr\[0\]
+core_dmem_wdata\[31\]
+core_dmem_wdata\[30\]
+core_dmem_wdata\[29\]
+core_dmem_wdata\[28\]
+core_dmem_wdata\[27\]
+core_dmem_wdata\[26\]
+core_dmem_wdata\[25\]
+core_dmem_wdata\[24\]
+core_dmem_wdata\[23\]
+core_dmem_wdata\[22\]
+core_dmem_wdata\[21\]
+core_dmem_wdata\[20\]
+core_dmem_wdata\[19\]
+core_dmem_wdata\[18\]
+core_dmem_wdata\[17\]
+core_dmem_wdata\[16\]
+core_dmem_wdata\[15\]
+core_dmem_wdata\[14\]
+core_dmem_wdata\[13\]
+core_dmem_wdata\[12\]
+core_dmem_wdata\[11\]
+core_dmem_wdata\[10\]
+core_dmem_wdata\[9\]
+core_dmem_wdata\[8\]
+core_dmem_wdata\[7\]
+core_dmem_wdata\[6\]
+core_dmem_wdata\[5\]
+core_dmem_wdata\[4\]
+core_dmem_wdata\[3\]
+core_dmem_wdata\[2\]
+core_dmem_wdata\[1\]
+core_dmem_wdata\[0\]
+core_dmem_rdata\[31\]
+core_dmem_rdata\[30\]
+core_dmem_rdata\[29\]
+core_dmem_rdata\[28\]
+core_dmem_rdata\[27\]
+core_dmem_rdata\[26\]
+core_dmem_rdata\[25\]
+core_dmem_rdata\[24\]
+core_dmem_rdata\[23\]
+core_dmem_rdata\[22\]
+core_dmem_rdata\[21\]
+core_dmem_rdata\[20\]
+core_dmem_rdata\[19\]
+core_dmem_rdata\[18\]
+core_dmem_rdata\[17\]
+core_dmem_rdata\[16\]
+core_dmem_rdata\[15\]
+core_dmem_rdata\[14\]
+core_dmem_rdata\[13\]
+core_dmem_rdata\[12\]
+core_dmem_rdata\[11\]
+core_dmem_rdata\[10\]
+core_dmem_rdata\[9\]
+core_dmem_rdata\[8\]
+core_dmem_rdata\[7\]
+core_dmem_rdata\[6\]
+core_dmem_rdata\[5\]
+core_dmem_rdata\[4\]
+core_dmem_rdata\[3\]
+core_dmem_rdata\[2\]
+core_dmem_rdata\[1\]
+core_dmem_rdata\[0\]
+core_dmem_resp\[1\]
+core_dmem_resp\[0\]
+
+cfg_icache_pfet_dis 0300 0 2
+cfg_icache_ntag_pfet_dis
+cfg_dcache_pfet_dis
+cfg_dcache_force_flush
+
+#E
+core_debug_sel\[1\] 000 0 2
+core_debug_sel\[0\]
+riscv_debug\[63\]
+riscv_debug\[62\]
+riscv_debug\[61\]
+riscv_debug\[60\]
+riscv_debug\[59\]
+riscv_debug\[58\]
+riscv_debug\[57\]
+riscv_debug\[56\]
+riscv_debug\[55\]
+riscv_debug\[54\]
+riscv_debug\[53\]
+riscv_debug\[52\]
+riscv_debug\[51\]
+riscv_debug\[50\]
+riscv_debug\[49\]
+riscv_debug\[48\]
+riscv_debug\[47\]
+riscv_debug\[46\]
+riscv_debug\[45\]
+riscv_debug\[44\]
+riscv_debug\[43\]
+riscv_debug\[42\]
+riscv_debug\[41\]
+riscv_debug\[40\]
+riscv_debug\[39\]
+riscv_debug\[38\]
+riscv_debug\[37\]
+riscv_debug\[36\]
+riscv_debug\[35\]
+riscv_debug\[34\]
+riscv_debug\[33\]
+riscv_debug\[32\]
+riscv_debug\[31\]
+riscv_debug\[30\]
+riscv_debug\[29\]
+riscv_debug\[28\]
+riscv_debug\[27\]
+riscv_debug\[26\]
+riscv_debug\[25\]
+riscv_debug\[24\]
+riscv_debug\[23\]
+riscv_debug\[22\]
+riscv_debug\[21\]
+riscv_debug\[20\]
+riscv_debug\[19\]
+riscv_debug\[18\]
+riscv_debug\[17\]
+riscv_debug\[16\]
+riscv_debug\[15\]
+riscv_debug\[14\]
+riscv_debug\[13\]
+riscv_debug\[12\]
+riscv_debug\[11\]
+riscv_debug\[10\]
+riscv_debug\[9\]
+riscv_debug\[8\]
+riscv_debug\[7\]
+riscv_debug\[6\]
+riscv_debug\[5\]
+riscv_debug\[4\]
+riscv_debug\[3\]
+riscv_debug\[2\]
+riscv_debug\[1\]
+riscv_debug\[0\]
+
+core_clk 150 0 2
+rtc_clk
+pwrup_rst_n
+cpu_intf_rst_n
+
+core0_uid\[1\] 0200 00 2
+core0_uid\[0\]
+core0_imem_req_ack
+core0_imem_req
+core0_imem_cmd
+core0_imem_addr\[31\]
+core0_imem_addr\[30\]
+core0_imem_addr\[29\]
+core0_imem_addr\[28\]
+core0_imem_addr\[27\]
+core0_imem_addr\[26\]
+core0_imem_addr\[25\]
+core0_imem_addr\[24\]
+core0_imem_addr\[23\]
+core0_imem_addr\[22\]
+core0_imem_addr\[21\]
+core0_imem_addr\[20\]
+core0_imem_addr\[19\]
+core0_imem_addr\[18\]
+core0_imem_addr\[17\]
+core0_imem_addr\[16\]
+core0_imem_addr\[15\]
+core0_imem_addr\[14\]
+core0_imem_addr\[13\]
+core0_imem_addr\[12\]
+core0_imem_addr\[11\]
+core0_imem_addr\[10\]
+core0_imem_addr\[9\]
+core0_imem_addr\[8\]
+core0_imem_addr\[7\]
+core0_imem_addr\[6\]
+core0_imem_addr\[5\]
+core0_imem_addr\[4\]
+core0_imem_addr\[3\]
+core0_imem_addr\[2\]
+core0_imem_addr\[1\]
+core0_imem_addr\[0\]
+core0_imem_bl\[2\]
+core0_imem_bl\[1\]
+core0_imem_bl\[0\]
+core0_imem_rdata\[31\]
+core0_imem_rdata\[30\]
+core0_imem_rdata\[29\]
+core0_imem_rdata\[28\]
+core0_imem_rdata\[27\]
+core0_imem_rdata\[26\]
+core0_imem_rdata\[25\]
+core0_imem_rdata\[24\]
+core0_imem_rdata\[23\]
+core0_imem_rdata\[22\]
+core0_imem_rdata\[21\]
+core0_imem_rdata\[20\]
+core0_imem_rdata\[19\]
+core0_imem_rdata\[18\]
+core0_imem_rdata\[17\]
+core0_imem_rdata\[16\]
+core0_imem_rdata\[15\]
+core0_imem_rdata\[14\]
+core0_imem_rdata\[13\]
+core0_imem_rdata\[12\]
+core0_imem_rdata\[11\]
+core0_imem_rdata\[10\]
+core0_imem_rdata\[9\]
+core0_imem_rdata\[8\]
+core0_imem_rdata\[7\]
+core0_imem_rdata\[6\]
+core0_imem_rdata\[5\]
+core0_imem_rdata\[4\]
+core0_imem_rdata\[3\]
+core0_imem_rdata\[2\]
+core0_imem_rdata\[1\]
+core0_imem_rdata\[0\]
+core0_imem_resp\[1\]
+core0_imem_resp\[0\]
+
+core0_dmem_req_ack 0400 0 2
+core0_dmem_req
+core0_dmem_cmd
+core0_dmem_width\[1\]
+core0_dmem_width\[0\]
+core0_dmem_addr\[31\]
+core0_dmem_addr\[30\]
+core0_dmem_addr\[29\]
+core0_dmem_addr\[28\]
+core0_dmem_addr\[27\]
+core0_dmem_addr\[26\]
+core0_dmem_addr\[25\]
+core0_dmem_addr\[24\]
+core0_dmem_addr\[23\]
+core0_dmem_addr\[22\]
+core0_dmem_addr\[21\]
+core0_dmem_addr\[20\]
+core0_dmem_addr\[19\]
+core0_dmem_addr\[18\]
+core0_dmem_addr\[17\]
+core0_dmem_addr\[16\]
+core0_dmem_addr\[15\]
+core0_dmem_addr\[14\]
+core0_dmem_addr\[13\]
+core0_dmem_addr\[12\]
+core0_dmem_addr\[11\]
+core0_dmem_addr\[10\]
+core0_dmem_addr\[9\]
+core0_dmem_addr\[8\]
+core0_dmem_addr\[7\]
+core0_dmem_addr\[6\]
+core0_dmem_addr\[5\]
+core0_dmem_addr\[4\]
+core0_dmem_addr\[3\]
+core0_dmem_addr\[2\]
+core0_dmem_addr\[1\]
+core0_dmem_addr\[0\]
+core0_dmem_wdata\[31\]
+core0_dmem_wdata\[30\]
+core0_dmem_wdata\[29\]
+core0_dmem_wdata\[28\]
+core0_dmem_wdata\[27\]
+core0_dmem_wdata\[26\]
+core0_dmem_wdata\[25\]
+core0_dmem_wdata\[24\]
+core0_dmem_wdata\[23\]
+core0_dmem_wdata\[22\]
+core0_dmem_wdata\[21\]
+core0_dmem_wdata\[20\]
+core0_dmem_wdata\[19\]
+core0_dmem_wdata\[18\]
+core0_dmem_wdata\[17\]
+core0_dmem_wdata\[16\]
+core0_dmem_wdata\[15\]
+core0_dmem_wdata\[14\]
+core0_dmem_wdata\[13\]
+core0_dmem_wdata\[12\]
+core0_dmem_wdata\[11\]
+core0_dmem_wdata\[10\]
+core0_dmem_wdata\[9\]
+core0_dmem_wdata\[8\]
+core0_dmem_wdata\[7\]
+core0_dmem_wdata\[6\]
+core0_dmem_wdata\[5\]
+core0_dmem_wdata\[4\]
+core0_dmem_wdata\[3\]
+core0_dmem_wdata\[2\]
+core0_dmem_wdata\[1\]
+core0_dmem_wdata\[0\]
+core0_dmem_rdata\[31\]
+core0_dmem_rdata\[30\]
+core0_dmem_rdata\[29\]
+core0_dmem_rdata\[28\]
+core0_dmem_rdata\[27\]
+core0_dmem_rdata\[26\]
+core0_dmem_rdata\[25\]
+core0_dmem_rdata\[24\]
+core0_dmem_rdata\[23\]
+core0_dmem_rdata\[22\]
+core0_dmem_rdata\[21\]
+core0_dmem_rdata\[20\]
+core0_dmem_rdata\[19\]
+core0_dmem_rdata\[18\]
+core0_dmem_rdata\[17\]
+core0_dmem_rdata\[16\]
+core0_dmem_rdata\[15\]
+core0_dmem_rdata\[14\]
+core0_dmem_rdata\[13\]
+core0_dmem_rdata\[12\]
+core0_dmem_rdata\[11\]
+core0_dmem_rdata\[10\]
+core0_dmem_rdata\[9\]
+core0_dmem_rdata\[8\]
+core0_dmem_rdata\[7\]
+core0_dmem_rdata\[6\]
+core0_dmem_rdata\[5\]
+core0_dmem_rdata\[4\]
+core0_dmem_rdata\[3\]
+core0_dmem_rdata\[2\]
+core0_dmem_rdata\[1\]
+core0_dmem_rdata\[0\]
+core0_dmem_resp\[1\]
+core0_dmem_resp\[0\]
+
+core0_debug\[48\] 0600 0 2
+core0_debug\[47\]
+core0_debug\[46\]
+core0_debug\[45\]
+core0_debug\[44\]
+core0_debug\[43\]
+core0_debug\[42\]
+core0_debug\[41\]
+core0_debug\[40\]
+core0_debug\[39\]
+core0_debug\[38\]
+core0_debug\[37\]
+core0_debug\[36\]
+core0_debug\[35\]
+core0_debug\[34\]
+core0_debug\[33\]
+core0_debug\[32\]
+core0_debug\[31\]
+core0_debug\[30\]
+core0_debug\[29\]
+core0_debug\[28\]
+core0_debug\[27\]
+core0_debug\[26\]
+core0_debug\[25\]
+core0_debug\[24\]
+core0_debug\[23\]
+core0_debug\[22\]
+core0_debug\[21\]
+core0_debug\[20\]
+core0_debug\[19\]
+core0_debug\[18\]
+core0_debug\[17\]
+core0_debug\[16\]
+core0_debug\[15\]
+core0_debug\[14\]
+core0_debug\[13\]
+core0_debug\[12\]
+core0_debug\[11\]
+core0_debug\[10\]
+core0_debug\[9\]
+core0_debug\[8\]
+core0_debug\[7\]
+core0_debug\[6\]
+core0_debug\[5\]
+core0_debug\[4\]
+core0_debug\[3\]
+core0_debug\[2\]
+core0_debug\[1\]
+core0_debug\[0\]
+
+core0_timer_irq
+core0_timer_val\[63\]
+core0_timer_val\[62\]
+core0_timer_val\[61\]
+core0_timer_val\[60\]
+core0_timer_val\[59\]
+core0_timer_val\[58\]
+core0_timer_val\[57\]
+core0_timer_val\[56\]
+core0_timer_val\[55\]
+core0_timer_val\[54\]
+core0_timer_val\[53\]
+core0_timer_val\[52\]
+core0_timer_val\[51\]
+core0_timer_val\[50\]
+core0_timer_val\[49\]
+core0_timer_val\[48\]
+core0_timer_val\[47\]
+core0_timer_val\[46\]
+core0_timer_val\[45\]
+core0_timer_val\[44\]
+core0_timer_val\[43\]
+core0_timer_val\[42\]
+core0_timer_val\[41\]
+core0_timer_val\[40\]
+core0_timer_val\[39\]
+core0_timer_val\[38\]
+core0_timer_val\[37\]
+core0_timer_val\[36\]
+core0_timer_val\[35\]
+core0_timer_val\[34\]
+core0_timer_val\[33\]
+core0_timer_val\[32\]
+core0_timer_val\[31\]
+core0_timer_val\[30\]
+core0_timer_val\[29\]
+core0_timer_val\[28\]
+core0_timer_val\[27\]
+core0_timer_val\[26\]
+core0_timer_val\[25\]
+core0_timer_val\[24\]
+core0_timer_val\[23\]
+core0_timer_val\[22\]
+core0_timer_val\[21\]
+core0_timer_val\[20\]
+core0_timer_val\[19\]
+core0_timer_val\[18\]
+core0_timer_val\[17\]
+core0_timer_val\[16\]
+core0_timer_val\[15\]
+core0_timer_val\[14\]
+core0_timer_val\[13\]
+core0_timer_val\[12\]
+core0_timer_val\[11\]
+core0_timer_val\[10\]
+core0_timer_val\[9\]
+core0_timer_val\[8\]
+core0_timer_val\[7\]
+core0_timer_val\[6\]
+core0_timer_val\[5\]
+core0_timer_val\[4\]
+core0_timer_val\[3\]
+core0_timer_val\[2\]
+core0_timer_val\[1\]
+core0_timer_val\[0\]
+
+core1_uid\[1\] 1200 00 2
+core1_uid\[0\]
+core1_imem_req_ack
+core1_imem_req
+core1_imem_cmd
+core1_imem_addr\[31\]
+core1_imem_addr\[30\]
+core1_imem_addr\[29\]
+core1_imem_addr\[28\]
+core1_imem_addr\[27\]
+core1_imem_addr\[26\]
+core1_imem_addr\[25\]
+core1_imem_addr\[24\]
+core1_imem_addr\[23\]
+core1_imem_addr\[22\]
+core1_imem_addr\[21\]
+core1_imem_addr\[20\]
+core1_imem_addr\[19\]
+core1_imem_addr\[18\]
+core1_imem_addr\[17\]
+core1_imem_addr\[16\]
+core1_imem_addr\[15\]
+core1_imem_addr\[14\]
+core1_imem_addr\[13\]
+core1_imem_addr\[12\]
+core1_imem_addr\[11\]
+core1_imem_addr\[10\]
+core1_imem_addr\[9\]
+core1_imem_addr\[8\]
+core1_imem_addr\[7\]
+core1_imem_addr\[6\]
+core1_imem_addr\[5\]
+core1_imem_addr\[4\]
+core1_imem_addr\[3\]
+core1_imem_addr\[2\]
+core1_imem_addr\[1\]
+core1_imem_addr\[0\]
+core1_imem_bl\[2\]
+core1_imem_bl\[1\]
+core1_imem_bl\[0\]
+core1_imem_rdata\[31\]
+core1_imem_rdata\[30\]
+core1_imem_rdata\[29\]
+core1_imem_rdata\[28\]
+core1_imem_rdata\[27\]
+core1_imem_rdata\[26\]
+core1_imem_rdata\[25\]
+core1_imem_rdata\[24\]
+core1_imem_rdata\[23\]
+core1_imem_rdata\[22\]
+core1_imem_rdata\[21\]
+core1_imem_rdata\[20\]
+core1_imem_rdata\[19\]
+core1_imem_rdata\[18\]
+core1_imem_rdata\[17\]
+core1_imem_rdata\[16\]
+core1_imem_rdata\[15\]
+core1_imem_rdata\[14\]
+core1_imem_rdata\[13\]
+core1_imem_rdata\[12\]
+core1_imem_rdata\[11\]
+core1_imem_rdata\[10\]
+core1_imem_rdata\[9\]
+core1_imem_rdata\[8\]
+core1_imem_rdata\[7\]
+core1_imem_rdata\[6\]
+core1_imem_rdata\[5\]
+core1_imem_rdata\[4\]
+core1_imem_rdata\[3\]
+core1_imem_rdata\[2\]
+core1_imem_rdata\[1\]
+core1_imem_rdata\[0\]
+core1_imem_resp\[1\]
+core1_imem_resp\[0\]
+
+core1_dmem_req_ack 1400 0 2
+core1_dmem_req
+core1_dmem_cmd
+core1_dmem_width\[1\]
+core1_dmem_width\[0\]
+core1_dmem_addr\[31\]
+core1_dmem_addr\[30\]
+core1_dmem_addr\[29\]
+core1_dmem_addr\[28\]
+core1_dmem_addr\[27\]
+core1_dmem_addr\[26\]
+core1_dmem_addr\[25\]
+core1_dmem_addr\[24\]
+core1_dmem_addr\[23\]
+core1_dmem_addr\[22\]
+core1_dmem_addr\[21\]
+core1_dmem_addr\[20\]
+core1_dmem_addr\[19\]
+core1_dmem_addr\[18\]
+core1_dmem_addr\[17\]
+core1_dmem_addr\[16\]
+core1_dmem_addr\[15\]
+core1_dmem_addr\[14\]
+core1_dmem_addr\[13\]
+core1_dmem_addr\[12\]
+core1_dmem_addr\[11\]
+core1_dmem_addr\[10\]
+core1_dmem_addr\[9\]
+core1_dmem_addr\[8\]
+core1_dmem_addr\[7\]
+core1_dmem_addr\[6\]
+core1_dmem_addr\[5\]
+core1_dmem_addr\[4\]
+core1_dmem_addr\[3\]
+core1_dmem_addr\[2\]
+core1_dmem_addr\[1\]
+core1_dmem_addr\[0\]
+core1_dmem_wdata\[31\]
+core1_dmem_wdata\[30\]
+core1_dmem_wdata\[29\]
+core1_dmem_wdata\[28\]
+core1_dmem_wdata\[27\]
+core1_dmem_wdata\[26\]
+core1_dmem_wdata\[25\]
+core1_dmem_wdata\[24\]
+core1_dmem_wdata\[23\]
+core1_dmem_wdata\[22\]
+core1_dmem_wdata\[21\]
+core1_dmem_wdata\[20\]
+core1_dmem_wdata\[19\]
+core1_dmem_wdata\[18\]
+core1_dmem_wdata\[17\]
+core1_dmem_wdata\[16\]
+core1_dmem_wdata\[15\]
+core1_dmem_wdata\[14\]
+core1_dmem_wdata\[13\]
+core1_dmem_wdata\[12\]
+core1_dmem_wdata\[11\]
+core1_dmem_wdata\[10\]
+core1_dmem_wdata\[9\]
+core1_dmem_wdata\[8\]
+core1_dmem_wdata\[7\]
+core1_dmem_wdata\[6\]
+core1_dmem_wdata\[5\]
+core1_dmem_wdata\[4\]
+core1_dmem_wdata\[3\]
+core1_dmem_wdata\[2\]
+core1_dmem_wdata\[1\]
+core1_dmem_wdata\[0\]
+core1_dmem_rdata\[31\]
+core1_dmem_rdata\[30\]
+core1_dmem_rdata\[29\]
+core1_dmem_rdata\[28\]
+core1_dmem_rdata\[27\]
+core1_dmem_rdata\[26\]
+core1_dmem_rdata\[25\]
+core1_dmem_rdata\[24\]
+core1_dmem_rdata\[23\]
+core1_dmem_rdata\[22\]
+core1_dmem_rdata\[21\]
+core1_dmem_rdata\[20\]
+core1_dmem_rdata\[19\]
+core1_dmem_rdata\[18\]
+core1_dmem_rdata\[17\]
+core1_dmem_rdata\[16\]
+core1_dmem_rdata\[15\]
+core1_dmem_rdata\[14\]
+core1_dmem_rdata\[13\]
+core1_dmem_rdata\[12\]
+core1_dmem_rdata\[11\]
+core1_dmem_rdata\[10\]
+core1_dmem_rdata\[9\]
+core1_dmem_rdata\[8\]
+core1_dmem_rdata\[7\]
+core1_dmem_rdata\[6\]
+core1_dmem_rdata\[5\]
+core1_dmem_rdata\[4\]
+core1_dmem_rdata\[3\]
+core1_dmem_rdata\[2\]
+core1_dmem_rdata\[1\]
+core1_dmem_rdata\[0\]
+core1_dmem_resp\[1\]
+core1_dmem_resp\[0\]
+
+core1_debug\[48\] 1600 0 2
+core1_debug\[47\]
+core1_debug\[46\]
+core1_debug\[45\]
+core1_debug\[44\]
+core1_debug\[43\]
+core1_debug\[42\]
+core1_debug\[41\]
+core1_debug\[40\]
+core1_debug\[39\]
+core1_debug\[38\]
+core1_debug\[37\]
+core1_debug\[36\]
+core1_debug\[35\]
+core1_debug\[34\]
+core1_debug\[33\]
+core1_debug\[32\]
+core1_debug\[31\]
+core1_debug\[30\]
+core1_debug\[29\]
+core1_debug\[28\]
+core1_debug\[27\]
+core1_debug\[26\]
+core1_debug\[25\]
+core1_debug\[24\]
+core1_debug\[23\]
+core1_debug\[22\]
+core1_debug\[21\]
+core1_debug\[20\]
+core1_debug\[19\]
+core1_debug\[18\]
+core1_debug\[17\]
+core1_debug\[16\]
+core1_debug\[15\]
+core1_debug\[14\]
+core1_debug\[13\]
+core1_debug\[12\]
+core1_debug\[11\]
+core1_debug\[10\]
+core1_debug\[9\]
+core1_debug\[8\]
+core1_debug\[7\]
+core1_debug\[6\]
+core1_debug\[5\]
+core1_debug\[4\]
+core1_debug\[3\]
+core1_debug\[2\]
+core1_debug\[1\]
+core1_debug\[0\]
+
+core1_timer_irq
+core1_timer_val\[63\]
+core1_timer_val\[62\]
+core1_timer_val\[61\]
+core1_timer_val\[60\]
+core1_timer_val\[59\]
+core1_timer_val\[58\]
+core1_timer_val\[57\]
+core1_timer_val\[56\]
+core1_timer_val\[55\]
+core1_timer_val\[54\]
+core1_timer_val\[53\]
+core1_timer_val\[52\]
+core1_timer_val\[51\]
+core1_timer_val\[50\]
+core1_timer_val\[49\]
+core1_timer_val\[48\]
+core1_timer_val\[47\]
+core1_timer_val\[46\]
+core1_timer_val\[45\]
+core1_timer_val\[44\]
+core1_timer_val\[43\]
+core1_timer_val\[42\]
+core1_timer_val\[41\]
+core1_timer_val\[40\]
+core1_timer_val\[39\]
+core1_timer_val\[38\]
+core1_timer_val\[37\]
+core1_timer_val\[36\]
+core1_timer_val\[35\]
+core1_timer_val\[34\]
+core1_timer_val\[33\]
+core1_timer_val\[32\]
+core1_timer_val\[31\]
+core1_timer_val\[30\]
+core1_timer_val\[29\]
+core1_timer_val\[28\]
+core1_timer_val\[27\]
+core1_timer_val\[26\]
+core1_timer_val\[25\]
+core1_timer_val\[24\]
+core1_timer_val\[23\]
+core1_timer_val\[22\]
+core1_timer_val\[21\]
+core1_timer_val\[20\]
+core1_timer_val\[19\]
+core1_timer_val\[18\]
+core1_timer_val\[17\]
+core1_timer_val\[16\]
+core1_timer_val\[15\]
+core1_timer_val\[14\]
+core1_timer_val\[13\]
+core1_timer_val\[12\]
+core1_timer_val\[11\]
+core1_timer_val\[10\]
+core1_timer_val\[9\]
+core1_timer_val\[8\]
+core1_timer_val\[7\]
+core1_timer_val\[6\]
+core1_timer_val\[5\]
+core1_timer_val\[4\]
+core1_timer_val\[3\]
+core1_timer_val\[2\]
+core1_timer_val\[1\]
+core1_timer_val\[0\]
+
+#W
+sram0_clk0 000 0 2
+sram0_csb0
+sram0_web0
+sram0_addr0\[8\]
+sram0_addr0\[7\]
+sram0_addr0\[6\]
+sram0_addr0\[5\]
+sram0_addr0\[4\]
+sram0_addr0\[3\]
+sram0_addr0\[2\]
+sram0_addr0\[1\]
+sram0_addr0\[0\]
+sram0_wmask0\[3\]
+sram0_wmask0\[2\]
+sram0_wmask0\[1\]
+sram0_wmask0\[0\]
+sram0_din0\[31\]
+sram0_din0\[30\]
+sram0_din0\[29\]
+sram0_din0\[28\]
+sram0_din0\[27\]
+sram0_din0\[26\]
+sram0_din0\[25\]
+sram0_din0\[24\]
+sram0_din0\[23\]
+sram0_din0\[22\]
+sram0_din0\[21\]
+sram0_din0\[20\]
+sram0_din0\[19\]
+sram0_din0\[18\]
+sram0_din0\[17\]
+sram0_din0\[16\]
+sram0_din0\[15\]
+sram0_din0\[14\]
+sram0_din0\[13\]
+sram0_din0\[12\]
+sram0_din0\[11\]
+sram0_din0\[10\]
+sram0_din0\[9\]
+sram0_din0\[8\]
+sram0_din0\[7\]
+sram0_din0\[6\]
+sram0_din0\[5\]
+sram0_din0\[4\]
+sram0_din0\[3\]
+sram0_din0\[2\]
+sram0_din0\[1\]
+sram0_din0\[0\]
+sram0_dout0\[31\]
+sram0_dout0\[30\]
+sram0_dout0\[29\]
+sram0_dout0\[28\]
+sram0_dout0\[27\]
+sram0_dout0\[26\]
+sram0_dout0\[25\]
+sram0_dout0\[24\]
+sram0_dout0\[23\]
+sram0_dout0\[22\]
+sram0_dout0\[21\]
+sram0_dout0\[20\]
+sram0_dout0\[19\]
+sram0_dout0\[18\]
+sram0_dout0\[17\]
+sram0_dout0\[16\]
+sram0_dout0\[15\]
+sram0_dout0\[14\]
+sram0_dout0\[13\]
+sram0_dout0\[12\]
+sram0_dout0\[11\]
+sram0_dout0\[10\]
+sram0_dout0\[9\]
+sram0_dout0\[8\]
+sram0_dout0\[7\]
+sram0_dout0\[6\]
+sram0_dout0\[5\]
+sram0_dout0\[4\]
+sram0_dout0\[3\]
+sram0_dout0\[2\]
+sram0_dout0\[1\]
+sram0_dout0\[0\]
+
+
+sram0_clk1 0110 0 2
+sram0_csb1
+sram0_addr1\[8\]
+sram0_addr1\[7\]
+sram0_addr1\[6\]
+sram0_addr1\[5\]
+sram0_addr1\[4\]
+sram0_addr1\[3\]
+sram0_addr1\[2\]
+sram0_addr1\[1\]
+sram0_addr1\[0\]
+sram0_dout1\[31\]
+sram0_dout1\[30\]
+sram0_dout1\[29\]
+sram0_dout1\[28\]
+sram0_dout1\[27\]
+sram0_dout1\[26\]
+sram0_dout1\[25\]
+sram0_dout1\[24\]
+sram0_dout1\[23\]
+sram0_dout1\[22\]
+sram0_dout1\[21\]
+sram0_dout1\[20\]
+sram0_dout1\[19\]
+sram0_dout1\[18\]
+sram0_dout1\[17\]
+sram0_dout1\[16\]
+sram0_dout1\[15\]
+sram0_dout1\[14\]
+sram0_dout1\[13\]
+sram0_dout1\[12\]
+sram0_dout1\[11\]
+sram0_dout1\[10\]
+sram0_dout1\[9\]
+sram0_dout1\[8\]
+sram0_dout1\[7\]
+sram0_dout1\[6\]
+sram0_dout1\[5\]
+sram0_dout1\[4\]
+sram0_dout1\[3\]
+sram0_dout1\[2\]
+sram0_dout1\[1\]
+sram0_dout1\[0\]
+
+
+core2_uid\[1\] 0200 00 2
+core2_uid\[0\]
+core2_imem_req_ack
+core2_imem_req
+core2_imem_cmd
+core2_imem_addr\[31\]
+core2_imem_addr\[30\]
+core2_imem_addr\[29\]
+core2_imem_addr\[28\]
+core2_imem_addr\[27\]
+core2_imem_addr\[26\]
+core2_imem_addr\[25\]
+core2_imem_addr\[24\]
+core2_imem_addr\[23\]
+core2_imem_addr\[22\]
+core2_imem_addr\[21\]
+core2_imem_addr\[20\]
+core2_imem_addr\[19\]
+core2_imem_addr\[18\]
+core2_imem_addr\[17\]
+core2_imem_addr\[16\]
+core2_imem_addr\[15\]
+core2_imem_addr\[14\]
+core2_imem_addr\[13\]
+core2_imem_addr\[12\]
+core2_imem_addr\[11\]
+core2_imem_addr\[10\]
+core2_imem_addr\[9\]
+core2_imem_addr\[8\]
+core2_imem_addr\[7\]
+core2_imem_addr\[6\]
+core2_imem_addr\[5\]
+core2_imem_addr\[4\]
+core2_imem_addr\[3\]
+core2_imem_addr\[2\]
+core2_imem_addr\[1\]
+core2_imem_addr\[0\]
+core2_imem_bl\[2\]
+core2_imem_bl\[1\]
+core2_imem_bl\[0\]
+core2_imem_rdata\[31\]
+core2_imem_rdata\[30\]
+core2_imem_rdata\[29\]
+core2_imem_rdata\[28\]
+core2_imem_rdata\[27\]
+core2_imem_rdata\[26\]
+core2_imem_rdata\[25\]
+core2_imem_rdata\[24\]
+core2_imem_rdata\[23\]
+core2_imem_rdata\[22\]
+core2_imem_rdata\[21\]
+core2_imem_rdata\[20\]
+core2_imem_rdata\[19\]
+core2_imem_rdata\[18\]
+core2_imem_rdata\[17\]
+core2_imem_rdata\[16\]
+core2_imem_rdata\[15\]
+core2_imem_rdata\[14\]
+core2_imem_rdata\[13\]
+core2_imem_rdata\[12\]
+core2_imem_rdata\[11\]
+core2_imem_rdata\[10\]
+core2_imem_rdata\[9\]
+core2_imem_rdata\[8\]
+core2_imem_rdata\[7\]
+core2_imem_rdata\[6\]
+core2_imem_rdata\[5\]
+core2_imem_rdata\[4\]
+core2_imem_rdata\[3\]
+core2_imem_rdata\[2\]
+core2_imem_rdata\[1\]
+core2_imem_rdata\[0\]
+core2_imem_resp\[1\]
+core2_imem_resp\[0\]
+
+core2_dmem_req_ack 0400 0 2
+core2_dmem_req
+core2_dmem_cmd
+core2_dmem_width\[1\]
+core2_dmem_width\[0\]
+core2_dmem_addr\[31\]
+core2_dmem_addr\[30\]
+core2_dmem_addr\[29\]
+core2_dmem_addr\[28\]
+core2_dmem_addr\[27\]
+core2_dmem_addr\[26\]
+core2_dmem_addr\[25\]
+core2_dmem_addr\[24\]
+core2_dmem_addr\[23\]
+core2_dmem_addr\[22\]
+core2_dmem_addr\[21\]
+core2_dmem_addr\[20\]
+core2_dmem_addr\[19\]
+core2_dmem_addr\[18\]
+core2_dmem_addr\[17\]
+core2_dmem_addr\[16\]
+core2_dmem_addr\[15\]
+core2_dmem_addr\[14\]
+core2_dmem_addr\[13\]
+core2_dmem_addr\[12\]
+core2_dmem_addr\[11\]
+core2_dmem_addr\[10\]
+core2_dmem_addr\[9\]
+core2_dmem_addr\[8\]
+core2_dmem_addr\[7\]
+core2_dmem_addr\[6\]
+core2_dmem_addr\[5\]
+core2_dmem_addr\[4\]
+core2_dmem_addr\[3\]
+core2_dmem_addr\[2\]
+core2_dmem_addr\[1\]
+core2_dmem_addr\[0\]
+core2_dmem_wdata\[31\]
+core2_dmem_wdata\[30\]
+core2_dmem_wdata\[29\]
+core2_dmem_wdata\[28\]
+core2_dmem_wdata\[27\]
+core2_dmem_wdata\[26\]
+core2_dmem_wdata\[25\]
+core2_dmem_wdata\[24\]
+core2_dmem_wdata\[23\]
+core2_dmem_wdata\[22\]
+core2_dmem_wdata\[21\]
+core2_dmem_wdata\[20\]
+core2_dmem_wdata\[19\]
+core2_dmem_wdata\[18\]
+core2_dmem_wdata\[17\]
+core2_dmem_wdata\[16\]
+core2_dmem_wdata\[15\]
+core2_dmem_wdata\[14\]
+core2_dmem_wdata\[13\]
+core2_dmem_wdata\[12\]
+core2_dmem_wdata\[11\]
+core2_dmem_wdata\[10\]
+core2_dmem_wdata\[9\]
+core2_dmem_wdata\[8\]
+core2_dmem_wdata\[7\]
+core2_dmem_wdata\[6\]
+core2_dmem_wdata\[5\]
+core2_dmem_wdata\[4\]
+core2_dmem_wdata\[3\]
+core2_dmem_wdata\[2\]
+core2_dmem_wdata\[1\]
+core2_dmem_wdata\[0\]
+core2_dmem_rdata\[31\]
+core2_dmem_rdata\[30\]
+core2_dmem_rdata\[29\]
+core2_dmem_rdata\[28\]
+core2_dmem_rdata\[27\]
+core2_dmem_rdata\[26\]
+core2_dmem_rdata\[25\]
+core2_dmem_rdata\[24\]
+core2_dmem_rdata\[23\]
+core2_dmem_rdata\[22\]
+core2_dmem_rdata\[21\]
+core2_dmem_rdata\[20\]
+core2_dmem_rdata\[19\]
+core2_dmem_rdata\[18\]
+core2_dmem_rdata\[17\]
+core2_dmem_rdata\[16\]
+core2_dmem_rdata\[15\]
+core2_dmem_rdata\[14\]
+core2_dmem_rdata\[13\]
+core2_dmem_rdata\[12\]
+core2_dmem_rdata\[11\]
+core2_dmem_rdata\[10\]
+core2_dmem_rdata\[9\]
+core2_dmem_rdata\[8\]
+core2_dmem_rdata\[7\]
+core2_dmem_rdata\[6\]
+core2_dmem_rdata\[5\]
+core2_dmem_rdata\[4\]
+core2_dmem_rdata\[3\]
+core2_dmem_rdata\[2\]
+core2_dmem_rdata\[1\]
+core2_dmem_rdata\[0\]
+core2_dmem_resp\[1\]
+core2_dmem_resp\[0\]
+
+core2_debug\[48\] 0600 0 2
+core2_debug\[47\]
+core2_debug\[46\]
+core2_debug\[45\]
+core2_debug\[44\]
+core2_debug\[43\]
+core2_debug\[42\]
+core2_debug\[41\]
+core2_debug\[40\]
+core2_debug\[39\]
+core2_debug\[38\]
+core2_debug\[37\]
+core2_debug\[36\]
+core2_debug\[35\]
+core2_debug\[34\]
+core2_debug\[33\]
+core2_debug\[32\]
+core2_debug\[31\]
+core2_debug\[30\]
+core2_debug\[29\]
+core2_debug\[28\]
+core2_debug\[27\]
+core2_debug\[26\]
+core2_debug\[25\]
+core2_debug\[24\]
+core2_debug\[23\]
+core2_debug\[22\]
+core2_debug\[21\]
+core2_debug\[20\]
+core2_debug\[19\]
+core2_debug\[18\]
+core2_debug\[17\]
+core2_debug\[16\]
+core2_debug\[15\]
+core2_debug\[14\]
+core2_debug\[13\]
+core2_debug\[12\]
+core2_debug\[11\]
+core2_debug\[10\]
+core2_debug\[9\]
+core2_debug\[8\]
+core2_debug\[7\]
+core2_debug\[6\]
+core2_debug\[5\]
+core2_debug\[4\]
+core2_debug\[3\]
+core2_debug\[2\]
+core2_debug\[1\]
+core2_debug\[0\]
+
+core2_timer_irq
+core2_timer_val\[63\]
+core2_timer_val\[62\]
+core2_timer_val\[61\]
+core2_timer_val\[60\]
+core2_timer_val\[59\]
+core2_timer_val\[58\]
+core2_timer_val\[57\]
+core2_timer_val\[56\]
+core2_timer_val\[55\]
+core2_timer_val\[54\]
+core2_timer_val\[53\]
+core2_timer_val\[52\]
+core2_timer_val\[51\]
+core2_timer_val\[50\]
+core2_timer_val\[49\]
+core2_timer_val\[48\]
+core2_timer_val\[47\]
+core2_timer_val\[46\]
+core2_timer_val\[45\]
+core2_timer_val\[44\]
+core2_timer_val\[43\]
+core2_timer_val\[42\]
+core2_timer_val\[41\]
+core2_timer_val\[40\]
+core2_timer_val\[39\]
+core2_timer_val\[38\]
+core2_timer_val\[37\]
+core2_timer_val\[36\]
+core2_timer_val\[35\]
+core2_timer_val\[34\]
+core2_timer_val\[33\]
+core2_timer_val\[32\]
+core2_timer_val\[31\]
+core2_timer_val\[30\]
+core2_timer_val\[29\]
+core2_timer_val\[28\]
+core2_timer_val\[27\]
+core2_timer_val\[26\]
+core2_timer_val\[25\]
+core2_timer_val\[24\]
+core2_timer_val\[23\]
+core2_timer_val\[22\]
+core2_timer_val\[21\]
+core2_timer_val\[20\]
+core2_timer_val\[19\]
+core2_timer_val\[18\]
+core2_timer_val\[17\]
+core2_timer_val\[16\]
+core2_timer_val\[15\]
+core2_timer_val\[14\]
+core2_timer_val\[13\]
+core2_timer_val\[12\]
+core2_timer_val\[11\]
+core2_timer_val\[10\]
+core2_timer_val\[9\]
+core2_timer_val\[8\]
+core2_timer_val\[7\]
+core2_timer_val\[6\]
+core2_timer_val\[5\]
+core2_timer_val\[4\]
+core2_timer_val\[3\]
+core2_timer_val\[2\]
+core2_timer_val\[1\]
+core2_timer_val\[0\]
+
+core3_uid\[1\] 1200 00 2
+core3_uid\[0\]
+core3_imem_req_ack
+core3_imem_req
+core3_imem_cmd
+core3_imem_addr\[31\]
+core3_imem_addr\[30\]
+core3_imem_addr\[29\]
+core3_imem_addr\[28\]
+core3_imem_addr\[27\]
+core3_imem_addr\[26\]
+core3_imem_addr\[25\]
+core3_imem_addr\[24\]
+core3_imem_addr\[23\]
+core3_imem_addr\[22\]
+core3_imem_addr\[21\]
+core3_imem_addr\[20\]
+core3_imem_addr\[19\]
+core3_imem_addr\[18\]
+core3_imem_addr\[17\]
+core3_imem_addr\[16\]
+core3_imem_addr\[15\]
+core3_imem_addr\[14\]
+core3_imem_addr\[13\]
+core3_imem_addr\[12\]
+core3_imem_addr\[11\]
+core3_imem_addr\[10\]
+core3_imem_addr\[9\]
+core3_imem_addr\[8\]
+core3_imem_addr\[7\]
+core3_imem_addr\[6\]
+core3_imem_addr\[5\]
+core3_imem_addr\[4\]
+core3_imem_addr\[3\]
+core3_imem_addr\[2\]
+core3_imem_addr\[1\]
+core3_imem_addr\[0\]
+core3_imem_bl\[2\]
+core3_imem_bl\[1\]
+core3_imem_bl\[0\]
+core3_imem_rdata\[31\]
+core3_imem_rdata\[30\]
+core3_imem_rdata\[29\]
+core3_imem_rdata\[28\]
+core3_imem_rdata\[27\]
+core3_imem_rdata\[26\]
+core3_imem_rdata\[25\]
+core3_imem_rdata\[24\]
+core3_imem_rdata\[23\]
+core3_imem_rdata\[22\]
+core3_imem_rdata\[21\]
+core3_imem_rdata\[20\]
+core3_imem_rdata\[19\]
+core3_imem_rdata\[18\]
+core3_imem_rdata\[17\]
+core3_imem_rdata\[16\]
+core3_imem_rdata\[15\]
+core3_imem_rdata\[14\]
+core3_imem_rdata\[13\]
+core3_imem_rdata\[12\]
+core3_imem_rdata\[11\]
+core3_imem_rdata\[10\]
+core3_imem_rdata\[9\]
+core3_imem_rdata\[8\]
+core3_imem_rdata\[7\]
+core3_imem_rdata\[6\]
+core3_imem_rdata\[5\]
+core3_imem_rdata\[4\]
+core3_imem_rdata\[3\]
+core3_imem_rdata\[2\]
+core3_imem_rdata\[1\]
+core3_imem_rdata\[0\]
+core3_imem_resp\[1\]
+core3_imem_resp\[0\]
+
+core3_dmem_req_ack 1400 0 2
+core3_dmem_req
+core3_dmem_cmd
+core3_dmem_width\[1\]
+core3_dmem_width\[0\]
+core3_dmem_addr\[31\]
+core3_dmem_addr\[30\]
+core3_dmem_addr\[29\]
+core3_dmem_addr\[28\]
+core3_dmem_addr\[27\]
+core3_dmem_addr\[26\]
+core3_dmem_addr\[25\]
+core3_dmem_addr\[24\]
+core3_dmem_addr\[23\]
+core3_dmem_addr\[22\]
+core3_dmem_addr\[21\]
+core3_dmem_addr\[20\]
+core3_dmem_addr\[19\]
+core3_dmem_addr\[18\]
+core3_dmem_addr\[17\]
+core3_dmem_addr\[16\]
+core3_dmem_addr\[15\]
+core3_dmem_addr\[14\]
+core3_dmem_addr\[13\]
+core3_dmem_addr\[12\]
+core3_dmem_addr\[11\]
+core3_dmem_addr\[10\]
+core3_dmem_addr\[9\]
+core3_dmem_addr\[8\]
+core3_dmem_addr\[7\]
+core3_dmem_addr\[6\]
+core3_dmem_addr\[5\]
+core3_dmem_addr\[4\]
+core3_dmem_addr\[3\]
+core3_dmem_addr\[2\]
+core3_dmem_addr\[1\]
+core3_dmem_addr\[0\]
+core3_dmem_wdata\[31\]
+core3_dmem_wdata\[30\]
+core3_dmem_wdata\[29\]
+core3_dmem_wdata\[28\]
+core3_dmem_wdata\[27\]
+core3_dmem_wdata\[26\]
+core3_dmem_wdata\[25\]
+core3_dmem_wdata\[24\]
+core3_dmem_wdata\[23\]
+core3_dmem_wdata\[22\]
+core3_dmem_wdata\[21\]
+core3_dmem_wdata\[20\]
+core3_dmem_wdata\[19\]
+core3_dmem_wdata\[18\]
+core3_dmem_wdata\[17\]
+core3_dmem_wdata\[16\]
+core3_dmem_wdata\[15\]
+core3_dmem_wdata\[14\]
+core3_dmem_wdata\[13\]
+core3_dmem_wdata\[12\]
+core3_dmem_wdata\[11\]
+core3_dmem_wdata\[10\]
+core3_dmem_wdata\[9\]
+core3_dmem_wdata\[8\]
+core3_dmem_wdata\[7\]
+core3_dmem_wdata\[6\]
+core3_dmem_wdata\[5\]
+core3_dmem_wdata\[4\]
+core3_dmem_wdata\[3\]
+core3_dmem_wdata\[2\]
+core3_dmem_wdata\[1\]
+core3_dmem_wdata\[0\]
+core3_dmem_rdata\[31\]
+core3_dmem_rdata\[30\]
+core3_dmem_rdata\[29\]
+core3_dmem_rdata\[28\]
+core3_dmem_rdata\[27\]
+core3_dmem_rdata\[26\]
+core3_dmem_rdata\[25\]
+core3_dmem_rdata\[24\]
+core3_dmem_rdata\[23\]
+core3_dmem_rdata\[22\]
+core3_dmem_rdata\[21\]
+core3_dmem_rdata\[20\]
+core3_dmem_rdata\[19\]
+core3_dmem_rdata\[18\]
+core3_dmem_rdata\[17\]
+core3_dmem_rdata\[16\]
+core3_dmem_rdata\[15\]
+core3_dmem_rdata\[14\]
+core3_dmem_rdata\[13\]
+core3_dmem_rdata\[12\]
+core3_dmem_rdata\[11\]
+core3_dmem_rdata\[10\]
+core3_dmem_rdata\[9\]
+core3_dmem_rdata\[8\]
+core3_dmem_rdata\[7\]
+core3_dmem_rdata\[6\]
+core3_dmem_rdata\[5\]
+core3_dmem_rdata\[4\]
+core3_dmem_rdata\[3\]
+core3_dmem_rdata\[2\]
+core3_dmem_rdata\[1\]
+core3_dmem_rdata\[0\]
+core3_dmem_resp\[1\]
+core3_dmem_resp\[0\]
+
+core3_debug\[48\] 1600 0 2
+core3_debug\[47\]
+core3_debug\[46\]
+core3_debug\[45\]
+core3_debug\[44\]
+core3_debug\[43\]
+core3_debug\[42\]
+core3_debug\[41\]
+core3_debug\[40\]
+core3_debug\[39\]
+core3_debug\[38\]
+core3_debug\[37\]
+core3_debug\[36\]
+core3_debug\[35\]
+core3_debug\[34\]
+core3_debug\[33\]
+core3_debug\[32\]
+core3_debug\[31\]
+core3_debug\[30\]
+core3_debug\[29\]
+core3_debug\[28\]
+core3_debug\[27\]
+core3_debug\[26\]
+core3_debug\[25\]
+core3_debug\[24\]
+core3_debug\[23\]
+core3_debug\[22\]
+core3_debug\[21\]
+core3_debug\[20\]
+core3_debug\[19\]
+core3_debug\[18\]
+core3_debug\[17\]
+core3_debug\[16\]
+core3_debug\[15\]
+core3_debug\[14\]
+core3_debug\[13\]
+core3_debug\[12\]
+core3_debug\[11\]
+core3_debug\[10\]
+core3_debug\[9\]
+core3_debug\[8\]
+core3_debug\[7\]
+core3_debug\[6\]
+core3_debug\[5\]
+core3_debug\[4\]
+core3_debug\[3\]
+core3_debug\[2\]
+core3_debug\[1\]
+core3_debug\[0\]
+
+core3_timer_irq
+core3_timer_val\[63\]
+core3_timer_val\[62\]
+core3_timer_val\[61\]
+core3_timer_val\[60\]
+core3_timer_val\[59\]
+core3_timer_val\[58\]
+core3_timer_val\[57\]
+core3_timer_val\[56\]
+core3_timer_val\[55\]
+core3_timer_val\[54\]
+core3_timer_val\[53\]
+core3_timer_val\[52\]
+core3_timer_val\[51\]
+core3_timer_val\[50\]
+core3_timer_val\[49\]
+core3_timer_val\[48\]
+core3_timer_val\[47\]
+core3_timer_val\[46\]
+core3_timer_val\[45\]
+core3_timer_val\[44\]
+core3_timer_val\[43\]
+core3_timer_val\[42\]
+core3_timer_val\[41\]
+core3_timer_val\[40\]
+core3_timer_val\[39\]
+core3_timer_val\[38\]
+core3_timer_val\[37\]
+core3_timer_val\[36\]
+core3_timer_val\[35\]
+core3_timer_val\[34\]
+core3_timer_val\[33\]
+core3_timer_val\[32\]
+core3_timer_val\[31\]
+core3_timer_val\[30\]
+core3_timer_val\[29\]
+core3_timer_val\[28\]
+core3_timer_val\[27\]
+core3_timer_val\[26\]
+core3_timer_val\[25\]
+core3_timer_val\[24\]
+core3_timer_val\[23\]
+core3_timer_val\[22\]
+core3_timer_val\[21\]
+core3_timer_val\[20\]
+core3_timer_val\[19\]
+core3_timer_val\[18\]
+core3_timer_val\[17\]
+core3_timer_val\[16\]
+core3_timer_val\[15\]
+core3_timer_val\[14\]
+core3_timer_val\[13\]
+core3_timer_val\[12\]
+core3_timer_val\[11\]
+core3_timer_val\[10\]
+core3_timer_val\[9\]
+core3_timer_val\[8\]
+core3_timer_val\[7\]
+core3_timer_val\[6\]
+core3_timer_val\[5\]
+core3_timer_val\[4\]
+core3_timer_val\[3\]
+core3_timer_val\[2\]
+core3_timer_val\[1\]
+core3_timer_val\[0\]
+
diff --git a/openlane/ycr_core/config.tcl b/openlane/ycr_core/config.tcl
index a1aa12a..c34a09b 100644
--- a/openlane/ycr_core/config.tcl
+++ b/openlane/ycr_core/config.tcl
@@ -32,30 +32,30 @@
set ::env(LEC_ENABLE) 0
set ::env(VERILOG_FILES) "\
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_top.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_core_top.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_dm.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_tapc_synchronizer.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_clk_ctrl.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_scu.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_tapc.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_tapc_shift_reg.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_dmi.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/primitives/ycr_reset_cells.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_ifu.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_idu.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_exu.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_mprf.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_csr.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_ialu.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_mul.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_div.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_lsu.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_hdu.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_tdu.sv \
- $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_ipic.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_top.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/ycr_core_top.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/ycr_dm.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/ycr_tapc_synchronizer.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/ycr_clk_ctrl.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/ycr_scu.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/ycr_tapc.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/ycr_tapc_shift_reg.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/ycr_dmi.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/primitives/ycr_reset_cells.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_ifu.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_idu.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_exu.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_mprf.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_csr.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_ialu.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_mul.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_div.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_lsu.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_hdu.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_tdu.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/pipeline/ycr_ipic.sv \
"
-set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr2c/src/includes ]
+set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr4c/src/includes ]
set ::env(SYNTH_READ_BLACKBOX_LIB) 1
set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
@@ -71,12 +71,12 @@
## Floorplan
set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 700 850 "
+set ::env(DIE_AREA) "0 0 600 950 "
set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg
set ::env(PL_TARGET_DENSITY) 0.36
-
+set ::env(GLB_RT_MAXLAYER) 5
set ::env(RT_MAX_LAYER) {met4}
set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
set ::env(DIODE_INSERTION_STRATEGY) 4
diff --git a/openlane/ycr_core/pin_order.cfg b/openlane/ycr_core/pin_order.cfg
index f8769e9..924f0e6 100644
--- a/openlane/ycr_core/pin_order.cfg
+++ b/openlane/ycr_core/pin_order.cfg
@@ -299,8 +299,6 @@
pwrup_rst_n
rst_n
-test_mode
-test_rst_n
core_irq_lines_i\[15\]
@@ -322,5 +320,6 @@
core_irq_soft_i
clk
+clk_o
core_rst_n_o
core_rdc_qlfy_o
diff --git a/openlane/ycr_intf/base.sdc b/openlane/ycr_intf/base.sdc
new file mode 100644
index 0000000..00fe508
--- /dev/null
+++ b/openlane/ycr_intf/base.sdc
@@ -0,0 +1,32 @@
+###############################################################################
+# Timing Constraints
+###############################################################################
+create_clock -name core_clk -period 20.0000 [get_ports {core_clk}]
+create_clock -name rtc_clk -period 40.0000 [get_ports {rtc_clk}]
+create_clock -name wb_clk -period 10.0000 [get_ports {wb_clk}]
+
+set_clock_transition 0.1500 [all_clocks]
+set_clock_uncertainty -setup 0.2500 [all_clocks]
+set_clock_uncertainty -hold 0.2500 [all_clocks]
+
+set ::env(SYNTH_TIMING_DERATE) 0.05
+puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
+set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
+set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
+
+set_clock_groups -name async_clock -asynchronous \
+ -group [get_clocks {core_clk}]\
+ -group [get_clocks {rtc_clk}]\
+ -group [get_clocks {wb_clk}] -comment {Async Clock group}
+
+###############################################################################
+# Environment
+###############################################################################
+set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin $::env(SYNTH_DRIVING_CELL_PIN) [all_inputs]
+set cap_load [expr $::env(SYNTH_CAP_LOAD) / 1000.0]
+puts "\[INFO\]: Setting load to: $cap_load"
+set_load $cap_load [all_outputs]
+
+###############################################################################
+# Design Rules
+###############################################################################
diff --git a/openlane/ycr_intf/config.tcl b/openlane/ycr_intf/config.tcl
new file mode 100644
index 0000000..aebf0d7
--- /dev/null
+++ b/openlane/ycr_intf/config.tcl
@@ -0,0 +1,85 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+set script_dir [file dirname [file normalize [info script]]]
+
+set ::env(ROUTING_CORES) "6"
+
+set ::env(DESIGN_NAME) ycr_intf
+set ::env(DESIGN_IS_CORE) "0"
+set ::env(FP_PDN_CORE_RING) "0"
+
+# Timing configuration
+set ::env(CLOCK_PERIOD) "10"
+set ::env(CLOCK_PORT) "wb_clk core_clk"
+
+set ::env(SYNTH_MAX_FANOUT) 4
+
+## CTS BUFFER
+set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8"
+set ::env(CTS_SINK_CLUSTERING_SIZE) "16"
+set ::env(CLOCK_BUFFER_FANOUT) "8"
+set ::env(LEC_ENABLE) 0
+
+set ::env(VERILOG_FILES) "\
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/lib/clk_skew_adjust.gv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/lib/ctech_cells.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/cache/src/core/dcache_top.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/cache/src/core/dcache_tag_fifo.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/cache/src/core/icache_tag_fifo.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/cache/src/core/icache_top.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/cache/src/core/icache_app_fsm.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/lib/ycr_async_wbb.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/top/ycr_dmem_wb.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/top/ycr_intf.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/lib/async_fifo.sv \
+ $script_dir/../../verilog/rtl/yifive/ycr4c/src/core/primitives/ycr_reset_cells.sv \
+ "
+set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr4c/src/includes ]
+set ::env(SYNTH_READ_BLACKBOX_LIB) 1
+set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
+
+
+set ::env(SDC_FILE) "$script_dir/base.sdc"
+set ::env(BASE_SDC_FILE) "$script_dir/base.sdc"
+
+set ::env(LEC_ENABLE) 0
+
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+## Floorplan
+set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 800 650 "
+
+set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg
+set ::env(PL_TARGET_DENSITY) 0.38
+
+
+set ::env(RT_MAX_LAYER) {met4}
+set ::env(GLB_RT_MAXLAYER) "5"
+set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
+set ::env(DIODE_INSERTION_STRATEGY) 4
+
+
+set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
+set ::env(QUIT_ON_MAGIC_DRC) "1"
+set ::env(QUIT_ON_LVS_ERROR) "0"
+set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
+
+#Need to cross-check why global timing opimization creating setup vio with hugh hold fix
+set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) "0"
+
diff --git a/openlane/ycr_intf/pin_order.cfg b/openlane/ycr_intf/pin_order.cfg
new file mode 100644
index 0000000..9fdc875
--- /dev/null
+++ b/openlane/ycr_intf/pin_order.cfg
@@ -0,0 +1,845 @@
+#BUS_SORT
+#MANUAL_PLACE
+
+#N
+
+core_icache_req_ack 000 0 2
+core_icache_req
+core_icache_cmd
+core_icache_addr\[31\]
+core_icache_addr\[30\]
+core_icache_addr\[29\]
+core_icache_addr\[28\]
+core_icache_addr\[27\]
+core_icache_addr\[26\]
+core_icache_addr\[25\]
+core_icache_addr\[24\]
+core_icache_addr\[23\]
+core_icache_addr\[22\]
+core_icache_addr\[21\]
+core_icache_addr\[20\]
+core_icache_addr\[19\]
+core_icache_addr\[18\]
+core_icache_addr\[17\]
+core_icache_addr\[16\]
+core_icache_addr\[15\]
+core_icache_addr\[14\]
+core_icache_addr\[13\]
+core_icache_addr\[12\]
+core_icache_addr\[11\]
+core_icache_addr\[10\]
+core_icache_addr\[9\]
+core_icache_addr\[8\]
+core_icache_addr\[7\]
+core_icache_addr\[6\]
+core_icache_addr\[5\]
+core_icache_addr\[4\]
+core_icache_addr\[3\]
+core_icache_addr\[2\]
+core_icache_addr\[1\]
+core_icache_addr\[0\]
+core_icache_bl\[2\]
+core_icache_bl\[1\]
+core_icache_bl\[0\]
+core_icache_width\[1\]
+core_icache_width\[0\]
+core_icache_rdata\[31\]
+core_icache_rdata\[30\]
+core_icache_rdata\[29\]
+core_icache_rdata\[28\]
+core_icache_rdata\[27\]
+core_icache_rdata\[26\]
+core_icache_rdata\[25\]
+core_icache_rdata\[24\]
+core_icache_rdata\[23\]
+core_icache_rdata\[22\]
+core_icache_rdata\[21\]
+core_icache_rdata\[20\]
+core_icache_rdata\[19\]
+core_icache_rdata\[18\]
+core_icache_rdata\[17\]
+core_icache_rdata\[16\]
+core_icache_rdata\[15\]
+core_icache_rdata\[14\]
+core_icache_rdata\[13\]
+core_icache_rdata\[12\]
+core_icache_rdata\[11\]
+core_icache_rdata\[10\]
+core_icache_rdata\[9\]
+core_icache_rdata\[8\]
+core_icache_rdata\[7\]
+core_icache_rdata\[6\]
+core_icache_rdata\[5\]
+core_icache_rdata\[4\]
+core_icache_rdata\[3\]
+core_icache_rdata\[2\]
+core_icache_rdata\[1\]
+core_icache_rdata\[0\]
+core_icache_resp\[1\]
+core_icache_resp\[0\]
+
+
+core_dcache_req_ack 100 0 2
+core_dcache_req
+core_dcache_cmd
+core_dcache_width\[1\]
+core_dcache_width\[0\]
+core_dcache_addr\[31\]
+core_dcache_addr\[30\]
+core_dcache_addr\[29\]
+core_dcache_addr\[28\]
+core_dcache_addr\[27\]
+core_dcache_addr\[26\]
+core_dcache_addr\[25\]
+core_dcache_addr\[24\]
+core_dcache_addr\[23\]
+core_dcache_addr\[22\]
+core_dcache_addr\[21\]
+core_dcache_addr\[20\]
+core_dcache_addr\[19\]
+core_dcache_addr\[18\]
+core_dcache_addr\[17\]
+core_dcache_addr\[16\]
+core_dcache_addr\[15\]
+core_dcache_addr\[14\]
+core_dcache_addr\[13\]
+core_dcache_addr\[12\]
+core_dcache_addr\[11\]
+core_dcache_addr\[10\]
+core_dcache_addr\[9\]
+core_dcache_addr\[8\]
+core_dcache_addr\[7\]
+core_dcache_addr\[6\]
+core_dcache_addr\[5\]
+core_dcache_addr\[4\]
+core_dcache_addr\[3\]
+core_dcache_addr\[2\]
+core_dcache_addr\[1\]
+core_dcache_addr\[0\]
+core_dcache_wdata\[31\]
+core_dcache_wdata\[30\]
+core_dcache_wdata\[29\]
+core_dcache_wdata\[28\]
+core_dcache_wdata\[27\]
+core_dcache_wdata\[26\]
+core_dcache_wdata\[25\]
+core_dcache_wdata\[24\]
+core_dcache_wdata\[23\]
+core_dcache_wdata\[22\]
+core_dcache_wdata\[21\]
+core_dcache_wdata\[20\]
+core_dcache_wdata\[19\]
+core_dcache_wdata\[18\]
+core_dcache_wdata\[17\]
+core_dcache_wdata\[16\]
+core_dcache_wdata\[15\]
+core_dcache_wdata\[14\]
+core_dcache_wdata\[13\]
+core_dcache_wdata\[12\]
+core_dcache_wdata\[11\]
+core_dcache_wdata\[10\]
+core_dcache_wdata\[9\]
+core_dcache_wdata\[8\]
+core_dcache_wdata\[7\]
+core_dcache_wdata\[6\]
+core_dcache_wdata\[5\]
+core_dcache_wdata\[4\]
+core_dcache_wdata\[3\]
+core_dcache_wdata\[2\]
+core_dcache_wdata\[1\]
+core_dcache_wdata\[0\]
+core_dcache_rdata\[31\]
+core_dcache_rdata\[30\]
+core_dcache_rdata\[29\]
+core_dcache_rdata\[28\]
+core_dcache_rdata\[27\]
+core_dcache_rdata\[26\]
+core_dcache_rdata\[25\]
+core_dcache_rdata\[24\]
+core_dcache_rdata\[23\]
+core_dcache_rdata\[22\]
+core_dcache_rdata\[21\]
+core_dcache_rdata\[20\]
+core_dcache_rdata\[19\]
+core_dcache_rdata\[18\]
+core_dcache_rdata\[17\]
+core_dcache_rdata\[16\]
+core_dcache_rdata\[15\]
+core_dcache_rdata\[14\]
+core_dcache_rdata\[13\]
+core_dcache_rdata\[12\]
+core_dcache_rdata\[11\]
+core_dcache_rdata\[10\]
+core_dcache_rdata\[9\]
+core_dcache_rdata\[8\]
+core_dcache_rdata\[7\]
+core_dcache_rdata\[6\]
+core_dcache_rdata\[5\]
+core_dcache_rdata\[4\]
+core_dcache_rdata\[3\]
+core_dcache_rdata\[2\]
+core_dcache_rdata\[1\]
+core_dcache_rdata\[0\]
+core_dcache_resp\[1\]
+core_dcache_resp\[0\]
+
+core_dmem_req_ack 0200 0 2
+core_dmem_req
+core_dmem_cmd
+core_dmem_width\[1\]
+core_dmem_width\[0\]
+core_dmem_addr\[31\]
+core_dmem_addr\[30\]
+core_dmem_addr\[29\]
+core_dmem_addr\[28\]
+core_dmem_addr\[27\]
+core_dmem_addr\[26\]
+core_dmem_addr\[25\]
+core_dmem_addr\[24\]
+core_dmem_addr\[23\]
+core_dmem_addr\[22\]
+core_dmem_addr\[21\]
+core_dmem_addr\[20\]
+core_dmem_addr\[19\]
+core_dmem_addr\[18\]
+core_dmem_addr\[17\]
+core_dmem_addr\[16\]
+core_dmem_addr\[15\]
+core_dmem_addr\[14\]
+core_dmem_addr\[13\]
+core_dmem_addr\[12\]
+core_dmem_addr\[11\]
+core_dmem_addr\[10\]
+core_dmem_addr\[9\]
+core_dmem_addr\[8\]
+core_dmem_addr\[7\]
+core_dmem_addr\[6\]
+core_dmem_addr\[5\]
+core_dmem_addr\[4\]
+core_dmem_addr\[3\]
+core_dmem_addr\[2\]
+core_dmem_addr\[1\]
+core_dmem_addr\[0\]
+core_dmem_wdata\[31\]
+core_dmem_wdata\[30\]
+core_dmem_wdata\[29\]
+core_dmem_wdata\[28\]
+core_dmem_wdata\[27\]
+core_dmem_wdata\[26\]
+core_dmem_wdata\[25\]
+core_dmem_wdata\[24\]
+core_dmem_wdata\[23\]
+core_dmem_wdata\[22\]
+core_dmem_wdata\[21\]
+core_dmem_wdata\[20\]
+core_dmem_wdata\[19\]
+core_dmem_wdata\[18\]
+core_dmem_wdata\[17\]
+core_dmem_wdata\[16\]
+core_dmem_wdata\[15\]
+core_dmem_wdata\[14\]
+core_dmem_wdata\[13\]
+core_dmem_wdata\[12\]
+core_dmem_wdata\[11\]
+core_dmem_wdata\[10\]
+core_dmem_wdata\[9\]
+core_dmem_wdata\[8\]
+core_dmem_wdata\[7\]
+core_dmem_wdata\[6\]
+core_dmem_wdata\[5\]
+core_dmem_wdata\[4\]
+core_dmem_wdata\[3\]
+core_dmem_wdata\[2\]
+core_dmem_wdata\[1\]
+core_dmem_wdata\[0\]
+core_dmem_rdata\[31\]
+core_dmem_rdata\[30\]
+core_dmem_rdata\[29\]
+core_dmem_rdata\[28\]
+core_dmem_rdata\[27\]
+core_dmem_rdata\[26\]
+core_dmem_rdata\[25\]
+core_dmem_rdata\[24\]
+core_dmem_rdata\[23\]
+core_dmem_rdata\[22\]
+core_dmem_rdata\[21\]
+core_dmem_rdata\[20\]
+core_dmem_rdata\[19\]
+core_dmem_rdata\[18\]
+core_dmem_rdata\[17\]
+core_dmem_rdata\[16\]
+core_dmem_rdata\[15\]
+core_dmem_rdata\[14\]
+core_dmem_rdata\[13\]
+core_dmem_rdata\[12\]
+core_dmem_rdata\[11\]
+core_dmem_rdata\[10\]
+core_dmem_rdata\[9\]
+core_dmem_rdata\[8\]
+core_dmem_rdata\[7\]
+core_dmem_rdata\[6\]
+core_dmem_rdata\[5\]
+core_dmem_rdata\[4\]
+core_dmem_rdata\[3\]
+core_dmem_rdata\[2\]
+core_dmem_rdata\[1\]
+core_dmem_rdata\[0\]
+core_dmem_resp\[1\]
+core_dmem_resp\[0\]
+
+cfg_icache_pfet_dis 0300 0 2
+cfg_icache_ntag_pfet_dis
+cfg_dcache_pfet_dis
+cfg_dcache_force_flush
+
+#S
+icache_mem_clk0
+icache_mem_csb0
+icache_mem_web0
+icache_mem_addr0\[0\]
+icache_mem_addr0\[1\]
+icache_mem_addr0\[2\]
+icache_mem_addr0\[3\]
+icache_mem_addr0\[4\]
+icache_mem_addr0\[5\]
+icache_mem_addr0\[6\]
+icache_mem_addr0\[7\]
+icache_mem_addr0\[8\]
+icache_mem_wmask0\[0\]
+icache_mem_wmask0\[1\]
+icache_mem_wmask0\[2\]
+icache_mem_wmask0\[3\]
+icache_mem_din0\[0\]
+icache_mem_din0\[1\]
+icache_mem_din0\[2\]
+icache_mem_din0\[3\]
+icache_mem_din0\[4\]
+icache_mem_din0\[5\]
+icache_mem_din0\[6\]
+icache_mem_din0\[7\]
+icache_mem_din0\[8\]
+icache_mem_din0\[9\]
+icache_mem_din0\[10\]
+icache_mem_din0\[11\]
+icache_mem_din0\[12\]
+icache_mem_din0\[13\]
+icache_mem_din0\[14\]
+icache_mem_din0\[15\]
+icache_mem_din0\[16\]
+icache_mem_din0\[17\]
+icache_mem_din0\[18\]
+icache_mem_din0\[19\]
+icache_mem_din0\[20\]
+icache_mem_din0\[21\]
+icache_mem_din0\[22\]
+icache_mem_din0\[23\]
+icache_mem_din0\[24\]
+icache_mem_din0\[25\]
+icache_mem_din0\[26\]
+icache_mem_din0\[27\]
+icache_mem_din0\[28\]
+icache_mem_din0\[29\]
+icache_mem_din0\[30\]
+icache_mem_din0\[31\]
+
+icache_mem_clk1 100 0 2
+icache_mem_csb1
+icache_mem_addr1\[8\]
+icache_mem_addr1\[7\]
+icache_mem_addr1\[6\]
+icache_mem_addr1\[5\]
+icache_mem_addr1\[4\]
+icache_mem_addr1\[3\]
+icache_mem_addr1\[2\]
+icache_mem_addr1\[1\]
+icache_mem_addr1\[0\]
+
+icache_mem_dout1\[0\] 150 0 2
+icache_mem_dout1\[1\]
+icache_mem_dout1\[2\]
+icache_mem_dout1\[3\]
+icache_mem_dout1\[4\]
+icache_mem_dout1\[5\]
+icache_mem_dout1\[6\]
+icache_mem_dout1\[7\]
+icache_mem_dout1\[8\]
+icache_mem_dout1\[9\]
+icache_mem_dout1\[10\]
+icache_mem_dout1\[11\]
+icache_mem_dout1\[12\]
+icache_mem_dout1\[13\]
+icache_mem_dout1\[14\]
+icache_mem_dout1\[15\]
+icache_mem_dout1\[16\]
+icache_mem_dout1\[17\]
+icache_mem_dout1\[18\]
+icache_mem_dout1\[19\]
+icache_mem_dout1\[20\]
+icache_mem_dout1\[21\]
+icache_mem_dout1\[22\]
+icache_mem_dout1\[23\]
+icache_mem_dout1\[24\]
+icache_mem_dout1\[25\]
+icache_mem_dout1\[26\]
+icache_mem_dout1\[27\]
+icache_mem_dout1\[28\]
+icache_mem_dout1\[29\]
+icache_mem_dout1\[30\]
+icache_mem_dout1\[31\]
+
+wb_rst_n 500 0
+pwrup_rst_n
+core_clk
+cpu_intf_rst_n
+
+#W
+dcache_mem_clk0 000 0 2
+dcache_mem_csb0
+dcache_mem_web0
+dcache_mem_addr0\[0\]
+dcache_mem_addr0\[1\]
+dcache_mem_addr0\[2\]
+dcache_mem_addr0\[3\]
+dcache_mem_addr0\[4\]
+dcache_mem_addr0\[5\]
+dcache_mem_addr0\[6\]
+dcache_mem_addr0\[7\]
+dcache_mem_addr0\[8\]
+dcache_mem_wmask0\[0\]
+dcache_mem_wmask0\[1\]
+dcache_mem_wmask0\[2\]
+dcache_mem_wmask0\[3\]
+dcache_mem_din0\[0\]
+dcache_mem_din0\[1\]
+dcache_mem_din0\[2\]
+dcache_mem_din0\[3\]
+dcache_mem_din0\[4\]
+dcache_mem_din0\[5\]
+dcache_mem_din0\[6\]
+dcache_mem_din0\[7\]
+dcache_mem_din0\[8\]
+dcache_mem_din0\[9\]
+dcache_mem_din0\[10\]
+dcache_mem_din0\[11\]
+dcache_mem_din0\[12\]
+dcache_mem_din0\[13\]
+dcache_mem_din0\[14\]
+dcache_mem_din0\[15\]
+dcache_mem_din0\[16\]
+dcache_mem_din0\[17\]
+dcache_mem_din0\[18\]
+dcache_mem_din0\[19\]
+dcache_mem_din0\[20\]
+dcache_mem_din0\[21\]
+dcache_mem_din0\[22\]
+dcache_mem_din0\[23\]
+dcache_mem_din0\[24\]
+dcache_mem_din0\[25\]
+dcache_mem_din0\[26\]
+dcache_mem_din0\[27\]
+dcache_mem_din0\[28\]
+dcache_mem_din0\[29\]
+dcache_mem_din0\[30\]
+dcache_mem_din0\[31\]
+
+
+dcache_mem_dout0\[0\] 100 0 2
+dcache_mem_dout0\[1\]
+dcache_mem_dout0\[2\]
+dcache_mem_dout0\[3\]
+dcache_mem_dout0\[4\]
+dcache_mem_dout0\[5\]
+dcache_mem_dout0\[6\]
+dcache_mem_dout0\[7\]
+dcache_mem_dout0\[8\]
+dcache_mem_dout0\[9\]
+dcache_mem_dout0\[10\]
+dcache_mem_dout0\[11\]
+dcache_mem_dout0\[12\]
+dcache_mem_dout0\[13\]
+dcache_mem_dout0\[14\]
+dcache_mem_dout0\[15\]
+dcache_mem_dout0\[16\]
+dcache_mem_dout0\[17\]
+dcache_mem_dout0\[18\]
+dcache_mem_dout0\[19\]
+dcache_mem_dout0\[20\]
+dcache_mem_dout0\[21\]
+dcache_mem_dout0\[22\]
+dcache_mem_dout0\[23\]
+dcache_mem_dout0\[24\]
+dcache_mem_dout0\[25\]
+dcache_mem_dout0\[26\]
+dcache_mem_dout0\[27\]
+dcache_mem_dout0\[28\]
+dcache_mem_dout0\[29\]
+dcache_mem_dout0\[30\]
+dcache_mem_dout0\[31\]
+
+dcache_mem_clk1 200 0 2
+dcache_mem_csb1
+dcache_mem_addr1\[8\]
+dcache_mem_addr1\[7\]
+dcache_mem_addr1\[6\]
+dcache_mem_addr1\[5\]
+dcache_mem_addr1\[4\]
+dcache_mem_addr1\[3\]
+dcache_mem_addr1\[2\]
+dcache_mem_addr1\[1\]
+dcache_mem_addr1\[0\]
+
+dcache_mem_dout1\[0\] 250 0 2
+dcache_mem_dout1\[1\]
+dcache_mem_dout1\[2\]
+dcache_mem_dout1\[3\]
+dcache_mem_dout1\[4\]
+dcache_mem_dout1\[5\]
+dcache_mem_dout1\[6\]
+dcache_mem_dout1\[7\]
+dcache_mem_dout1\[8\]
+dcache_mem_dout1\[9\]
+dcache_mem_dout1\[10\]
+dcache_mem_dout1\[11\]
+dcache_mem_dout1\[12\]
+dcache_mem_dout1\[13\]
+dcache_mem_dout1\[14\]
+dcache_mem_dout1\[15\]
+dcache_mem_dout1\[16\]
+dcache_mem_dout1\[17\]
+dcache_mem_dout1\[18\]
+dcache_mem_dout1\[19\]
+dcache_mem_dout1\[20\]
+dcache_mem_dout1\[21\]
+dcache_mem_dout1\[22\]
+dcache_mem_dout1\[23\]
+dcache_mem_dout1\[24\]
+dcache_mem_dout1\[25\]
+dcache_mem_dout1\[26\]
+dcache_mem_dout1\[27\]
+dcache_mem_dout1\[28\]
+dcache_mem_dout1\[29\]
+dcache_mem_dout1\[30\]
+dcache_mem_dout1\[31\]
+
+
+
+
+
+#E
+cfg_cska_riscv\[3\] 0000 0 2
+cfg_cska_riscv\[2\]
+cfg_cska_riscv\[1\]
+cfg_cska_riscv\[0\]
+wbd_clk_int
+wbd_clk_riscv
+wb_clk
+
+wbd_dmem_stb_o 0050 0 2
+wbd_dmem_we_o
+wbd_dmem_adr_o\[31\]
+wbd_dmem_adr_o\[30\]
+wbd_dmem_adr_o\[29\]
+wbd_dmem_adr_o\[28\]
+wbd_dmem_adr_o\[27\]
+wbd_dmem_adr_o\[26\]
+wbd_dmem_adr_o\[25\]
+wbd_dmem_adr_o\[24\]
+wbd_dmem_adr_o\[23\]
+wbd_dmem_adr_o\[22\]
+wbd_dmem_adr_o\[21\]
+wbd_dmem_adr_o\[20\]
+wbd_dmem_adr_o\[19\]
+wbd_dmem_adr_o\[18\]
+wbd_dmem_adr_o\[17\]
+wbd_dmem_adr_o\[16\]
+wbd_dmem_adr_o\[15\]
+wbd_dmem_adr_o\[14\]
+wbd_dmem_adr_o\[13\]
+wbd_dmem_adr_o\[12\]
+wbd_dmem_adr_o\[11\]
+wbd_dmem_adr_o\[10\]
+wbd_dmem_adr_o\[9\]
+wbd_dmem_adr_o\[8\]
+wbd_dmem_adr_o\[7\]
+wbd_dmem_adr_o\[6\]
+wbd_dmem_adr_o\[5\]
+wbd_dmem_adr_o\[4\]
+wbd_dmem_adr_o\[3\]
+wbd_dmem_adr_o\[2\]
+wbd_dmem_adr_o\[1\]
+wbd_dmem_adr_o\[0\]
+wbd_dmem_sel_o\[3\]
+wbd_dmem_sel_o\[2\]
+wbd_dmem_sel_o\[1\]
+wbd_dmem_sel_o\[0\]
+wbd_dmem_dat_o\[31\]
+wbd_dmem_dat_o\[30\]
+wbd_dmem_dat_o\[29\]
+wbd_dmem_dat_o\[28\]
+wbd_dmem_dat_o\[27\]
+wbd_dmem_dat_o\[26\]
+wbd_dmem_dat_o\[25\]
+wbd_dmem_dat_o\[24\]
+wbd_dmem_dat_o\[23\]
+wbd_dmem_dat_o\[22\]
+wbd_dmem_dat_o\[21\]
+wbd_dmem_dat_o\[20\]
+wbd_dmem_dat_o\[19\]
+wbd_dmem_dat_o\[18\]
+wbd_dmem_dat_o\[17\]
+wbd_dmem_dat_o\[16\]
+wbd_dmem_dat_o\[15\]
+wbd_dmem_dat_o\[14\]
+wbd_dmem_dat_o\[13\]
+wbd_dmem_dat_o\[12\]
+wbd_dmem_dat_o\[11\]
+wbd_dmem_dat_o\[10\]
+wbd_dmem_dat_o\[9\]
+wbd_dmem_dat_o\[8\]
+wbd_dmem_dat_o\[7\]
+wbd_dmem_dat_o\[6\]
+wbd_dmem_dat_o\[5\]
+wbd_dmem_dat_o\[4\]
+wbd_dmem_dat_o\[3\]
+wbd_dmem_dat_o\[2\]
+wbd_dmem_dat_o\[1\]
+wbd_dmem_dat_o\[0\]
+wbd_dmem_dat_i\[31\]
+wbd_dmem_dat_i\[30\]
+wbd_dmem_dat_i\[29\]
+wbd_dmem_dat_i\[28\]
+wbd_dmem_dat_i\[27\]
+wbd_dmem_dat_i\[26\]
+wbd_dmem_dat_i\[25\]
+wbd_dmem_dat_i\[24\]
+wbd_dmem_dat_i\[23\]
+wbd_dmem_dat_i\[22\]
+wbd_dmem_dat_i\[21\]
+wbd_dmem_dat_i\[20\]
+wbd_dmem_dat_i\[19\]
+wbd_dmem_dat_i\[18\]
+wbd_dmem_dat_i\[17\]
+wbd_dmem_dat_i\[16\]
+wbd_dmem_dat_i\[15\]
+wbd_dmem_dat_i\[14\]
+wbd_dmem_dat_i\[13\]
+wbd_dmem_dat_i\[12\]
+wbd_dmem_dat_i\[11\]
+wbd_dmem_dat_i\[10\]
+wbd_dmem_dat_i\[9\]
+wbd_dmem_dat_i\[8\]
+wbd_dmem_dat_i\[7\]
+wbd_dmem_dat_i\[6\]
+wbd_dmem_dat_i\[5\]
+wbd_dmem_dat_i\[4\]
+wbd_dmem_dat_i\[3\]
+wbd_dmem_dat_i\[2\]
+wbd_dmem_dat_i\[1\]
+wbd_dmem_dat_i\[0\]
+wbd_dmem_ack_i
+wbd_dmem_err_i
+
+wb_dcache_stb_o 0200 0 2
+wb_dcache_we_o
+wb_dcache_adr_o\[31\]
+wb_dcache_adr_o\[30\]
+wb_dcache_adr_o\[29\]
+wb_dcache_adr_o\[28\]
+wb_dcache_adr_o\[27\]
+wb_dcache_adr_o\[26\]
+wb_dcache_adr_o\[25\]
+wb_dcache_adr_o\[24\]
+wb_dcache_adr_o\[23\]
+wb_dcache_adr_o\[22\]
+wb_dcache_adr_o\[21\]
+wb_dcache_adr_o\[20\]
+wb_dcache_adr_o\[19\]
+wb_dcache_adr_o\[18\]
+wb_dcache_adr_o\[17\]
+wb_dcache_adr_o\[16\]
+wb_dcache_adr_o\[15\]
+wb_dcache_adr_o\[14\]
+wb_dcache_adr_o\[13\]
+wb_dcache_adr_o\[12\]
+wb_dcache_adr_o\[11\]
+wb_dcache_adr_o\[10\]
+wb_dcache_adr_o\[9\]
+wb_dcache_adr_o\[8\]
+wb_dcache_adr_o\[7\]
+wb_dcache_adr_o\[6\]
+wb_dcache_adr_o\[5\]
+wb_dcache_adr_o\[4\]
+wb_dcache_adr_o\[3\]
+wb_dcache_adr_o\[2\]
+wb_dcache_adr_o\[1\]
+wb_dcache_adr_o\[0\]
+wb_dcache_sel_o\[3\]
+wb_dcache_sel_o\[2\]
+wb_dcache_sel_o\[1\]
+wb_dcache_sel_o\[0\]
+wb_dcache_bl_o\[9\]
+wb_dcache_bl_o\[8\]
+wb_dcache_bl_o\[7\]
+wb_dcache_bl_o\[6\]
+wb_dcache_bl_o\[5\]
+wb_dcache_bl_o\[4\]
+wb_dcache_bl_o\[3\]
+wb_dcache_bl_o\[2\]
+wb_dcache_bl_o\[1\]
+wb_dcache_bl_o\[0\]
+wb_dcache_bry_o
+wb_dcache_dat_o\[31\]
+wb_dcache_dat_o\[30\]
+wb_dcache_dat_o\[29\]
+wb_dcache_dat_o\[28\]
+wb_dcache_dat_o\[27\]
+wb_dcache_dat_o\[26\]
+wb_dcache_dat_o\[25\]
+wb_dcache_dat_o\[24\]
+wb_dcache_dat_o\[23\]
+wb_dcache_dat_o\[22\]
+wb_dcache_dat_o\[21\]
+wb_dcache_dat_o\[20\]
+wb_dcache_dat_o\[19\]
+wb_dcache_dat_o\[18\]
+wb_dcache_dat_o\[17\]
+wb_dcache_dat_o\[16\]
+wb_dcache_dat_o\[15\]
+wb_dcache_dat_o\[14\]
+wb_dcache_dat_o\[13\]
+wb_dcache_dat_o\[12\]
+wb_dcache_dat_o\[11\]
+wb_dcache_dat_o\[10\]
+wb_dcache_dat_o\[9\]
+wb_dcache_dat_o\[8\]
+wb_dcache_dat_o\[7\]
+wb_dcache_dat_o\[6\]
+wb_dcache_dat_o\[5\]
+wb_dcache_dat_o\[4\]
+wb_dcache_dat_o\[3\]
+wb_dcache_dat_o\[2\]
+wb_dcache_dat_o\[1\]
+wb_dcache_dat_o\[0\]
+wb_dcache_dat_i\[31\]
+wb_dcache_dat_i\[30\]
+wb_dcache_dat_i\[29\]
+wb_dcache_dat_i\[28\]
+wb_dcache_dat_i\[27\]
+wb_dcache_dat_i\[26\]
+wb_dcache_dat_i\[25\]
+wb_dcache_dat_i\[24\]
+wb_dcache_dat_i\[23\]
+wb_dcache_dat_i\[22\]
+wb_dcache_dat_i\[21\]
+wb_dcache_dat_i\[20\]
+wb_dcache_dat_i\[19\]
+wb_dcache_dat_i\[18\]
+wb_dcache_dat_i\[17\]
+wb_dcache_dat_i\[16\]
+wb_dcache_dat_i\[15\]
+wb_dcache_dat_i\[14\]
+wb_dcache_dat_i\[13\]
+wb_dcache_dat_i\[12\]
+wb_dcache_dat_i\[11\]
+wb_dcache_dat_i\[10\]
+wb_dcache_dat_i\[9\]
+wb_dcache_dat_i\[8\]
+wb_dcache_dat_i\[7\]
+wb_dcache_dat_i\[6\]
+wb_dcache_dat_i\[5\]
+wb_dcache_dat_i\[4\]
+wb_dcache_dat_i\[3\]
+wb_dcache_dat_i\[2\]
+wb_dcache_dat_i\[1\]
+wb_dcache_dat_i\[0\]
+wb_dcache_ack_i
+wb_dcache_lack_i
+wb_dcache_err_i
+wb_dcache_cyc_o
+
+wb_icache_stb_o 400 0 2
+wb_icache_we_o
+wb_icache_adr_o\[31\]
+wb_icache_adr_o\[30\]
+wb_icache_adr_o\[29\]
+wb_icache_adr_o\[28\]
+wb_icache_adr_o\[27\]
+wb_icache_adr_o\[26\]
+wb_icache_adr_o\[25\]
+wb_icache_adr_o\[24\]
+wb_icache_adr_o\[23\]
+wb_icache_adr_o\[22\]
+wb_icache_adr_o\[21\]
+wb_icache_adr_o\[20\]
+wb_icache_adr_o\[19\]
+wb_icache_adr_o\[18\]
+wb_icache_adr_o\[17\]
+wb_icache_adr_o\[16\]
+wb_icache_adr_o\[15\]
+wb_icache_adr_o\[14\]
+wb_icache_adr_o\[13\]
+wb_icache_adr_o\[12\]
+wb_icache_adr_o\[11\]
+wb_icache_adr_o\[10\]
+wb_icache_adr_o\[9\]
+wb_icache_adr_o\[8\]
+wb_icache_adr_o\[7\]
+wb_icache_adr_o\[6\]
+wb_icache_adr_o\[5\]
+wb_icache_adr_o\[4\]
+wb_icache_adr_o\[3\]
+wb_icache_adr_o\[2\]
+wb_icache_adr_o\[1\]
+wb_icache_adr_o\[0\]
+wb_icache_sel_o\[3\]
+wb_icache_sel_o\[2\]
+wb_icache_sel_o\[1\]
+wb_icache_sel_o\[0\]
+wb_icache_bl_o\[9\]
+wb_icache_bl_o\[8\]
+wb_icache_bl_o\[7\]
+wb_icache_bl_o\[6\]
+wb_icache_bl_o\[5\]
+wb_icache_bl_o\[4\]
+wb_icache_bl_o\[3\]
+wb_icache_bl_o\[2\]
+wb_icache_bl_o\[1\]
+wb_icache_bl_o\[0\]
+wb_icache_bry_o
+wb_icache_dat_i\[31\]
+wb_icache_dat_i\[30\]
+wb_icache_dat_i\[29\]
+wb_icache_dat_i\[28\]
+wb_icache_dat_i\[27\]
+wb_icache_dat_i\[26\]
+wb_icache_dat_i\[25\]
+wb_icache_dat_i\[24\]
+wb_icache_dat_i\[23\]
+wb_icache_dat_i\[22\]
+wb_icache_dat_i\[21\]
+wb_icache_dat_i\[20\]
+wb_icache_dat_i\[19\]
+wb_icache_dat_i\[18\]
+wb_icache_dat_i\[17\]
+wb_icache_dat_i\[16\]
+wb_icache_dat_i\[15\]
+wb_icache_dat_i\[14\]
+wb_icache_dat_i\[13\]
+wb_icache_dat_i\[12\]
+wb_icache_dat_i\[11\]
+wb_icache_dat_i\[10\]
+wb_icache_dat_i\[9\]
+wb_icache_dat_i\[8\]
+wb_icache_dat_i\[7\]
+wb_icache_dat_i\[6\]
+wb_icache_dat_i\[5\]
+wb_icache_dat_i\[4\]
+wb_icache_dat_i\[3\]
+wb_icache_dat_i\[2\]
+wb_icache_dat_i\[1\]
+wb_icache_dat_i\[0\]
+wb_icache_ack_i
+wb_icache_lack_i
+wb_icache_err_i
+wb_icache_cyc_o
+
diff --git a/verilog/dv/agents/uart_agent.v b/verilog/dv/agents/uart_agent.v
index 72121e9..9d647c8 100644
--- a/verilog/dv/agents/uart_agent.v
+++ b/verilog/dv/agents/uart_agent.v
@@ -14,6 +14,10 @@
// limitations under the License.
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
+//
+
+`timescale 1ns/1ps
+
module uart_agent (
mclk,
txd,
diff --git a/verilog/dv/model/is62wvs1288.v b/verilog/dv/model/is62wvs1288.v
index c938977..37bf718 100644
--- a/verilog/dv/model/is62wvs1288.v
+++ b/verilog/dv/model/is62wvs1288.v
@@ -43,7 +43,8 @@
//
module is62wvs1288 #(
- parameter mem_file_name = "firmware.hex"
+ //parameter mem_file_name = "firmware.hex"
+ parameter mem_file_name = "none"
)(
input csb,
input clk,
diff --git a/verilog/dv/risc_boot/Makefile b/verilog/dv/risc_boot/Makefile
index 8df6ef7..4422d7d 100644
--- a/verilog/dv/risc_boot/Makefile
+++ b/verilog/dv/risc_boot/Makefile
@@ -21,6 +21,7 @@
# ---- Include Partitioned Makefiles ----
+DESIGNS?=../../..
CONFIG = caravel_user_project
########################################################
@@ -51,7 +52,7 @@
export TOOLS ?= /opt/riscv64i
export GCC_PATH ?= $(TOOLS)/bin
-export GCC_PREFIX?= riscv32-unknown-linux-gnu
+export GCC_PREFIX?= riscv64-unknown-linux-gnu
############## USER SPECIFIC DEFINE ##################
@@ -126,7 +127,7 @@
# Comiple firmeware
##############################################################################
%.elf: %.c $(LINKER_SCRIPT) $(SOURCE_FILES)
- ${GCC_PATH}/${GCC_PREFIX}-gcc -g \
+ ${GCC_PREFIX}-gcc -g \
-I$(FIRMWARE_PATH) \
-I$(VERILOG_PATH)/dv/generated \
-I$(VERILOG_PATH)/dv/ \
@@ -136,15 +137,15 @@
-ffreestanding -nostdlib -o $@ $(SOURCE_FILES) $<
%.lst: %.elf
- ${GCC_PATH}/${GCC_PREFIX}-objdump -d -S $< > $@
+ ${GCC_PREFIX}-objdump -d -S $< > $@
%.hex: %.elf
- ${GCC_PATH}/${GCC_PREFIX}-objcopy -O verilog $< $@
+ ${GCC_PREFIX}-objcopy -O verilog $< $@
# to fix flash base address
sed -ie 's/@10/@00/g' $@
%.bin: %.elf
- ${GCC_PATH}/${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
+ ${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
##############################################################################
@@ -152,11 +153,11 @@
##############################################################################
%.vvp: %_tb.v %.hex
- ${GCC_PATH}/${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -c -I./ -I$(YIFIVE_FIRMWARE_PATH) user_uart.c -o user_uart.o
- ${GCC_PATH}/${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -D__ASSEMBLY__=1 -c -I./ -I$(YIFIVE_FIRMWARE_PATH) $(YIFIVE_FIRMWARE_PATH)/crt.S -o crt.o
- ${GCC_PATH}/${GCC_PREFIX}-gcc -march=rv32imc -mabi=ilp32 -T $(YIFIVE_FIRMWARE_PATH)/link.ld user_uart.o crt.o -nostartfiles -nostdlib -lc -lgcc -o user_uart.elf -N
- ${GCC_PATH}/${GCC_PREFIX}-objcopy -O verilog user_uart.elf user_uart.hex
- ${GCC_PATH}/${GCC_PREFIX}-objdump -D user_uart.elf > user_uart.dump
+ ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -c -I./ -I$(YIFIVE_FIRMWARE_PATH) user_uart.c -o user_uart.o
+ ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -D__ASSEMBLY__=1 -c -I./ -I$(YIFIVE_FIRMWARE_PATH) $(YIFIVE_FIRMWARE_PATH)/crt.S -o crt.o
+ ${GCC_PREFIX}-gcc -march=rv32imc -mabi=ilp32 -T $(YIFIVE_FIRMWARE_PATH)/link.ld user_uart.o crt.o -nostartfiles -nostdlib -lc -lgcc -o user_uart.elf -N
+ ${GCC_PREFIX}-objcopy -O verilog user_uart.elf user_uart.hex
+ ${GCC_PREFIX}-objdump -D user_uart.elf > user_uart.dump
rm crt.o user_uart.o
## RTL
@@ -215,8 +216,8 @@
ifeq (,$(wildcard $(PDK_ROOT)/sky130A))
$(error $(PDK_ROOT)/sky130A not found, please install pdk before running make)
endif
-ifeq (,$(wildcard $(GCC_PATH)/$(GCC_PREFIX)-gcc ))
- $(error $(GCC_PATH)/$(GCC_PREFIX)-gcc is not found, please export GCC_PATH and GCC_PREFIX before running make)
+ifeq (,$(wildcard $(GCC_PREFIX)-gcc ))
+ $(error $(GCC_PREFIX)-gcc is not found, please export GCC_PATH and GCC_PREFIX before running make)
endif
# check for efabless style installation
ifeq (,$(wildcard $(PDK_ROOT)/sky130A/libs.ref/*/verilog))
diff --git a/verilog/dv/risc_boot/risc_boot.c b/verilog/dv/risc_boot/risc_boot.c
index bc41e1b..7de5444 100644
--- a/verilog/dv/risc_boot/risc_boot.c
+++ b/verilog/dv/risc_boot/risc_boot.c
@@ -98,7 +98,7 @@
reg_mprj_xfer = 1;
while (reg_mprj_xfer == 1);
- reg_la2_oenb = reg_la2_iena = 0xFFFFFFFF; // [95:64]
+ reg_la0_oenb = reg_la0_iena = 0xFFFFFFFF; // [31:0]
// Flag start of the test
reg_mprj_datal = 0xAB600000;
diff --git a/verilog/dv/riscv_regress/Makefile b/verilog/dv/riscv_regress/Makefile
index 2c853fa..f2e318f 100644
--- a/verilog/dv/riscv_regress/Makefile
+++ b/verilog/dv/riscv_regress/Makefile
@@ -1,10 +1,32 @@
-#------------------------------------------------------------------------------
-# Makefile for SCR1
-#------------------------------------------------------------------------------
-SIM ?= RTL
-DUMP ?= OFF
-RISC_CORE ?=0
+# ---- Include Partitioned Makefiles ----
+
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+
+export root_dir := $(shell pwd)
+export bld_dir := $(root_dir)/build/$(current_goal)_$(BUS)_$(CFG)_$(ARCH)_IPIC_$(IPIC)_TCM_$(TCM)_VIRQ_$(VECT_IRQ)_TRACE_$(TRACE)
+DESIGNS?=${root_dir}/../../..
+
+UPRJ_TESTS_PATH = $(root_dir)
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
+## YIFIVE FIRMWARE
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
+GCC64_PREFIX?=riscv64-unknown-elf
+
+
+## Simulation mode: RTL/GL
+SIM?=RTL
+DUMP?=OFF
+RISC_CORE?=0
+
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
# PARAMETERS
@@ -118,38 +140,16 @@
endif
-export root_dir := $(shell pwd)
-export bld_dir := $(root_dir)/build/$(current_goal)_$(BUS)_$(CFG)_$(ARCH)_IPIC_$(IPIC)_TCM_$(TCM)_VIRQ_$(VECT_IRQ)_TRACE_$(TRACE)
-
-## Caravel Pointers related to build directory
-CARAVEL_ROOT ?= $(root_dir)/../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
-
## User Project Pointers
-UPRJ_VERILOG_PATH ?= $(root_dir)/../../../verilog
-UPRJ_TESTS_PATH = $(root_dir)
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = $(root_dir)/../model
-UPRJ_BEHAVIOURAL_AGENTS = $(root_dir)/../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
-sv_list = ../../user_risc_regress_tb.v
+sv_list = $(root_dir)/user_risc_regress_tb.v
top_module = user_risc_regress_tb
# TB Paths
-export sim_dir := $(UPRJ_TESTS_PATH)
+export sim_dir := $(root_dir)
export tst_dir := $(sim_dir)/tests
-export inc_dir := $(UPRJ_VERILOG_PATH)/dv/firmware
+export inc_dir := $(sim_dir)/../firmware
test_results := $(bld_dir)/test_results.txt
test_info := $(bld_dir)/test_info
@@ -274,11 +274,8 @@
run_iverilog: $(test_info)
cd $(bld_dir); \
iverilog -g2005-sv -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_INCLUDE_PATH5) -I $(UPRJ_TESTS_PATH) \
+ -I $(UPRJ_TESTS_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$(sv_list) \
-o $(top_module).vvp; \
printf "" > $(test_results); \
@@ -295,11 +292,8 @@
run_iverilog_wf: $(test_info)
cd $(bld_dir); \
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_INCLUDE_PATH5) -I $(UPRJ_TESTS_PATH) \
+ -I $(UPRJ_TESTS_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$(sv_list) \
-o $(top_module).vvp; \
printf "" > $(test_results); \
diff --git a/verilog/dv/riscv_regress/riscv_runtests.sv b/verilog/dv/riscv_regress/riscv_runtests.sv
index 9a798ff..a487c7a 100644
--- a/verilog/dv/riscv_regress/riscv_runtests.sv
+++ b/verilog/dv/riscv_regress/riscv_runtests.sv
@@ -107,9 +107,9 @@
// Flush the content of dcache for signature validation at app
// memory
- force u_top.u_riscv_top.u_mintf.u_intf.u_dcache.cfg_force_flush = 1'b1;
- wait(u_top.u_riscv_top.u_mintf.u_intf.u_dcache.force_flush_done == 1'b1);
- release u_top.u_riscv_top.u_mintf.u_intf.u_dcache.cfg_force_flush;
+ force u_top.u_riscv_top.u_intf.u_dcache.cfg_force_flush = 1'b1;
+ wait(u_top.u_riscv_top.u_intf.u_dcache.force_flush_done == 1'b1);
+ release u_top.u_riscv_top.u_intf.u_dcache.cfg_force_flush;
repeat (2000) @(posedge clock); // wait data to flush in pipe
$display("STATUS: Checking Complaince Test Status .... ");
test_running <= 1'b0;
diff --git a/verilog/dv/riscv_regress/user_risc_regress_tb.v b/verilog/dv/riscv_regress/user_risc_regress_tb.v
index d915a3d..2fc3ce8 100644
--- a/verilog/dv/riscv_regress/user_risc_regress_tb.v
+++ b/verilog/dv/riscv_regress/user_risc_regress_tb.v
@@ -73,10 +73,8 @@
`timescale 1 ns / 1 ns
-`include "uprj_netlists.v"
-`include "mt48lc8m8a2.v"
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
`include "is62wvs1288.v"
-`include "user_reg_map.v"
diff --git a/verilog/dv/uart_master/Makefile b/verilog/dv/uart_master/Makefile
index 9be6ff7..0746413 100644
--- a/verilog/dv/uart_master/Makefile
+++ b/verilog/dv/uart_master/Makefile
@@ -14,88 +14,191 @@
#
# SPDX-License-Identifier: Apache-2.0
-## PDK
-PDK_PATH = $(PDK_ROOT)/sky130A
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+
+PWDD := $(shell pwd)
+BLOCKS := $(shell basename $(PWDD))
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-GCC64_PREFIX?=riscv64-unknown-elf
+# ---- Include Partitioned Makefiles ----
-## Simulation mode: RTL/GL
-SIM_DEFINES = -DFUNCTIONAL -DSIM
+DESIGNS?=../../..
+CONFIG = caravel_user_project
+
+########################################################
+#include $(MCW_ROOT)/verilog/dv/make/env.makefile
+########################################################
+#######################################################################
+## Global Environment Variables for local repo
+#######################################################################
+
+export PDK_PATH = $(PDK_ROOT)/sky130A
+export VIP_PATH = $(CORE_VERILOG_PATH)/dv/vip
+export FIRMWARE_PATH = $(CORE_VERILOG_PATH)/dv/firmware
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+
+export CARAVEL_VERILOG_PATH ?= $(CARAVEL_ROOT)/verilog
+export CORE_VERILOG_PATH ?= $(CARAVEL_ROOT)/mgmt_core_wrapper/verilog
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
+
+export CARAVEL_PATH = $(CARAVEL_VERILOG_PATH)
+export VERILOG_PATH = $(CORE_VERILOG_PATH)
+
+#######################################################################
+## Compiler Information
+#######################################################################
+
+export GCC_PATH?= $(TOOLS)/bin
+export GCC_PREFIX?= riscv64-unknown-linux-gnu
+
+
+############## USER SPECIFIC DEFINE ##################
+
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
+
+######################################################
+
+
+
+
+
+########################################################
+#include $(MCW_ROOT)/verilog/dv/make/var.makefile
+########################################################
+
+CPU=vexriscv
+CPUFAMILY=riscv
+CPUFLAGS=-march=rv32i -mabi=ilp32 -D__vexriscv__
+CPUENDIANNESS=little
+CLANG=0
+
+
+######################################################
+# include $(MCW_ROOT)/verilog/dv/make/cpu.makefile
+######################################################
+
+ifeq ($(CPU),picorv32)
+ LINKER_SCRIPT=$(FIRMWARE_PATH)/sections.lds
+ SOURCE_FILES=$(FIRMWARE_PATH)/start.s
+ VERILOG_FILES=
+endif
+
+ifeq ($(CPU),ibex)
+ LINKER_SCRIPT=$(FIRMWARE_PATH)/link_ibex.ld
+ SOURCE_FILES=$(FIRMWARE_PATH)/crt0_ibex.S $(FIRMWARE_PATH)/simple_system_common.c
+# VERILOG_FILES=../ibex/*
+ VERILOG_FILES=
+endif
+
+ifeq ($(CPU),vexriscv)
+# LINKER_SCRIPT=$(FIRMWARE_PATH)/sections_vexriscv.lds
+# SOURCE_FILES=$(FIRMWARE_PATH)/start_caravel_vexriscv.s
+ LINKER_SCRIPT=$(FIRMWARE_PATH)/sections.lds
+ SOURCE_FILES=$(FIRMWARE_PATH)/crt0_vex.S $(FIRMWARE_PATH)/isr.c
+ VERILOG_FILES=
+endif
+
+
+
+#####################################################
+#include $(MCW_ROOT)/verilog/dv/make/sim.makefile
+######################################################
+
+export IVERILOG_DUMPER = fst
+
+# RTL/GL/GL_SDF
SIM?=RTL
DUMP?=OFF
+
.SUFFIXES:
-PATTERN = uart_master
-all: ${PATTERN:=.vcd}
+all: ${BLOCKS:=.vcd} ${BLOCKS:=.lst}
-hex: ${PATTERN:=.hex}
+hex: ${BLOCKS:=.hex}
-vvp: ${PATTERN:=.vvp}
+#.SUFFIXES:
+
+##############################################################################
+# Comiple firmeware
+##############################################################################
+%.elf: %.c $(LINKER_SCRIPT) $(SOURCE_FILES)
+ ${GCC_PREFIX}-gcc -g \
+ -I$(FIRMWARE_PATH) \
+ -I$(VERILOG_PATH)/dv/generated \
+ -I$(VERILOG_PATH)/dv/ \
+ -I$(VERILOG_PATH)/common \
+ $(CPUFLAGS) \
+ -Wl,-Bstatic,-T,$(LINKER_SCRIPT),--strip-debug \
+ -ffreestanding -nostdlib -o $@ $(SOURCE_FILES) $<
+
+%.lst: %.elf
+ ${GCC_PREFIX}-objdump -d -S $< > $@
+
+%.hex: %.elf
+ ${GCC_PREFIX}-objcopy -O verilog $< $@
+ # to fix flash base address
+ sed -ie 's/@10/@00/g' $@
+
+%.bin: %.elf
+ ${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
+
+
+##############################################################################
+# Runing the simulations
+##############################################################################
%.vvp: %_tb.v %.hex
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv $(SIM_DEFINES) -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_INCLUDE_PATH5) \
- $< -o $@
+ iverilog -g2005-sv -Ttyp -DFUNCTIONAL -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#1 \
+ -f$(VERILOG_PATH)/includes/includes.rtl.caravel \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) -o $@ $<
else
- iverilog -g2005-sv -DWFDUMP $(SIM_DEFINES) -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_RTL_PATH) -I $(UPRJ_VERILOG_PATH) \
- -I $(UPRJ_INCLUDE_PATH1) -I $(UPRJ_INCLUDE_PATH2) -I $(UPRJ_INCLUDE_PATH3) \
- -I $(UPRJ_INCLUDE_PATH4) -I $(UPRJ_INCLUDE_PATH5) \
- $< -o $@
+ iverilog -g2005-sv -DWFDUMP -Ttyp -DFUNCTIONAL -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#1 \
+ -f$(VERILOG_PATH)/includes/includes.rtl.caravel \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) -o $@ $<
endif
-else
- iverilog $(SIM_DEFINES) -DGL -I $(PDK_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I$(UPRJ_GL_PATH) -I$(UPRJ_RTL_PATH) -I $(UPRJ_VERILOG_PATH) \
- $< -o $@
+endif
+
+## GL
+ifeq ($(SIM),GL)
+ ifeq ($(CONFIG),caravel_user_project)
+ iverilog -Ttyp -DFUNCTIONAL -DGL -DUSE_POWER_PINS -DUNIT_DELAY=#1 \
+ -f$(VERILOG_PATH)/includes/includes.gl.caravel \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) -o $@ $<
+ else
+ iverilog -Ttyp -DFUNCTIONAL -DGL -DUSE_POWER_PINS -DUNIT_DELAY=#1 \
+ -f$(VERILOG_PATH)/includes/includes.gl.$(CONFIG) \
+ -f$(CARAVEL_PATH)/gl/__user_project_wrapper.v -o $@ $<
+ endif
+endif
+
+## GL+SDF
+ifeq ($(SIM),GL_SDF)
+ ifeq ($(CONFIG),caravel_user_project)
+ cvc64 +interp \
+ +define+SIM +define+FUNCTIONAL +define+GL +define+USE_POWER_PINS +define+UNIT_DELAY +define+ENABLE_SDF \
+ +change_port_type +dump2fst +fst+parallel2=on +nointeractive +notimingchecks +mipdopt \
+ -f $(VERILOG_PATH)/includes/includes.gl+sdf.caravel \
+ -f $(USER_PROJECT_VERILOG)/includes/includes.gl+sdf.$(CONFIG) $<
+ else
+ cvc64 +interp \
+ +define+SIM +define+FUNCTIONAL +define+GL +define+USE_POWER_PINS +define+UNIT_DELAY +define+ENABLE_SDF \
+ +change_port_type +dump2fst +fst+parallel2=on +nointeractive +notimingchecks +mipdopt \
+ -f $(VERILOG_PATH)/includes/includes.gl+sdf.$(CONFIG) \
+ -f $CARAVEL_PATH/gl/__user_project_wrapper.v $<
+ endif
endif
%.vcd: %.vvp
- vvp $<
+ vvp $<
-%.elf: %.c $(CARAVEL_FIRMWARE_PATH)/sections.lds $(CARAVEL_FIRMWARE_PATH)/start.s check-env
- ${GCC64_PREFIX}-gcc -I $(CARAVEL_PATH) -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(CARAVEL_FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(CARAVEL_FIRMWARE_PATH)/start.s $<
-
-%.hex: %.elf
- ${GCC64_PREFIX}-objcopy -O verilog $< $@
- # to fix flash base address
- sed -i 's/@10000000/@00000000/g' $@
-
-%.bin: %.elf
- ${GCC64_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
+# twinwave: RTL-%.vcd GL-%.vcd
+# twinwave RTL-$@ * + GL-$@ *
check-env:
ifndef PDK_ROOT
@@ -104,17 +207,18 @@
ifeq (,$(wildcard $(PDK_ROOT)/sky130A))
$(error $(PDK_ROOT)/sky130A not found, please install pdk before running make)
endif
-#ifeq (,$(wildcard $(GCC64_PREFIX)-gcc ))
-# $(error $(GCC64_PREFIX)-gcc is not found, please export GCC_PATH and GCC_PREFIX before running make)
-#endif
+ifeq (,$(wildcard $(GCC_PREFIX)-gcc ))
+ $(error $(GCC_PREFIX)-gcc is not found, please export GCC_PATH and GCC_PREFIX before running make)
+endif
# check for efabless style installation
ifeq (,$(wildcard $(PDK_ROOT)/sky130A/libs.ref/*/verilog))
SIM_DEFINES := ${SIM_DEFINES} -DEF_STYLE
endif
+
# ---- Clean ----
clean:
- rm -f *.elf *.hex *.bin *.vvp *.vcd *.log
+ \rm -f *.elf *.hex *.bin *.vvp *.log *.vcd *.lst *.hexe
.PHONY: clean hex all
diff --git a/verilog/dv/uart_master/uart_master.c b/verilog/dv/uart_master/uart_master.c
index 1f5912a..46d6e97 100644
--- a/verilog/dv/uart_master/uart_master.c
+++ b/verilog/dv/uart_master/uart_master.c
@@ -16,8 +16,9 @@
*/
// This include is relative to $CARAVEL_PATH (see Makefile)
-#include "verilog/dv/caravel/defs.h"
-#include "verilog/dv/caravel/stub.c"
+#include <defs.h>
+#include <stub.c>
+#include "../c_func/inc/user_reg_map.h"
// User Project Slaves (0x3000_0000)
@@ -61,37 +62,40 @@
/* Set up the housekeeping SPI to be connected internally so */
/* that external pin changes don't affect it. */
- reg_spimaster_config = 0xa002; // Enable, prescaler = 2,
+ reg_spi_enable = 1;
+ reg_wb_enable = 1;
+ // reg_spimaster_config = 0xa002; // Enable, prescaler = 2,
// connect to housekeeping SPI
// Connect the housekeeping SPI to the SPI master
// so that the CSB line is not left floating. This allows
// all of the GPIO pins to be used for user functions.
- reg_mprj_io_31 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_30 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_29 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_28 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_27 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_26 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_25 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_24 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_23 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_22 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_21 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_20 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_19 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_18 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_17 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_mprj_io_16 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_31 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_30 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_29 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_28 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_27 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_26 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_25 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_24 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_23 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_22 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_21 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_20 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_19 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_18 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_17 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_16 = GPIO_MODE_MGMT_STD_OUTPUT;
- reg_la0_oenb = reg_la0_iena = 0x0000000;
/* Apply configuration */
reg_mprj_xfer = 1;
while (reg_mprj_xfer == 1);
- reg_mprj_datal = 0xAB600000;
- reg_la0_oenb = reg_la0_iena = 0x0000000;
+ reg_la0_oenb = reg_la0_iena = 0xFFFFFFFF; // [31:0]
+
+ // Flag start of the test
+ reg_mprj_datal = 0xAB600000;
//-----------------------------------------------------
// Start of User Functionality and take over the GPIO Pins
diff --git a/verilog/dv/uart_master/uart_master_tb.v b/verilog/dv/uart_master/uart_master_tb.v
index 1442c8c..2b021ee 100644
--- a/verilog/dv/uart_master/uart_master_tb.v
+++ b/verilog/dv/uart_master/uart_master_tb.v
@@ -16,14 +16,7 @@
`default_nettype none
`timescale 1 ns / 1 ps
-
-`define FULL_CHIP_SIM
-
-`include "uprj_netlists.v"
-`include "caravel_netlists.v"
-`include "spiflash.v"
`include "uart_agent.v"
-`include "user_reg_map.v"
module uart_master_tb;
reg clock;
@@ -116,13 +109,16 @@
uart_timeout = 600;// wait time limit
uart_fifo_enable = 0; // fifo mode disable
tb_master_uart.debug_mode = 0; // disable debug display
+
+ #200; // Wait for reset removal
+
+ wait(checkbits == 16'h AB60);
+ $display("Monitor: UART Master Test Started");
+
+ repeat (50000) @(posedge clock);
tb_master_uart.uart_init;
tb_master_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity,
uart_stick_parity, uart_timeout, uart_divisor);
- wait(checkbits == 16'h AB60);
- $display("Monitor: UART Master Test Started");
-
- repeat (4000) @(posedge clock);
//$write ("\n(%t)Response:\n",$time);
flag = 0;
while(flag == 0)
@@ -279,4 +275,7 @@
`include "uart_master_tasks.sv"
endmodule
+
+// SSFLASH has 1ps/1ps time scale
+`include "s25fl256s.sv"
`default_nettype wire
diff --git a/verilog/dv/user_basic/Makefile b/verilog/dv/user_basic/Makefile
index e534f3b..37feef0 100644
--- a/verilog/dv/user_basic/Makefile
+++ b/verilog/dv/user_basic/Makefile
@@ -14,40 +14,28 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
-## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
-GCC64_PREFIX?=riscv64-unknown-elf
+DESIGNS?=../../..
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-PDK_PATH?=/ef/tech/SW/sky130A
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
+
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
+
.SUFFIXES:
PATTERN = user_basic
@@ -62,40 +50,22 @@
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
iverilog -g2012 -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_INCLUDE_PATH5) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
iverilog -g2012 -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_INCLUDE_PATH5) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
%.vcd: %.vvp
vvp $<
-%.elf: %.c $(CARAVEL_FIRMWARE_PATH)/sections.lds $(CARAVEL_FIRMWARE_PATH)/start.s
- ${GCC64_PREFIX}-gcc -I $(CARAVEL_PATH) -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(CARAVEL_FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(CARAVEL_FIRMWARE_PATH)/start.s $<
-
-%.hex:
- echo @"This is user boot test, noting to compile the mangment core code"
-
-%.bin: %.elf
- ${GCC64_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
# ---- Clean ----
diff --git a/verilog/dv/user_basic/user_basic_tb.v b/verilog/dv/user_basic/user_basic_tb.v
index 9ee701c..99c4ac6 100644
--- a/verilog/dv/user_basic/user_basic_tb.v
+++ b/verilog/dv/user_basic/user_basic_tb.v
@@ -74,9 +74,7 @@
`timescale 1 ns/10 ps
-`include "uprj_netlists.v"
-`include "user_reg_map.v"
-
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
module user_basic_tb;
parameter CLK1_PERIOD = 10;
@@ -153,7 +151,7 @@
`ifdef WFDUMP
initial begin
$dumpfile("simx.vcd");
- $dumpvars(4, user_basic_tb);
+ $dumpvars(0, user_basic_tb);
end
`endif
@@ -242,8 +240,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'h1603_2022);
- wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h0003_9000);
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h2603_2022);
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h0004_0000);
end
diff --git a/verilog/dv/user_i2cm/Makefile b/verilog/dv/user_i2cm/Makefile
index 6f0b848..e7d9b13 100644
--- a/verilog/dv/user_i2cm/Makefile
+++ b/verilog/dv/user_i2cm/Makefile
@@ -14,40 +14,31 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+DESIGNS?=../../..
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
GCC64_PREFIX?=riscv64-unknown-elf
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-PDK_PATH?=/ef/tech/SW/sky130A
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
+
.SUFFIXES:
PATTERN = user_i2cm
@@ -59,49 +50,25 @@
vvp: ${PATTERN:=.vvp}
%.vvp: %_tb.v
- ${GCC64_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=1 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -c -I./ -I$(YIFIVE_FIRMWARE_PATH) user_uart.c -o user_uart.o
- ${GCC64_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=1 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -D__ASSEMBLY__=1 -c -I./ -I$(YIFIVE_FIRMWARE_PATH) $(YIFIVE_FIRMWARE_PATH)/crt_tcm.S -o crt_tcm.o
- ${GCC64_PREFIX}-gcc -o user_uart.elf -T $(YIFIVE_FIRMWARE_PATH)/link_tcm.ld user_uart.o crt_tcm.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32
- ${GCC64_PREFIX}-objcopy -O verilog user_uart.elf user_uart.hex
- ${GCC64_PREFIX}-objdump -D user_uart.elf > user_uart.dump
- rm crt_tcm.o user_uart.o
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv -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_INCLUDE_PATH5) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
- 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_INCLUDE_PATH5) \
+ iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
- iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
%.vcd: %.vvp
vvp $<
-%.elf: %.c $(CARAVEL_FIRMWARE_PATH)/sections.lds $(CARAVEL_FIRMWARE_PATH)/start.s
- ${GCC64_PREFIX}-gcc -I $(CARAVEL_PATH) -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(CARAVEL_FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(CARAVEL_FIRMWARE_PATH)/start.s $<
-
-%.hex:
- echo @"This is user boot test, noting to compile the mangment core code"
-
-%.bin: %.elf
- ${GCC64_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
# ---- Clean ----
diff --git a/verilog/dv/user_i2cm/user_i2cm_tb.v b/verilog/dv/user_i2cm/user_i2cm_tb.v
index c9bcd8b..6be9759 100644
--- a/verilog/dv/user_i2cm/user_i2cm_tb.v
+++ b/verilog/dv/user_i2cm/user_i2cm_tb.v
@@ -65,9 +65,8 @@
`timescale 1 ns / 1 ns
-`include "uprj_netlists.v"
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
`include "i2c_slave_model.v"
-`include "user_reg_map.v"
module tb_top;
diff --git a/verilog/dv/user_pwm/Makefile b/verilog/dv/user_pwm/Makefile
index 220c33c..96815e2 100644
--- a/verilog/dv/user_pwm/Makefile
+++ b/verilog/dv/user_pwm/Makefile
@@ -14,37 +14,31 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr1c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+DESIGNS?=../../..
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
GCC64_PREFIX?=riscv64-unknown-elf
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-PDK_PATH?=/opt/pdk/sky130A
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
+RISC_CORE?=0
+
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
.SUFFIXES:
@@ -58,36 +52,23 @@
%.vvp: %_tb.v
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv -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) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
- 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) \
+ iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
- iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
%.vcd: %.vvp
vvp $<
-%.hex:
- echo @"This is user boot test, noting to compile the mangment core code"
-
# ---- Clean ----
diff --git a/verilog/dv/user_pwm/user_pwm_tb.v b/verilog/dv/user_pwm/user_pwm_tb.v
index 575d604..cbe03cb 100644
--- a/verilog/dv/user_pwm/user_pwm_tb.v
+++ b/verilog/dv/user_pwm/user_pwm_tb.v
@@ -64,13 +64,12 @@
`default_nettype wire
-`timescale 1 ns / 1 ns
+`timescale 1 ns / 1 ps
`define TB_GLBL user_pwm_tb
-`include "uprj_netlists.v"
-`include "user_reg_map.v"
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
module user_pwm_tb;
diff --git a/verilog/dv/user_qspi/Makefile b/verilog/dv/user_qspi/Makefile
index 250d502..1932afc 100644
--- a/verilog/dv/user_qspi/Makefile
+++ b/verilog/dv/user_qspi/Makefile
@@ -14,39 +14,31 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+DESIGNS?=../../..
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
GCC64_PREFIX?=riscv64-unknown-elf
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-PDK_PATH?=/ef/tech/SW/sky130A
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
+RISC_CORE?=0
+
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
.SUFFIXES:
@@ -60,36 +52,23 @@
%.vvp: %_tb.v
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv -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_INCLUDE_PATH5) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
- 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_INCLUDE_PATH5) \
+ iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
- iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
%.vcd: %.vvp
vvp $<
-%.hex:
- echo @"This is user boot test, noting to compile the mangment core code"
-
# ---- Clean ----
diff --git a/verilog/dv/user_qspi/user_qspi_tb.v b/verilog/dv/user_qspi/user_qspi_tb.v
index 3b4d47a..fdac089 100644
--- a/verilog/dv/user_qspi/user_qspi_tb.v
+++ b/verilog/dv/user_qspi/user_qspi_tb.v
@@ -77,13 +77,10 @@
`default_nettype wire
-`timescale 1 ns / 1 ns
+`timescale 1 ns/1 ps
-`include "uprj_netlists.v"
-`include "mt48lc8m8a2.v"
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
`include "is62wvs1288.v"
-`include "user_reg_map.v"
-
module user_qspi_tb;
reg clock;
diff --git a/verilog/dv/user_risc_boot/Makefile b/verilog/dv/user_risc_boot/Makefile
index 46c4437..4a0c488 100644
--- a/verilog/dv/user_risc_boot/Makefile
+++ b/verilog/dv/user_risc_boot/Makefile
@@ -14,41 +14,32 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+DESIGNS?=../../..
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
GCC64_PREFIX?=riscv64-unknown-elf
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-PDK_PATH?=/ef/tech/SW/sky130A
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
RISC_CORE?=0
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
+
.SUFFIXES:
PATTERN = user_risc_boot
@@ -68,41 +59,23 @@
rm crt.o user_risc_boot.o
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv -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_INCLUDE_PATH5) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
- 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_INCLUDE_PATH5) \
+ iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
- iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
%.vcd: %.vvp
vvp $< +risc_core_id=$(RISC_CORE)
-%.elf: %.c $(CARAVEL_FIRMWARE_PATH)/sections.lds $(CARAVEL_FIRMWARE_PATH)/start.s
- ${GCC64_PREFIX}-gcc -I $(CARAVEL_PATH) -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(CARAVEL_FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(CARAVEL_FIRMWARE_PATH)/start.s $<
-
-%.hex:
- echo @"This is user boot test, noting to compile the mangment core code"
-
-%.bin: %.elf
- ${GCC64_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
# ---- Clean ----
diff --git a/verilog/dv/user_risc_boot/user_risc_boot_tb.v b/verilog/dv/user_risc_boot/user_risc_boot_tb.v
index c9e68da..82bd34a 100644
--- a/verilog/dv/user_risc_boot/user_risc_boot_tb.v
+++ b/verilog/dv/user_risc_boot/user_risc_boot_tb.v
@@ -74,11 +74,7 @@
`timescale 1 ns / 1 ns
-`include "uprj_netlists.v"
-`include "mt48lc8m8a2.v"
-`include "user_reg_map.v"
-
-`define ADDR_SPACE_PINMUX 32'h3002_0000
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
module user_risc_boot_tb;
reg clock;
reg wb_rst_i;
@@ -128,8 +124,8 @@
`ifdef WFDUMP
initial begin
- $dumpfile("risc_boot.vcd");
- $dumpvars(2, user_risc_boot_tb);
+ $dumpfile("simx.vcd");
+ $dumpvars(3, user_risc_boot_tb);
end
`endif
@@ -174,23 +170,13 @@
// 0x3000002C = 0x66778899;
test_fail = 0;
- wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data);
- if(read_data != 32'h11223344) test_fail = 1;
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344);
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455);
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566);
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677);
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788);
+ wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899);
- wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data);
- if(read_data != 32'h22334455) test_fail = 1;
-
- wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data);
- if(read_data != 32'h33445566) test_fail = 1;
-
- wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data);
- if(read_data!= 32'h44556677) test_fail = 1;
-
- wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data);
- if(read_data!= 32'h55667788) test_fail = 1;
-
- wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data) ;
- if(read_data != 32'h66778899) test_fail = 1;
$display("###################################################");
@@ -357,6 +343,40 @@
end
endtask
+task wb_user_core_read_check;
+input [31:0] address;
+output [31:0] data;
+input [31:0] cmp_data;
+reg [31:0] data;
+begin
+ repeat (1) @(posedge clock);
+ #1;
+ wbd_ext_adr_i =address; // address
+ wbd_ext_we_i ='h0; // write
+ wbd_ext_dat_i ='0; // data output
+ wbd_ext_sel_i ='hF; // byte enable
+ wbd_ext_cyc_i ='h1; // strobe/request
+ wbd_ext_stb_i ='h1; // strobe/request
+ wait(wbd_ext_ack_o == 1);
+ data = wbd_ext_dat_o;
+ repeat (1) @(posedge clock);
+ #1;
+ wbd_ext_cyc_i ='h0; // strobe/request
+ wbd_ext_stb_i ='h0; // strobe/request
+ wbd_ext_adr_i ='h0; // address
+ wbd_ext_we_i ='h0; // write
+ wbd_ext_dat_i ='h0; // data output
+ wbd_ext_sel_i ='h0; // byte enable
+ if(data !== cmp_data) begin
+ $display("ERROR : WB USER ACCESS READ Address : 0x%x, Exd: 0x%x Rxd: 0x%x ",address,cmp_data,data);
+ test_fail = 1;
+ end else begin
+ $display("STATUS: WB USER ACCESS READ Address : 0x%x, Data : 0x%x",address,data);
+ end
+ repeat (2) @(posedge clock);
+end
+endtask
+
`ifdef GL
wire wbd_spi_stb_i = u_top.u_spi_master.wbd_stb_i;
diff --git a/verilog/dv/user_sspi/.user_sspi_tb.v.swp b/verilog/dv/user_sspi/.user_sspi_tb.v.swp
deleted file mode 100644
index 7af26eb..0000000
--- a/verilog/dv/user_sspi/.user_sspi_tb.v.swp
+++ /dev/null
Binary files differ
diff --git a/verilog/dv/user_sspi/Makefile b/verilog/dv/user_sspi/Makefile
index 0f8d1a7..9d8bd45 100644
--- a/verilog/dv/user_sspi/Makefile
+++ b/verilog/dv/user_sspi/Makefile
@@ -14,39 +14,31 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+DESIGNS?=../../..
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
GCC64_PREFIX?=riscv64-unknown-elf
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-PDK_PATH?=/opt/pdk/sky130A
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
+RISC_CORE?=0
+
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
.SUFFIXES:
@@ -60,36 +52,23 @@
%.vvp: %_tb.v
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv -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_INCLUDE_PATH5) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
- 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_INCLUDE_PATH5) \
+ iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
- iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
%.vcd: %.vvp
vvp $<
-%.hex:
- echo @"This is user boot test, noting to compile the mangment core code"
-
# ---- Clean ----
diff --git a/verilog/dv/user_sspi/user_sspi_tb.v b/verilog/dv/user_sspi/user_sspi_tb.v
index 512e40d..6b6cbb4 100644
--- a/verilog/dv/user_sspi/user_sspi_tb.v
+++ b/verilog/dv/user_sspi/user_sspi_tb.v
@@ -64,14 +64,13 @@
`default_nettype wire
-`timescale 1 ns / 1 ns
+`timescale 1 ns/1 ps
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
+`include "is62wvs1288.v"
`define TB_GLBL user_sspi_tb
-`include "uprj_netlists.v"
-`include "is62wvs1288.v"
-`include "user_reg_map.v"
diff --git a/verilog/dv/user_timer/Makefile b/verilog/dv/user_timer/Makefile
index cda351b..6520c31 100644
--- a/verilog/dv/user_timer/Makefile
+++ b/verilog/dv/user_timer/Makefile
@@ -14,37 +14,31 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr1c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+DESIGNS?=../../..
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
GCC64_PREFIX?=riscv64-unknown-elf
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-PDK_PATH?=/opt/pdk/sky130A
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
+RISC_CORE?=0
+
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
.SUFFIXES:
@@ -58,36 +52,23 @@
%.vvp: %_tb.v
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv -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) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
- 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) \
+ iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
- iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
%.vcd: %.vvp
vvp $<
-%.hex:
- echo @"This is user boot test, noting to compile the mangment core code"
-
# ---- Clean ----
diff --git a/verilog/dv/user_timer/user_timer_tb.v b/verilog/dv/user_timer/user_timer_tb.v
index f2d7f11..d7ef5e6 100644
--- a/verilog/dv/user_timer/user_timer_tb.v
+++ b/verilog/dv/user_timer/user_timer_tb.v
@@ -64,12 +64,11 @@
`default_nettype wire
-`timescale 1 ns / 1 ns
+`timescale 1 ns / 1 ps
`define TB_GLBL user_timer_tb
-`include "uprj_netlists.v"
-`include "user_reg_map.v"
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
module user_timer_tb;
diff --git a/verilog/dv/user_uart/Makefile b/verilog/dv/user_uart/Makefile
index 320f113..97726ee 100644
--- a/verilog/dv/user_uart/Makefile
+++ b/verilog/dv/user_uart/Makefile
@@ -14,48 +14,38 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+DESIGNS?=../../..
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
GCC64_PREFIX?=riscv64-unknown-elf
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-PDK_PATH?=/ef/tech/SW/sky130A
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
RISC_CORE?=0
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
+
.SUFFIXES:
PATTERN = user_uart
all: ${PATTERN:=.vcd}
-hex: ${PATTERN:=.hex}
vvp: ${PATTERN:=.vvp}
@@ -68,41 +58,23 @@
rm crt.o user_uart.o
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv -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_INCLUDE_PATH5) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
- 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_INCLUDE_PATH5) \
+ iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
- iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
%.vcd: %.vvp
vvp $< +risc_core_id=$(RISC_CORE)
-%.elf: %.c $(CARAVEL_FIRMWARE_PATH)/sections.lds $(CARAVEL_FIRMWARE_PATH)/start.s
- ${GCC64_PREFIX}-gcc -I $(CARAVEL_PATH) -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(CARAVEL_FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(CARAVEL_FIRMWARE_PATH)/start.s $<
-
-%.hex:
- echo @"This is user boot test, noting to compile the mangment core code"
-
-%.bin: %.elf
- ${GCC64_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
# ---- Clean ----
diff --git a/verilog/dv/user_uart/user_uart_tb.v b/verilog/dv/user_uart/user_uart_tb.v
index b4bfa74..ff9d152 100644
--- a/verilog/dv/user_uart/user_uart_tb.v
+++ b/verilog/dv/user_uart/user_uart_tb.v
@@ -72,11 +72,10 @@
`default_nettype wire
-`timescale 1 ns / 1 ns
+`timescale 1 ns/1 ps
-`include "uprj_netlists.v"
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
`include "uart_agent.v"
-`include "user_reg_map.v"
module user_uart_tb;
@@ -147,8 +146,7 @@
`ifdef WFDUMP
initial begin
$dumpfile("simx.vcd");
- $dumpvars(1, user_uart_tb);
- $dumpvars(0, user_uart_tb.u_top);
+ $dumpvars(0, user_uart_tb);
end
`endif
diff --git a/verilog/dv/user_uart_master/Makefile b/verilog/dv/user_uart_master/Makefile
index 4e61e77..7f9bc7b 100644
--- a/verilog/dv/user_uart_master/Makefile
+++ b/verilog/dv/user_uart_master/Makefile
@@ -14,35 +14,31 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+DESIGNS?=../../..
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
+GCC64_PREFIX?=riscv64-unknown-elf
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
+
.SUFFIXES:
PATTERN = user_uart_master
@@ -55,27 +51,17 @@
%.vvp: %_tb.v
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv -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_INCLUDE_PATH5) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
- 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_INCLUDE_PATH5) \
+ iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
- iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
diff --git a/verilog/dv/user_uart_master/user_uart_master_tb.v b/verilog/dv/user_uart_master/user_uart_master_tb.v
index 3f4f16e..40d7b07 100644
--- a/verilog/dv/user_uart_master/user_uart_master_tb.v
+++ b/verilog/dv/user_uart_master/user_uart_master_tb.v
@@ -64,17 +64,10 @@
`default_nettype wire
-`timescale 1 ns / 1 ns
+`timescale 1 ns / 1 ps
-`include "uprj_netlists.v"
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
`include "uart_agent.v"
-`include "user_reg_map.v"
-
-
-
-`define ADDR_SPACE_UART 32'h3001_0000
-`define ADDR_SPACE_PINMUX 32'h3002_0000
-
module user_uart_master_tb;
diff --git a/verilog/dv/user_usb/Makefile b/verilog/dv/user_usb/Makefile
index 3e082d3..a25bc69 100644
--- a/verilog/dv/user_usb/Makefile
+++ b/verilog/dv/user_usb/Makefile
@@ -14,42 +14,32 @@
#
# SPDX-License-Identifier: Apache-2.0
-## Caravel Pointers
-CARAVEL_ROOT ?= ../../../caravel
-CARAVEL_PATH ?= $(CARAVEL_ROOT)
-CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
-CARAVEL_VERILOG_PATH = $(CARAVEL_PATH)/verilog
-CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
-CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+# ---- Include Partitioned Makefiles ----
-## User Project Pointers
-UPRJ_VERILOG_PATH ?= ../../../verilog
-UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
-UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
-UPRJ_BEHAVIOURAL_MODELS = ../model
-UPRJ_BEHAVIOURAL_AGENTS = ../agents
-UPRJ_BEHAVIOURAL_BFM = ../bfm
-UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/yifive/ycr2c/src/includes
-UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
-UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
-UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
-UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
+CONFIG = caravel_user_project
+
+#######################################################################
+## Caravel Verilog for Integration Tests
+#######################################################################
+DESIGNS?=../../..
+
+export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog
## YIFIVE FIRMWARE
-YIFIVE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/dv/firmware
+YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware
GCC64_PREFIX?=riscv64-unknown-elf
-## RISCV GCC
-GCC_PATH?=/ef/apps/bin
-GCC_PREFIX?=riscv32-unknown-elf
-PDK_PATH?=/opt/pdk/sky130A
## Simulation mode: RTL/GL
SIM?=RTL
DUMP?=OFF
RISC_CORE?=0
+### To Enable IVERILOG FST DUMP
+export IVERILOG_DUMPER = fst
+
+
.SUFFIXES:
PATTERN = user_usb
@@ -62,36 +52,23 @@
%.vvp: %_tb.v
ifeq ($(SIM),RTL)
ifeq ($(DUMP),OFF)
- iverilog -g2005-sv -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_BEHAVIOURAL_BFM) \
- -I $(UPRJ_INCLUDE_PATH1) -I $(UPRJ_INCLUDE_PATH2) -I $(UPRJ_INCLUDE_PATH3) \
- -I $(UPRJ_INCLUDE_PATH4) -I $(UPRJ_INCLUDE_PATH5) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
else
- 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_BEHAVIOURAL_BFM) \
- -I $(UPRJ_INCLUDE_PATH1) -I $(UPRJ_INCLUDE_PATH2) -I $(UPRJ_INCLUDE_PATH3) \
- -I $(UPRJ_INCLUDE_PATH4) -I $(UPRJ_INCLUDE_PATH5) \
+ iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
else
- iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
- -I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
- -I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
- -I $(UPRJ_BEHAVIOURAL_AGENTS) \
+ iverilog -g2012 -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
$< -o $@
endif
%.vcd: %.vvp
vvp $<
-%.hex:
- echo @"This is user boot test, noting to compile the mangment core code"
-
# ---- Clean ----
diff --git a/verilog/dv/user_usb/user_usb_tb.v b/verilog/dv/user_usb/user_usb_tb.v
index 96f1446..d2e37b4 100644
--- a/verilog/dv/user_usb/user_usb_tb.v
+++ b/verilog/dv/user_usb/user_usb_tb.v
@@ -38,18 +38,18 @@
`default_nettype wire
-`timescale 1 ns / 1 ns
+`timescale 1 ns / 1 ps
`define TB_GLBL user_usb_tb
`define USB_BFM u_usb_agent
-`include "user_reg_map.v"
-`include "uprj_netlists.v"
`include "usb_agents.v"
`include "test_control.v"
`include "usb1d_defines.v"
`include "usbd_files.v"
+`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
+
module user_usb_tb;
parameter USB_HPER = 10.4167; // 48Mhz Half cycle
diff --git a/verilog/dv/wb_port/Makefile b/verilog/dv/wb_port/Makefile
index 887f270..633a369 100644
--- a/verilog/dv/wb_port/Makefile
+++ b/verilog/dv/wb_port/Makefile
@@ -21,6 +21,7 @@
# ---- Include Partitioned Makefiles ----
+DESIGNS?=../../..
CONFIG = caravel_user_project
########################################################
@@ -50,7 +51,7 @@
#######################################################################
export GCC_PATH?= $(TOOLS)/bin
-export GCC_PREFIX?= riscv32-unknown-linux-gnu
+export GCC_PREFIX?= riscv64-unknown-linux-gnu
@@ -121,7 +122,7 @@
# Comiple firmeware
##############################################################################
%.elf: %.c $(LINKER_SCRIPT) $(SOURCE_FILES)
- ${GCC_PATH}/${GCC_PREFIX}-gcc -g \
+ ${GCC_PREFIX}-gcc -g \
-I$(FIRMWARE_PATH) \
-I$(VERILOG_PATH)/dv/generated \
-I$(VERILOG_PATH)/dv/ \
@@ -131,15 +132,15 @@
-ffreestanding -nostdlib -o $@ $(SOURCE_FILES) $<
%.lst: %.elf
- ${GCC_PATH}/${GCC_PREFIX}-objdump -d -S $< > $@
+ ${GCC_PREFIX}-objdump -d -S $< > $@
%.hex: %.elf
- ${GCC_PATH}/${GCC_PREFIX}-objcopy -O verilog $< $@
+ ${GCC_PREFIX}-objcopy -O verilog $< $@
# to fix flash base address
sed -ie 's/@10/@00/g' $@
%.bin: %.elf
- ${GCC_PATH}/${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
+ ${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
##############################################################################
@@ -204,8 +205,8 @@
ifeq (,$(wildcard $(PDK_ROOT)/sky130A))
$(error $(PDK_ROOT)/sky130A not found, please install pdk before running make)
endif
-ifeq (,$(wildcard $(GCC_PATH)/$(GCC_PREFIX)-gcc ))
- $(error $(GCC_PATH)/$(GCC_PREFIX)-gcc is not found, please export GCC_PATH and GCC_PREFIX before running make)
+ifeq (,$(wildcard $(GCC_PREFIX)-gcc ))
+ $(error $(GCC_PREFIX)-gcc is not found, please export GCC_PATH and GCC_PREFIX before running make)
endif
# check for efabless style installation
ifeq (,$(wildcard $(PDK_ROOT)/sky130A/libs.ref/*/verilog))
diff --git a/verilog/dv/wb_port/wb_port.c b/verilog/dv/wb_port/wb_port.c
index 910e933..d3d63fe 100644
--- a/verilog/dv/wb_port/wb_port.c
+++ b/verilog/dv/wb_port/wb_port.c
@@ -87,7 +87,7 @@
reg_mprj_xfer = 1;
while (reg_mprj_xfer == 1);
- reg_la2_oenb = reg_la2_iena = 0xFFFFFFFF; // [95:64]
+ reg_la0_oenb = reg_la0_iena = 0xFFFFFFFF; // [31:0]
reg_la0_data = 0x000;
reg_la0_data = 0x001; // Remove Soft Reset
diff --git a/verilog/includes/includes.rtl.caravel_user_project b/verilog/includes/includes.rtl.caravel_user_project
index 5d917ec..f5f265c 100644
--- a/verilog/includes/includes.rtl.caravel_user_project
+++ b/verilog/includes/includes.rtl.caravel_user_project
@@ -1,9 +1,12 @@
# Caravel user project includes
++incdir+$(USER_PROJECT_VERILOG)/rtl/
+incdir+$(USER_PROJECT_VERILOG)/rtl/i2cm/src/includes
+incdir+$(USER_PROJECT_VERILOG)/rtl/usb1_host/src/includes
-+incdir+$(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/includes
++incdir+$(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/includes
++incdir+$(USER_PROJECT_VERILOG)/dv/bfm
+incdir+$(USER_PROJECT_VERILOG)/dv/model
+incdir+$(USER_PROJECT_VERILOG)/dv/agents
+$(USER_PROJECT_VERILOG)/rtl/user_reg_map.v
-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/pinmux.sv
-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/pinmux_reg.sv
-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/gpio_intr.sv
@@ -57,49 +60,50 @@
-v $(USER_PROJECT_VERILOG)/rtl/wb_interconnect/src/wb_slave_port.sv
-v $(USER_PROJECT_VERILOG)/rtl/wb_interconnect/src/wb_interconnect.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_hdu.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_tdu.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_ipic.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_csr.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_exu.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_ialu.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_idu.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_ifu.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_lsu.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_mprf.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_mul.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_div.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_top.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/primitives/ycr_reset_cells.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/primitives/ycr_cg.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/ycr_clk_ctrl.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/ycr_tapc_shift_reg.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/ycr_tapc.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/ycr_tapc_synchronizer.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/ycr_core_top.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/ycr_dm.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/ycr_dmi.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/core/ycr_scu.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr_imem_router.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr_dmem_router.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr_dp_memory.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr_tcm.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr_timer.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr_dmem_wb.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr_imem_wb.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr2_mcore_router.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr2_intf.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr2_mintf.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr2_top_wb.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr_icache_router.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/top/ycr_dcache_router.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/cache/src/core/icache_top.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/cache/src/core/icache_app_fsm.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/cache/src/core/icache_tag_fifo.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/cache/src/core/dcache_tag_fifo.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/cache/src/core/dcache_top.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/lib/ycr_async_wbb.sv
--v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr2c/src/lib/ycr_arb.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_hdu.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_tdu.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_ipic.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_csr.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_exu.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_ialu.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_idu.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_ifu.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_lsu.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_mprf.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_mul.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_div.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/pipeline/ycr_pipe_top.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/primitives/ycr_reset_cells.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/primitives/ycr_cg.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/ycr_clk_ctrl.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/ycr_tapc_shift_reg.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/ycr_tapc.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/ycr_tapc_synchronizer.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/ycr_core_top.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/ycr_dm.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/ycr_dmi.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/core/ycr_scu.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_imem_router.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_dmem_router.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_dp_memory.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_tcm.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_timer.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_dmem_wb.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_imem_wb.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_intf.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr4_router.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr4_iconnect.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr4_cross_bar.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr4_top_wb.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_icache_router.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/top/ycr_dcache_router.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/cache/src/core/icache_top.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/cache/src/core/icache_app_fsm.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/cache/src/core/icache_tag_fifo.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/cache/src/core/dcache_tag_fifo.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/cache/src/core/dcache_top.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/lib/ycr_async_wbb.sv
+-v $(USER_PROJECT_VERILOG)/rtl/yifive/ycr4c/src/lib/ycr_arb.sv
-v $(USER_PROJECT_VERILOG)/rtl/lib/sync_fifo.sv
-v $(USER_PROJECT_VERILOG)/rtl/uart2wb/src/uart2wb.sv
@@ -109,3 +113,4 @@
-v $(USER_PROJECT_VERILOG)/rtl/user_project_wrapper.v
-v $(USER_PROJECT_VERILOG)/rtl/lib/clk_skew_adjust.gv
-v $(USER_PROJECT_VERILOG)/rtl/lib/ctech_cells.sv
+
diff --git a/verilog/rtl/lib/async_fifo.sv b/verilog/rtl/lib/async_fifo.sv
index fd59cfa..cedffdb 100755
--- a/verilog/rtl/lib/async_fifo.sv
+++ b/verilog/rtl/lib/async_fifo.sv
@@ -58,7 +58,7 @@
//-------------------------------------------
// async FIFO
//-----------------------------------------------
-//`timescale 1ns/1ps
+`timescale 1ns/1ps
module async_fifo (wr_clk,
wr_reset_n,
diff --git a/verilog/rtl/lib/async_fifo_th.sv b/verilog/rtl/lib/async_fifo_th.sv
index 05860f8..5162802 100755
--- a/verilog/rtl/lib/async_fifo_th.sv
+++ b/verilog/rtl/lib/async_fifo_th.sv
@@ -70,6 +70,7 @@
// rd_total_aval --> Indicate total no of transfer available
//-----------------------------------------------
+`timescale 1ns/1ps
module async_fifo_th (
wr_clk,
wr_reset_n,
diff --git a/verilog/rtl/pinmux/src/pinmux_reg.sv b/verilog/rtl/pinmux/src/pinmux_reg.sv
index d340fc6..8764605 100644
--- a/verilog/rtl/pinmux/src/pinmux_reg.sv
+++ b/verilog/rtl/pinmux/src/pinmux_reg.sv
@@ -715,7 +715,7 @@
//-----------------------------------------
// Software Reg-2, Release date: <DAY><MONTH><YEAR>
// ----------------------------------------
-gen_32b_reg #(32'h1603_2022) u_reg_23 (
+gen_32b_reg #(32'h2603_2022) u_reg_23 (
//List of Inputs
.reset_n (h_reset_n ),
.clk (mclk ),
@@ -728,9 +728,9 @@
);
//-----------------------------------------
-// Software Reg-3: Poject Revison 3.9 = 0003900
+// Software Reg-3: Poject Revison 4.0 = 0004000
// ----------------------------------------
-gen_32b_reg #(32'h0003_9000) u_reg_24 (
+gen_32b_reg #(32'h0004_0000) u_reg_24 (
//List of Inputs
.reset_n (h_reset_n ),
.clk (mclk ),
diff --git a/verilog/rtl/qspim b/verilog/rtl/qspim
index efa1519..201a604 160000
--- a/verilog/rtl/qspim
+++ b/verilog/rtl/qspim
@@ -1 +1 @@
-Subproject commit efa151915f9d00cb329388845356c5b734601571
+Subproject commit 201a6047f18db8ec792d948a52327b070013ab53
diff --git a/verilog/rtl/uprj_netlists.v b/verilog/rtl/uprj_netlists.v
index 8cff517..9496cc9 100644
--- a/verilog/rtl/uprj_netlists.v
+++ b/verilog/rtl/uprj_netlists.v
@@ -108,49 +108,50 @@
`include "wb_interconnect/src/wb_slave_port.sv"
`include "wb_interconnect/src/wb_interconnect.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_hdu.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_tdu.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_ipic.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_csr.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_exu.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_ialu.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_idu.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_ifu.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_lsu.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_mprf.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_mul.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_div.sv"
- `include "yifive/ycr2c/src/core/pipeline/ycr_pipe_top.sv"
- `include "yifive/ycr2c/src/core/primitives/ycr_reset_cells.sv"
- `include "yifive/ycr2c/src/core/primitives/ycr_cg.sv"
- `include "yifive/ycr2c/src/core/ycr_clk_ctrl.sv"
- `include "yifive/ycr2c/src/core/ycr_tapc_shift_reg.sv"
- `include "yifive/ycr2c/src/core/ycr_tapc.sv"
- `include "yifive/ycr2c/src/core/ycr_tapc_synchronizer.sv"
- `include "yifive/ycr2c/src/core/ycr_core_top.sv"
- `include "yifive/ycr2c/src/core/ycr_dm.sv"
- `include "yifive/ycr2c/src/core/ycr_dmi.sv"
- `include "yifive/ycr2c/src/core/ycr_scu.sv"
- `include "yifive/ycr2c/src/top/ycr_imem_router.sv"
- `include "yifive/ycr2c/src/top/ycr_dmem_router.sv"
- `include "yifive/ycr2c/src/top/ycr_dp_memory.sv"
- `include "yifive/ycr2c/src/top/ycr_tcm.sv"
- `include "yifive/ycr2c/src/top/ycr_timer.sv"
- `include "yifive/ycr2c/src/top/ycr_dmem_wb.sv"
- `include "yifive/ycr2c/src/top/ycr_imem_wb.sv"
- `include "yifive/ycr2c/src/top/ycr2_mcore_router.sv"
- `include "yifive/ycr2c/src/top/ycr2_intf.sv"
- `include "yifive/ycr2c/src/top/ycr2_mintf.sv"
- `include "yifive/ycr2c/src/top/ycr2_top_wb.sv"
- `include "yifive/ycr2c/src/top/ycr_icache_router.sv"
- `include "yifive/ycr2c/src/top/ycr_dcache_router.sv"
- `include "yifive/ycr2c/src/cache/src/core/icache_top.sv"
- `include "yifive/ycr2c/src/cache/src/core/icache_app_fsm.sv"
- `include "yifive/ycr2c/src/cache/src/core/icache_tag_fifo.sv"
- `include "yifive/ycr2c/src/cache/src/core/dcache_tag_fifo.sv"
- `include "yifive/ycr2c/src/cache/src/core/dcache_top.sv"
- `include "yifive/ycr2c/src/lib/ycr_async_wbb.sv"
- `include "yifive/ycr2c/src/lib/ycr_arb.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_hdu.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_tdu.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_ipic.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_csr.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_exu.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_ialu.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_idu.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_ifu.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_lsu.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_mprf.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_mul.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_div.sv"
+ `include "yifive/ycr4c/src/core/pipeline/ycr_pipe_top.sv"
+ `include "yifive/ycr4c/src/core/primitives/ycr_reset_cells.sv"
+ `include "yifive/ycr4c/src/core/primitives/ycr_cg.sv"
+ `include "yifive/ycr4c/src/core/ycr_clk_ctrl.sv"
+ `include "yifive/ycr4c/src/core/ycr_tapc_shift_reg.sv"
+ `include "yifive/ycr4c/src/core/ycr_tapc.sv"
+ `include "yifive/ycr4c/src/core/ycr_tapc_synchronizer.sv"
+ `include "yifive/ycr4c/src/core/ycr_core_top.sv"
+ `include "yifive/ycr4c/src/core/ycr_dm.sv"
+ `include "yifive/ycr4c/src/core/ycr_dmi.sv"
+ `include "yifive/ycr4c/src/core/ycr_scu.sv"
+ `include "yifive/ycr4c/src/top/ycr_imem_router.sv"
+ `include "yifive/ycr4c/src/top/ycr_dmem_router.sv"
+ `include "yifive/ycr4c/src/top/ycr_dp_memory.sv"
+ `include "yifive/ycr4c/src/top/ycr_tcm.sv"
+ `include "yifive/ycr4c/src/top/ycr_timer.sv"
+ `include "yifive/ycr4c/src/top/ycr_dmem_wb.sv"
+ `include "yifive/ycr4c/src/top/ycr_imem_wb.sv"
+ `include "yifive/ycr4c/src/top/ycr_intf.sv"
+ `include "yifive/ycr4c/src/top/ycr4_router.sv"
+ `include "yifive/ycr4c/src/top/ycr4_iconnect.sv"
+ `include "yifive/ycr4c/src/top/ycr4_cross_bar.sv"
+ `include "yifive/ycr4c/src/top/ycr4_top_wb.sv"
+ `include "yifive/ycr4c/src/top/ycr_icache_router.sv"
+ `include "yifive/ycr4c/src/top/ycr_dcache_router.sv"
+ `include "yifive/ycr4c/src/cache/src/core/icache_top.sv"
+ `include "yifive/ycr4c/src/cache/src/core/icache_app_fsm.sv"
+ `include "yifive/ycr4c/src/cache/src/core/icache_tag_fifo.sv"
+ `include "yifive/ycr4c/src/cache/src/core/dcache_tag_fifo.sv"
+ `include "yifive/ycr4c/src/cache/src/core/dcache_top.sv"
+ `include "yifive/ycr4c/src/lib/ycr_async_wbb.sv"
+ `include "yifive/ycr4c/src/lib/ycr_arb.sv"
`include "lib/sync_fifo.sv"
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 1f9418b..3ef25c7 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -196,6 +196,8 @@
//// 3. Risc fuse_mhartid is removed and internal tied ////
//// inside risc core ////
//// 4. caravel wb addressing issue restrict to 0x300FFFFF////
+//// 4.0 Mar 26 2022, Dinesh A ////
+//// 1. Four core risc v integration ////
//////////////////////////////////////////////////////////////////////
//// ////
//// Copyright (C) 2000 Authors and OPENCORES.ORG ////
@@ -661,7 +663,7 @@
//------------------------------------------------------------------------------
// RISC V Core instance
//------------------------------------------------------------------------------
-ycr2_top_wb u_riscv_top (
+ycr4_top_wb u_riscv_top (
`ifdef USE_POWER_PINS
.vccd1 (vccd1 ),// User area 1 1.8V supply
.vssd1 (vssd1 ),// User area 1 digital ground
diff --git a/verilog/rtl/yifive/ycr2c b/verilog/rtl/yifive/ycr2c
deleted file mode 160000
index 4705007..0000000
--- a/verilog/rtl/yifive/ycr2c
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 47050074fbe8e3c452e8072ef40e4270488575e6
diff --git a/verilog/rtl/yifive/ycr4c b/verilog/rtl/yifive/ycr4c
new file mode 160000
index 0000000..6a0ca40
--- /dev/null
+++ b/verilog/rtl/yifive/ycr4c
@@ -0,0 +1 @@
+Subproject commit 6a0ca40c8876e96449d7ac889e3080ec3044f8e8