diff --git a/npc/Makefile b/npc/Makefile
index b1ea816..e24e339 100644
--- a/npc/Makefile
+++ b/npc/Makefile
@@ -1,6 +1,6 @@
 VSRC := $(wildcard vsrc/*.v)
-CPPSRC := $(wildcard csrc/*.cpp)
-PREFIX ?= .
+CPPSRC := $(addprefix $(PWD)/,$(wildcard csrc/*.cpp))
+PREFIX ?= build
 OBJDIR := $(PREFIX)/obj
 
 all: $(OBJDIR)
@@ -8,7 +8,7 @@ all: $(OBJDIR)
 
 sim: all
 	$(call git_commit, "sim RTL") # DO NOT REMOVE THIS LINE!!!
-	@echo "Write this Makefile by your self."
+	@echo "Running" $(OBJDIR)/Vexample
 	$(OBJDIR)/Vexample
 	
 
diff --git a/npc/obj/Vexample.cpp b/npc/obj/Vexample.cpp
deleted file mode 100644
index e7c7861..0000000
--- a/npc/obj/Vexample.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Model implementation (design independent parts)
-
-#include "Vexample__pch.h"
-
-//============================================================
-// Constructors
-
-Vexample::Vexample(VerilatedContext* _vcontextp__, const char* _vcname__)
-    : VerilatedModel{*_vcontextp__}
-    , vlSymsp{new Vexample__Syms(contextp(), _vcname__, this)}
-    , a{vlSymsp->TOP.a}
-    , b{vlSymsp->TOP.b}
-    , f{vlSymsp->TOP.f}
-    , rootp{&(vlSymsp->TOP)}
-{
-    // Register model with the context
-    contextp()->addModel(this);
-}
-
-Vexample::Vexample(const char* _vcname__)
-    : Vexample(Verilated::threadContextp(), _vcname__)
-{
-}
-
-//============================================================
-// Destructor
-
-Vexample::~Vexample() {
-    delete vlSymsp;
-}
-
-//============================================================
-// Evaluation function
-
-#ifdef VL_DEBUG
-void Vexample___024root___eval_debug_assertions(Vexample___024root* vlSelf);
-#endif  // VL_DEBUG
-void Vexample___024root___eval_static(Vexample___024root* vlSelf);
-void Vexample___024root___eval_initial(Vexample___024root* vlSelf);
-void Vexample___024root___eval_settle(Vexample___024root* vlSelf);
-void Vexample___024root___eval(Vexample___024root* vlSelf);
-
-void Vexample::eval_step() {
-    VL_DEBUG_IF(VL_DBG_MSGF("+++++TOP Evaluate Vexample::eval_step\n"); );
-#ifdef VL_DEBUG
-    // Debug assertions
-    Vexample___024root___eval_debug_assertions(&(vlSymsp->TOP));
-#endif  // VL_DEBUG
-    vlSymsp->__Vm_deleter.deleteAll();
-    if (VL_UNLIKELY(!vlSymsp->__Vm_didInit)) {
-        vlSymsp->__Vm_didInit = true;
-        VL_DEBUG_IF(VL_DBG_MSGF("+ Initial\n"););
-        Vexample___024root___eval_static(&(vlSymsp->TOP));
-        Vexample___024root___eval_initial(&(vlSymsp->TOP));
-        Vexample___024root___eval_settle(&(vlSymsp->TOP));
-    }
-    VL_DEBUG_IF(VL_DBG_MSGF("+ Eval\n"););
-    Vexample___024root___eval(&(vlSymsp->TOP));
-    // Evaluate cleanup
-    Verilated::endOfEval(vlSymsp->__Vm_evalMsgQp);
-}
-
-//============================================================
-// Events and timing
-bool Vexample::eventsPending() { return false; }
-
-uint64_t Vexample::nextTimeSlot() {
-    VL_FATAL_MT(__FILE__, __LINE__, "", "%Error: No delays in the design");
-    return 0;
-}
-
-//============================================================
-// Utilities
-
-const char* Vexample::name() const {
-    return vlSymsp->name();
-}
-
-//============================================================
-// Invoke final blocks
-
-void Vexample___024root___eval_final(Vexample___024root* vlSelf);
-
-VL_ATTR_COLD void Vexample::final() {
-    Vexample___024root___eval_final(&(vlSymsp->TOP));
-}
-
-//============================================================
-// Implementations of abstract methods from VerilatedModel
-
-const char* Vexample::hierName() const { return vlSymsp->name(); }
-const char* Vexample::modelName() const { return "Vexample"; }
-unsigned Vexample::threads() const { return 1; }
-void Vexample::prepareClone() const { contextp()->prepareClone(); }
-void Vexample::atClone() const {
-    contextp()->threadPoolpOnClone();
-}
-
-//============================================================
-// Trace configuration
-
-VL_ATTR_COLD void Vexample::trace(VerilatedVcdC* tfp, int levels, int options) {
-    vl_fatal(__FILE__, __LINE__, __FILE__,"'Vexample::trace()' called on model that was Verilated without --trace option");
-}
diff --git a/npc/obj/Vexample.h b/npc/obj/Vexample.h
deleted file mode 100644
index b2bc0b5..0000000
--- a/npc/obj/Vexample.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Primary model header
-//
-// This header should be included by all source files instantiating the design.
-// The class here is then constructed to instantiate the design.
-// See the Verilator manual for examples.
-
-#ifndef VERILATED_VEXAMPLE_H_
-#define VERILATED_VEXAMPLE_H_  // guard
-
-#include "verilated.h"
-
-class Vexample__Syms;
-class Vexample___024root;
-
-// This class is the main interface to the Verilated model
-class alignas(VL_CACHE_LINE_BYTES) Vexample VL_NOT_FINAL : public VerilatedModel {
-  private:
-    // Symbol table holding complete model state (owned by this class)
-    Vexample__Syms* const vlSymsp;
-
-  public:
-
-    // PORTS
-    // The application code writes and reads these signals to
-    // propagate new values into/out from the Verilated model.
-    VL_IN8(&a,0,0);
-    VL_IN8(&b,0,0);
-    VL_OUT8(&f,0,0);
-
-    // CELLS
-    // Public to allow access to /* verilator public */ items.
-    // Otherwise the application code can consider these internals.
-
-    // Root instance pointer to allow access to model internals,
-    // including inlined /* verilator public_flat_* */ items.
-    Vexample___024root* const rootp;
-
-    // CONSTRUCTORS
-    /// Construct the model; called by application code
-    /// If contextp is null, then the model will use the default global context
-    /// If name is "", then makes a wrapper with a
-    /// single model invisible with respect to DPI scope names.
-    explicit Vexample(VerilatedContext* contextp, const char* name = "TOP");
-    explicit Vexample(const char* name = "TOP");
-    /// Destroy the model; called (often implicitly) by application code
-    virtual ~Vexample();
-  private:
-    VL_UNCOPYABLE(Vexample);  ///< Copying not allowed
-
-  public:
-    // API METHODS
-    /// Evaluate the model.  Application must call when inputs change.
-    void eval() { eval_step(); }
-    /// Evaluate when calling multiple units/models per time step.
-    void eval_step();
-    /// Evaluate at end of a timestep for tracing, when using eval_step().
-    /// Application must call after all eval() and before time changes.
-    void eval_end_step() {}
-    /// Simulation complete, run final blocks.  Application must call on completion.
-    void final();
-    /// Are there scheduled events to handle?
-    bool eventsPending();
-    /// Returns time at next time slot. Aborts if !eventsPending()
-    uint64_t nextTimeSlot();
-    /// Trace signals in the model; called by application code
-    void trace(VerilatedVcdC* tfp, int levels, int options = 0);
-    /// Retrieve name of this model instance (as passed to constructor).
-    const char* name() const;
-
-    // Abstract methods from VerilatedModel
-    const char* hierName() const override final;
-    const char* modelName() const override final;
-    unsigned threads() const override final;
-    /// Prepare for cloning the model at the process level (e.g. fork in Linux)
-    /// Release necessary resources. Called before cloning.
-    void prepareClone() const;
-    /// Re-init after cloning the model at the process level (e.g. fork in Linux)
-    /// Re-allocate necessary resources. Called after cloning.
-    void atClone() const;
-};
-
-#endif  // guard
diff --git a/npc/obj/Vexample.mk b/npc/obj/Vexample.mk
deleted file mode 100644
index eec02c2..0000000
--- a/npc/obj/Vexample.mk
+++ /dev/null
@@ -1,68 +0,0 @@
-# Verilated -*- Makefile -*-
-# DESCRIPTION: Verilator output: Makefile for building Verilated archive or executable
-#
-# Execute this makefile from the object directory:
-#    make -f Vexample.mk
-
-default: Vexample
-
-### Constants...
-# Perl executable (from $PERL)
-PERL = perl
-# Path to Verilator kit (from $VERILATOR_ROOT)
-VERILATOR_ROOT = /nix/store/lyzgj5m2zhsw9m3v1fnzr3dp1z9myyaz-verilator-5.018/share/verilator
-# SystemC include directory with systemc.h (from $SYSTEMC_INCLUDE)
-SYSTEMC_INCLUDE ?= 
-# SystemC library directory with libsystemc.a (from $SYSTEMC_LIBDIR)
-SYSTEMC_LIBDIR ?= 
-
-### Switches...
-# C++ code coverage  0/1 (from --prof-c)
-VM_PROFC = 0
-# SystemC output mode?  0/1 (from --sc)
-VM_SC = 0
-# Legacy or SystemC output mode?  0/1 (from --sc)
-VM_SP_OR_SC = $(VM_SC)
-# Deprecated
-VM_PCLI = 1
-# Deprecated: SystemC architecture to find link library path (from $SYSTEMC_ARCH)
-VM_SC_TARGET_ARCH = linux
-
-### Vars...
-# Design prefix (from --prefix)
-VM_PREFIX = Vexample
-# Module prefix (from --prefix)
-VM_MODPREFIX = Vexample
-# User CFLAGS (from -CFLAGS on Verilator command line)
-VM_USER_CFLAGS = \
-
-# User LDLIBS (from -LDFLAGS on Verilator command line)
-VM_USER_LDLIBS = \
-
-# User .cpp files (from .cpp's on Verilator command line)
-VM_USER_CLASSES = \
-	main \
-
-# User .cpp directories (from .cpp's on Verilator command line)
-VM_USER_DIR = \
-	csrc \
-
-
-### Default rules...
-# Include list of all generated classes
-include Vexample_classes.mk
-# Include global rules
-include $(VERILATOR_ROOT)/include/verilated.mk
-
-### Executable rules... (from --exe)
-VPATH += $(VM_USER_DIR)
-
-main.o: csrc/main.cpp
-	$(OBJCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPT_FAST) -c -o $@ $<
-
-### Link rules... (from --exe)
-Vexample: $(VK_USER_OBJS) $(VK_GLOBAL_OBJS) $(VM_PREFIX)__ALL.a $(VM_HIER_LIBS)
-	$(LINK) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) $(LIBS) $(SC_LIBS) -o $@
-
-
-# Verilated -*- Makefile -*-
diff --git a/npc/obj/Vexample__ALL.cpp b/npc/obj/Vexample__ALL.cpp
deleted file mode 100644
index 87d1243..0000000
--- a/npc/obj/Vexample__ALL.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-// DESCRIPTION: Generated by verilator_includer via makefile
-#define VL_INCLUDE_OPT include
-#include "Vexample.cpp"
-#include "Vexample___024root__DepSet_h625e39dc__0.cpp"
-#include "Vexample___024root__DepSet_hcb5acca5__0.cpp"
-#include "Vexample___024root__Slow.cpp"
-#include "Vexample___024root__DepSet_h625e39dc__0__Slow.cpp"
-#include "Vexample___024root__DepSet_hcb5acca5__0__Slow.cpp"
-#include "Vexample__Syms.cpp"
diff --git a/npc/obj/Vexample__Syms.cpp b/npc/obj/Vexample__Syms.cpp
deleted file mode 100644
index 4cd128c..0000000
--- a/npc/obj/Vexample__Syms.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Symbol table implementation internals
-
-#include "Vexample__pch.h"
-#include "Vexample.h"
-#include "Vexample___024root.h"
-
-// FUNCTIONS
-Vexample__Syms::~Vexample__Syms()
-{
-}
-
-Vexample__Syms::Vexample__Syms(VerilatedContext* contextp, const char* namep, Vexample* modelp)
-    : VerilatedSyms{contextp}
-    // Setup internal state of the Syms class
-    , __Vm_modelp{modelp}
-    // Setup module instances
-    , TOP{this, namep}
-{
-    // Configure time unit / time precision
-    _vm_contextp__->timeunit(-12);
-    _vm_contextp__->timeprecision(-12);
-    // Setup each module's pointers to their submodules
-    // Setup each module's pointer back to symbol table (for public functions)
-    TOP.__Vconfigure(true);
-}
diff --git a/npc/obj/Vexample__Syms.h b/npc/obj/Vexample__Syms.h
deleted file mode 100644
index c9ead4e..0000000
--- a/npc/obj/Vexample__Syms.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Symbol table internal header
-//
-// Internal details; most calling programs do not need this header,
-// unless using verilator public meta comments.
-
-#ifndef VERILATED_VEXAMPLE__SYMS_H_
-#define VERILATED_VEXAMPLE__SYMS_H_  // guard
-
-#include "verilated.h"
-
-// INCLUDE MODEL CLASS
-
-#include "Vexample.h"
-
-// INCLUDE MODULE CLASSES
-#include "Vexample___024root.h"
-
-// SYMS CLASS (contains all model state)
-class alignas(VL_CACHE_LINE_BYTES)Vexample__Syms final : public VerilatedSyms {
-  public:
-    // INTERNAL STATE
-    Vexample* const __Vm_modelp;
-    VlDeleter __Vm_deleter;
-    bool __Vm_didInit = false;
-
-    // MODULE INSTANCE STATE
-    Vexample___024root             TOP;
-
-    // CONSTRUCTORS
-    Vexample__Syms(VerilatedContext* contextp, const char* namep, Vexample* modelp);
-    ~Vexample__Syms();
-
-    // METHODS
-    const char* name() { return TOP.name(); }
-};
-
-#endif  // guard
diff --git a/npc/obj/Vexample___024root.h b/npc/obj/Vexample___024root.h
deleted file mode 100644
index 8bdc678..0000000
--- a/npc/obj/Vexample___024root.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Design internal header
-// See Vexample.h for the primary calling header
-
-#ifndef VERILATED_VEXAMPLE___024ROOT_H_
-#define VERILATED_VEXAMPLE___024ROOT_H_  // guard
-
-#include "verilated.h"
-
-
-class Vexample__Syms;
-
-class alignas(VL_CACHE_LINE_BYTES) Vexample___024root final : public VerilatedModule {
-  public:
-
-    // DESIGN SPECIFIC STATE
-    VL_IN8(a,0,0);
-    VL_IN8(b,0,0);
-    VL_OUT8(f,0,0);
-    CData/*0:0*/ __VstlFirstIteration;
-    CData/*0:0*/ __VicoFirstIteration;
-    CData/*0:0*/ __VactContinue;
-    IData/*31:0*/ __VactIterCount;
-    VlTriggerVec<1> __VstlTriggered;
-    VlTriggerVec<1> __VicoTriggered;
-    VlTriggerVec<0> __VactTriggered;
-    VlTriggerVec<0> __VnbaTriggered;
-
-    // INTERNAL VARIABLES
-    Vexample__Syms* const vlSymsp;
-
-    // CONSTRUCTORS
-    Vexample___024root(Vexample__Syms* symsp, const char* v__name);
-    ~Vexample___024root();
-    VL_UNCOPYABLE(Vexample___024root);
-
-    // INTERNAL METHODS
-    void __Vconfigure(bool first);
-};
-
-
-#endif  // guard
diff --git a/npc/obj/Vexample___024root__DepSet_h625e39dc__0.cpp b/npc/obj/Vexample___024root__DepSet_h625e39dc__0.cpp
deleted file mode 100644
index 0d4e9c9..0000000
--- a/npc/obj/Vexample___024root__DepSet_h625e39dc__0.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Design implementation internals
-// See Vexample.h for the primary calling header
-
-#include "Vexample__pch.h"
-#include "Vexample__Syms.h"
-#include "Vexample___024root.h"
-
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__ico(Vexample___024root* vlSelf);
-#endif  // VL_DEBUG
-
-void Vexample___024root___eval_triggers__ico(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_triggers__ico\n"); );
-    // Body
-    vlSelf->__VicoTriggered.set(0U, (IData)(vlSelf->__VicoFirstIteration));
-#ifdef VL_DEBUG
-    if (VL_UNLIKELY(vlSymsp->_vm_contextp__->debug())) {
-        Vexample___024root___dump_triggers__ico(vlSelf);
-    }
-#endif
-}
-
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__act(Vexample___024root* vlSelf);
-#endif  // VL_DEBUG
-
-void Vexample___024root___eval_triggers__act(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_triggers__act\n"); );
-    // Body
-#ifdef VL_DEBUG
-    if (VL_UNLIKELY(vlSymsp->_vm_contextp__->debug())) {
-        Vexample___024root___dump_triggers__act(vlSelf);
-    }
-#endif
-}
diff --git a/npc/obj/Vexample___024root__DepSet_h625e39dc__0__Slow.cpp b/npc/obj/Vexample___024root__DepSet_h625e39dc__0__Slow.cpp
deleted file mode 100644
index f78087f..0000000
--- a/npc/obj/Vexample___024root__DepSet_h625e39dc__0__Slow.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Design implementation internals
-// See Vexample.h for the primary calling header
-
-#include "Vexample__pch.h"
-#include "Vexample__Syms.h"
-#include "Vexample___024root.h"
-
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__stl(Vexample___024root* vlSelf);
-#endif  // VL_DEBUG
-
-VL_ATTR_COLD void Vexample___024root___eval_triggers__stl(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_triggers__stl\n"); );
-    // Body
-    vlSelf->__VstlTriggered.set(0U, (IData)(vlSelf->__VstlFirstIteration));
-#ifdef VL_DEBUG
-    if (VL_UNLIKELY(vlSymsp->_vm_contextp__->debug())) {
-        Vexample___024root___dump_triggers__stl(vlSelf);
-    }
-#endif
-}
diff --git a/npc/obj/Vexample___024root__DepSet_hcb5acca5__0.cpp b/npc/obj/Vexample___024root__DepSet_hcb5acca5__0.cpp
deleted file mode 100644
index f6620be..0000000
--- a/npc/obj/Vexample___024root__DepSet_hcb5acca5__0.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Design implementation internals
-// See Vexample.h for the primary calling header
-
-#include "Vexample__pch.h"
-#include "Vexample___024root.h"
-
-VL_INLINE_OPT void Vexample___024root___ico_sequent__TOP__0(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___ico_sequent__TOP__0\n"); );
-    // Body
-    vlSelf->f = ((IData)(vlSelf->a) ^ (IData)(vlSelf->b));
-}
-
-void Vexample___024root___eval_ico(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_ico\n"); );
-    // Body
-    if ((1ULL & vlSelf->__VicoTriggered.word(0U))) {
-        Vexample___024root___ico_sequent__TOP__0(vlSelf);
-    }
-}
-
-void Vexample___024root___eval_triggers__ico(Vexample___024root* vlSelf);
-
-bool Vexample___024root___eval_phase__ico(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_phase__ico\n"); );
-    // Init
-    CData/*0:0*/ __VicoExecute;
-    // Body
-    Vexample___024root___eval_triggers__ico(vlSelf);
-    __VicoExecute = vlSelf->__VicoTriggered.any();
-    if (__VicoExecute) {
-        Vexample___024root___eval_ico(vlSelf);
-    }
-    return (__VicoExecute);
-}
-
-void Vexample___024root___eval_act(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_act\n"); );
-}
-
-void Vexample___024root___eval_nba(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_nba\n"); );
-}
-
-void Vexample___024root___eval_triggers__act(Vexample___024root* vlSelf);
-
-bool Vexample___024root___eval_phase__act(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_phase__act\n"); );
-    // Init
-    VlTriggerVec<0> __VpreTriggered;
-    CData/*0:0*/ __VactExecute;
-    // Body
-    Vexample___024root___eval_triggers__act(vlSelf);
-    __VactExecute = vlSelf->__VactTriggered.any();
-    if (__VactExecute) {
-        __VpreTriggered.andNot(vlSelf->__VactTriggered, vlSelf->__VnbaTriggered);
-        vlSelf->__VnbaTriggered.thisOr(vlSelf->__VactTriggered);
-        Vexample___024root___eval_act(vlSelf);
-    }
-    return (__VactExecute);
-}
-
-bool Vexample___024root___eval_phase__nba(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_phase__nba\n"); );
-    // Init
-    CData/*0:0*/ __VnbaExecute;
-    // Body
-    __VnbaExecute = vlSelf->__VnbaTriggered.any();
-    if (__VnbaExecute) {
-        Vexample___024root___eval_nba(vlSelf);
-        vlSelf->__VnbaTriggered.clear();
-    }
-    return (__VnbaExecute);
-}
-
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__ico(Vexample___024root* vlSelf);
-#endif  // VL_DEBUG
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__nba(Vexample___024root* vlSelf);
-#endif  // VL_DEBUG
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__act(Vexample___024root* vlSelf);
-#endif  // VL_DEBUG
-
-void Vexample___024root___eval(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval\n"); );
-    // Init
-    IData/*31:0*/ __VicoIterCount;
-    CData/*0:0*/ __VicoContinue;
-    IData/*31:0*/ __VnbaIterCount;
-    CData/*0:0*/ __VnbaContinue;
-    // Body
-    __VicoIterCount = 0U;
-    vlSelf->__VicoFirstIteration = 1U;
-    __VicoContinue = 1U;
-    while (__VicoContinue) {
-        if (VL_UNLIKELY((0x64U < __VicoIterCount))) {
-#ifdef VL_DEBUG
-            Vexample___024root___dump_triggers__ico(vlSelf);
-#endif
-            VL_FATAL_MT("vsrc/example.v", 1, "", "Input combinational region did not converge.");
-        }
-        __VicoIterCount = ((IData)(1U) + __VicoIterCount);
-        __VicoContinue = 0U;
-        if (Vexample___024root___eval_phase__ico(vlSelf)) {
-            __VicoContinue = 1U;
-        }
-        vlSelf->__VicoFirstIteration = 0U;
-    }
-    __VnbaIterCount = 0U;
-    __VnbaContinue = 1U;
-    while (__VnbaContinue) {
-        if (VL_UNLIKELY((0x64U < __VnbaIterCount))) {
-#ifdef VL_DEBUG
-            Vexample___024root___dump_triggers__nba(vlSelf);
-#endif
-            VL_FATAL_MT("vsrc/example.v", 1, "", "NBA region did not converge.");
-        }
-        __VnbaIterCount = ((IData)(1U) + __VnbaIterCount);
-        __VnbaContinue = 0U;
-        vlSelf->__VactIterCount = 0U;
-        vlSelf->__VactContinue = 1U;
-        while (vlSelf->__VactContinue) {
-            if (VL_UNLIKELY((0x64U < vlSelf->__VactIterCount))) {
-#ifdef VL_DEBUG
-                Vexample___024root___dump_triggers__act(vlSelf);
-#endif
-                VL_FATAL_MT("vsrc/example.v", 1, "", "Active region did not converge.");
-            }
-            vlSelf->__VactIterCount = ((IData)(1U) 
-                                       + vlSelf->__VactIterCount);
-            vlSelf->__VactContinue = 0U;
-            if (Vexample___024root___eval_phase__act(vlSelf)) {
-                vlSelf->__VactContinue = 1U;
-            }
-        }
-        if (Vexample___024root___eval_phase__nba(vlSelf)) {
-            __VnbaContinue = 1U;
-        }
-    }
-}
-
-#ifdef VL_DEBUG
-void Vexample___024root___eval_debug_assertions(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_debug_assertions\n"); );
-    // Body
-    if (VL_UNLIKELY((vlSelf->a & 0xfeU))) {
-        Verilated::overWidthError("a");}
-    if (VL_UNLIKELY((vlSelf->b & 0xfeU))) {
-        Verilated::overWidthError("b");}
-}
-#endif  // VL_DEBUG
diff --git a/npc/obj/Vexample___024root__DepSet_hcb5acca5__0__Slow.cpp b/npc/obj/Vexample___024root__DepSet_hcb5acca5__0__Slow.cpp
deleted file mode 100644
index 5ef71ea..0000000
--- a/npc/obj/Vexample___024root__DepSet_hcb5acca5__0__Slow.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Design implementation internals
-// See Vexample.h for the primary calling header
-
-#include "Vexample__pch.h"
-#include "Vexample___024root.h"
-
-VL_ATTR_COLD void Vexample___024root___eval_static(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_static\n"); );
-}
-
-VL_ATTR_COLD void Vexample___024root___eval_initial(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_initial\n"); );
-}
-
-VL_ATTR_COLD void Vexample___024root___eval_final(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_final\n"); );
-}
-
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__stl(Vexample___024root* vlSelf);
-#endif  // VL_DEBUG
-VL_ATTR_COLD bool Vexample___024root___eval_phase__stl(Vexample___024root* vlSelf);
-
-VL_ATTR_COLD void Vexample___024root___eval_settle(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_settle\n"); );
-    // Init
-    IData/*31:0*/ __VstlIterCount;
-    CData/*0:0*/ __VstlContinue;
-    // Body
-    __VstlIterCount = 0U;
-    vlSelf->__VstlFirstIteration = 1U;
-    __VstlContinue = 1U;
-    while (__VstlContinue) {
-        if (VL_UNLIKELY((0x64U < __VstlIterCount))) {
-#ifdef VL_DEBUG
-            Vexample___024root___dump_triggers__stl(vlSelf);
-#endif
-            VL_FATAL_MT("vsrc/example.v", 1, "", "Settle region did not converge.");
-        }
-        __VstlIterCount = ((IData)(1U) + __VstlIterCount);
-        __VstlContinue = 0U;
-        if (Vexample___024root___eval_phase__stl(vlSelf)) {
-            __VstlContinue = 1U;
-        }
-        vlSelf->__VstlFirstIteration = 0U;
-    }
-}
-
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__stl(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___dump_triggers__stl\n"); );
-    // Body
-    if ((1U & (~ (IData)(vlSelf->__VstlTriggered.any())))) {
-        VL_DBG_MSGF("         No triggers active\n");
-    }
-    if ((1ULL & vlSelf->__VstlTriggered.word(0U))) {
-        VL_DBG_MSGF("         'stl' region trigger index 0 is active: Internal 'stl' trigger - first iteration\n");
-    }
-}
-#endif  // VL_DEBUG
-
-void Vexample___024root___ico_sequent__TOP__0(Vexample___024root* vlSelf);
-
-VL_ATTR_COLD void Vexample___024root___eval_stl(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_stl\n"); );
-    // Body
-    if ((1ULL & vlSelf->__VstlTriggered.word(0U))) {
-        Vexample___024root___ico_sequent__TOP__0(vlSelf);
-    }
-}
-
-VL_ATTR_COLD void Vexample___024root___eval_triggers__stl(Vexample___024root* vlSelf);
-
-VL_ATTR_COLD bool Vexample___024root___eval_phase__stl(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___eval_phase__stl\n"); );
-    // Init
-    CData/*0:0*/ __VstlExecute;
-    // Body
-    Vexample___024root___eval_triggers__stl(vlSelf);
-    __VstlExecute = vlSelf->__VstlTriggered.any();
-    if (__VstlExecute) {
-        Vexample___024root___eval_stl(vlSelf);
-    }
-    return (__VstlExecute);
-}
-
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__ico(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___dump_triggers__ico\n"); );
-    // Body
-    if ((1U & (~ (IData)(vlSelf->__VicoTriggered.any())))) {
-        VL_DBG_MSGF("         No triggers active\n");
-    }
-    if ((1ULL & vlSelf->__VicoTriggered.word(0U))) {
-        VL_DBG_MSGF("         'ico' region trigger index 0 is active: Internal 'ico' trigger - first iteration\n");
-    }
-}
-#endif  // VL_DEBUG
-
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__act(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___dump_triggers__act\n"); );
-    // Body
-    if ((1U & (~ (IData)(vlSelf->__VactTriggered.any())))) {
-        VL_DBG_MSGF("         No triggers active\n");
-    }
-}
-#endif  // VL_DEBUG
-
-#ifdef VL_DEBUG
-VL_ATTR_COLD void Vexample___024root___dump_triggers__nba(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___dump_triggers__nba\n"); );
-    // Body
-    if ((1U & (~ (IData)(vlSelf->__VnbaTriggered.any())))) {
-        VL_DBG_MSGF("         No triggers active\n");
-    }
-}
-#endif  // VL_DEBUG
-
-VL_ATTR_COLD void Vexample___024root___ctor_var_reset(Vexample___024root* vlSelf) {
-    if (false && vlSelf) {}  // Prevent unused
-    Vexample__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
-    VL_DEBUG_IF(VL_DBG_MSGF("+    Vexample___024root___ctor_var_reset\n"); );
-    // Body
-    vlSelf->a = VL_RAND_RESET_I(1);
-    vlSelf->b = VL_RAND_RESET_I(1);
-    vlSelf->f = VL_RAND_RESET_I(1);
-}
diff --git a/npc/obj/Vexample___024root__Slow.cpp b/npc/obj/Vexample___024root__Slow.cpp
deleted file mode 100644
index 262645c..0000000
--- a/npc/obj/Vexample___024root__Slow.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Design implementation internals
-// See Vexample.h for the primary calling header
-
-#include "Vexample__pch.h"
-#include "Vexample__Syms.h"
-#include "Vexample___024root.h"
-
-void Vexample___024root___ctor_var_reset(Vexample___024root* vlSelf);
-
-Vexample___024root::Vexample___024root(Vexample__Syms* symsp, const char* v__name)
-    : VerilatedModule{v__name}
-    , vlSymsp{symsp}
- {
-    // Reset structure values
-    Vexample___024root___ctor_var_reset(this);
-}
-
-void Vexample___024root::__Vconfigure(bool first) {
-    if (false && first) {}  // Prevent unused
-}
-
-Vexample___024root::~Vexample___024root() {
-}
diff --git a/npc/obj/Vexample__pch.h b/npc/obj/Vexample__pch.h
deleted file mode 100644
index 7798b87..0000000
--- a/npc/obj/Vexample__pch.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Verilated -*- C++ -*-
-// DESCRIPTION: Verilator output: Precompiled header
-//
-// Internal details; most user sources do not need this header,
-// unless using verilator public meta comments.
-// Suggest use Vexample.h instead.
-
-
-#ifndef VERILATED_VEXAMPLE__PCH_H_
-#define VERILATED_VEXAMPLE__PCH_H_  // guard
-
-// GCC and Clang only will precompile headers (PCH) for the first header.
-// So, make sure this is the one and only PCH.
-// If multiple module's includes are needed, use individual includes.
-#ifdef VL_PCH_INCLUDED
-# error "Including multiple precompiled header files"
-#endif
-#define VL_PCH_INCLUDED
-
-
-#include "verilated.h"
-
-#include "Vexample__Syms.h"
-#include "Vexample.h"
-
-#endif  // guard
diff --git a/npc/obj/Vexample_classes.mk b/npc/obj/Vexample_classes.mk
deleted file mode 100644
index fbb1e80..0000000
--- a/npc/obj/Vexample_classes.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-# Verilated -*- Makefile -*-
-# DESCRIPTION: Verilator output: Make include file with class lists
-#
-# This file lists generated Verilated files, for including in higher level makefiles.
-# See Vexample.mk for the caller.
-
-### Switches...
-# C11 constructs required?  0/1 (always on now)
-VM_C11 = 1
-# Timing enabled?  0/1
-VM_TIMING = 0
-# Coverage output mode?  0/1 (from --coverage)
-VM_COVERAGE = 0
-# Parallel builds?  0/1 (from --output-split)
-VM_PARALLEL_BUILDS = 0
-# Tracing output mode?  0/1 (from --trace/--trace-fst)
-VM_TRACE = 0
-# Tracing output mode in VCD format?  0/1 (from --trace)
-VM_TRACE_VCD = 0
-# Tracing output mode in FST format?  0/1 (from --trace-fst)
-VM_TRACE_FST = 0
-
-### Object file lists...
-# Generated module classes, fast-path, compile with highest optimization
-VM_CLASSES_FAST += \
-	Vexample \
-	Vexample___024root__DepSet_h625e39dc__0 \
-	Vexample___024root__DepSet_hcb5acca5__0 \
-
-# Generated module classes, non-fast-path, compile with low/medium optimization
-VM_CLASSES_SLOW += \
-	Vexample___024root__Slow \
-	Vexample___024root__DepSet_h625e39dc__0__Slow \
-	Vexample___024root__DepSet_hcb5acca5__0__Slow \
-
-# Generated support classes, fast-path, compile with highest optimization
-VM_SUPPORT_FAST += \
-
-# Generated support classes, non-fast-path, compile with low/medium optimization
-VM_SUPPORT_SLOW += \
-	Vexample__Syms \
-
-# Global classes, need linked once per executable, fast-path, compile with highest optimization
-VM_GLOBAL_FAST += \
-	verilated \
-	verilated_threads \
-
-# Global classes, need linked once per executable, non-fast-path, compile with low/medium optimization
-VM_GLOBAL_SLOW += \
-
-
-# Verilated -*- Makefile -*-