目录
ECO(Engineering Change Order)的解释
ECO(Engineering Change Order)的解释
ECO(Engineering Change Order) 是工程变更指令的缩写,是一种在硬件设计完成后进行的小规模修改,以修复已知的问题或改进性能。在硬件设计和制造过程中,ECO 是一种常见的做法,用于在不重新设计整个芯片或系统的情况下,快速解决问题。
1. ECO 的目的
- 修复错误:解决设计中发现的错误或缺陷。
- 性能优化:提升系统的性能或效率。
- 功能增强:增加新的功能或特性。
- 兼容性改进:改善与其他系统的兼容性。
2. ECO 的类型
- 逻辑 ECO:修改逻辑设计,通常是通过更改 RTL(寄存器传输级)代码来实现。
- 物理 ECO:修改物理布局,通常是在布局布线阶段进行调整。
- 时序 ECO:优化时序路径,以满足时序约束。
- 功耗 ECO:优化功耗,以降低功耗或提高能效。
3. ECO 的实施步骤
- 问题识别:识别需要修复或改进的问题。
- 方案设计:设计具体的 ECO 方案,包括修改的逻辑、布局或时序。
- 验证:通过仿真和测试验证 ECO 方案的有效性。
- 实施:在现有的设计基础上实施 ECO。
- 验证和测试:再次进行验证和测试,确保 ECO 没有引入新的问题。
- 生产:将修改后的设计投入生产。
4. 具体应用场景
在你提供的例子中,ECO 用于处理 PCIe 设备的 ROMBAR(Read-Only Memory Base Address Register)错误。具体来说:
- pcie_rombar_eco_disable 字段用于控制是否启用或禁用 ROMBAR ECO 功能。
- 0:ECO 启用,硬件 ECO 处理 ROMBAR 错误。
- 1:禁用 ROMBAR ECO,ROM 代码处理此错误,需要使用 PCIe ATU(Address Translation Unit)区域的固定地址映射功能将 PF5 和 PF6 的 ROMBAR 映射到 SPI 闪存的 0-512KB 地址空间。
详细解释
字段信息
- 地址:41h
- 位域:31
- 模块:PCIE
- 负责人:zouyang
- 子模块:PCIE_config
- 名称:pcie_rombar_eco_disable
- 类型:R/W(读写),RO(只读)
- 默认值:Y
- 描述:
- 将此值复制到 PCIe 包装器的 CSR 位:CSR cfg_rd_misc_info_set63_3[31],偏移量为 0xEEC,以启用或禁用 PF5 和 PF6 的 ROMBAR ECO。
- 0:ECO 启用,硬件 ECO 处理 ROMBAR 错误。
- 1:禁用 PF5 和 PF6 的 ROMBAR ECO,ROM 代码处理此错误,需要使用 PCIe ATU 区域的固定地址映射功能将 PF5 和 PF6 的 ROMBAR 映射到 SPI 闪存的 0-512KB 地址空间。
详细解释
-
字段名称:pcie_rombar_eco_disable
- 位置:位于地址 41h 的第 31 位。
- 类型:读写(R/W)和只读(RO)。
-
功能:
- 该字段用于控制 PCIe 包装器中 PF5 和 PF6 的 ROMBAR ECO 功能的启用或禁用。
- ECO:工程变更指令,用于修复 ROMBAR 相关的错误。
-
值解释:
- 0:ECO 启用
- 当此位设置为 0 时,硬件 ECO 功能将处理 ROMBAR 错误。这意味着硬件会自动修正 ROMBAR 相关的问题,无需额外的软件干预。
- 1:禁用 PF5 和 PF6 的 ROMBAR ECO
- 当此位设置为 1 时,硬件 ECO 功能将被禁用,ROM 代码将负责处理 ROMBAR 错误。此时,需要使用 PCIe ATU(Address Translation Unit)区域的固定地址映射功能,将 PF5 和 PF6 的 ROMBAR 映射到 SPI 闪存的 0-512KB 地址空间。
- 0:ECO 启用
-
CSR 位复制:
- 将
pcie_rombar_eco_disable
字段的值复制到 PCIe 包装器的 CSR(Control and Status Register)位cfg_rd_misc_info_set63_3[31]
,偏移量为 0xEEC。 - 这个复制操作是为了确保 PCIe 包装器中的相关配置与
pcie_rombar_eco_disable
字段的设置一致。
- 将
示例配置
假设我们需要禁用 PF5 和 PF6 的 ROMBAR ECO,并使用 PCIe ATU 区域的固定地址映射功能将 PF5 和 PF6 的 ROMBAR 映射到 SPI 闪存的 0-512KB 地址空间:
-
设置 pcie_rombar_eco_disable 为 1:
c深色版本
// 设置 pcie_rombar_eco_disable 为 1 reg_write(0x41, 0x80000000); // 设置地址 41h 的第 31 位为 1
-
复制值到 CSR 位:
c深色版本
// 将 pcie_rombar_eco_disable 的值复制到 CSR 位 reg_write(0xEEC, 0x80000000); // 设置地址 0xEEC 的第 31 位为 1
-
配置 PCIe ATU 区域:
c深色版本
// 配置 PCIe ATU 区域的固定地址映射 reg_write(0x100, 0x00000000); // 设置 ATU 区域的源地址为 0 reg_write(0x104, 0x00080000); // 设置 ATU 区域的目标地址为 0x00080000(512KB) reg_write(0x108, 0x00000001); // 启用 ATU 区域
这样配置后,硬件 ECO 功能将被禁用,ROM 代码将负责处理 ROMBAR 错误,并使用 PCIe ATU 区域的固定地址映射功能将 PF5 和 PF6 的 ROMBAR 映射到 SPI 闪存的 0-512KB 地址空间。