From b8936029065835366e9e057a219c0c5194db8662 Mon Sep 17 00:00:00 2001 From: joshua Date: Sat, 14 May 2022 23:30:38 -0500 Subject: Verilog update --- verilog/alu/v6/obj_dir/Valu6.cpp | 207 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 verilog/alu/v6/obj_dir/Valu6.cpp (limited to 'verilog/alu/v6/obj_dir/Valu6.cpp') diff --git a/verilog/alu/v6/obj_dir/Valu6.cpp b/verilog/alu/v6/obj_dir/Valu6.cpp new file mode 100644 index 0000000..2e02259 --- /dev/null +++ b/verilog/alu/v6/obj_dir/Valu6.cpp @@ -0,0 +1,207 @@ +// Verilated -*- C++ -*- +// DESCRIPTION: Verilator output: Design implementation internals +// See Valu6.h for the primary calling header + +#include "Valu6.h" +#include "Valu6__Syms.h" + +//========== + +void Valu6::eval_step() { + VL_DEBUG_IF(VL_DBG_MSGF("+++++TOP Evaluate Valu6::eval\n"); ); + Valu6__Syms* __restrict vlSymsp = this->__VlSymsp; // Setup global symbol table + Valu6* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; +#ifdef VL_DEBUG + // Debug assertions + _eval_debug_assertions(); +#endif // VL_DEBUG + // Initialize + if (VL_UNLIKELY(!vlSymsp->__Vm_didInit)) _eval_initial_loop(vlSymsp); + // Evaluate till stable + int __VclockLoop = 0; + QData __Vchange = 1; + do { + VL_DEBUG_IF(VL_DBG_MSGF("+ Clock loop\n");); + vlSymsp->__Vm_activity = true; + _eval(vlSymsp); + if (VL_UNLIKELY(++__VclockLoop > 100)) { + // About to fail, so enable debug to see what's not settling. + // Note you must run make with OPT=-DVL_DEBUG for debug prints. + int __Vsaved_debug = Verilated::debug(); + Verilated::debug(1); + __Vchange = _change_request(vlSymsp); + Verilated::debug(__Vsaved_debug); + VL_FATAL_MT("alu6.v", 6, "", + "Verilated model didn't converge\n" + "- See DIDNOTCONVERGE in the Verilator manual"); + } else { + __Vchange = _change_request(vlSymsp); + } + } while (VL_UNLIKELY(__Vchange)); +} + +void Valu6::_eval_initial_loop(Valu6__Syms* __restrict vlSymsp) { + vlSymsp->__Vm_didInit = true; + _eval_initial(vlSymsp); + vlSymsp->__Vm_activity = true; + // Evaluate till stable + int __VclockLoop = 0; + QData __Vchange = 1; + do { + _eval_settle(vlSymsp); + _eval(vlSymsp); + if (VL_UNLIKELY(++__VclockLoop > 100)) { + // About to fail, so enable debug to see what's not settling. + // Note you must run make with OPT=-DVL_DEBUG for debug prints. + int __Vsaved_debug = Verilated::debug(); + Verilated::debug(1); + __Vchange = _change_request(vlSymsp); + Verilated::debug(__Vsaved_debug); + VL_FATAL_MT("alu6.v", 6, "", + "Verilated model didn't DC converge\n" + "- See DIDNOTCONVERGE in the Verilator manual"); + } else { + __Vchange = _change_request(vlSymsp); + } + } while (VL_UNLIKELY(__Vchange)); +} + +VL_INLINE_OPT void Valu6::_combo__TOP__1(Valu6__Syms* __restrict vlSymsp) { + VL_DEBUG_IF(VL_DBG_MSGF("+ Valu6::_combo__TOP__1\n"); ); + Valu6* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; + // Body + vlTOPp->alu6__DOT__sum = (vlTOPp->alu_in_1 + ((1U + & (((IData)(vlTOPp->alu_op_i) + >> 3U) + | (((IData)(vlTOPp->alu_op_i) + >> 1U) + & (~ (IData)(vlTOPp->alu_op_i))))) + ? + ((IData)(1U) + + + (~ vlTOPp->alu_in_2)) + : vlTOPp->alu_in_2)); + vlTOPp->alu_output = ((0U == (7U & (IData)(vlTOPp->alu_op_i))) + ? vlTOPp->alu6__DOT__sum + : ((4U == (7U & (IData)(vlTOPp->alu_op_i))) + ? (vlTOPp->alu_in_1 + ^ vlTOPp->alu_in_2) + : ((6U == (7U & (IData)(vlTOPp->alu_op_i))) + ? (vlTOPp->alu_in_1 + | vlTOPp->alu_in_2) + : ((7U == (7U & (IData)(vlTOPp->alu_op_i))) + ? (vlTOPp->alu_in_1 + & vlTOPp->alu_in_2) + : ((1U == (7U + & (IData)(vlTOPp->alu_op_i))) + ? ((0x40U + & vlTOPp->alu_in_2) + ? 0U + : ((0x1fU + >= + (0x3fU + & vlTOPp->alu_in_2)) + ? + (vlTOPp->alu_in_1 + << + (0x3fU + & vlTOPp->alu_in_2)) + : 0U)) + : ((5U == + (7U + & (IData)(vlTOPp->alu_op_i))) + ? (( + (0x1fU + >= + (0x3fU + & vlTOPp->alu_in_2)) + ? + (vlTOPp->alu_in_1 + >> + (0x3fU + & vlTOPp->alu_in_2)) + : 0U) + | ((8U + & (IData)(vlTOPp->alu_op_i)) + ? + ((IData)(0xffffffffU) + << + ((0x80000000U + & vlTOPp->alu_in_2) + ? 0U + : + ((0x10U + & ((~ + (vlTOPp->alu_in_2 + >> 4U)) + << 4U)) + | ((8U + & ((~ + (vlTOPp->alu_in_2 + >> 3U)) + << 3U)) + | ((4U + & ((~ + (vlTOPp->alu_in_2 + >> 2U)) + << 2U)) + | ((2U + & ((~ + (vlTOPp->alu_in_2 + >> 1U)) + << 1U)) + | (1U + & (~ vlTOPp->alu_in_2)))))))) + : 0U)) + : ((2U + == + (7U + & (IData)(vlTOPp->alu_op_i))) + ? + (1U + & (vlTOPp->alu6__DOT__sum + >> 0x1fU)) + : + ((3U + == + (7U + & (IData)(vlTOPp->alu_op_i))) + ? + ((vlTOPp->alu_in_1 + < vlTOPp->alu_in_2) + ? 1U + : 0U) + : 0U)))))))); +} + +void Valu6::_eval(Valu6__Syms* __restrict vlSymsp) { + VL_DEBUG_IF(VL_DBG_MSGF("+ Valu6::_eval\n"); ); + Valu6* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; + // Body + vlTOPp->_combo__TOP__1(vlSymsp); +} + +VL_INLINE_OPT QData Valu6::_change_request(Valu6__Syms* __restrict vlSymsp) { + VL_DEBUG_IF(VL_DBG_MSGF("+ Valu6::_change_request\n"); ); + Valu6* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; + // Body + return (vlTOPp->_change_request_1(vlSymsp)); +} + +VL_INLINE_OPT QData Valu6::_change_request_1(Valu6__Syms* __restrict vlSymsp) { + VL_DEBUG_IF(VL_DBG_MSGF("+ Valu6::_change_request_1\n"); ); + Valu6* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; + // Body + // Change detection + QData __req = false; // Logically a bool + return __req; +} + +#ifdef VL_DEBUG +void Valu6::_eval_debug_assertions() { + VL_DEBUG_IF(VL_DBG_MSGF("+ Valu6::_eval_debug_assertions\n"); ); + // Body + if (VL_UNLIKELY((alu_op_i & 0xf0U))) { + Verilated::overWidthError("alu_op_i");} +} +#endif // VL_DEBUG -- cgit v1.2.3