diff options
Diffstat (limited to 'src/import/generic/memory/lib/data_engine/data_engine_traits_def.H')
-rw-r--r-- | src/import/generic/memory/lib/data_engine/data_engine_traits_def.H | 69 |
1 files changed, 50 insertions, 19 deletions
diff --git a/src/import/generic/memory/lib/data_engine/data_engine_traits_def.H b/src/import/generic/memory/lib/data_engine/data_engine_traits_def.H index be55890ea..813abbe33 100644 --- a/src/import/generic/memory/lib/data_engine/data_engine_traits_def.H +++ b/src/import/generic/memory/lib/data_engine/data_engine_traits_def.H @@ -43,41 +43,45 @@ namespace mss { /// -/// @brief enum list of preliminary data fields +/// @brief enum list of preliminary data fields needed before eff_config /// -enum generic_metadata_fields +enum pre_data_init_fields { // Template recursive base case - ATTR_METADATA_BASE_CASE = 0, + ATTR_PRE_DATA_ENGINE_CASE = 0, // Attrs to set - DIMM_TYPE_METADATA = 1, - DRAM_GEN_METADATA = 2, - DIMM_POS_METADATA = 3, + DIMM_TYPE = 1, + DRAM_GEN = 2, + HYBRID = 3, + HYBRID_MEDIA = 4, + MRANKS = 5, + HOST_TO_DDR_SPEED_RATIO = 6, + DIMM_RANKS_CNFG = 7, // Dispatcher set to last enum value - ATTR_METADATA_DISPATCHER = DIMM_POS_METADATA, + ATTR_PRE_DATA_ENG_DISPATCHER = DIMM_RANKS_CNFG, }; /// /// @brief enum list of preliminary data fields +/// @note Separating these fields into their own special case +/// since this is needed for reuse in incompatible code bases +/// (e.g. Nimbus vs Axone) +/// @warning these depend on pre_data_init_fields fields being set /// -enum pre_data_init_fields +enum generic_metadata_fields { // Template recursive base case - ATTR_PRE_DATA_ENGINE_CASE = 0, + ATTR_METADATA_BASE_CASE = 0, // Attrs to set - DIMM_TYPE = 1, - DRAM_GEN = 2, - HYBRID = 3, - HYBRID_MEDIA = 4, - MRANKS = 5, - DIMM_RANKS_CNFG = 6, - HOST_TO_DDR_SPEED_RATIO = 7, + DIMM_TYPE_METADATA = 1, + DRAM_GEN_METADATA = 2, + DIMM_POS_METADATA = 3, // Dispatcher set to last enum value - ATTR_PRE_DATA_ENG_DISPATCHER = HOST_TO_DDR_SPEED_RATIO, + ATTR_METADATA_DISPATCHER = DIMM_POS_METADATA, }; /// @@ -90,13 +94,17 @@ enum attr_eff_engine_fields // Attrs to set DRAM_WIDTH = 1, + PRIM_BUS_WIDTH = 2, + DRAM_DENSITY = 3, + PRIMARY_DIE_COUNT = 4, + PRIM_STACK_TYPE = 5, // Dispatcher set to last enum value - ATTR_EFF_DISPATCHER = DRAM_WIDTH, + ATTR_EFF_DISPATCHER = PRIM_STACK_TYPE, }; /// -/// @brief enum list of SI attr fields to set +/// @brief enum list of SI attr fields to set from EFD /// enum attr_si_engine_fields { @@ -130,6 +138,29 @@ enum attr_si_engine_fields }; /// +/// @brief enum list of derived attributes +/// @note these are attributes that are derived from other +/// attributes or other APIs. +/// +enum attr_engine_derived_fields +{ + // Attributes are set recursively from the bottom up. + // When adding attrs that depend on other attrs + // being set first, they should be placed earlier in the enum list + // so that base level attrs are set first. + + // Template recursive base case + ATTR_DERIVED_BASE_CASE = 0, + + // Attrs to set + MEM_DIMM_SIZE = 1, + LOGICAL_RANKS = 2, + + // Dispatcher set to last enum value + ATTR_DERIVED_DISPATCHER = LOGICAL_RANKS, +}; + +/// /// @brief Forward declartion of traits for pre_data_engine /// @class preDataInitTraits /// @tparam T proc_type (e.g. Nimbus, Axone, etc.) |