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 -*-