From 3b7e367af118db453455bc6014bb780cd255e864 Mon Sep 17 00:00:00 2001 From: tracer-ysyx Date: Fri, 5 Jan 2024 00:05:11 +0800 Subject: [PATCH] =?UTF-8?q?>=20git=5Fcommit.sh=20ysyx=5F22040000=20?= =?UTF-8?q?=E6=9D=8E=E5=BF=83=E6=9D=A8=20Linux=20calcite=206.1.69=20#1-Nix?= =?UTF-8?q?OS=20SMP=20PREEMPT=5FDYNAMIC=20Wed=20Dec=2020=2016:00:29=20UTC?= =?UTF-8?q?=202023=20x86=5F64=20GNU/Linux=20=2000:05:11=20=20up=20=20=208:?= =?UTF-8?q?51,=20=202=20users,=20=20load=20average:=200.57,=200.50,=200.41?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- npc/CMakeLists.txt | 29 +++++++++++++++++++++++++++++ npc/Makefile | 36 ++++++++++++++++++++---------------- npc/csrc_nvboard/main.cpp | 1 - npc/flake.lock | 23 ++++++++++++++++++++++- npc/flake.nix | 16 ++++++++++------ 5 files changed, 81 insertions(+), 24 deletions(-) create mode 100644 npc/CMakeLists.txt diff --git a/npc/CMakeLists.txt b/npc/CMakeLists.txt new file mode 100644 index 0000000..925ac2e --- /dev/null +++ b/npc/CMakeLists.txt @@ -0,0 +1,29 @@ +cmake_minimum_required(VERSION 3.10) + +project(NPC_xin) + +find_package(verilator) +if (NOT verilator_FOUND) + message(FATAL_ERROR "Verilator was not found. Either install it, or set the VERILATOR_ROOT environment variable") +endif() + +if(NOT DEFINED NVBOARD_HOME) + set(NVBOARD_HOME get_filename_component(real_path "../nvboard" REALPATH)) +endif() + +add_library(nvboard STATIC IMPORTED) +set_target_properties(bar PROPERTIES + IMPORTED_LOCATION "${NVBOARD_HOME}/build/nvboard.a" + INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/include/libbar" +) + +add_executable(Main csrc/main.cpp) +add_executable(Main_nvboard csrc_nvboard/main.cpp) + +verilate(Main + COVERAGE TRACE + SOURCES build/chisel/Main.sv build/chisel/RegisterFile.sv) + +verilate(Main_nvboard + COVERAGE TRACE + SOURCES build/chisel/Main.sv build/chisel/RegisterFile.sv) diff --git a/npc/Makefile b/npc/Makefile index 51d79ab..34e6e03 100644 --- a/npc/Makefile +++ b/npc/Makefile @@ -1,6 +1,5 @@ NVBOARD_HOME ?= $(abspath ../nvboard) PREFIX ?= build -OBJDIR = $(PREFIX)/obj CHISEL_VDIR := $(PREFIX)/chisel CPPSRCS := $(addprefix $(PWD)/,$(wildcard csrc/*.cpp)) @@ -12,7 +11,10 @@ CHISEL_TOP_PACKAGE := learning CHISEL_TOP_MODULE := Main CHISEL_TARGET := verilog -SUBMAKE = $(OBJDIR)/V$(CHISEL_TOP_MODULE).mk +SUBDIRS := obj nvobj +SUBDIRS := $(addprefix $(PREFIX),$(SUBDIRS)) + +SUBMAKE := $(OBJDIR)/V$(CHISEL_TOP_MODULE).mk # Pretty printing MAKEFLAGS += --no-print-directory @@ -24,21 +26,19 @@ endef all: sim-bin nvboard-bin -SRC_AUTO_BIND := $(abspath $(PREFIX)/auto_bind.cpp) -NXDC_FILES := $(abspath constr/top.nxdc) -$(SRC_AUTO_BIND): $(NXDC_FILES) - NVBOARD_HOME=$(NVBOARD_HOME) python3 $(NVBOARD_HOME)/scripts/auto_pin_bind.py $< $@ +$(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 $(OBJDIR) -f $(notdir $(SUBMAKE)) V$(CHISEL_TOP_MODULE) + $(MAKE) -s -C $(dir $@) -f $< $(notdir $@) $(SUBMAKE): $(CPPSRCS) $(OBJDIR) chisel-src - @$(call colorize,"VERILATOR",$^) + @$(call colorize,"VERILATOR",$@) verilator $(VERILATOR_FLAGS) $(addprefix -CFLAGS , $(CXXFLAGS)) $(addprefix -LDFLAGS , $(LDFLAGS)) --Mdir $(abspath $(OBJDIR)) $(CHISEL_VSRC) $(CPPSRCS) $(OBJDIR): - mkdir -p $(OBJDIR) + mkdir -p $@ $(CHISEL_VDIR)/filelist.f: $(wildcard src/main/scala/*.scala) @$(call colorize,"CIRCT",$^) @@ -52,14 +52,18 @@ compile_commands.json: clean .PHONY: clean nvboard sim nvboard-bin sim-bin git_trace_sim git_trace_nvboard -OBJDIR = $(PREFIX)/nvobj -SUBMAKE = $(OBJDIR)/V$(CHISEL_TOP_MODULE).mk -#his awkward way to find nvboard.a -CPPSRCS := $(addprefix $(PWD)/,$(wildcard csrc_nvboard/*.cpp)) $(SRC_AUTO_BIND) $(NVBOARD_HOME)/build/nvboard.a -CXXFLAGS += -I$(NVBOARD_HOME)/include $(shell sdl2-config --cflags) -nvboard-bin: $(CPPSRCS) $(SUBMAKE) $(SRC_AUTO_BIND) $(OBJDIR)/V$(CHISEL_TOP_MODULE) - @echo $(OBJDIR) +SRC_AUTO_BIND := $(abspath $(PREFIX)/auto_bind.cpp) +NXDC_FILES := $(abspath constr/top.nxdc) +$(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)/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) +nvboard-bin: $(CPPSRCS) $(SUBMAKE) $(SRC_AUTO_BIND) $(OBJDIR)/V$(CHISEL_TOP_MODULE) + @echo $(SUBMAKE) $(OBJDIR) sim-bin: VERILATOR_FLAGS += --trace sim-bin: $(CPPSRCS) $(OBJDIR)/V$(CHISEL_TOP_MODULE) diff --git a/npc/csrc_nvboard/main.cpp b/npc/csrc_nvboard/main.cpp index 88843e2..bbb9794 100644 --- a/npc/csrc_nvboard/main.cpp +++ b/npc/csrc_nvboard/main.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include #include diff --git a/npc/flake.lock b/npc/flake.lock index 9d7ed7c..768b480 100644 --- a/npc/flake.lock +++ b/npc/flake.lock @@ -34,10 +34,31 @@ "type": "github" } }, + "nur-xin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1704380403, + "narHash": "sha256-eElBXx8ocUCVg6LuHBUXSfCRKYRZfbwURIXcgL/ciJY=", + "ref": "refs/heads/master", + "rev": "2e7a57373f52999d579dcebb1202dc731d71ef35", + "revCount": 139, + "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 42348c3..8460afe 100644 --- a/npc/flake.nix +++ b/npc/flake.nix @@ -2,17 +2,23 @@ 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; [ gtkwave gdb - jq bear clang-tools rnix-lsp @@ -20,16 +26,14 @@ ]; nativeBuildInputs = with pkgs; [ + cmake verilator - gcc - python3 scala + nur.xin.nvboard self.packages.${system}.circt ]; buildInputs = with pkgs; [ - SDL2 - SDL2_image jre ];