diff options
Diffstat (limited to 'src/import/generic/memory/lib/utils/mcbist/gen_mss_mcbist_address.H')
-rw-r--r-- | src/import/generic/memory/lib/utils/mcbist/gen_mss_mcbist_address.H | 273 |
1 files changed, 0 insertions, 273 deletions
diff --git a/src/import/generic/memory/lib/utils/mcbist/gen_mss_mcbist_address.H b/src/import/generic/memory/lib/utils/mcbist/gen_mss_mcbist_address.H index 07ac53933..b42c0e39b 100644 --- a/src/import/generic/memory/lib/utils/mcbist/gen_mss_mcbist_address.H +++ b/src/import/generic/memory/lib/utils/mcbist/gen_mss_mcbist_address.H @@ -43,62 +43,6 @@ namespace mss { -// Forward declaration - -/// -/// @class mcbistMCTraits -/// @tparam MC the mc type -/// @brief A MC to MC_TARGET_TYPE mapping -/// -template< mss::mc_type MC > -class mcbistMCTraits; - -/// -/// @class mcbistTraits -/// @tparam MC the mc type of the T -/// @tparam T the fapi2::TargetType - derived -/// @brief a collection of traits associated with the MCBIST engine or hardware -/// -template< mss::mc_type MC, fapi2::TargetType T > -class mcbistTraits; - -namespace ecc -{ - -/// -/// @class trap_address -/// @brief Converts trap address into mcbist::address -/// @tparam MC the mc type of the T -/// @tparam T fapi2 Target Type defaults to fapi2::TARGET_TYPE_MCA or TARGET_TYPE_MEM_PORT -/// @tparam TT traits type defaults to eccTraits<T> -/// -// See declaration below -template< mss::mc_type MC = DEFAULT_MC_TYPE, fapi2::TargetType T = mss::mcbistMCTraits<MC>::FWMS_ADDR_TARGET_TYPE, typename TT = mss::eccTraits<MC, T> > -class trap_address; - -namespace fwms -{ - -/// -/// @class address -/// @brief Converts Firmware Mark Store ADDRESS field into mcbist::address -/// @tparam MC the mc type of the T -/// @tparam T fapi2 Target Type defaults to fapi2::TARGET_TYPE_MCA or TARGET_TYPE_MEM_PORT -/// @tparam TT traits type defaults to eccTraits<MC, T> -/// @note template argument defaults are in forward declaration in lib/mcbist/address.H -/// @note 12 = dimm -/// @note 13:14 = mrank -/// @note 15:17 = srank -/// @note 18:19 = bank group -/// @note 20:22 = bank -/// -// See declaration below -template< mss::mc_type MC = DEFAULT_MC_TYPE, fapi2::TargetType T = mss::mcbistMCTraits<MC>::FWMS_ADDR_TARGET_TYPE, typename TT = mss::eccTraits<MC, T> > -class address; - -} // close namespace fwms -} // close namespace ecc - namespace mcbist { @@ -155,39 +99,6 @@ class address } /// - /// @brief Construct an address from an ecc::trap_address - /// @tparam MC the mc type - /// @param[in] i_address representing an address field from a trap address - /// - template< mss::mc_type MC = DEFAULT_MC_TYPE > - address( const ecc::trap_address<MC>& i_address ) - { - this->set_field<PORT >(i_address.template get_field<ecc::trap_address<MC>::PORT>()); - this->set_field<DIMM >(i_address.template get_field<ecc::trap_address<MC>::DIMM>()); - this->set_field<MRANK >(i_address.template get_field<ecc::trap_address<MC>::MRANK>()); - this->set_field<SRANK >(i_address.template get_field<ecc::trap_address<MC>::SRANK>()); - this->set_field<ROW >(i_address.template get_field<ecc::trap_address<MC>::ROW>()); - this->set_field<COL >(i_address.template get_field<ecc::trap_address<MC>::COL>()); - this->set_field<BANK >(i_address.template get_field<ecc::trap_address<MC>::BANK>()); - this->set_field<BANK_GROUP>(i_address.template get_field<ecc::trap_address<MC>::BANK_GROUP>()); - } - - /// - /// @brief Construct an address from an ecc::fwms::address - /// @tparam MC the mc type - /// @param[in] i_address representing an address field from a firmware mark store register - /// - template< mss::mc_type MC = DEFAULT_MC_TYPE > - address( const ecc::fwms::address<MC>& i_address ) - { - this->set_field<DIMM >(i_address.template get_field<ecc::fwms::address<MC>::DIMM>()); - this->set_field<MRANK >(i_address.template get_field<ecc::fwms::address<MC>::MRANK>()); - this->set_field<SRANK >(i_address.template get_field<ecc::fwms::address<MC>::SRANK>()); - this->set_field<BANK_GROUP>(i_address.template get_field<ecc::fwms::address<MC>::BANK_GROUP>()); - this->set_field<BANK >(i_address.template get_field<ecc::fwms::address<MC>::BANK>()); - } - - /// /// @brief Conversion operator to uint64_t /// @warn Right-aligns the address /// @@ -507,190 +418,6 @@ class address }; } // close namespace mcbist - -// Documented above in its declaration. -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -class ecc::fwms::address -{ - public: - // first is the start bit of the field, second is the length - using field = std::pair<uint64_t, uint64_t>; - - constexpr static field DIMM = {TT::FIRMWARE_MS_ADDRESS, 1}; - constexpr static field MRANK = {TT::FIRMWARE_MS_ADDRESS + 1, 2}; - constexpr static field SRANK = {TT::FIRMWARE_MS_ADDRESS + 3, 3}; - constexpr static field BANK_GROUP = {TT::FIRMWARE_MS_ADDRESS + 6, 2}; - constexpr static field BANK = {TT::FIRMWARE_MS_ADDRESS + 8, 3}; - - address() = default; - - /// - /// @brief Construct an address from a uint64_t (scom'ed value) - /// @param[in] i_value representing raw value from FWMS register - /// - address( const uint64_t& i_value ): - iv_value(i_value) - { - } - - /// - /// @brief Construct an address from an mcbist::address - /// @param[in] i_mcbist_address mcbist formatted address - /// @note Construction of mcbist::address from ecc::fwms::address - /// @note located in mcbist::address class - /// - address( const mcbist::address& i_mcbist_address ) - { - iv_value.insertFromRight<DIMM.first, DIMM.second>(i_mcbist_address.get_field<mcbist::address::DIMM>()); - iv_value.insertFromRight<MRANK.first, MRANK.second>(i_mcbist_address.get_field<mcbist::address::MRANK>()); - iv_value.insertFromRight<SRANK.first, SRANK.second>(i_mcbist_address.get_field<mcbist::address::SRANK>()); - iv_value.insertFromRight<BANK_GROUP.first, BANK_GROUP.second> - (i_mcbist_address.get_field<mcbist::address::BANK_GROUP>()); - iv_value.insertFromRight<BANK.first, BANK.second>(i_mcbist_address.get_field<mcbist::address::BANK>()); - } - - /// - /// @brief Conversion operator to uint64_t - /// - inline operator uint64_t() const - { - uint64_t l_temp = 0; - iv_value.extract<TT::FIRMWARE_MS_ADDRESS, TT::FIRMWARE_MS_ADDRESS_LEN, TT::FIRMWARE_MS_ADDRESS>(l_temp); - return l_temp; - } - - /// - /// @brief Get a field from an address - /// @tparam F the field to get - /// @return right-aligned uint64_t representing the value - /// - template< const field& F > - inline uint64_t get_field() const - { - uint64_t l_value = 0; - iv_value.extractToRight<F.first, F.second>(l_value); - return l_value; - } - - private: - fapi2::buffer<uint64_t> iv_value; - -}; - -using field = std::pair<uint64_t, uint64_t>; -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::fwms::address<MC, T, TT>::DIMM; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::fwms::address<MC, T, TT>::MRANK; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::fwms::address<MC, T, TT>::SRANK; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::fwms::address<MC, T, TT>::BANK_GROUP; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::fwms::address<MC, T, TT>::BANK; - -// Documented above in its declaration. -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -class ecc::trap_address -{ - public: - // first is the start bit of the field, second is the length - using field = std::pair<uint64_t, uint64_t>; - - constexpr static field PORT = {TT::TRAP_ADDRESS_PORT, TT::TRAP_ADDRESS_PORT_LEN}; - constexpr static field DIMM = {TT::TRAP_ADDRESS_DIMM, TT::TRAP_ADDRESS_DIMM_LEN}; - constexpr static field MRANK = {TT::TRAP_ADDRESS_MRANK, TT::TRAP_ADDRESS_MRANK_LEN}; - constexpr static field SRANK = {TT::TRAP_ADDRESS_SRANK, TT::TRAP_ADDRESS_SRANK_LEN}; - constexpr static field ROW = {TT::TRAP_ADDRESS_ROW, TT::TRAP_ADDRESS_ROW_LEN}; - constexpr static field COL = {TT::TRAP_ADDRESS_COL, TT::TRAP_ADDRESS_COL_LEN}; - constexpr static field BANK = {TT::TRAP_ADDRESS_BANK, TT::TRAP_ADDRESS_BANK_LEN}; - constexpr static field BANK_GROUP = {TT::TRAP_ADDRESS_BANK_GROUP, TT::TRAP_ADDRESS_BANK_GROUP_LEN}; - - trap_address() = default; - - /// - /// @brief Construct an address from a uint64_t (scom'ed value) - /// @param[in] i_value representing raw value from FWMS register - /// - trap_address( const uint64_t& i_value ): - iv_value(i_value) - { - } - - /// - /// @brief Construct an address from an mcbist::address - /// @param[in] i_mcbist_address mcbist formatted address - /// @note Construction of mcbist::address from ecc::trap_address - /// @note located in mcbist::address class - /// - trap_address( const mcbist::address& i_mcbist_address ) - { - iv_value.insertFromRight<PORT.first, PORT.second>(i_mcbist_address.get_field<mcbist::address::PORT>()); - iv_value.insertFromRight<DIMM.first, DIMM.second>(i_mcbist_address.get_field<mcbist::address::DIMM>()); - iv_value.insertFromRight<MRANK.first, MRANK.second>(i_mcbist_address.get_field<mcbist::address::MRANK>()); - iv_value.insertFromRight<SRANK.first, SRANK.second>(i_mcbist_address.get_field<mcbist::address::SRANK>()); - iv_value.insertFromRight<ROW.first, ROW.second>(i_mcbist_address.get_field<mcbist::address::ROW>()); - iv_value.insertFromRight<COL.first, COL.second>(i_mcbist_address.get_field<mcbist::address::COL>()); - iv_value.insertFromRight<BANK.first, BANK.second>(i_mcbist_address.get_field<mcbist::address::BANK>()); - iv_value.insertFromRight<BANK_GROUP.first, BANK_GROUP.second> - (i_mcbist_address.get_field<mcbist::address::BANK_GROUP>()); - } - - /// - /// @brief Conversion operator to uint64_t - /// - inline operator uint64_t() const - { - uint64_t l_temp = 0; - iv_value.extract<TT::TRAP_ADDRESS, TT::TRAP_ADDRESS_LEN, TT::TRAP_ADDRESS>(l_temp); - return l_temp; - } - - /// - /// @brief Get a field from an address - /// @tparam F the field to get - /// @return right-aligned uint64_t representing the value - /// - template< const field& F > - inline uint64_t get_field() const - { - uint64_t l_value = 0; - iv_value.extractToRight<F.first, F.second>(l_value); - return l_value; - } - - private: - fapi2::buffer<uint64_t> iv_value; -}; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::trap_address<MC, T, TT>::PORT; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::trap_address<MC, T, TT>::DIMM; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::trap_address<MC, T, TT>::MRANK; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::trap_address<MC, T, TT>::SRANK; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::trap_address<MC, T, TT>::ROW; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::trap_address<MC, T, TT>::COL; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::trap_address<MC, T, TT>::BANK; - -template< mss::mc_type MC, fapi2::TargetType T , typename TT > -constexpr field ecc::trap_address<MC, T, TT>::BANK_GROUP; - } // close namespace mss #endif |