diff options
Diffstat (limited to 'src/import/chips/p9a/procedures/hwp/memory/lib/workarounds/p9a_omi_workarounds.H')
-rw-r--r-- | src/import/chips/p9a/procedures/hwp/memory/lib/workarounds/p9a_omi_workarounds.H | 52 |
1 files changed, 46 insertions, 6 deletions
diff --git a/src/import/chips/p9a/procedures/hwp/memory/lib/workarounds/p9a_omi_workarounds.H b/src/import/chips/p9a/procedures/hwp/memory/lib/workarounds/p9a_omi_workarounds.H index 45828a2af..4491a91e3 100644 --- a/src/import/chips/p9a/procedures/hwp/memory/lib/workarounds/p9a_omi_workarounds.H +++ b/src/import/chips/p9a/procedures/hwp/memory/lib/workarounds/p9a_omi_workarounds.H @@ -51,29 +51,69 @@ namespace mc /// @param[in] i_proc_type PROC type/name /// @return true/false perform workaround /// -bool is_prbs_omi_required_helper(const uint8_t i_ocmb_type, const uint8_t i_proc_type); +bool is_prbs_omi_required(const uint8_t i_ocmb_type, const uint8_t i_proc_type); /// -/// @brief Determine whether to perform PRBS OMI workaround +/// @brief Helper function to determine whether PRBS axone OMI workarounds will be performed, that can be unit tested +/// +/// @param[in] i_ocmb_type OCMB type/name +/// @param[in] i_proc_type PROC type/name +/// @return true/false perform workaround +/// +bool is_prbs_omi_axone_required(const uint8_t i_ocmb_type, const uint8_t i_proc_type); + +/// +/// @brief Perform PRBS delay from prbs time and sim attributes +/// +/// @param[in] i_omi OMI target +/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff success, else error code +/// +fapi2::ReturnCode prbs_delay(const fapi2::Target<fapi2::TARGET_TYPE_OMI>& i_omi); + +/// +/// @brief Get PROC and OCMB types /// /// @param[in] i_ocmb_chip OCMB chip /// @param[in] i_proc_chip PROC chip /// @param[out] o_required workaround required /// @return FAPI2_RC_SUCCESS iff success /// -fapi2::ReturnCode is_prbs_omi_required( +fapi2::ReturnCode get_ocmb_proc_types( const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> i_ocmb_chip, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> i_proc_chip, - bool& o_required); + uint8_t& o_ocmb_type, + uint8_t& o_proc_type); /// -/// @brief Perform the PRBS OMI workaround +/// @brief Perform the PRBS OMI workaround for gemini configurations /// /// @param[in] i_omi OMI /// @param[in] i_dl_x4_backoff_en backoff enable bit /// @return fapi2::FAPI2_RC_SUCCESS iff ok /// -fapi2::ReturnCode prbs_omi( +fapi2::ReturnCode omi_training_prbs_gem( + const fapi2::Target<fapi2::TARGET_TYPE_OMI> i_omi, + const uint8_t i_dl_x4_backoff_en); + +/// +/// @brief Perform p9a_omi_train workaround for Axone+Explorer +/// +/// @param[in] i_omi OMI target +/// @param[in] i_dl_x4_backoff_en backoff enable field +/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff success +/// +fapi2::ReturnCode omi_training_prbs( + const fapi2::Target<fapi2::TARGET_TYPE_OMI> i_omi, + const uint8_t i_dl_x4_backoff_en); + +/// +/// @brief Perform p9a_omi_setup (pre-training) workaround for Axone+Explorer +/// +/// @param[in] i_omi OMI target +/// @param[in] i_dl_x4_backoff_en backoff enable field +/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff success +/// +fapi2::ReturnCode pre_omi_training_prbs( const fapi2::Target<fapi2::TARGET_TYPE_OMI> i_omi, const uint8_t i_dl_x4_backoff_en); |