diff --git a/verilog/dv/decoder_test/a.out b/verilog/dv/decoder_test/a.out
new file mode 100755
index 0000000..2568bce
--- /dev/null
+++ b/verilog/dv/decoder_test/a.out
@@ -0,0 +1,124 @@
+#! /usr/bin/vvp
+:ivl_version "10.3 (stable)";
+:ivl_delay_selection "TYPICAL";
+:vpi_time_precision - 11;
+:vpi_module "system";
+:vpi_module "vhdl_sys";
+:vpi_module "v2005_math";
+:vpi_module "va_math";
+S_0x560d6dfeb9b0 .scope module, "decoder_tb" "decoder_tb" 2 1;
+ .timescale -9 -11;
+v0x560d6dffdd90_0 .net "fullTarget", 255 0, v0x560d6dffd6e0_0;  1 drivers
+v0x560d6dffde50_0 .var "target", 31 0;
+S_0x560d6dfebb30 .scope module, "dec1" "decoder" 2 6, 3 13 0, S_0x560d6dfeb9b0;
+ .timescale -9 -11;
+    .port_info 0 /INPUT 32 "target"
+    .port_info 1 /OUTPUT 256 "fullTarget"
+v0x560d6dfc7330_0 .var "decoded", 255 0;
+v0x560d6dffd6e0_0 .var "fullTarget", 255 0;
+v0x560d6dffd7c0_0 .var/i "i", 31 0;
+v0x560d6dffd880_0 .var/i "leftBuffer", 31 0;
+v0x560d6dffd960_0 .var "sizeOnes", 3 0;
+v0x560d6dffda90_0 .var "sizeTens", 3 0;
+v0x560d6dffdb70_0 .var/i "spacing", 31 0;
+v0x560d6dffdc50_0 .net "target", 31 0, v0x560d6dffde50_0;  1 drivers
+    .scope S_0x560d6dfebb30;
+T_0 ;
+    %load/vec4 v0x560d6dffdc50_0;
+    %parti/s 4, 28, 6;
+    %store/vec4 v0x560d6dffda90_0, 0, 4;
+    %load/vec4 v0x560d6dffdc50_0;
+    %parti/s 4, 24, 6;
+    %store/vec4 v0x560d6dffd960_0, 0, 4;
+    %load/vec4 v0x560d6dffda90_0;
+    %pad/u 32;
+    %muli 16, 0, 32;
+    %load/vec4 v0x560d6dffd960_0;
+    %pad/u 32;
+    %add;
+    %store/vec4 v0x560d6dffdb70_0, 0, 32;
+    %pushi/vec4 32, 0, 32;
+    %load/vec4 v0x560d6dffdb70_0;
+    %sub;
+    %store/vec4 v0x560d6dffd880_0, 0, 32;
+    %pushi/vec4 255, 0, 32;
+    %store/vec4 v0x560d6dffd7c0_0, 0, 32;
+T_0.0 ;
+    %pushi/vec4 254, 0, 32;
+    %load/vec4 v0x560d6dffd880_0;
+    %sub;
+    %load/vec4 v0x560d6dffd7c0_0;
+    %cmp/s;
+    %jmp/0xz T_0.1, 5;
+    %pushi/vec4 0, 0, 1;
+    %ix/getv/s 4, v0x560d6dffd7c0_0;
+    %store/vec4 v0x560d6dfc7330_0, 4, 1;
+    %load/vec4 v0x560d6dffd7c0_0;
+    %pushi/vec4 1, 0, 32;
+    %sub;
+    %store/vec4 v0x560d6dffd7c0_0, 0, 32;
+    %jmp T_0.0;
+T_0.1 ;
+    %pushi/vec4 0, 0, 32;
+    %store/vec4 v0x560d6dffd7c0_0, 0, 32;
+T_0.2 ;
+    %load/vec4 v0x560d6dffd7c0_0;
+    %cmpi/s 24, 0, 32;
+    %jmp/0xz T_0.3, 5;
+    %load/vec4 v0x560d6dffdc50_0;
+    %load/vec4 v0x560d6dffd7c0_0;
+    %part/s 1;
+    %pushi/vec4 255, 0, 32;
+    %load/vec4 v0x560d6dffd880_0;
+    %sub;
+    %subi 25, 0, 32;
+    %load/vec4 v0x560d6dffd7c0_0;
+    %add;
+    %ix/vec4/s 4;
+    %store/vec4 v0x560d6dfc7330_0, 4, 1;
+    %load/vec4 v0x560d6dffd7c0_0;
+    %pushi/vec4 1, 0, 32;
+    %add;
+    %store/vec4 v0x560d6dffd7c0_0, 0, 32;
+    %jmp T_0.2;
+T_0.3 ;
+    %pushi/vec4 255, 0, 32;
+    %load/vec4 v0x560d6dffd880_0;
+    %sub;
+    %subi 26, 0, 32;
+    %store/vec4 v0x560d6dffd7c0_0, 0, 32;
+T_0.4 ;
+    %pushi/vec4 4294967295, 0, 32;
+    %load/vec4 v0x560d6dffd7c0_0;
+    %cmp/s;
+    %jmp/0xz T_0.5, 5;
+    %pushi/vec4 0, 0, 1;
+    %ix/getv/s 4, v0x560d6dffd7c0_0;
+    %store/vec4 v0x560d6dfc7330_0, 4, 1;
+    %load/vec4 v0x560d6dffd7c0_0;
+    %pushi/vec4 1, 0, 32;
+    %sub;
+    %store/vec4 v0x560d6dffd7c0_0, 0, 32;
+    %jmp T_0.4;
+T_0.5 ;
+    %load/vec4 v0x560d6dfc7330_0;
+    %store/vec4 v0x560d6dffd6e0_0, 0, 256;
+    %end;
+    .thread T_0;
+    .scope S_0x560d6dfeb9b0;
+T_1 ;
+    %vpi_call 2 10 "$dumpfile", "decoder_tb.vcd" {0 0 0};
+    %vpi_call 2 11 "$dumpvars" {0 0 0};
+    %pushi/vec4 419668748, 0, 32;
+    %cassign/vec4 v0x560d6dffde50_0;
+    %vpi_call 2 13 "$display", "FINISHED decoder_tb" {0 0 0};
+    %vpi_call 2 14 "$display", "Output: %h", v0x560d6dffdd90_0 {0 0 0};
+    %vpi_call 2 15 "$finish" {0 0 0};
+    %end;
+    .thread T_1;
+# The file index is used to find the file name in the following table.
+:file_names 4;
+    "N/A";
+    "<interactive>";
+    "decoder_tb.sv";
+    "decoder.sv";
diff --git a/verilog/dv/decoder_test/decoder.sv b/verilog/dv/decoder_test/decoder.sv
new file mode 100644
index 0000000..94d8e2a
--- /dev/null
+++ b/verilog/dv/decoder_test/decoder.sv
@@ -0,0 +1,49 @@
+`default_nettype none
+`timescale 1 ns / 10 ps
+/*
+ *-------------------------------------------------------------
+ *
+ * decoder
+ *
+ * Used to transform a 32 bit target into a 256 bit target using math magic.
+ *
+ *-------------------------------------------------------------
+ */
+
+module decoder (input logic [31:0] target,
+                    output logic [255:0] fullTarget);
+
+	logic [3:0] sizeTens;
+    logic [3:0] sizeOnes;
+    logic [255:0] decoded;
+    integer spacing;
+    integer leftBuffer;
+    integer i;
+    initial begin
+        sizeTens=target[31:28];
+        sizeOnes=target[27:24];
+
+        //IDK if this is legal
+        spacing  = sizeTens*16+sizeOnes;
+
+        leftBuffer = 32-spacing;
+
+        //Pad left side based on first 2 bytes
+        for(i=255;i>254-leftBuffer;i--)
+            decoded[i] = 0;
+        
+        //Set value within middle of target
+        i=0;
+        while(i<24) begin
+            decoded[255-leftBuffer-25+i] = target[i];
+            i++;
+        end
+        //Pad the rest
+        for(i=255-leftBuffer-26;i>-1;i--)
+            decoded[i]=0;
+
+        fullTarget = decoded;
+    end
+
+
+endmodule
diff --git a/verilog/dv/decoder_test/decoder_tb.sv b/verilog/dv/decoder_test/decoder_tb.sv
new file mode 100644
index 0000000..9e2abe8
--- /dev/null
+++ b/verilog/dv/decoder_test/decoder_tb.sv
@@ -0,0 +1,19 @@
+module decoder_tb;
+ 
+    logic [31:0] target;
+    wire [255:0] fullTarget;
+
+    decoder dec1(.target(target), .fullTarget(fullTarget));
+
+    initial begin
+        //Dump waves
+        $dumpfile("decoder_tb.vcd");
+        $dumpvars;
+        assign target='h1903A30C;
+        $display("FINISHED decoder_tb");
+    	$display("Output: %h", fullTarget);
+    	$finish;
+
+    end
+
+endmodule
\ No newline at end of file
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder.cpp b/verilog/dv/decoder_test/obj_dir/Vdecoder.cpp
new file mode 100644
index 0000000..11ef2cb
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder.cpp
@@ -0,0 +1,82 @@
+// Verilated -*- C++ -*-
+// DESCRIPTION: Verilator output: Model implementation (design independent parts)
+
+#include "Vdecoder.h"
+#include "Vdecoder__Syms.h"
+
+//============================================================
+// Constructors
+
+Vdecoder::Vdecoder(VerilatedContext* _vcontextp__, const char* _vcname__)
+    : vlSymsp{new Vdecoder__Syms(_vcontextp__, _vcname__, this)}
+    , rootp{&(vlSymsp->TOP)}
+{
+}
+
+Vdecoder::Vdecoder(const char* _vcname__)
+    : Vdecoder(nullptr, _vcname__)
+{
+}
+
+//============================================================
+// Destructor
+
+Vdecoder::~Vdecoder() {
+    delete vlSymsp;
+}
+
+//============================================================
+// Evaluation loop
+
+void Vdecoder___024root___eval_initial(Vdecoder___024root* vlSelf);
+void Vdecoder___024root___eval_settle(Vdecoder___024root* vlSelf);
+void Vdecoder___024root___eval(Vdecoder___024root* vlSelf);
+#ifdef VL_DEBUG
+void Vdecoder___024root___eval_debug_assertions(Vdecoder___024root* vlSelf);
+#endif  // VL_DEBUG
+void Vdecoder___024root___final(Vdecoder___024root* vlSelf);
+
+static void _eval_initial_loop(Vdecoder__Syms* __restrict vlSymsp) {
+    vlSymsp->__Vm_didInit = true;
+    Vdecoder___024root___eval_initial(&(vlSymsp->TOP));
+    // Evaluate till stable
+    do {
+        VL_DEBUG_IF(VL_DBG_MSGF("+ Initial loop\n"););
+        Vdecoder___024root___eval_settle(&(vlSymsp->TOP));
+        Vdecoder___024root___eval(&(vlSymsp->TOP));
+    } while (0);
+}
+
+void Vdecoder::eval_step() {
+    VL_DEBUG_IF(VL_DBG_MSGF("+++++TOP Evaluate Vdecoder::eval_step\n"); );
+#ifdef VL_DEBUG
+    // Debug assertions
+    Vdecoder___024root___eval_debug_assertions(&(vlSymsp->TOP));
+#endif  // VL_DEBUG
+    // Initialize
+    if (VL_UNLIKELY(!vlSymsp->__Vm_didInit)) _eval_initial_loop(vlSymsp);
+    // Evaluate till stable
+    do {
+        VL_DEBUG_IF(VL_DBG_MSGF("+ Clock loop\n"););
+        Vdecoder___024root___eval(&(vlSymsp->TOP));
+    } while (0);
+    // Evaluate cleanup
+}
+
+//============================================================
+// Utilities
+
+VerilatedContext* Vdecoder::contextp() const {
+    return vlSymsp->_vm_contextp__;
+}
+
+const char* Vdecoder::name() const {
+    return vlSymsp->name();
+}
+
+//============================================================
+// Invoke final blocks
+
+VL_ATTR_COLD void Vdecoder::final() {
+    Vdecoder___024root___final(&(vlSymsp->TOP));
+}
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder.h b/verilog/dv/decoder_test/obj_dir/Vdecoder.h
new file mode 100644
index 0000000..293e04b
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder.h
@@ -0,0 +1,66 @@
+// 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_VDECODER_H_
+#define VERILATED_VDECODER_H_  // guard
+
+#include "verilated.h"
+
+class Vdecoder__Syms;
+class Vdecoder___024root;
+
+// This class is the main interface to the Verilated model
+class Vdecoder VL_NOT_FINAL {
+  private:
+    // Symbol table holding complete model state (owned by this class)
+    Vdecoder__Syms* const vlSymsp;
+
+  public:
+
+    // PORTS
+    // The application code writes and reads these signals to
+    // propagate new values into/out from the Verilated model.
+
+    // 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.
+    Vdecoder___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 Vdecoder(VerilatedContext* contextp, const char* name = "TOP");
+    explicit Vdecoder(const char* name = "TOP");
+    /// Destroy the model; called (often implicitly) by application code
+    virtual ~Vdecoder();
+  private:
+    VL_UNCOPYABLE(Vdecoder);  ///< 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();
+    /// Return current simulation context for this model.
+    /// Used to get to e.g. simulation time via contextp()->time()
+    VerilatedContext* contextp() const;
+    /// Retrieve name of this model instance (as passed to constructor).
+    const char* name() const;
+} VL_ATTR_ALIGNED(VL_CACHE_LINE_BYTES);
+
+#endif  // guard
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder.mk b/verilog/dv/decoder_test/obj_dir/Vdecoder.mk
new file mode 100644
index 0000000..7ad0fff
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder.mk
@@ -0,0 +1,55 @@
+# Verilated -*- Makefile -*-
+# DESCRIPTION: Verilator output: Makefile for building Verilated archive or executable
+#
+# Execute this makefile from the object directory:
+#    make -f Vdecoder.mk
+
+default: Vdecoder__ALL.a
+
+### Constants...
+# Perl executable (from $PERL)
+PERL = perl
+# Path to Verilator kit (from $VERILATOR_ROOT)
+VERILATOR_ROOT = /home/cmantas/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 = Vdecoder
+# Module prefix (from --prefix)
+VM_MODPREFIX = Vdecoder
+# 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 = \
+
+# User .cpp directories (from .cpp's on Verilator command line)
+VM_USER_DIR = \
+
+
+### Default rules...
+# Include list of all generated classes
+include Vdecoder_classes.mk
+# Include global rules
+include $(VERILATOR_ROOT)/include/verilated.mk
+
+# Verilated -*- Makefile -*-
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder__Syms.cpp b/verilog/dv/decoder_test/obj_dir/Vdecoder__Syms.cpp
new file mode 100644
index 0000000..437656d
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder__Syms.cpp
@@ -0,0 +1,26 @@
+// Verilated -*- C++ -*-
+// DESCRIPTION: Verilator output: Symbol table implementation internals
+
+#include "Vdecoder__Syms.h"
+#include "Vdecoder.h"
+#include "Vdecoder___024root.h"
+
+// FUNCTIONS
+Vdecoder__Syms::~Vdecoder__Syms()
+{
+}
+
+Vdecoder__Syms::Vdecoder__Syms(VerilatedContext* contextp, const char* namep,Vdecoder* modelp)
+    : VerilatedSyms{contextp}
+    // Setup internal state of the Syms class
+    , __Vm_modelp{modelp}
+    // Setup module instances
+    , TOP(namep)
+{
+    // Configure time unit / time precision
+    _vm_contextp__->timeunit(-9);
+    _vm_contextp__->timeprecision(-11);
+    // Setup each module's pointers to their submodules
+    // Setup each module's pointer back to symbol table (for public functions)
+    TOP.__Vconfigure(this, true);
+}
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder__Syms.h b/verilog/dv/decoder_test/obj_dir/Vdecoder__Syms.h
new file mode 100644
index 0000000..8e03fa0
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder__Syms.h
@@ -0,0 +1,37 @@
+// 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_VDECODER__SYMS_H_
+#define VERILATED_VDECODER__SYMS_H_  // guard
+
+#include "verilated.h"
+
+// INCLUDE MODEL CLASS
+
+#include "Vdecoder.h"
+
+// INCLUDE MODULE CLASSES
+#include "Vdecoder___024root.h"
+
+// SYMS CLASS (contains all model state)
+class Vdecoder__Syms final : public VerilatedSyms {
+  public:
+    // INTERNAL STATE
+    Vdecoder* const __Vm_modelp;
+    bool __Vm_didInit = false;
+
+    // MODULE INSTANCE STATE
+    Vdecoder___024root             TOP;
+
+    // CONSTRUCTORS
+    Vdecoder__Syms(VerilatedContext* contextp, const char* namep, Vdecoder* modelp);
+    ~Vdecoder__Syms();
+
+    // METHODS
+    const char* name() { return TOP.name(); }
+} VL_ATTR_ALIGNED(VL_CACHE_LINE_BYTES);
+
+#endif  // guard
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder___024root.h b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root.h
new file mode 100644
index 0000000..148bf89
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root.h
@@ -0,0 +1,31 @@
+// Verilated -*- C++ -*-
+// DESCRIPTION: Verilator output: Design internal header
+// See Vdecoder.h for the primary calling header
+
+#ifndef VERILATED_VDECODER___024ROOT_H_
+#define VERILATED_VDECODER___024ROOT_H_  // guard
+
+#include "verilated.h"
+
+class Vdecoder__Syms;
+VL_MODULE(Vdecoder___024root) {
+  public:
+
+    // DESIGN SPECIFIC STATE
+    IData/*31:0*/ decoder_tb__DOT__target;
+    VlWide<8>/*255:0*/ decoder_tb__DOT__dec1__DOT__decoded;
+
+    // INTERNAL VARIABLES
+    Vdecoder__Syms* vlSymsp;  // Symbol table
+
+    // CONSTRUCTORS
+    Vdecoder___024root(const char* name);
+    ~Vdecoder___024root();
+    VL_UNCOPYABLE(Vdecoder___024root);
+
+    // INTERNAL METHODS
+    void __Vconfigure(Vdecoder__Syms* symsp, bool first);
+} VL_ATTR_ALIGNED(VL_CACHE_LINE_BYTES);
+
+
+#endif  // guard
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__DepSet_h918ffe01__0.cpp b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__DepSet_h918ffe01__0.cpp
new file mode 100644
index 0000000..8140a2d
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__DepSet_h918ffe01__0.cpp
@@ -0,0 +1,21 @@
+// Verilated -*- C++ -*-
+// DESCRIPTION: Verilator output: Design implementation internals
+// See Vdecoder.h for the primary calling header
+
+#include "verilated.h"
+
+#include "Vdecoder___024root.h"
+
+void Vdecoder___024root___eval(Vdecoder___024root* vlSelf) {
+    if (false && vlSelf) {}  // Prevent unused
+    Vdecoder__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
+    VL_DEBUG_IF(VL_DBG_MSGF("+    Vdecoder___024root___eval\n"); );
+}
+
+#ifdef VL_DEBUG
+void Vdecoder___024root___eval_debug_assertions(Vdecoder___024root* vlSelf) {
+    if (false && vlSelf) {}  // Prevent unused
+    Vdecoder__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
+    VL_DEBUG_IF(VL_DBG_MSGF("+    Vdecoder___024root___eval_debug_assertions\n"); );
+}
+#endif  // VL_DEBUG
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__DepSet_h918ffe01__0__Slow.cpp b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__DepSet_h918ffe01__0__Slow.cpp
new file mode 100644
index 0000000..0426987
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__DepSet_h918ffe01__0__Slow.cpp
@@ -0,0 +1,38 @@
+// Verilated -*- C++ -*-
+// DESCRIPTION: Verilator output: Design implementation internals
+// See Vdecoder.h for the primary calling header
+
+#include "verilated.h"
+
+#include "Vdecoder___024root.h"
+
+VL_ATTR_COLD void Vdecoder___024root___initial__TOP__0(Vdecoder___024root* vlSelf);
+
+VL_ATTR_COLD void Vdecoder___024root___eval_initial(Vdecoder___024root* vlSelf) {
+    if (false && vlSelf) {}  // Prevent unused
+    Vdecoder__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
+    VL_DEBUG_IF(VL_DBG_MSGF("+    Vdecoder___024root___eval_initial\n"); );
+    // Body
+    Vdecoder___024root___initial__TOP__0(vlSelf);
+}
+
+VL_ATTR_COLD void Vdecoder___024root___eval_settle(Vdecoder___024root* vlSelf) {
+    if (false && vlSelf) {}  // Prevent unused
+    Vdecoder__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
+    VL_DEBUG_IF(VL_DBG_MSGF("+    Vdecoder___024root___eval_settle\n"); );
+}
+
+VL_ATTR_COLD void Vdecoder___024root___final(Vdecoder___024root* vlSelf) {
+    if (false && vlSelf) {}  // Prevent unused
+    Vdecoder__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
+    VL_DEBUG_IF(VL_DBG_MSGF("+    Vdecoder___024root___final\n"); );
+}
+
+VL_ATTR_COLD void Vdecoder___024root___ctor_var_reset(Vdecoder___024root* vlSelf) {
+    if (false && vlSelf) {}  // Prevent unused
+    Vdecoder__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
+    VL_DEBUG_IF(VL_DBG_MSGF("+    Vdecoder___024root___ctor_var_reset\n"); );
+    // Body
+    vlSelf->decoder_tb__DOT__target = VL_RAND_RESET_I(32);
+    VL_RAND_RESET_W(256, vlSelf->decoder_tb__DOT__dec1__DOT__decoded);
+}
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__DepSet_he51a2589__0__Slow.cpp b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__DepSet_he51a2589__0__Slow.cpp
new file mode 100644
index 0000000..12f00e4
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__DepSet_he51a2589__0__Slow.cpp
@@ -0,0 +1,588 @@
+// Verilated -*- C++ -*-
+// DESCRIPTION: Verilator output: Design implementation internals
+// See Vdecoder.h for the primary calling header
+
+#include "verilated.h"
+
+#include "Vdecoder__Syms.h"
+#include "Vdecoder___024root.h"
+
+VL_ATTR_COLD void Vdecoder___024root___initial__TOP__0(Vdecoder___024root* vlSelf) {
+    if (false && vlSelf) {}  // Prevent unused
+    Vdecoder__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
+    VL_DEBUG_IF(VL_DBG_MSGF("+    Vdecoder___024root___initial__TOP__0\n"); );
+    // Init
+    VlWide<8>/*255:0*/ decoder_tb__DOT__fullTarget;
+    CData/*3:0*/ decoder_tb__DOT__dec1__DOT__sizeTens;
+    CData/*3:0*/ decoder_tb__DOT__dec1__DOT__sizeOnes;
+    IData/*31:0*/ decoder_tb__DOT__dec1__DOT__spacing;
+    IData/*31:0*/ decoder_tb__DOT__dec1__DOT__leftBuffer;
+    IData/*31:0*/ decoder_tb__DOT__dec1__DOT__i;
+    VlWide<4>/*127:0*/ __Vtemp_hff926249__0;
+    // Body
+    decoder_tb__DOT__dec1__DOT__sizeTens = (vlSelf->decoder_tb__DOT__target 
+                                            >> 0x1cU);
+    decoder_tb__DOT__dec1__DOT__sizeOnes = (0xfU & 
+                                            (vlSelf->decoder_tb__DOT__target 
+                                             >> 0x18U));
+    decoder_tb__DOT__dec1__DOT__spacing = (((IData)(decoder_tb__DOT__dec1__DOT__sizeTens) 
+                                            << 4U) 
+                                           + (IData)(decoder_tb__DOT__dec1__DOT__sizeOnes));
+    decoder_tb__DOT__dec1__DOT__leftBuffer = ((IData)(0x20U) 
+                                              - decoder_tb__DOT__dec1__DOT__spacing);
+    decoder_tb__DOT__dec1__DOT__i = 0xffU;
+    while (VL_GTS_III(32, decoder_tb__DOT__dec1__DOT__i, 
+                      ((IData)(0xfeU) - decoder_tb__DOT__dec1__DOT__leftBuffer))) {
+        vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                     & (decoder_tb__DOT__dec1__DOT__i 
+                                                        >> 5U))] 
+            = ((~ ((IData)(1U) << (0x1fU & decoder_tb__DOT__dec1__DOT__i))) 
+               & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+               (7U & (decoder_tb__DOT__dec1__DOT__i 
+                      >> 5U))]);
+        decoder_tb__DOT__dec1__DOT__i = (decoder_tb__DOT__dec1__DOT__i 
+                                         - (IData)(1U));
+    }
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & ((((IData)(0xffU) 
+                                                      - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                     - (IData)(0x19U)) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & (((IData)(0xffU) 
+                                          - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                         - (IData)(0x19U))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & ((((IData)(0xffU) - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                    - (IData)(0x19U)) >> 5U))]) | (
+                                                   (1U 
+                                                    & vlSelf->decoder_tb__DOT__target) 
+                                                   << 
+                                                   (0x1fU 
+                                                    & (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U)))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(1U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(1U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(1U) + (((IData)(0xffU) 
+                                    - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                   - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 1U)) << (0x1fU 
+                                                   & ((IData)(1U) 
+                                                      + 
+                                                      (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(2U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(2U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(2U) + (((IData)(0xffU) 
+                                    - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                   - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 2U)) << (0x1fU 
+                                                   & ((IData)(2U) 
+                                                      + 
+                                                      (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(3U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(3U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(3U) + (((IData)(0xffU) 
+                                    - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                   - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 3U)) << (0x1fU 
+                                                   & ((IData)(3U) 
+                                                      + 
+                                                      (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(4U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(4U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(4U) + (((IData)(0xffU) 
+                                    - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                   - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 4U)) << (0x1fU 
+                                                   & ((IData)(4U) 
+                                                      + 
+                                                      (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(5U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(5U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(5U) + (((IData)(0xffU) 
+                                    - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                   - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 5U)) << (0x1fU 
+                                                   & ((IData)(5U) 
+                                                      + 
+                                                      (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(6U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(6U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(6U) + (((IData)(0xffU) 
+                                    - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                   - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 6U)) << (0x1fU 
+                                                   & ((IData)(6U) 
+                                                      + 
+                                                      (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(7U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(7U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(7U) + (((IData)(0xffU) 
+                                    - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                   - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 7U)) << (0x1fU 
+                                                   & ((IData)(7U) 
+                                                      + 
+                                                      (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(8U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(8U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(8U) + (((IData)(0xffU) 
+                                    - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                   - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 8U)) << (0x1fU 
+                                                   & ((IData)(8U) 
+                                                      + 
+                                                      (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(9U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(9U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(9U) + (((IData)(0xffU) 
+                                    - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                   - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 9U)) << (0x1fU 
+                                                   & ((IData)(9U) 
+                                                      + 
+                                                      (((IData)(0xffU) 
+                                                        - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                       - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0xaU) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0xaU) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0xaU) + (((IData)(0xffU) 
+                                      - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                     - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0xaU)) << 
+                                (0x1fU & ((IData)(0xaU) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0xbU) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0xbU) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0xbU) + (((IData)(0xffU) 
+                                      - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                     - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0xbU)) << 
+                                (0x1fU & ((IData)(0xbU) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0xcU) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0xcU) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0xcU) + (((IData)(0xffU) 
+                                      - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                     - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0xcU)) << 
+                                (0x1fU & ((IData)(0xcU) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0xdU) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0xdU) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0xdU) + (((IData)(0xffU) 
+                                      - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                     - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0xdU)) << 
+                                (0x1fU & ((IData)(0xdU) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0xeU) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0xeU) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0xeU) + (((IData)(0xffU) 
+                                      - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                     - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0xeU)) << 
+                                (0x1fU & ((IData)(0xeU) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0xfU) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0xfU) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0xfU) + (((IData)(0xffU) 
+                                      - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                     - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0xfU)) << 
+                                (0x1fU & ((IData)(0xfU) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0x10U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0x10U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0x10U) + (((IData)(0xffU) 
+                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                      - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0x10U)) << 
+                                (0x1fU & ((IData)(0x10U) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0x11U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0x11U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0x11U) + (((IData)(0xffU) 
+                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                      - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0x11U)) << 
+                                (0x1fU & ((IData)(0x11U) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0x12U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0x12U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0x12U) + (((IData)(0xffU) 
+                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                      - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0x12U)) << 
+                                (0x1fU & ((IData)(0x12U) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0x13U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0x13U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0x13U) + (((IData)(0xffU) 
+                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                      - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0x13U)) << 
+                                (0x1fU & ((IData)(0x13U) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0x14U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0x14U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0x14U) + (((IData)(0xffU) 
+                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                      - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0x14U)) << 
+                                (0x1fU & ((IData)(0x14U) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0x15U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0x15U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0x15U) + (((IData)(0xffU) 
+                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                      - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0x15U)) << 
+                                (0x1fU & ((IData)(0x15U) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0x16U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0x16U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0x16U) + (((IData)(0xffU) 
+                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                      - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0x16U)) << 
+                                (0x1fU & ((IData)(0x16U) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                 & (((IData)(0x17U) 
+                                                     + 
+                                                     (((IData)(0xffU) 
+                                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                                      - (IData)(0x19U))) 
+                                                    >> 5U))] 
+        = (((~ ((IData)(1U) << (0x1fU & ((IData)(0x17U) 
+                                         + (((IData)(0xffU) 
+                                             - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                            - (IData)(0x19U)))))) 
+            & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+            (7U & (((IData)(0x17U) + (((IData)(0xffU) 
+                                       - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                      - (IData)(0x19U))) 
+                   >> 5U))]) | ((1U & (vlSelf->decoder_tb__DOT__target 
+                                       >> 0x17U)) << 
+                                (0x1fU & ((IData)(0x17U) 
+                                          + (((IData)(0xffU) 
+                                              - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                             - (IData)(0x19U))))));
+    decoder_tb__DOT__dec1__DOT__i = (((IData)(0xffU) 
+                                      - decoder_tb__DOT__dec1__DOT__leftBuffer) 
+                                     - (IData)(0x1aU));
+    while (VL_LTS_III(32, 0xffffffffU, decoder_tb__DOT__dec1__DOT__i)) {
+        vlSelf->decoder_tb__DOT__dec1__DOT__decoded[(7U 
+                                                     & (decoder_tb__DOT__dec1__DOT__i 
+                                                        >> 5U))] 
+            = ((~ ((IData)(1U) << (0x1fU & decoder_tb__DOT__dec1__DOT__i))) 
+               & vlSelf->decoder_tb__DOT__dec1__DOT__decoded[
+               (7U & (decoder_tb__DOT__dec1__DOT__i 
+                      >> 5U))]);
+        decoder_tb__DOT__dec1__DOT__i = (decoder_tb__DOT__dec1__DOT__i 
+                                         - (IData)(1U));
+    }
+    decoder_tb__DOT__fullTarget[0U] = vlSelf->decoder_tb__DOT__dec1__DOT__decoded[0U];
+    decoder_tb__DOT__fullTarget[1U] = vlSelf->decoder_tb__DOT__dec1__DOT__decoded[1U];
+    decoder_tb__DOT__fullTarget[2U] = vlSelf->decoder_tb__DOT__dec1__DOT__decoded[2U];
+    decoder_tb__DOT__fullTarget[3U] = vlSelf->decoder_tb__DOT__dec1__DOT__decoded[3U];
+    decoder_tb__DOT__fullTarget[4U] = vlSelf->decoder_tb__DOT__dec1__DOT__decoded[4U];
+    decoder_tb__DOT__fullTarget[5U] = vlSelf->decoder_tb__DOT__dec1__DOT__decoded[5U];
+    decoder_tb__DOT__fullTarget[6U] = vlSelf->decoder_tb__DOT__dec1__DOT__decoded[6U];
+    decoder_tb__DOT__fullTarget[7U] = vlSelf->decoder_tb__DOT__dec1__DOT__decoded[7U];
+    __Vtemp_hff926249__0[0U] = 0x2e766364U;
+    __Vtemp_hff926249__0[1U] = 0x725f7462U;
+    __Vtemp_hff926249__0[2U] = 0x636f6465U;
+    __Vtemp_hff926249__0[3U] = 0x6465U;
+    vlSymsp->_vm_contextp__->dumpfile(VL_CVT_PACK_STR_NW(4, __Vtemp_hff926249__0));
+    VL_PRINTF_MT("-Info: decoder_tb.sv:11: $dumpvar ignored, as Verilated without --trace\n");
+    vlSelf->decoder_tb__DOT__target = 0x1903a30cU;
+    VL_WRITEF("FINISHED decoder_tb\nOutput: %x\n",256,
+              decoder_tb__DOT__fullTarget.data());
+    VL_FINISH_MT("decoder_tb.sv", 15, "");
+}
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__Slow.cpp b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__Slow.cpp
new file mode 100644
index 0000000..4c30b77
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder___024root__Slow.cpp
@@ -0,0 +1,25 @@
+// Verilated -*- C++ -*-
+// DESCRIPTION: Verilator output: Design implementation internals
+// See Vdecoder.h for the primary calling header
+
+#include "verilated.h"
+
+#include "Vdecoder__Syms.h"
+#include "Vdecoder___024root.h"
+
+void Vdecoder___024root___ctor_var_reset(Vdecoder___024root* vlSelf);
+
+Vdecoder___024root::Vdecoder___024root(const char* _vcname__)
+    : VerilatedModule(_vcname__)
+ {
+    // Reset structure values
+    Vdecoder___024root___ctor_var_reset(this);
+}
+
+void Vdecoder___024root::__Vconfigure(Vdecoder__Syms* _vlSymsp, bool first) {
+    if (false && first) {}  // Prevent unused
+    this->vlSymsp = _vlSymsp;
+}
+
+Vdecoder___024root::~Vdecoder___024root() {
+}
diff --git a/verilog/dv/decoder_test/obj_dir/Vdecoder_classes.mk b/verilog/dv/decoder_test/obj_dir/Vdecoder_classes.mk
new file mode 100644
index 0000000..e75bb54
--- /dev/null
+++ b/verilog/dv/decoder_test/obj_dir/Vdecoder_classes.mk
@@ -0,0 +1,52 @@
+# Verilated -*- Makefile -*-
+# DESCRIPTION: Verilator output: Make include file with class lists
+#
+# This file lists generated Verilated files, for including in higher level makefiles.
+# See Vdecoder.mk for the caller.
+
+### Switches...
+# C11 constructs required?  0/1 (always on now)
+VM_C11 = 1
+# Coverage output mode?  0/1 (from --coverage)
+VM_COVERAGE = 0
+# Parallel builds?  0/1 (from --output-split)
+VM_PARALLEL_BUILDS = 0
+# Threaded output mode?  0/1/N threads (from --threads)
+VM_THREADS = 0
+# Tracing output mode?  0/1 (from --trace/--trace-fst)
+VM_TRACE = 0
+# Tracing output mode in FST format?  0/1 (from --trace-fst)
+VM_TRACE_FST = 0
+# Tracing threaded output mode?  0/1/N threads (from --trace-thread)
+VM_TRACE_THREADS = 0
+# Separate FST writer thread? 0/1 (from --trace-fst with --trace-thread > 0)
+VM_TRACE_FST_WRITER_THREAD = 0
+
+### Object file lists...
+# Generated module classes, fast-path, compile with highest optimization
+VM_CLASSES_FAST += \
+	Vdecoder \
+	Vdecoder___024root__DepSet_h918ffe01__0 \
+
+# Generated module classes, non-fast-path, compile with low/medium optimization
+VM_CLASSES_SLOW += \
+	Vdecoder___024root__Slow \
+	Vdecoder___024root__DepSet_he51a2589__0__Slow \
+	Vdecoder___024root__DepSet_h918ffe01__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 += \
+	Vdecoder__Syms \
+
+# Global classes, need linked once per executable, fast-path, compile with highest optimization
+VM_GLOBAL_FAST += \
+	verilated \
+
+# Global classes, need linked once per executable, non-fast-path, compile with low/medium optimization
+VM_GLOBAL_SLOW += \
+
+
+# Verilated -*- Makefile -*-
