【已评审】支持CPLD全资源自检功能

背景
现网出现多例CPLD芯片故障,表现为寄存器异常导致单板不开工、反复重启等,根因为厂家工艺问题,需要在装备阶段对CPLD进行全资源自检。

决策点
general_hardware增加私有类CpldSpaceTest以及相关属性声明,对应基础板和扩展板CSR中增加对象配置。

详细描述
(1)新增CpldSpaceTest类

属性名称 类型 属性说明
CpldIndex U8 CPLD索引值,表示第几片CPLD,从1开始计数
Manufacturer U8 CPLD厂商,表示当前对象配置的对应厂商,0:anlu,1:lattice,2:pango
TestFirmwares String[] CPLD检测固件列表,与hpm包中的case固件名称对应
RefreshFirmware String CPLD恢复固件名称,与hpm包中的refresh固件名称对应
CpldResultRegister U8 检测CPLD测试结果的寄存器
RefSmcChip U8[] 引用对应的Smc对象,在测试时阻止Smc访问使用
WaitTime U32 检测等待时间,单位: ms
RefLogicFirmware U8[] 引用CPLD升级对象,在UID组件匹配,确定升级使用的Chip,切换Jtag链路使用
RefBusIndex U8 获取测试结果对应Bus的参数,当前支持GPIO
RefMode String 获取测试结果的方式,当前支持GPIO和SMC

(2)新增CSR配置
基础板增加配置:

{
    "Accessor_Cpld1_check": {
        "Chip": "#/Smc_ExpBoardSMC",
        "Mask": "<=/CpuBoard_1.Slot |> expr(($1 == 1)? 8 : 2)",
        "Offset": 1006651648,
        "Size": 1,
        "Type": 0,
        "Value": 0
    },
    "Accessor_Cpld2_check": {
        "Chip": "#/Smc_ExpBoardSMC",
        "Mask": "<=/CpuBoard_1.Slot |> expr(($1 == 1)? 4 : 1)",
        "Offset": 1006651648,
        "Size": 1,
        "Type": 0,
        "Value": 0
    },
    "CpldSpaceTest_BCU_1": {
        "CpldIndex": 1,
        "CpldResultRegister": "#/Accessor_Cpld1_check",
        "Manufacturer": 0,
        "RefLogicFirmware": "#/LogicFirmware_BCU_1",
        "RefMode": "SMC",
        "RefSmcChip": "#/Smc_CpuBrdSMC",
        "RefreshFirmware": "anlu_valid_00.vme",
        "TestFirmwares": [
            "anlu_cpld00.vme",
            "anlu_cpld01.vme",
            "anlu_cpld02.vme",
            "anlu_cpld03.vme",
            "anlu_cpld04.vme",
            "anlu_cpld05.vme",
            "anlu_cpld06.vme"
        ],
        "WaitTime": 10000
    },
    "CpldSpaceTest_BCU_2": {
        "CpldIndex": 2,
        "CpldResultRegister": "#/Accessor_Cpld2_check",
        "Manufacturer": 0,
        "RefLogicFirmware": "#/LogicFirmware_BCU_1",
        "RefMode": "SMC",
        "RefSmcChip": "#/Smc_CpuBrdSMC",
        "RefreshFirmware": "anlu_valid_10.vme",
        "TestFirmwares": [
            "anlu_cpld10.vme",
            "anlu_cpld11.vme",
            "anlu_cpld12.vme",
            "anlu_cpld13.vme",
            "anlu_cpld14.vme",
            "anlu_cpld15.vme",
            "anlu_cpld16.vme"
        ],
        "WaitTime": 10000
    }
}

扩展板增加配置:

{
    "CpldSpaceTest_EXU_1": {
        "CpldIndex": 1,
        "Manufacturer": 0,
        "RefBusIndex": 100,
        "RefLogicFirmware": "#/LogicFirmware_EXU_1",
        "RefMode": "GPIO",
        "RefSmcChip": "#/Smc_ExpBoardSMC",
        "RefreshFirmware": "anlu_valid20.svf",
        "TestFirmwares": [
            "anlu_cpld20.svf",
            "anlu_cpld21.svf",
            "anlu_cpld22.svf",
            "anlu_cpld23.svf",
            "anlu_cpld24.svf",
            "anlu_cpld25.svf",
            "anlu_cpld26.svf"
        ],
        "WaitTime": 30000
    }
}

风扇板增加配置:

{
    "CpldSpaceTest_CLU_1": {
        "CpldIndex": 1,
        "Manufacturer": 0,
        "RefBusIndex": 87,
        "RefLogicFirmware": "#/LogicFirmware_CLU_1",
        "RefMode": "GPIO",
        "RefSmcChip": "#/Smc_FanBoardSMC",
        "RefreshFirmware": "anlu_valid30.svf",
        "TestFirmwares": [
            "anlu_cpld30.svf",
            "anlu_cpld31.svf",
            "anlu_cpld32.svf",
            "anlu_cpld33.svf",
            "anlu_cpld34.svf",
            "anlu_cpld35.svf",
            "anlu_cpld36.svf",
            "anlu_cpld37.svf"
        ],
        "WaitTime": 30000
    }
}

评审结论
(1)同意新增CpldSpaceTest类及相关属性用于CPLD全资源检测功能;
(2)CSR对象配置更适合放置在PSR中,但由于当前不支持跨文件引用对象及属性,且新增配置依赖LogicFirmware、Smc等对象,无法支持配置在PSR中,同意在基础板和扩展板CSR新增对象;

遗留问题
CSR需要打通跨文件引用功能,支持在PSR中引用其他文件对象