diff --git a/npc/Makefile b/npc/Makefile
index 03bc39b..9be8987 100644
--- a/npc/Makefile
+++ b/npc/Makefile
@@ -2,22 +2,24 @@ VSRC := $(wildcard vsrc/*.v)
 CPPSRC := $(addprefix $(PWD)/,$(wildcard csrc/*.cpp))
 PREFIX ?= build
 OBJDIR := $(PREFIX)/obj
+SUBMAKE := $(OBJDIR)/Vexample.mk
 VERILATOR_FLAGS := --cc --exe
 
-all: $(OBJDIR)
-	$(MAKE) -j -C $(OBJDIR) -f Vexample.mk Vexample
+all: sim
 
-sim: $(OBJDIR) $(VSRC) $(CPPSRC)
+sim: $(OBJDIR) $(VSRC) $(CPPSRC) $(SUBMAKE)
 	$(call git_commit, "sim RTL") # DO NOT REMOVE THIS LINE!!!
 	@echo "Running" $(OBJDIR)/Vexample "..."
 	@echo "================================"
-	@$(OBJDIR)/Vexample +tracing_off
+	@$(OBJDIR)/Vexample
 
 trace: VERILATOR_FLAGS += --trace
-trace: $(OBJDIR) $(VSRC) $(CPPSRC)
+trace: $(OBJDIR) $(VSRC) $(CPPSRC) $(SUBMAKE)
 	$(call git_commit, "trace RTL") # DO NOT REMOVE THIS LINE!!!
 	@$(OBJDIR)/Vexample
 	
+$(SUBMAKE): $(VSRC) $(CPPSRC)
+	verilator $(VERILATOR_FLAGS) --Mdir $(PWD)/$(OBJDIR) $(VSRC) $(CPPSRC)
 
 $(OBJDIR): $(VSRC) $(CPPSRC)
 	mkdir -p $(OBJDIR)