Skip to content
Snippets Groups Projects
Commit e63f4b85 authored by dam1n19's avatar dam1n19
Browse files

SOC1-167: Started to decouple accelerator by moving filelist out of nanosoc...

SOC1-167: Started to decouple accelerator by moving filelist out of nanosoc repo and into project repo
parent 98bb40a7
No related branches found
No related tags found
No related merge requests found
# Exclude Simulation Files
/Cortex-M0/nanosoc/systems/mcu/rtl_sim*
/Cortex-M0/nanosoc/systems/mcu/testcodes/*/*
# Exclude Compiled Binaries
/Cortex-M0/nanosoc/software/*/*.elf
/Cortex-M0/nanosoc/software/*/*.hex
/Cortex-M0/nanosoc/software/*/*.lst
/Cortex-M0/nanosoc/software/*/*.o
/Cortex-M0/nanosoc/systems/mcu/testcodes/*.elf
/Cortex-M0/nanosoc/systems/mcu/testcodes/*.hex
/Cortex-M0/nanosoc/systems/mcu/testcodes/*.lst
/Cortex-M0/nanosoc/systems/mcu/testcodes/*.o
!/Cortex-M0/nanosoc/systems/mcu/rtl_sim/adp.cmd
!/Cortex-M0/nanosoc/systems/mcu/rtl_sim/makefile
!/Cortex-M0/nanosoc/systems/mcu/rtl_sim/*.py
......@@ -6,7 +6,7 @@
#
# David Flynn (d.w.flynn@soton.ac.uk)
#
# Copyright 2021-3, SoC Labs (www.soclabs.org)
# Copyright 2021-3, SoC Labs (www.soclabs.org)
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
......@@ -46,7 +46,7 @@ TEST_LIST = hello dhry sleep_demo interrupt_demo dualtimer_demo \
self_reset_demo watchdog_demo rtx_demo gpio_tests timer_tests \
uart_tests debug_tests default_slaves_tests dma_tests \
gpio_driver_tests uart_driver_tests timer_driver_tests apb_mux_tests \
memory_tests romtable_tests aes128_tests
memory_tests romtable_tests
# Default to DS-5 tool-chain
TOOL_CHAIN = ds5
......@@ -66,6 +66,7 @@ TOOL_CHAIN = ds5
# ../../../software/cmsis/Device/ARM/CMSDK_CM0plus/Include/CMSDK_CM0plus.h
#DF#CPU_PRODUCT = CORTEX_M0PLUS
CPU_PRODUCT = CORTEX_M0
DMA_PRODUCT = DMA_230
# Select Verilog Command File based on CPU type
ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
......@@ -76,7 +77,8 @@ endif
# Select Verilog Command File based on CPU type
ifeq ($(CPU_PRODUCT),CORTEX_M0)
# For Cortex-M0 product users
TBENCH_VC = ../verilog/tbench_M0.vc
TBENCH_VC += -f $(PROJECT_DIR)/flist/cortex-m0/cortex-m0_ip.flist
DEFINES_VC = +define+CORTEX_M0 +define+USE_TARMAC
endif
ifeq ($(CPU_PRODUCT),CORTEX_M0_DS)
......@@ -84,31 +86,49 @@ ifeq ($(CPU_PRODUCT),CORTEX_M0_DS)
TBENCH_VC = ../verilog/tbench_M0_DS.vc
endif
ifeq ($(DMA_PRODUCT),DMA_230)
# For Cortex-M0 product users
TBENCH_VC += -f $(PROJECT_DIR)/flist/dma-230/pl230_ip.flist
endif
ACCELERATOR_VC =
# ACCELERATOR_IP = SHA_2
# Simulator type (mti/vcs/nc)
SIMULATOR = mti
# ifeq ($(ACCELERATOR_IP),SHA_2)
# # For SHA2 Accelerator IP
# ACCELERATOR_VC = -sv -f $(SOC_TOP_DIR)/sha-2-accelerator/flist/sha-2-accelerator_src.flist
# ACCELERATOR_VC += -f $(SOC_TOP_DIR)/accelerator-wrapper/flist/accelerator-wrapper_src.flist
# endif
#ADP command File
# ADP_FILE ?= $(SOC_TOP_DIR)/accelerator-wrapper/simulate/stimulus/adp_hash_stim.cmd
ADP_FILE ?= $(NANOSOC_TECH_DIR)/Cortex-M0/nanosoc/systems/mcu/rtl_sim/
ADP_PATH := $(shell realpath $(ADP_FILE))
ADP_OPTIONS := -define ADP_FILE=\"$(ADP_PATH)\"
# Simulator type (mti/vcs/xm)
SIMULATOR = xm
# MTI option
#DF#MTI_OPTIONS = -novopt
MTI_OPTIONS = -suppress 2892
MTI_VC_OPTIONS = -f $(TBENCH_VC)
MTI_VC_OPTIONS = -f $(TBENCH_VC) $(ACCELERATOR_VC)
# VCS option
VCS_OPTIONS = +vcs+lic+wait +v2k +lint=all,noTMR,noVCDE -debug
VCS_SIM_OPTION = +vcs+lic+wait +vcs+flush+log -assert nopostproc
VCS_VC_OPTIONS = -f $(TBENCH_VC)
VCS_VC_OPTIONS = -f $(TBENCH_VC) $(ACCELERATOR_VC)
# NC verilog option
NCSIM_OPTIONS = -unbuffered -status -LICQUEUE -f ncsim.args -cdslib cds.lib -hdlvar hdl.var -NBASYNC
NC_VC_OPTIONS = -f $(TBENCH_VC)
# XM verilog option
XMSIM_OPTIONS = -unbuffered -status -LICQUEUE -f xmsim.args -cdslib cds.lib -hdlvar hdl.var -NBASYNC
XM_VC_OPTIONS = $(TBENCH_VC) $(ACCELERATOR_VC) $(ADP_OPTIONS)
# Boot Loader image
BOOTLOADER = bootloader
# Debug Tester image
DEBUGTESTER = debugtester
# Software make options
# - Pass onto the software makefile to define targetted CPU type
# You can append additional make options for testcode here
......@@ -164,32 +184,36 @@ all_vcs : compile_vcs bootrom debugtester
fi ; \
done
# ------- NC -----------
# ------- XM -----------
# Compile RTL
compile_nc :
ncprep +overwrite $(NC_VC_OPTIONS) +debug | tee compile_nc.log
ncvlog -work worklib -f ncvlog.args | tee -a compile_nc.log
ncelab -mess -f ncelab.args -access +r | tee -a compile_nc.log
compile_xm :
@echo ADP_FILE
@echo $(ADP_OPTIONS)
xmprep +overwrite $(DEFINES_VC) $(XM_VC_OPTIONS) +debug | tee compile_xm.log
xmvlog -work worklib -f xmvlog.args | tee -a compile_xm.log
xmelab -mess -f xmelab.args -access +r | tee -a compile_xm.log
# Note : If coverage is required, you can add -coverage all to ncelab
# Note : If coverage is required, you can add -coverage all to xmelab
# Run simulation in batch mode
run_nc : code
run_xm : code
@if [ ! -d logs ] ; then \
mkdir logs; \
fi
@echo run > run.tcl.tmp
@echo exit >> run.tcl.tmp
@mv run.tcl.tmp run.tcl
ncsim $(NCSIM_OPTIONS) -input run.tcl | tee logs/run_$(TESTNAME).log ;
xmsim $(XMSIM_OPTIONS) -input run.tcl | tee logs/run_$(TESTNAME).log ;
@make verify
# Run simulation in interactive mode
sim_nc : code
ncsim -gui $(NCSIM_OPTIONS)
sim_xm : code
xmsim -gui $(XMSIM_OPTIONS)
@make verify
# Compile RTL, and run all tests in batch mode
all_nc : compile_nc bootrom debugtester
all_xm : compile_xm bootrom debugtester
@if [ ! -d logs ] ; then \
mkdir logs; \
fi
......@@ -201,12 +225,13 @@ all_nc : compile_nc bootrom debugtester
echo $$thistest ; \
make testcode TESTNAME=$$thistest ;\
if [ -e image.hex ] ; then \
ncsim $(NCSIM_OPTIONS) -input run.tcl | tee logs/run_$$thistest.log ;\
xmsim $(XMSIM_OPTIONS) -input run.tcl | tee logs/run_$$thistest.log ;\
else \
echo Cannot read image.hex ;\
exit 1; \
fi ; \
done
@make verify
# ------- MTI -----------
......@@ -408,6 +433,10 @@ clean_code:
@(cd ../testcodes/$(BOOTLOADER) ; make clean; cd ../../rtl_sim; )
@(cd ../testcodes/$(TESTNAME) ; make clean; cd ../../rtl_sim; )
# ----- verification ------
verify:
@python3 $(PROJECT_DIR)/flow/adp_verify.py
# ------- clean -----------
# Remove RTL compile files, log files, software compile files
......@@ -430,15 +459,6 @@ clean : clean_all_code
@if [ -e ft1248_op.log ] ; then \
rm ft1248_op.log ; \
fi
@if [ -e ft1248_out.log ] ; then \
rm ft1248_out.log ; \
fi
@if [ -e dma230.log ] ; then \
rm dma230.log ; \
fi
@if [ -e aes128.log ] ; then \
rm aes128.log ; \
fi
@if [ -e uart.log ] ; then \
rm uart.log ; \
fi
......@@ -487,8 +507,8 @@ clean : clean_all_code
@if [ -e compile_vcs.log ] ; then \
rm compile_vcs.log ; \
fi
@if [ -e compile_nc.log ] ; then \
rm compile_nc.log ; \
@if [ -e compile_xm.log ] ; then \
rm compile_xm.log ; \
fi
@if [ -e transcript ] ; then \
rm transcript ; \
......@@ -505,9 +525,6 @@ clean : clean_all_code
@if [ -e inter.vpd ] ; then \
rm -rf inter.vpd ; \
fi
@if [ -e vsim.cmd ] ; then \
rm -rf vsim.cmd ; \
fi
@if [ -e quit.do ] ; then \
rm -rf quit.do ; \
fi
......@@ -526,35 +543,35 @@ clean : clean_all_code
@if [ -e hdl.var ] ; then \
rm -rf hdl.var ; \
fi
@if [ -e ncelab.args ] ; then \
rm -rf ncelab.args ; \
@if [ -e xmelab.args ] ; then \
rm -rf xmelab.args ; \
fi
@if [ -e ncvlog.args ] ; then \
rm -rf ncvlog.args ; \
@if [ -e xmvlog.args ] ; then \
rm -rf xmvlog.args ; \
fi
@if [ -e ncsim.args ] ; then \
rm -rf ncsim.args ; \
@if [ -e xmsim.args ] ; then \
rm -rf xmsim.args ; \
fi
@if [ -e ncprep.log ] ; then \
rm -rf ncprep.log ; \
@if [ -e xmprep.log ] ; then \
rm -rf xmprep.log ; \
fi
@if [ -e ncelab.log ] ; then \
rm -rf ncelab.log ; \
@if [ -e xmelab.log ] ; then \
rm -rf xmelab.log ; \
fi
@if [ -e ncvlog.log ] ; then \
rm -rf ncvlog.log ; \
@if [ -e xmvlog.log ] ; then \
rm -rf xmvlog.log ; \
fi
@if [ -e ncsim.log ] ; then \
rm -rf ncsim.log ; \
@if [ -e xmsim.log ] ; then \
rm -rf xmsim.log ; \
fi
@if [ -e run.tcl ] ; then \
rm -rf run.tcl ; \
fi
@if [ -e RUN_NC ] ; then \
rm -rf RUN_NC ; \
@if [ -e RUN_XM ] ; then \
rm -rf RUN_XM ; \
fi
@if [ -e ncsim.key ] ; then \
rm -rf ncsim.key ; \
@if [ -e xmsim.key ] ; then \
rm -rf xmsim.key ; \
fi
@if [ -e cds.lib ] ; then \
rm -rf cds.lib ; \
......
......@@ -6,7 +6,7 @@
//
// David Flynn (d.w.flynn@soton.ac.uk)
//
// Copyright 2021-3, SoC Labs (www.soclabs.org)
// Copyright 2021-3, SoC Labs (www.soclabs.org)
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
......@@ -833,36 +833,62 @@ localparam CORTEX_M0 = 1;
//
// ************************************************
wire aes128_ip_req;
wire aes128_op_req;
wire aes128_irq;
soclabs_ahb_aes128_ctrl u_exp_aes128 (
.ahb_hclk (HCLK),
.ahb_hresetn (HRESETn),
.ahb_hsel (HSEL_exp),
.ahb_haddr16 (HADDR_exp[15:0]),
.ahb_htrans (HTRANS_exp),
.ahb_hwrite (HWRITE_exp),
.ahb_hsize (HSIZE_exp),
// .ahb_hburst (HBURST_exp),
.ahb_hprot (HPROT_exp),
.ahb_hwdata (HWDATA_exp),
// .ahb_hmastlock (HMASTLOCK_exp),
.ahb_hready (HREADYMUX_exp),
.ahb_hrdata (HRDATA_exp),
.ahb_hreadyout (HREADYOUT_exp),
.ahb_hresp (HRESP_exp),
.drq_ipdma128 (aes128_ip_req),
.dlast_ipdma128 (1'b0),
.drq_opdma128 (aes128_op_req),
.dlast_opdma128 (1'b0),
.irq_key128 (exp_irq0),
.irq_ip128 (exp_irq1),
.irq_op128 (exp_irq2),
.irq_error (exp_irq3),
.irq_merged (aes128_irq)
);
wire exp_ip_req;
wire exp_op_req;
wire exp_irq;
//----------------------------------------
// Expansion Region "exp" instance
//----------------------------------------
nanosoc_exp #(.ADDRWIDTH(29)
) u_nanosoc_exp (
.HCLK (HCLK),
.HRESETn (HRESETn),
// Input slave port: 32 bit data bus interface
.HSELS (HSEL_exp),
.HADDRS (HADDR_exp[28:0]),
.HTRANSS (HTRANS_exp),
.HSIZES (HSIZE_exp),
.HPROTS (HPROTS_exp),
.HWRITES (HWRITE_exp),
.HREADYS (HREADYMUX_exp),
.HWDATAS (HWDATA_exp),
.HREADYOUTS (HREADYOUT_exp),
.HRESPS (HRESP_exp),
.HRDATAS (HRDATA_exp),
.ip_data_req (exp_ip_req),
.op_data_req (exp_op_req)
);
// soclabs_ahb_aes128_ctrl u_exp_aes128 (
// .ahb_hclk (HCLK),
// .ahb_hresetn (HRESETn),
// .ahb_hsel (HSEL_exp),
// .ahb_haddr16 (HADDR_exp[15:0]),
// .ahb_htrans (HTRANS_exp),
// .ahb_hwrite (HWRITE_exp),
// .ahb_hsize (HSIZE_exp),
// // .ahb_hburst (HBURST_exp),
// .ahb_hprot (HPROT_exp),
// .ahb_hwdata (HWDATA_exp),
// // .ahb_hmastlock (HMASTLOCK_exp),
// .ahb_hready (HREADYMUX_exp),
// .ahb_hrdata (HRDATA_exp),
// .ahb_hreadyout (HREADYOUT_exp),
// .ahb_hresp (HRESP_exp),
// .drq_ipdma128 (aes128_ip_req),
// .dlast_ipdma128 (1'b0),
// .drq_opdma128 (aes128_op_req),
// .dlast_opdma128 (1'b0),
// .irq_key128 (exp_irq0),
// .irq_ip128 (exp_irq1),
// .irq_op128 (exp_irq2),
// .irq_error (exp_irq3),
// .irq_merged (aes128_irq)
// );
// // Default slave
// cmsdk_ahb_default_slave u_ahb_exp (
......@@ -1260,8 +1286,8 @@ localparam AWRAM9 = ADDR_WIDTH_RAM; // Address width - to match RAM instance siz
wire [DMA_CHANNEL_NUM-1:0] dma230_req; // tie off signal.
wire [DMA_CHANNEL_NUM-1:0] dma230_tie0 = {DMA_CHANNEL_NUM{1'b0}};
assign dma230_req[0] = aes128_ip_req;
assign dma230_req[1] = aes128_op_req;
assign dma230_req[0] = exp_ip_req;
assign dma230_req[1] = exp_op_req;
// DMA done per channel
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment