From c3a56d32b1602b184e5cc27e0b93c8dd8045138f Mon Sep 17 00:00:00 2001 From: Michael Rogenmoser Date: Thu, 19 Nov 2020 17:24:48 +0100 Subject: [PATCH 1/6] add work directory symlink for compatibility to pulp built with bender --- rules/pulpos/default_rules.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/rules/pulpos/default_rules.mk b/rules/pulpos/default_rules.mk index 654fa33..27a3f03 100644 --- a/rules/pulpos/default_rules.mk +++ b/rules/pulpos/default_rules.mk @@ -221,8 +221,13 @@ $(TARGET_BUILD_DIR)/tcl_files: $(TARGET_BUILD_DIR)/waves: ln -s $(VSIM_PATH)/waves $@ +$(TARGET_BUILD_DIR)/work: + ln -s $(VSIM_PATH)/work $@ -run: $(TARGET_BUILD_DIR)/modelsim.ini $(TARGET_BUILD_DIR)/boot $(TARGET_BUILD_DIR)/tcl_files $(TARGET_BUILD_DIR)/waves +run: $(TARGET_BUILD_DIR)/modelsim.ini $(TARGET_BUILD_DIR)/boot $(TARGET_BUILD_DIR)/tcl_files $(TARGET_BUILD_DIR)/waves +ifdef BENDER + $(MAKE) $(TARGET_BUILD_DIR)/work +endif $(PULPRT_HOME)/bin/stim_utils.py --binary=$(TARGETS) --vectors=$(TARGET_BUILD_DIR)/vectors/stim.txt ifdef gui From 1b44f3beb9e402c394018dfa33dedfb1d6e0d2c4 Mon Sep 17 00:00:00 2001 From: Michael Rogenmoser Date: Fri, 20 Nov 2020 09:24:05 +0100 Subject: [PATCH 2/6] Cleanup symlink to remove dependency on `BENDER` variable --- rules/pulpos/default_rules.mk | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/rules/pulpos/default_rules.mk b/rules/pulpos/default_rules.mk index 27a3f03..d3b211d 100644 --- a/rules/pulpos/default_rules.mk +++ b/rules/pulpos/default_rules.mk @@ -224,10 +224,8 @@ $(TARGET_BUILD_DIR)/waves: $(TARGET_BUILD_DIR)/work: ln -s $(VSIM_PATH)/work $@ -run: $(TARGET_BUILD_DIR)/modelsim.ini $(TARGET_BUILD_DIR)/boot $(TARGET_BUILD_DIR)/tcl_files $(TARGET_BUILD_DIR)/waves -ifdef BENDER - $(MAKE) $(TARGET_BUILD_DIR)/work -endif + +run: $(TARGET_BUILD_DIR)/modelsim.ini $(TARGET_BUILD_DIR)/boot $(TARGET_BUILD_DIR)/tcl_files $(TARGET_BUILD_DIR)/waves $(TARGET_BUILD_DIR)/work $(PULPRT_HOME)/bin/stim_utils.py --binary=$(TARGETS) --vectors=$(TARGET_BUILD_DIR)/vectors/stim.txt ifdef gui From 9044e459302513ee171c61b9fbb6fbf932784b9e Mon Sep 17 00:00:00 2001 From: bluew Date: Wed, 16 Dec 2020 18:05:12 +0100 Subject: [PATCH 3/6] Revert "Merge pull request #11 from micprog/master" This reverts commit d898ae342442c68589cbcdae918cafa93600680f, reversing changes made to b8f77f397fb4e317d2c7e781b58d5c2fddee0737. The problem is that when you call `make run` twice, then the work target tries to re-do it since its a broken symlink. Furthermore, it should be anyway possible to get the bender flow working withouth symlinking the work directory. --- rules/pulpos/default_rules.mk | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/rules/pulpos/default_rules.mk b/rules/pulpos/default_rules.mk index d3b211d..654fa33 100644 --- a/rules/pulpos/default_rules.mk +++ b/rules/pulpos/default_rules.mk @@ -221,11 +221,8 @@ $(TARGET_BUILD_DIR)/tcl_files: $(TARGET_BUILD_DIR)/waves: ln -s $(VSIM_PATH)/waves $@ -$(TARGET_BUILD_DIR)/work: - ln -s $(VSIM_PATH)/work $@ - -run: $(TARGET_BUILD_DIR)/modelsim.ini $(TARGET_BUILD_DIR)/boot $(TARGET_BUILD_DIR)/tcl_files $(TARGET_BUILD_DIR)/waves $(TARGET_BUILD_DIR)/work +run: $(TARGET_BUILD_DIR)/modelsim.ini $(TARGET_BUILD_DIR)/boot $(TARGET_BUILD_DIR)/tcl_files $(TARGET_BUILD_DIR)/waves $(PULPRT_HOME)/bin/stim_utils.py --binary=$(TARGETS) --vectors=$(TARGET_BUILD_DIR)/vectors/stim.txt ifdef gui From d35b07640be6cdae14a2e98ef6166a6e212a108b Mon Sep 17 00:00:00 2001 From: bluew Date: Wed, 16 Dec 2020 18:09:51 +0100 Subject: [PATCH 4/6] rules: Mark clean and run target as PHONY --- rules/pulpos/default_rules.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rules/pulpos/default_rules.mk b/rules/pulpos/default_rules.mk index 654fa33..e764d1f 100644 --- a/rules/pulpos/default_rules.mk +++ b/rules/pulpos/default_rules.mk @@ -198,10 +198,12 @@ conf: all: $(TARGETS) +.PHONY:clean clean: @echo "RM $(TARGET_BUILD_DIR)" $(V)rm -rf $(TARGET_BUILD_DIR) +.PHONY: run ifeq '$(platform)' 'gvsoc' run: pulp-run --platform=$(platform) --config=$(PULPRUN_TARGET) --dir=$(TARGET_BUILD_DIR) --binary=$(TARGETS) $(runner_args) prepare run From 3b2079e1bc4203f382e03fb094443b797606abf0 Mon Sep 17 00:00:00 2001 From: bluew Date: Wed, 16 Dec 2020 18:11:04 +0100 Subject: [PATCH 5/6] rules: Generate fs and stdout dirs for run target When running a questa simulation for pulp/pulpissimo, the testbench tries to write some log files to stdout/ and fs/, which don't exist resulting in an ENOENT. --- rules/pulpos/default_rules.mk | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rules/pulpos/default_rules.mk b/rules/pulpos/default_rules.mk index e764d1f..873d1e6 100644 --- a/rules/pulpos/default_rules.mk +++ b/rules/pulpos/default_rules.mk @@ -223,8 +223,14 @@ $(TARGET_BUILD_DIR)/tcl_files: $(TARGET_BUILD_DIR)/waves: ln -s $(VSIM_PATH)/waves $@ +$(TARGET_BUILD_DIR)/stdout: + mkdir -p $@ -run: $(TARGET_BUILD_DIR)/modelsim.ini $(TARGET_BUILD_DIR)/boot $(TARGET_BUILD_DIR)/tcl_files $(TARGET_BUILD_DIR)/waves +$(TARGET_BUILD_DIR)/fs: + mkdir -p $@ + +run: $(TARGET_BUILD_DIR)/modelsim.ini $(TARGET_BUILD_DIR)/boot $(TARGET_BUILD_DIR)/tcl_files \ + $(TARGET_BUILD_DIR)/stdout $(TARGET_BUILD_DIR)/fs $(PULPRT_HOME)/bin/stim_utils.py --binary=$(TARGETS) --vectors=$(TARGET_BUILD_DIR)/vectors/stim.txt ifdef gui From 14e29fb34286ff6a6b92848c23246b38169f5c96 Mon Sep 17 00:00:00 2001 From: bluew Date: Wed, 16 Dec 2020 18:31:07 +0100 Subject: [PATCH 6/6] rules: Fail if VSIM_PATH is undefined You might think these are too many checks, but in fact each is needed to cover all possible edge cases. For example you could remove all the VSIM_PATH checks when creating the symlink and force the creation of symlink (-f flag), but this will fail for /boot, since on many machines /boot does actually exist. Removing VSIM_PATH from the run target can cause problems when calling run with a pre-compiled build directory etc. --- rules/pulpos/default_rules.mk | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/rules/pulpos/default_rules.mk b/rules/pulpos/default_rules.mk index 873d1e6..210a7f7 100644 --- a/rules/pulpos/default_rules.mk +++ b/rules/pulpos/default_rules.mk @@ -212,15 +212,31 @@ endif ifeq '$(platform)' 'rtl' $(TARGET_BUILD_DIR)/modelsim.ini: +ifndef VSIM_PATH + $(error "VSIM_PATH is undefined. Either call \ + 'source $$YOUR_HW_DIR/setup/vsim.sh' or set it manually.") +endif ln -s $(VSIM_PATH)/modelsim.ini $@ $(TARGET_BUILD_DIR)/boot: +ifndef VSIM_PATH + $(error "VSIM_PATH is undefined. Either call \ + 'source $$YOUR_HW_DIR/setup/vsim.sh' or set it manually.") +endif ln -s $(VSIM_PATH)/boot $@ $(TARGET_BUILD_DIR)/tcl_files: +ifndef VSIM_PATH + $(error "VSIM_PATH is undefined. Either call \ + 'source $$YOUR_HW_DIR/setup/vsim.sh' or set it manually.") +endif ln -s $(VSIM_PATH)/tcl_files $@ $(TARGET_BUILD_DIR)/waves: +ifndef VSIM_PATH + $(error "VSIM_PATH is undefined. Either call \ + 'source $$YOUR_HW_DIR/setup/vsim.sh' or set it manually.") +endif ln -s $(VSIM_PATH)/waves $@ $(TARGET_BUILD_DIR)/stdout: @@ -232,7 +248,10 @@ $(TARGET_BUILD_DIR)/fs: run: $(TARGET_BUILD_DIR)/modelsim.ini $(TARGET_BUILD_DIR)/boot $(TARGET_BUILD_DIR)/tcl_files \ $(TARGET_BUILD_DIR)/stdout $(TARGET_BUILD_DIR)/fs $(PULPRT_HOME)/bin/stim_utils.py --binary=$(TARGETS) --vectors=$(TARGET_BUILD_DIR)/vectors/stim.txt - +ifndef VSIM_PATH + $(error "VSIM_PATH is undefined. Either call \ + 'source $$YOUR_HW_DIR/setup/vsim.sh' or set it manually.") +endif ifdef gui cd $(TARGET_BUILD_DIR) && export VSIM_RUNNER_FLAGS="+ENTRY_POINT=0x1c008080 -gLOAD_L2=JTAG -dpicpppath /usr/bin/g++ -permit_unmatched_virtual_intf -gBAUDRATE=115200" && export VOPT_ACC_ENA="YES" && vsim -64 -do 'source $(VSIM_PATH)/tcl_files/config/run_and_exit.tcl' -do 'source $(VSIM_PATH)/tcl_files/run.tcl; ' else