Made decoder and test got both to compile. Seems to not work as expected need to look into more
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 -*-