diff --git a/npc/.envrc b/npc/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/npc/.envrc @@ -0,0 +1 @@ +use flake diff --git a/npc/.gitignore b/npc/.gitignore index 7040bf9..fd7efb6 100644 --- a/npc/.gitignore +++ b/npc/.gitignore @@ -1,12 +1,17 @@ -*.* -* -!*/ -!Makefile -!*.mk -!*.[cSh] -!*.v -!*.cc -!*.cpp -!.gitignore -!README.md build/ +**/project/ +**/target/ + +*.class +*.log +.cache/ +**/.bsp/ +.bloop/ +.metals/ + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +.vscode/ +.direnv/ +compile_commands.json diff --git a/npc/.scalafmt.conf b/npc/.scalafmt.conf new file mode 100644 index 0000000..ee7753a --- /dev/null +++ b/npc/.scalafmt.conf @@ -0,0 +1,2 @@ +version = "3.7.15" +runner.dialect = scala213 \ No newline at end of file diff --git a/npc/CMakeLists.txt b/npc/CMakeLists.txt new file mode 100644 index 0000000..94616a8 --- /dev/null +++ b/npc/CMakeLists.txt @@ -0,0 +1,72 @@ +cmake_minimum_required(VERSION 3.20) + +project(npc) +set (CMAKE_CXX_STANDARD 11) +cmake_policy(SET CMP0144 NEW) + +find_package(SDL2 REQUIRED) +find_package(SDL2_image REQUIRED) + +find_package(verilator REQUIRED) + +find_library(NVBOARD_LIBRARY NAMES nvboard) +find_path(NVBOARD_INCLUDE_DIR NAMES nvboard.h) + +set(TOPMODULE "Switch") +set(SCALA_CORE "${CMAKE_CURRENT_SOURCE_DIR}/core") +set(CHISEL_MODULE_CLASS "${CMAKE_PROJECT_NAME}.${TOPMODULE}") +file(GLOB_RECURSE SCALA_CORE_SOURCES "${SCALA_CORE}/src/main/scala/*.scala") +file(GLOB_RECURSE SCALA_CORE_TEST_SOURCES "${SCALA_CORE}/src/test/scala/*.scala") + +# Configure time verilog source generation for verilator +execute_process( + COMMAND sbt "runMain circt.stage.ChiselMain --target-dir ${CMAKE_CURRENT_BINARY_DIR}/vsrc --module ${CHISEL_MODULE_CLASS} --target verilog" + WORKING_DIRECTORY ${SCALA_CORE} +) + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vsrc/${TOPMODULE}.v + COMMAND sbt "runMain circt.stage.ChiselMain --target-dir ${CMAKE_CURRENT_BINARY_DIR}/vsrc --module ${CHISEL_MODULE_CLASS} --target verilog" + WORKING_DIRECTORY ${SCALA_CORE} + DEPENDS ${SCALA_CORE_SOURCES} +) + +add_custom_target( + ChiselBuild + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vsrc/${TOPMODULE}.v +) + +# -- Build NVBoard executable + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/auto_bind.cpp + COMMAND auto_pin_bind ${CMAKE_SOURCE_DIR}/constr/${TOPMODULE}.nxdc ${CMAKE_CURRENT_BINARY_DIR}/auto_bind.cpp + DEPENDS ${CMAKE_SOURCE_DIR}/constr/${TOPMODULE}.nxdc +) + +add_executable(V${TOPMODULE}_nvboard csrc_nvboard/main.cpp auto_bind.cpp) + +verilate(V${TOPMODULE}_nvboard TRACE COVERAGE THREADS + TOP_MODULE ${TOPMODULE} + PREFIX V${TOPMODULE} + SOURCES ${CMAKE_CURRENT_BINARY_DIR}/vsrc/${TOPMODULE}.v) + +add_dependencies(V${TOPMODULE}_nvboard ChiselBuild) +target_include_directories(V${TOPMODULE}_nvboard PRIVATE ${NVBOARD_INCLUDE_DIR} ${SDL2_INCLUDE_DIRS}) +target_link_libraries(V${TOPMODULE}_nvboard PRIVATE ${NVBOARD_LIBRARY} SDL2::SDL2 SDL2_image::SDL2_image) + +install(TARGETS V${TOPMODULE}_nvboard) + +# -- Build Verilator executable and add to test + +add_executable(V${TOPMODULE} csrc/main.cpp) + +verilate(V${TOPMODULE} TRACE COVERAGE THREADS + TOP_MODULE ${TOPMODULE} + PREFIX V${TOPMODULE} + SOURCES ${CMAKE_CURRENT_BINARY_DIR}/vsrc/${TOPMODULE}.v) + +add_dependencies(V${TOPMODULE} ChiselBuild) + +enable_testing() +add_test(NAME V${TOPMODULE} COMMAND V${TOPMODULE}) diff --git a/npc/Makefile b/npc/Makefile index ee02342..34e6e03 100644 --- a/npc/Makefile +++ b/npc/Makefile @@ -1,28 +1,56 @@ NVBOARD_HOME ?= $(abspath ../nvboard) PREFIX ?= build -OBJDIR := $(PREFIX)/obj -TARGET := $(OBJDIR)/Vexample +CHISEL_VDIR := $(PREFIX)/chisel -VSRC := $(wildcard vsrc/*.v) CPPSRCS := $(addprefix $(PWD)/,$(wildcard csrc/*.cpp)) -SUBMAKE := $(OBJDIR)/Vexample.mk VERILATOR_FLAGS := --cc --exe LDFLAGS += $(shell sdl2-config --libs) -lSDL2_image -all: sim-bin nvboard-bin - -$(OBJDIR)/Vexample: $(SUBMAKE) - $(MAKE) -C $(OBJDIR) -f $(notdir $(SUBMAKE)) Vexample +CHISEL_TOP_PACKAGE := learning +CHISEL_TOP_MODULE := Main +CHISEL_TARGET := verilog -$(SUBMAKE): $(VSRC) $(CPPSRCS) $(OBJDIR) - verilator $(VERILATOR_FLAGS) $(addprefix -CFLAGS , $(CXXFLAGS)) $(addprefix -LDFLAGS , $(LDFLAGS)) --Mdir $(abspath $(OBJDIR)) $(VSRC) $(CPPSRCS) +SUBDIRS := obj nvobj +SUBDIRS := $(addprefix $(PREFIX),$(SUBDIRS)) + +SUBMAKE := $(OBJDIR)/V$(CHISEL_TOP_MODULE).mk + +# Pretty printing +MAKEFLAGS += --no-print-directory +GREEN := \e[32m +NC := \e[0m +define colorize + printf '$(GREEN)'$(1)'$(NC) $(2)\n' +endef + +all: sim-bin nvboard-bin + +$(SUBDIRS):%: %/V$(CHISEL_TOP_MODULE).mk + verilator $(VERILATOR_FLAGS) $(addprefix -CFLAGS , $(CXXFLAGS)) $(addprefix -LDFLAGS , $(LDFLAGS)) --Mdir $(abspath $(OBJDIR)) $(CHISEL_VSRC) $(CPPSRCS) + +$(OBJDIR)/V$(CHISEL_TOP_MODULE): $(SUBMAKE) + @$(call colorize,"SUBMAKE",$^) + $(MAKE) -s -C $(dir $@) -f $< $(notdir $@) + +$(SUBMAKE): $(CPPSRCS) $(OBJDIR) chisel-src + @$(call colorize,"VERILATOR",$@) + verilator $(VERILATOR_FLAGS) $(addprefix -CFLAGS , $(CXXFLAGS)) $(addprefix -LDFLAGS , $(LDFLAGS)) --Mdir $(abspath $(OBJDIR)) $(CHISEL_VSRC) $(CPPSRCS) $(OBJDIR): - mkdir -p $(OBJDIR) + mkdir -p $@ -sim-bin: VERILATOR_FLAGS += --trace -sim-bin: $(VSRC) $(CPPSRCS) $(OBJDIR)/Vexample +$(CHISEL_VDIR)/filelist.f: $(wildcard src/main/scala/*.scala) + @$(call colorize,"CIRCT",$^) + sbt --error "runMain circt.stage.ChiselMain --module $(CHISEL_TOP_PACKAGE).$(CHISEL_TOP_MODULE) --split-verilog --target $(CHISEL_TARGET) -td $(CHISEL_VDIR)" + +compile_commands.json: clean + $(MAKE) $(CHISEL_VDIR)/filelist.f + $(RM) compile_commands.json + bear --append -- $(MAKE) nvboard-bin + bear --append -- $(MAKE) sim-bin + +.PHONY: clean nvboard sim nvboard-bin sim-bin git_trace_sim git_trace_nvboard SRC_AUTO_BIND := $(abspath $(PREFIX)/auto_bind.cpp) NXDC_FILES := $(abspath constr/top.nxdc) @@ -30,13 +58,19 @@ $(SRC_AUTO_BIND): $(NXDC_FILES) NVBOARD_HOME=$(NVBOARD_HOME) python3 $(NVBOARD_HOME)/scripts/auto_pin_bind.py $< $@ nvboard-bin: OBJDIR := $(PREFIX)/nvobj -nvboard-bin: SUBMAKE := $(OBJDIR)/Vexample.mk +nvboard-bin: SUBMAKE := $(OBJDIR)/V$(CHISEL_TOP_MODULE).mk # TODO: fix this awkward way to find nvboard.a nvboard-bin: CPPSRCS := $(addprefix $(PWD)/,$(wildcard csrc_nvboard/*.cpp)) $(SRC_AUTO_BIND) $(NVBOARD_HOME)/build/nvboard.a -nvboard-bin: CXXFLAGS += -I$(NVBOARD_HOME)/include $(shell sdl2-config --cflags) -g +nvboard-bin: CXXFLAGS += -I$(NVBOARD_HOME)/include $(shell sdl2-config --cflags) +nvboard-bin: $(CPPSRCS) $(SUBMAKE) $(SRC_AUTO_BIND) $(OBJDIR)/V$(CHISEL_TOP_MODULE) + @echo $(SUBMAKE) $(OBJDIR) -nvboard-bin: $(VSRC) $(CPPSRCS) $(SUBMAKE) $(SRC_AUTO_BIND) $(OBJDIR)/Vexample +sim-bin: VERILATOR_FLAGS += --trace +sim-bin: $(CPPSRCS) $(OBJDIR)/V$(CHISEL_TOP_MODULE) +chisel-src: $(CHISEL_VDIR)/filelist.f + $(eval CHISEL_VSRC := $(wildcard $(CHISEL_VDIR)/*.sv)) + @echo "GENERATED: $(CHISEL_VSRC)" ifneq (,$(wildcard ../Makefile)) include ../Makefile @@ -51,21 +85,18 @@ git_trace_sim: git_trace_nvboard: $(call git_commit, "nvboard") -.PHONY: clean nvboard sim compile_commands.json - +nvboard: OBJDIR := $(PREFIX)/nvobj nvboard: nvboard-bin git_trace_nvboard - @NVBOARD_HOME=$(NVBOARD_HOME) $(OBJDIR)/Vexample + @echo "Running NVBoard ..." + @echo "================================" + @NVBOARD_HOME=$(NVBOARD_HOME) $(OBJDIR)/V$(CHISEL_TOP_MODULE) sim: sim-bin git_trace_sim - @echo "Running" $(OBJDIR)/Vexample "..." + @echo "Running verilator sim ..." @echo "================================" - @$(OBJDIR)/Vexample - -compile_commands.json: clean - bear --output nvboard.json -- $(MAKE) nvboard-bin - bear --output all.json -- $(MAKE) sim-bin - jq -s ".[0] + .[1]" all.json nvboard.json > compile_commands.json - $(RM) all.json nvboard.json + @$(OBJDIR)/V$(CHISEL_TOP_MODULE) clean: $(RM) -r $(PREFIX) + +$(V).SILENT: diff --git a/npc/core/Makefile b/npc/core/Makefile new file mode 100644 index 0000000..2587370 --- /dev/null +++ b/npc/core/Makefile @@ -0,0 +1,622 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.27 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake + +# The command to remove a file. +RM = /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/xin/repo/ysyx-workbench/npc + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/xin/repo/ysyx-workbench/npc/core + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "No interactive CMake dialog available..." + /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /nix/store/4vq5ggsg1vmfs09r4sqbidmgvqlxrv14-cmake-3.27.8/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/xin/repo/ysyx-workbench/npc/core/CMakeFiles /home/xin/repo/ysyx-workbench/npc/core//CMakeFiles/progress.marks + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/xin/repo/ysyx-workbench/npc/core/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named ChiselBuild + +# Build rule for target. +ChiselBuild: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ChiselBuild +.PHONY : ChiselBuild + +# fast build rule for target. +ChiselBuild/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ChiselBuild.dir/build.make CMakeFiles/ChiselBuild.dir/build +.PHONY : ChiselBuild/fast + +#============================================================================= +# Target rules for targets named VMain + +# Build rule for target. +VMain: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 VMain +.PHONY : VMain + +# fast build rule for target. +VMain/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/build +.PHONY : VMain/fast + +CMakeFiles/VMain.dir/VMain.dir/VMain.o: CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain.o + +# target to build an object file +CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.o + +CMakeFiles/VMain.dir/VMain.dir/VMain.i: CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain.i + +# target to preprocess a source file +CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.i + +CMakeFiles/VMain.dir/VMain.dir/VMain.s: CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain.s + +# target to generate assembly for a file +CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain.cpp.s + +CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.o: CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.o + +# target to build an object file +CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.o + +CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.i: CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.i + +# target to preprocess a source file +CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.i + +CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.s: CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.s + +# target to generate assembly for a file +CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.cpp.s + +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.o: CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.o + +# target to build an object file +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.o + +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.i: CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.i + +# target to preprocess a source file +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.i + +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.s: CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.s + +# target to generate assembly for a file +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.cpp.s + +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.o: CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.o + +# target to build an object file +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.o + +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.i: CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.i + +# target to preprocess a source file +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.i + +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.s: CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.s + +# target to generate assembly for a file +CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.cpp.s + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.o: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.o + +# target to build an object file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.o + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.i: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.i + +# target to preprocess a source file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.i + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.s: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.s + +# target to generate assembly for a file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.cpp.s + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.o: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.o + +# target to build an object file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.o + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.i: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.i + +# target to preprocess a source file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.i + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.s: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.s + +# target to generate assembly for a file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.cpp.s + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.o: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.o + +# target to build an object file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.o + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.i: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.i + +# target to preprocess a source file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.i + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.s: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.s + +# target to generate assembly for a file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.cpp.s + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.o: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.o + +# target to build an object file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.o + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.i: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.i + +# target to preprocess a source file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.i + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.s: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.s + +# target to generate assembly for a file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.cpp.s + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.o: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.o + +# target to build an object file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.o +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.o + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.i: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.i + +# target to preprocess a source file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.i +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.i + +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.s: CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.s + +# target to generate assembly for a file +CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.s +.PHONY : CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.cpp.s + +auto_bind.o: auto_bind.cpp.o +.PHONY : auto_bind.o + +# target to build an object file +auto_bind.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/auto_bind.cpp.o +.PHONY : auto_bind.cpp.o + +auto_bind.i: auto_bind.cpp.i +.PHONY : auto_bind.i + +# target to preprocess a source file +auto_bind.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/auto_bind.cpp.i +.PHONY : auto_bind.cpp.i + +auto_bind.s: auto_bind.cpp.s +.PHONY : auto_bind.s + +# target to generate assembly for a file +auto_bind.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/auto_bind.cpp.s +.PHONY : auto_bind.cpp.s + +csrc_nvboard/main.o: csrc_nvboard/main.cpp.o +.PHONY : csrc_nvboard/main.o + +# target to build an object file +csrc_nvboard/main.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/csrc_nvboard/main.cpp.o +.PHONY : csrc_nvboard/main.cpp.o + +csrc_nvboard/main.i: csrc_nvboard/main.cpp.i +.PHONY : csrc_nvboard/main.i + +# target to preprocess a source file +csrc_nvboard/main.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/csrc_nvboard/main.cpp.i +.PHONY : csrc_nvboard/main.cpp.i + +csrc_nvboard/main.s: csrc_nvboard/main.cpp.s +.PHONY : csrc_nvboard/main.s + +# target to generate assembly for a file +csrc_nvboard/main.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/csrc_nvboard/main.cpp.s +.PHONY : csrc_nvboard/main.cpp.s + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.o: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.o +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.o + +# target to build an object file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.o +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.o + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.i: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.i +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.i + +# target to preprocess a source file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.i +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.i + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.s: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.s +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.s + +# target to generate assembly for a file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.s +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.cpp.s + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.o: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.o +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.o + +# target to build an object file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.o +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.o + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.i: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.i +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.i + +# target to preprocess a source file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.i +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.i + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.s: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.s +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.s + +# target to generate assembly for a file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.s +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.cpp.s + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.o: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.o +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.o + +# target to build an object file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.o +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.o + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.i: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.i +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.i + +# target to preprocess a source file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.i +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.i + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.s: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.s +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.s + +# target to generate assembly for a file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.s +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.cpp.s + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.o: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.o +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.o + +# target to build an object file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.o +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.o + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.i: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.i +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.i + +# target to preprocess a source file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.i +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.i + +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.s: nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.s +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.s + +# target to generate assembly for a file +nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/VMain.dir/build.make CMakeFiles/VMain.dir/nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.s +.PHONY : nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... ChiselBuild" + @echo "... VMain" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain.o" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain.i" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain.s" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.o" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.i" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain__Syms.s" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.o" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.i" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0.s" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.o" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.i" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain__Trace__0__Slow.s" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.o" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.i" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0.s" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.o" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.i" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_h3502859f__0__Slow.s" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.o" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.i" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0.s" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.o" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.i" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__DepSet_hda8ec1d0__0__Slow.s" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.o" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.i" + @echo "... CMakeFiles/VMain.dir/VMain.dir/VMain___024root__Slow.s" + @echo "... auto_bind.o" + @echo "... auto_bind.i" + @echo "... auto_bind.s" + @echo "... csrc_nvboard/main.o" + @echo "... csrc_nvboard/main.i" + @echo "... csrc_nvboard/main.s" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.o" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.i" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated.s" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.o" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.i" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_cov.s" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.o" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.i" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_threads.s" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.o" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.i" + @echo "... nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator/include/verilated_vcd_c.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/npc/csrc/main.cpp b/npc/csrc/main.cpp index f39a65b..9a3f262 100644 --- a/npc/csrc/main.cpp +++ b/npc/csrc/main.cpp @@ -3,14 +3,14 @@ #include #include #include -#include +#include const int MAX_SIM_TIME=100; int main(int argc, char **argv, char **env) { int sim_time = 0; Verilated::commandArgs(argc, argv); - Vexample *top = new Vexample; + VSwitch *top = new VSwitch; Verilated::traceEverOn(true); VerilatedVcdC *m_trace = new VerilatedVcdC; @@ -19,11 +19,11 @@ int main(int argc, char **argv, char **env) { m_trace->open("waveform.vcd"); #endif for (sim_time = 0; sim_time < MAX_SIM_TIME; sim_time++) { - CData sw = rand() & 0b11; - top->sw = sw; + top->io_sw_0 = rand() % 2; + top->io_sw_1 = rand() % 2; top->eval(); - printf("sw0 = %d, sw1 = %d, ledr = %d\n", sw & 0b1, sw >> 1, top->ledr); - assert(top->ledr == ((sw >> 1) ^ (sw & 0b1)) ); + printf("sw0 = %d, sw1 = %d, ledr = %d\n", top->io_sw_0, top->io_sw_1, top->io_out); + assert(top->io_out == (top->io_sw_0 ^ top->io_sw_1)); #ifdef VERILATOR_TRACE m_trace->dump(sim_time); #endif diff --git a/npc/csrc_nvboard/main.cpp b/npc/csrc_nvboard/main.cpp index 398f564..401de4b 100644 --- a/npc/csrc_nvboard/main.cpp +++ b/npc/csrc_nvboard/main.cpp @@ -3,15 +3,15 @@ #include #include #include -#include #include +#include const int MAX_SIM_TIME=100; -void nvboard_bind_all_pins(Vexample* top); +void nvboard_bind_all_pins(VSwitch* top); int main(int argc, char **argv, char **env) { - Vexample *top = new Vexample; + VSwitch *top = new VSwitch; nvboard_bind_all_pins(top); nvboard_init(); diff --git a/npc/flake.lock b/npc/flake.lock index 9d7ed7c..8763898 100644 --- a/npc/flake.lock +++ b/npc/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1703013332, - "narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=", + "lastModified": 1704194953, + "narHash": "sha256-RtDKd8Mynhe5CFnVT8s0/0yqtWFMM9LmCzXv/YKxnq4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6", + "rev": "bd645e8668ec6612439a9ee7e71f7eac4099d4f6", "type": "github" }, "original": { @@ -34,10 +34,31 @@ "type": "github" } }, + "nur-xin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1704450168, + "narHash": "sha256-zOLL35LX83Of64quCyxpyP8rTSO/tgrfHNm52tFo6VU=", + "ref": "refs/heads/master", + "rev": "beda2a57d946f392d958755c7bb03ac092a20f42", + "revCount": 140, + "type": "git", + "url": "https://git.xinyang.life/xin/nur.git" + }, + "original": { + "type": "git", + "url": "https://git.xinyang.life/xin/nur.git" + } + }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "nur-xin": "nur-xin" } }, "systems": { diff --git a/npc/flake.nix b/npc/flake.nix index 2979d67..24e3790 100644 --- a/npc/flake.nix +++ b/npc/flake.nix @@ -2,37 +2,107 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; + nur-xin = { + url = "git+https://git.xinyang.life/xin/nur.git"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = { self, ... }@inputs: with inputs; flake-utils.lib.eachDefaultSystem (system: - let pkgs = nixpkgs.legacyPackages.${system}; in + let + pkgs = nixpkgs.legacyPackages.${system} // + { nur.xin = nur-xin.legacyPackages.${system}; }; + in { - devShells.default = pkgs.mkShell { - packages = with pkgs; [ - verilator - gtkwave - gcc - gdb - jq - bear + devShells.default = with pkgs; mkShell { + packages = [ clang-tools rnix-lsp + gdb + jre ]; - nativeBuildInputs = with pkgs; [ - python3 - ]; - - buildInputs = with pkgs; [ - SDL2 - SDL2_image - ]; - - shellHook = '' - export NEMU_HOME=/home/xin/repo/ysyx-workbench/nemu - ''; + inputsFrom = [ self.packages.${system}.default ]; }; + packages.default = with pkgs; clangStdenv.mkDerivation { + name = "npc"; + version = "0.0.1"; + src = ./.; + nativeBuildInputs = [ + cmake + sbt + nur.xin.nvboard + self.packages.${system}.circt + ]; + buildInputs = [ + verilator + nur.xin.nvboard + ]; + + NEMU_HOME="/home/xin/repo/ysyx-workbench/nemu"; + }; + + # This version (1.43.0) of circt does not exist in nixpkgs + # and Chisel 5.1.0 specifically build against it, so here we are. + # Ref: https://github.com/NixOS/nixpkgs/blob/b6465c8/pkgs/development/compilers/circt/default.nix + packages.circt = + with pkgs; + let + pythonEnv = python3.withPackages (ps: [ ps.psutil ]); + in + stdenv.mkDerivation rec { + pname = "circt"; + version = "1.43.0"; + src = fetchFromGitHub { + owner = "llvm"; + repo = "circt"; + rev = "firtool-${version}"; + sha256 = "sha256-RkjigboswLkLgLkgOGahQLIygCkC3Q9rbVw3LqIzREY="; + fetchSubmodules = true; + }; + + requiredSystemFeatures = [ "big-parallel" ]; + + nativeBuildInputs = [ cmake ninja git pythonEnv ]; + + cmakeDir = "../llvm/llvm"; + cmakeFlags = [ + "-DLLVM_ENABLE_BINDINGS=OFF" + "-DLLVM_ENABLE_OCAMLDOC=OFF" + "-DLLVM_BUILD_EXAMPLES=OFF" + "-DLLVM_OPTIMIZED_TABLEGEN=ON" + "-DLLVM_ENABLE_PROJECTS=mlir" + "-DLLVM_EXTERNAL_PROJECTS=circt" + "-DLLVM_EXTERNAL_CIRCT_SOURCE_DIR=.." + "-DCIRCT_LLHD_SIM_ENABLED=OFF" + ]; + + LIT_FILTER_OUT = if stdenv.cc.isClang then "CIRCT :: Target/ExportSystemC/.*\.mlir" else null; + + preConfigure = '' + find ./test -name '*.mlir' -exec sed -i 's|/usr/bin/env|${coreutils}/bin/env|g' {} \; + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + mv bin/{{fir,hls}tool,circt-{as,dis,lsp-server,opt,reduce,translate}} $out/bin + runHook postInstall + ''; + + doCheck = true; + checkTarget = "check-circt check-circt-integration"; + + meta = { + description = "Circuit IR compilers and tools"; + homepage = "https://circt.org/"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ sharzy ]; + platforms = lib.platforms.all; + }; + }; } ); } + diff --git a/npc/vsrc/example.v b/npc/vsrc/example.v deleted file mode 100644 index 4d290d4..0000000 --- a/npc/vsrc/example.v +++ /dev/null @@ -1,6 +0,0 @@ -module top( - input [1:0] sw, - output ledr -); - assign ledr = sw[1] ^ sw[0]; -endmodule \ No newline at end of file