* This file is part of the MindStudio project.
* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* MindStudio is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* ------------------------------------------------------------------------- */
#ifndef CORE_FRAMEWORK_PLATFORM_CONFIG_H
#define CORE_FRAMEWORK_PLATFORM_CONFIG_H
#include <cstdint>
#include <iostream>
#include <unordered_map>
#include "arch_def.h"
namespace Sanitizer {
constexpr uint32_t UB_ALIGN_SIZE = 32U;
constexpr uint32_t ASCEND_910B_PRIVATE_SIZE = 75 * 32 * 1024;
constexpr uint32_t ASCEND_910A_PRIVATE_SIZE = 32 * 32 * 1024;
constexpr uint32_t ASCEND_310P_PRIVATE_SIZE = 18 * 32 * 1024;
constexpr uint32_t ASCEND_A5_PRIVATE_SIZE = 96 * 32 * 1024;
constexpr uint32_t KB_TO_BYTES = 1024;
constexpr uint32_t GB_TO_BYTES = 1024 * 1024 * 1024;
struct ChipInfo {
uint32_t aiCoreCnt;
uint32_t l0aSize;
uint32_t l0bSize;
uint32_t l0cSize;
uint32_t l1Size;
uint32_t ubSize;
uint32_t ubBlockSize;
uint32_t privateSize;
uint64_t hbmSize;
};
inline bool HasSubBlocks(DeviceType deviceType)
{
if (deviceType > DeviceType::ASCEND_910B_START && deviceType < DeviceType::ASCEND_910B_END) {
return true;
} else if (deviceType > DeviceType::ASCEND_950_START && deviceType < DeviceType::ASCEND_950_END) {
return true;
}
return false;
}
inline bool IsAscend95(DeviceType deviceType)
{
return deviceType > DeviceType::ASCEND_950_START && deviceType < DeviceType::ASCEND_950_END;
}
const std::unordered_map<DeviceType, ChipInfo> CHIP_INFO_MAP = {
{DeviceType::ASCEND_910_PREMIUM_A, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 1024 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_910A_PRIVATE_SIZE, 32 * GB_TO_BYTES}},
{DeviceType::ASCEND_910B1, {24U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 128 * KB_TO_BYTES, 512 * KB_TO_BYTES,
192 * KB_TO_BYTES, 32U, ASCEND_910B_PRIVATE_SIZE, 64 * GB_TO_BYTES}},
{DeviceType::ASCEND_910B2, {24U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 128 * KB_TO_BYTES, 512 * KB_TO_BYTES,
192 * KB_TO_BYTES, 32U, ASCEND_910B_PRIVATE_SIZE, 64 * GB_TO_BYTES}},
{DeviceType::ASCEND_910B3, {20U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 128 * KB_TO_BYTES, 512 * KB_TO_BYTES,
192 * KB_TO_BYTES, 32U, ASCEND_910B_PRIVATE_SIZE, 64 * GB_TO_BYTES}},
{DeviceType::ASCEND_910B4, {20U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 128 * KB_TO_BYTES, 512 * KB_TO_BYTES,
192 * KB_TO_BYTES, 32U, ASCEND_910B_PRIVATE_SIZE, 64 * GB_TO_BYTES}},
{DeviceType::ASCEND_310P, {8U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 1024 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_310P_PRIVATE_SIZE, 32 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_950x, {8U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 24 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_950y, {8U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 16 * GB_TO_BYTES}},
{DeviceType::ASCEND_950PR_950z, {8U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 16 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9571, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 144 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9572, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 96 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9573, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 128 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9574, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 84 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9575, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 96 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9576, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 64 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9577, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 84 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9578, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 56 * GB_TO_BYTES}},
{DeviceType::ASCEND_950PR_9579, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 128 * GB_TO_BYTES}},
{DeviceType::ASCEND_950PR_957b, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 112 * GB_TO_BYTES}},
{DeviceType::ASCEND_950PR_957c, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 84 * GB_TO_BYTES}},
{DeviceType::ASCEND_950PR_957d, {28U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 96 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9581, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 144 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9582, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 96 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9583, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 126 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9584, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 84 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9585, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 96 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9586, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 64 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9587, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 84 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9588, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 56 * GB_TO_BYTES}},
{DeviceType::ASCEND_950PR_9589, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 128 * GB_TO_BYTES}},
{DeviceType::ASCEND_950PR_958b, {32U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 112 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9591, {36U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 144 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9592, {36U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 96 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9595, {36U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 96 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_9596, {36U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 64 * GB_TO_BYTES}},
{DeviceType::ASCEND_950PR_9599, {36U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 128 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_95A1, {36U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 128 * GB_TO_BYTES}},
{DeviceType::ASCEND_950DT_95A2, {36U, 64 * KB_TO_BYTES, 64 * KB_TO_BYTES, 256 * KB_TO_BYTES, 512 * KB_TO_BYTES,
256 * KB_TO_BYTES, 32U, ASCEND_A5_PRIVATE_SIZE, 128 * GB_TO_BYTES}},
};
const std::unordered_map<std::string, DeviceType> SOC_VERSION_MAP = {
{"Ascend910PremiumA", DeviceType::ASCEND_910_PREMIUM_A},
{"Ascend910B1", DeviceType::ASCEND_910B1},
{"Ascend910B2", DeviceType::ASCEND_910B2},
{"Ascend910B2C", DeviceType::ASCEND_910B2},
{"Ascend910B3", DeviceType::ASCEND_910B3},
{"Ascend910B4", DeviceType::ASCEND_910B4},
{"Ascend910B4-1", DeviceType::ASCEND_910B4},
{"Ascend910_9391", DeviceType::ASCEND_910B1},
{"Ascend910_9392", DeviceType::ASCEND_910B1},
{"Ascend910_9381", DeviceType::ASCEND_910B2},
{"Ascend910_9382", DeviceType::ASCEND_910B2},
{"Ascend910_9372", DeviceType::ASCEND_910B3},
{"Ascend910_9362", DeviceType::ASCEND_910B4},
{"Ascend950DT_950x", DeviceType::ASCEND_950DT_950x},
{"Ascend950DT_950y", DeviceType::ASCEND_950DT_950y},
{"Ascend950DT_9571", DeviceType::ASCEND_950DT_9571},
{"Ascend950DT_9572", DeviceType::ASCEND_950DT_9572},
{"Ascend950DT_9573", DeviceType::ASCEND_950DT_9573},
{"Ascend950DT_9574", DeviceType::ASCEND_950DT_9574},
{"Ascend950DT_9575", DeviceType::ASCEND_950DT_9575},
{"Ascend950DT_9576", DeviceType::ASCEND_950DT_9576},
{"Ascend950DT_9577", DeviceType::ASCEND_950DT_9577},
{"Ascend950DT_9578", DeviceType::ASCEND_950DT_9578},
{"Ascend950DT_9581", DeviceType::ASCEND_950DT_9581},
{"Ascend950DT_9582", DeviceType::ASCEND_950DT_9582},
{"Ascend950DT_9583", DeviceType::ASCEND_950DT_9583},
{"Ascend950DT_9584", DeviceType::ASCEND_950DT_9584},
{"Ascend950DT_9585", DeviceType::ASCEND_950DT_9585},
{"Ascend950DT_9586", DeviceType::ASCEND_950DT_9586},
{"Ascend950DT_9587", DeviceType::ASCEND_950DT_9587},
{"Ascend950DT_9588", DeviceType::ASCEND_950DT_9588},
{"Ascend950DT_9591", DeviceType::ASCEND_950DT_9591},
{"Ascend950DT_9592", DeviceType::ASCEND_950DT_9592},
{"Ascend950DT_9595", DeviceType::ASCEND_950DT_9595},
{"Ascend950DT_9596", DeviceType::ASCEND_950DT_9596},
{"Ascend950DT_95A1", DeviceType::ASCEND_950DT_95A1},
{"Ascend950DT_95A2", DeviceType::ASCEND_950DT_95A2},
{"Ascend950PR_950z", DeviceType::ASCEND_950PR_950z},
{"Ascend950PR_9579", DeviceType::ASCEND_950PR_9579},
{"Ascend950PR_957b", DeviceType::ASCEND_950PR_957b},
{"Ascend950PR_957c", DeviceType::ASCEND_950PR_957c},
{"Ascend950PR_957d", DeviceType::ASCEND_950PR_957d},
{"Ascend950PR_9589", DeviceType::ASCEND_950PR_9589},
{"Ascend950PR_958b", DeviceType::ASCEND_950PR_958b},
{"Ascend950PR_9599", DeviceType::ASCEND_950PR_9599},
{"Ascend310P1", DeviceType::ASCEND_310P},
{"Ascend310P3", DeviceType::ASCEND_310P},
{"Ascend310P5", DeviceType::ASCEND_310P},
{"Ascend310P7", DeviceType::ASCEND_310P},
};
const std::unordered_map<std::string, uint16_t> ALIGN_MAP = {
{"UB_NORMAL_ALIGN_SIZE", 32U},
{"L0A_L0B_L0C_NORMAL_ALIGN_SIZE", 512U},
{"L1_NORMAL_ALIGN_SIZE", 32U},
{"VMRGSORET4_ALIGN_SIZE", 8U},
};
}
#endif