diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index fb83ad00..6013d7d4 100755 --- a/.github/scripts/defaults.sh +++ b/.github/scripts/defaults.sh @@ -14,9 +14,6 @@ REMOTE_CHIPYARD_DIR=$GITHUB_WORKSPACE REMOTE_SIM_DIR=$REMOTE_CHIPYARD_DIR/sims/verilator REMOTE_FIRESIM_DIR=$REMOTE_CHIPYARD_DIR/sims/firesim/sim REMOTE_FPGA_DIR=$REMOTE_CHIPYARD_DIR/fpga -REMOTE_JAVA_OPTS="-Xmx10G -Xss8M" -# Disable the supershell to greatly improve the readability of SBT output when captured by Circle CI -REMOTE_SBT_OPTS="-Dsbt.ivy.home=$REMOTE_WORK_DIR/.ivy2 -Dsbt.supershell=false -Dsbt.global.base=$REMOTE_WORK_DIR/.sbt -Dsbt.boot.directory=$REMOTE_WORK_DIR/.sbt/boot" # local variables (aka within the docker container) LOCAL_CHIPYARD_DIR=$GITHUB_WORKSPACE @@ -26,7 +23,8 @@ LOCAL_FIRESIM_DIR=$LOCAL_CHIPYARD_DIR/sims/firesim/sim # CI uses temp directories with very long names # explicitly force socket creation to use /tmp to avoid name length errors # https://github.com/sbt/sbt/pull/6887 -JAVA_TMP_DIR=$(mktemp -d -t ci-cy-XXXXXXXX) +REMOTE_JAVA_TMP_DIR=$(mktemp -d -t ci-cy-XXXXXXXX) +REMOTE_COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache # key value store to get the build groups declare -A grouping diff --git a/.github/scripts/remote-do-rtl-build.sh b/.github/scripts/remote-do-rtl-build.sh index b5755d01..445c1c31 100755 --- a/.github/scripts/remote-do-rtl-build.sh +++ b/.github/scripts/remote-do-rtl-build.sh @@ -52,6 +52,8 @@ read -a keys <<< ${grouping[$1]} # need to set the PATH to use the new verilator (with the new verilator root) for key in "${keys[@]}" do - export COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache - make -j$REMOTE_MAKE_NPROC -C $REMOTE_MAKE_DIR FIRRTL_LOGLEVEL=info JAVA_TMP_DIR=$JAVA_TMP_DIR SBT_OPTS="$REMOTE_SBT_OPTS" ${mapping[$key]} + export COURSIER_CACHE=$REMOTE_COURSIER_CACHE + export JVM_MEMORY=10G + export JAVA_TMP_DIR=$REMOTE_JAVA_TMP_DIR + make -j$REMOTE_MAKE_NPROC -C $REMOTE_MAKE_DIR FIRRTL_LOGLEVEL=info ${mapping[$key]} done diff --git a/.github/scripts/remote-run-firesim-scala-tests.sh b/.github/scripts/remote-run-firesim-scala-tests.sh index 960d1706..70a41e27 100755 --- a/.github/scripts/remote-run-firesim-scala-tests.sh +++ b/.github/scripts/remote-run-firesim-scala-tests.sh @@ -15,6 +15,7 @@ cd $REMOTE_CHIPYARD_DIR # Run Firesim Scala Tests export FIRESIM_ENV_SOURCED=1; -export COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache -JAVA_TOOL_OPTIONS="$REMOTE_JAVA_OPTS -Djava.io.tmpdir=$(mktemp -d -t cy-fsim-XXXXXXXX)" -make -C $REMOTE_FIRESIM_DIR JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS" SBT_OPTS="$REMOTE_SBT_OPTS" TARGET_SBT_PROJECT="{file:$REMOTE_CHIPYARD_DIR}firechip" testOnly ${mapping[$1]} +export COURSIER_CACHE=$REMOTE_COURSIER_CACHE +export JVM_MEMORY=10G +export JAVA_TMP_DIR=$REMOTE_JAVA_TMP_DIR +make -C $REMOTE_FIRESIM_DIR TARGET_SBT_PROJECT="{file:$REMOTE_CHIPYARD_DIR}firechip" testOnly ${mapping[$1]} diff --git a/.github/workflows/chipyard-full-flow.yml b/.github/workflows/chipyard-full-flow.yml index 23bc7152..7fe09a23 100644 --- a/.github/workflows/chipyard-full-flow.yml +++ b/.github/workflows/chipyard-full-flow.yml @@ -78,6 +78,7 @@ jobs: run: | cd ${{ env.REMOTE_WORK_DIR }} eval "$(conda shell.bash hook)" + mkdir ${{ env.JAVA_TMP_DIR }} export MAKEFLAGS="-j32" ./build-setup.sh -f diff --git a/.gitignore b/.gitignore index d3cf251d..9c73c6e1 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,5 @@ first-clone-setup-fast-log project/.bloop/ project/metals.sbt project/project/ +.ivy2 +.sbt diff --git a/common.mk b/common.mk index 3d598552..2f67b8d8 100644 --- a/common.mk +++ b/common.mk @@ -18,7 +18,7 @@ HELP_COMPILATION_VARIABLES += \ " EXTRA_SIM_REQS = additional make requirements to build the simulator" \ " ENABLE_SBT_THIN_CLIENT = if set, use sbt's experimental thin client (works best when overridding SBT_BIN with the mainline sbt script)" \ " ENABLE_CUSTOM_FIRRTL_PASS = if set, enable custom firrtl passes (SFC lowers to LowFIRRTL & MFC converts to Verilog)" \ -" ENABLE_VLSI_FLOW = if set, add compilation flags to enable the vlsi flow for hammer \ +" ENABLE_YOSYS_FLOW = if set, add compilation flags to enable the vlsi flow for yosys(tutorial flow) \ " EXTRA_CHISEL_OPTIONS = additional options to pass to the Chisel compiler" \ " EXTRA_FIRRTL_OPTIONS = additional options to pass to the FIRRTL compiler" @@ -27,7 +27,7 @@ EXTRA_SIM_CXXFLAGS ?= EXTRA_SIM_LDFLAGS ?= EXTRA_SIM_SOURCES ?= EXTRA_SIM_REQS ?= -ENABLE_CUSTOM_FIRRTL_PASS += $(ENABLE_VLSI_FLOW) +ENABLE_CUSTOM_FIRRTL_PASS += $(ENABLE_YOSYS_FLOW) #---------------------------------------------------------------------------- HELP_SIMULATION_VARIABLES += \ @@ -182,7 +182,7 @@ else $(eval SFC_LEVEL := low) $(eval EXTRA_FIRRTL_OPTIONS += $(SFC_REPL_SEQ_MEM)) endif -ifeq (,$(ENABLE_VLSI_FLOW)) +ifeq (,$(ENABLE_YOSYS_FLOW)) $(eval MFC_LOWERING_OPTIONS = $(MFC_BASE_LOWERING_OPTIONS)) else $(eval MFC_LOWERING_OPTIONS = $(MFC_BASE_LOWERING_OPTIONS),disallowPackedArrays) @@ -406,10 +406,11 @@ endef CONFIG_FRAG_LEVELS ?= 3 .PHONY: find-config-fragments +find-config-fragments: private IN_F := $(shell mktemp -d -t cy-XXXXXXXX)/scala_files.f find-config-fragments: $(SCALA_SOURCES) - rm -rf /tmp/scala_files.f - @$(foreach file,$(SCALA_SOURCES),echo $(file) >> /tmp/scala_files.f${\n}) - $(base_dir)/scripts/config-finder.py -l $(CONFIG_FRAG_LEVELS) /tmp/scala_files.f + @$(foreach file,$(SCALA_SOURCES),echo $(file) >> $(IN_F)${\n}) + $(base_dir)/scripts/config-finder.py -l $(CONFIG_FRAG_LEVELS) $(IN_F) + @rm -rf $(dir $(IN_F)) .PHONY: help help: diff --git a/sims/firesim b/sims/firesim index 9d3462ed..69e428f0 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit 9d3462ed1357cc198be8485ae57635b9651999d5 +Subproject commit 69e428f01029dbdb21f23288f74bd37f0f759a60 diff --git a/variables.mk b/variables.mk index a89d23a0..28727a26 100644 --- a/variables.mk +++ b/variables.mk @@ -205,7 +205,7 @@ sim_common_files ?= $(build_dir)/sim_files.common.f ######################################################################################### JAVA_HEAP_SIZE ?= 8G JAVA_TMP_DIR ?= $(base_dir)/.java_tmp -export JAVA_TOOL_OPTIONS ?= -Xmx$(JAVA_HEAP_SIZE) -Xss8M -Djava.io.tmpdir=$(JAVA_TMP_DIR) +export JAVA_TOOL_OPTIONS ?= -Xmx$(JAVA_HEAP_SIZE) -Xss8M -Dsbt.supershell=false -Djava.io.tmpdir=$(JAVA_TMP_DIR) ######################################################################################### # default sbt launch command @@ -222,7 +222,8 @@ SBT_CLIENT_FLAG = --client endif # passes $(JAVA_TOOL_OPTIONS) from env to java -SBT_BIN ?= java -jar $(ROCKETCHIP_DIR)/sbt-launch.jar +export SBT_OPTS ?= -Dsbt.ivy.home=$(base_dir)/.ivy2 -Dsbt.global.base=$(base_dir)/.sbt -Dsbt.boot.directory=$(base_dir)/.sbt/boot/ +SBT_BIN ?= java -jar $(ROCKETCHIP_DIR)/sbt-launch.jar $(SBT_OPTS) SBT = $(SBT_BIN) $(SBT_CLIENT_FLAG) SBT_NON_THIN = $(subst $(SBT_CLIENT_FLAG),,$(SBT)) diff --git a/vlsi/Makefile b/vlsi/Makefile index f54067e3..ab8438d5 100644 --- a/vlsi/Makefile +++ b/vlsi/Makefile @@ -51,8 +51,6 @@ else OBJ_DIR ?= $(vlsi_dir)/$(VLSI_OBJ_DIR)/$(long_name)-$(VLSI_TOP) endif -ENABLE_VLSI_FLOW ?= 1 - ######################################################################################### # general rules #########################################################################################