背景
现网出现多例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中引用其他文件对象