Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,16 @@ slang:
stage: lint
script:
- make cp-slang-all
- (! grep -n "error:" lint/elab.log)
- (! grep -n "error:" util/lint/slang/elab.log)

spyglass:
extends: .base
stage: lint
script:
- make cp-sg-lint
- (! grep -n "Fatal" util/lint/spyglass/sg_projects/pms/pms_top/Design_Read/spyglass_reports/moresimple.rpt)
- (! grep -n "Fatal" util/lint/spyglass/sg_projects/pms/pms_top/lint/lint_rtl/spyglass_reports/moresimple.rpt)

artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA"
paths:
Expand Down
2 changes: 0 additions & 2 deletions Bender.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,6 @@ sources:
- hw/ips/tech_cells_generic/src/deprecated/pad_functional.sv
- hw/ips/tech_cells_generic/src/deprecated/pulp_buffer.sv
- hw/ips/tech_cells_generic/src/deprecated/pulp_pwr_cells.sv
- hw/ips/tech_cells_generic/src/tc_pwr.sv
- hw/ips/tech_cells_generic/test/tb_tc_sram.sv
- hw/ips/tech_cells_generic/src/deprecated/pulp_clock_gating_async.sv
- hw/ips/tech_cells_generic/src/deprecated/cluster_clk_cells.sv
- hw/ips/tech_cells_generic/src/deprecated/pulp_clk_cells.sv
Expand Down
62 changes: 36 additions & 26 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,13 @@ gen: update-serial-link
# Questa
$(BENDER) script flist-plus $(BENDER_SIM_TARGETS) $(BENDER_BASE_TARGETS) > sim/gen/sim.f
sed -i 's?$(ROOT_DIR)?\$$CPROOT?g' sim/gen/sim.f
sed -i '/axi_slice_dc\/.*axi_cdc\.sv/d' sim/gen/sim.f

# Verilator
$(BENDER) script verilator $(BENDER_BASE_TARGETS) > sim/gen/veri.f
sed -i 's?$(ROOT_DIR)?\$$ROOT?g' sim/gen/veri.f
sed -i '/axi_slice_dc\/.*axi_cdc\.sv/d' sim/gen/veri.f

# Vivado
$(BENDER) script vivado $(BENDER_BASE_TARGETS) --define PULP_FPGA_EMUL > fpga/gen/vivado.tcl
$(BENDER) script vivado $(BENDER_BASE_TARGETS) --define PULP_FPGA_EMUL --only-includes --no-simset > fpga/gen/vivado_includes.tcl
Expand All @@ -149,6 +153,7 @@ gen: update-serial-link
if [[ -d nonfree ]]; then \
$(BENDER) script flist-plus $(BENDER_SYNTH_TARGETS) $(BENDER_BASE_TARGETS) > nonfree/gen/synopsys.f; \
sed -i 's?$(ROOT_DIR)?\$$CPROOT?g' nonfree/gen/synopsys.f; \
sed -i '/axi_slice_dc\/.*axi_cdc\.sv/d' nonfree/gen/synopsys.f; \
fi

.PHONY: update-serial-link
Expand Down Expand Up @@ -269,26 +274,27 @@ vcs-simc:
# Slang
#
SLANG ?= oseda slang
SLANG_DIR ?= $(ROOT_DIR)/lint
SLANG_DIR ?= $(ROOT_DIR)/util/lint/slang
SLANG_PARSE_LOG ?= $(SLANG_DIR)/parse.log
SLANG_LINT_LOG ?= $(SLANG_DIR)/lint.log
SLANG_ELAB_LOG ?= $(SLANG_DIR)/elab.log
SV_FLIST ?= $(SLANG_DIR)/cp.flist
SV_FLIST ?= cp.flist

SLANG_FLAGS := -f cp.flist --timescale=1ns/1ns --top pms_top
SLANG_FLAGS := -f ../../../cp.flist --timescale=1ns/1ns --top pms_top
SLANG_FLAGS += -G SIM_STDOUT=0 -G USE_CLUSTER=1 -G CORE_TYPE=0 -G RISCY_FPU=1
SLANG_FLAGS += --relax-enum-conversions --allow-use-before-declare -Wno-error=duplicate-definition

BENDER_LINT_TARGETS += -t lint_pms

FORCE:

$(SV_FLIST): $(ROOT_DIR)/Bender.yml $(ROOT_DIR)/Bender.lock
mkdir -p lint
$(BENDER) script flist-plus $(BENDER_LINT_TARGETS) $(BENDER_SYNTH_TARGETS) $(BENDER_BASE_TARGETS) -D SYNTHESIS > $@
$(SV_FLIST): FORCE $(ROOT_DIR)/Bender.yml $(ROOT_DIR)/Bender.lock
$(BENDER) script flist-plus $(BENDER_BASE_TARGETS) -t synthesis -D SYNTHESIS > $@
sed -i 's?$(ROOT_DIR)?\$$CPROOT?g' $@
sed -i '/axi_slice_dc\/.*axi_cdc\.sv/d' $@

$(SLANG_PARSE_LOG): FORCE $(SV_FLIST)
mkdir -p $(SLANG_DIR)
@cd $(SLANG_DIR) && CPROOT=$(ROOT_DIR) $(SLANG) $(SLANG_FLAGS) --parse-only 2>&1 | tee $@
@echo "Slang parsing logged at: $@"

Expand Down Expand Up @@ -319,13 +325,17 @@ cp-slang-all: cp-slang-flist cp-slang-parse cp-slang-lint cp-slang-elaborate
# Spyglass
#
SNPS_SG ?= spyglass-2022.06
SG_DIR ?= $(ROOT_DIR)/util/lint/spyglass

# Remove axi_cdc.sv coming from axi_slice_dc directory to void duplicate module definitions
gen_sg_script:
mkdir -p spyglass/tmp
$(BENDER) script verilator $(BENDER_BASE_TARGETS) -D SYNTHESIS > lint/files
mkdir -p $(SG_DIR)
$(BENDER) script verilator $(BENDER_BASE_TARGETS) -D SYNTHESIS > $(SG_DIR)/cp_sg.f
sed -i 's?$(ROOT_DIR)?\$$CPROOT?g' $(SG_DIR)/cp_sg.f
sed -i '/axi_slice_dc\/.*axi_cdc\.sv/d' $(SG_DIR)/cp_sg.f

cp-sg-lint: gen_sg_script lint/func.sgdc lint/run_lint.tcl
cd lint; $(SNPS_SG) sg_shell -tcl run_lint.tcl
cp-sg-lint: gen_sg_script
cd $(SG_DIR) && CPROOT=$(ROOT_DIR) $(SNPS_SG) sg_shell -tcl run_sg_lint.tcl

# DPI libraries
#
Expand Down Expand Up @@ -465,124 +475,124 @@ $(TEST_DIR)/runtime-tests/riscv_tests_soc: $(TEST_DIR)/runtime-tests
test-rt-periph:
source env/env.sh; \
touch $(TEST_DIR)/runtime-tests/simplified-periph-runtime.xml; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 7200 --yaml --max-procs 2 \
-o simplified-periph-runtime.xml periph-tests.yaml

.PHONY: test-rt-ml
## Run only ml tests on pulp-runtime
test-rt-ml: $(TEST_DIR)/runtime-tests
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-ml.xml ml-tests.yaml

.PHONY: test-rt-riscv
## Run only riscv tests on pulp-runtime
test-rt-riscv: $(TEST_DIR)/runtime-tests $(TEST_DIR)/runtime-tests/riscv_tests_soc
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-riscv.xml riscv-tests.yaml

.PHONY: test-rt-seq-bare
## Run only sequential tests on pulp-runtime
test-rt-seq-bare: $(TEST_DIR)/runtime-tests
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-sequential.xml sequential-bare-tests.yaml

.PHONY: test-rt-par-bare
## Run only parallel tests on pulp-runtime
test-rt-par-bare: $(TEST_DIR)/runtime-tests
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-parallel.xml parallel-bare-tests.yaml

.PHONY: test-rt-control-pulp
## Run control pulp tests on pulp-runtime
test-rt-control-pulp: $(TEST_DIR)/control-pulp-tests
source env/env.sh; \
cd $(TEST_DIR)/control-pulp-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/control-pulp-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-control-pulp.xml control-pulp-tests.yaml

.PHONY: test-rt-tcdm
## Run tcdm tests on pulp-runtime
test-rt-tcdm: $(PULP_RUNTIME) $(TEST_DIR)/runtime-tests
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-tcdm.xml tcdm-tests.yaml

.PHONY: test-rt-soc_interconnect
## Run soc_interconnect tests on pulp-runtime
test-rt-soc-interconnect: $(PULP_RUNTIME) $(TEST_DIR)/runtime-tests
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-soc-interconnect.xml soc-interconnect-tests.yaml

.PHONY: test-rt-mchan
## Run mchan tests on pulp-runtime
test-rt-mchan: $(PULP_RUNTIME) $(TEST_DIR)/runtime-tests
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-mchan.xml mchan-tests.yaml

.PHONY: test-rt-idma
## Run idma tests on pulp-runtime
test-rt-idma: $(PULP_RUNTIME) $(TEST_DIR)/runtime-tests
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-mchan.xml idma-tests.yaml

.PHONY: test-rt-coremark
## Run coremark tests on pulp-runtime
test-rt-coremark: $(PULP_RUNTIME) $(TEST_DIR)/runtime-tests
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-coremark.xml coremark-tests.yaml

.PHONY: test-rt-perfcounters
## Run performance counters sample test on pulp-runtime
test-rt-perfcounters: $(TEST_DIR)/runtime-tests
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) --proc-verbose -v \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) --proc-verbose -v \
--report-junit -t 3600 --yaml --max-procs 2 \
-o runtime-perf-counters.xml perf-counters-tests.yaml

.PHONY: test-rx-mchan
## Run tests to measure clock cycles required to receive data from the outside of the PMS (with and without DMA)
test-rx-mchan:
source env/env.sh; \
cd $(TEST_DIR)/control-pulp-tests/sensors_transfers && $(BWRUNTEST) \
cd $(TEST_DIR)/control-pulp-tests/sensors_transfers && python $(BWRUNTEST) \
--proc-verbose -v --report-junit -t 9800 --yaml -o sensors-tests.xml sensors-tests.yaml

.PHONY: test-rx-idma
## Run tests to measure clock cycles required to receive data from the outside of the PMS (with and without DMA) in the cluster
test-rx-idma:
source env/env.sh; \
cd $(TEST_DIR)/control-pulp-tests/pvt_sensors_idma_cl && $(BWRUNTEST) \
cd $(TEST_DIR)/control-pulp-tests/pvt_sensors_idma_cl && python $(BWRUNTEST) \
--proc-verbose -v --report-junit -t 9800 --yaml -o sensors-tests.xml sensors-tests.yaml

.PHONY: test-avs
## Run tests with AVS bus
test-avs:
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests/peripherals/avs && $(BWRUNTEST) \
cd $(TEST_DIR)/runtime-tests/peripherals/avs && python $(BWRUNTEST) \
--proc-verbose -v --report-junit -t 9800 --yaml -o avs-tests.xml avs-tests.yaml

.PHONY: test-i2c-slv-irq
## Run tests with I2C slv with itnerrupt notification for end of transfer
test-i2c-slv-irq:
source env/env.sh; \
cd $(TEST_DIR)/runtime-tests && $(BWRUNTEST) \
cd $(TEST_DIR)/runtime-tests && python $(BWRUNTEST) \
--proc-verbose -v --report-junit -t 9800 --yaml -o i2c-slv-tests.xml i2c-slv-tests.yaml

.PHONY: test-axislv
Expand Down
Loading