一种自动识别信息并计算ECC值的DDR后门访问验证方法
2021-07-09周文强雷淑岚孙维东
周文强,雷淑岚,孙维东
(中科芯集成电路有限公司,江苏无锡 214072)
1 引言
目前,在服务器、嵌入式片上系统(SoC)芯片中,双倍速率内存(DDR)得到了广泛应用,其标准协议也已经发展到了现在的DDR5[1-2]。DDR系统包含DDR控制器、端口物理层(PHY)、DDR同步动态随机存取内存(SDRAM)3部分[3-4],具有大容量、高速低功耗、低电压、良好的散热性等特点[5-6]。因此,在SoC系统芯片中DDR系统起着至关重要的作用。在开启错误检查与纠正(ECC)功能的DDR系统里,总线上其他各个IP核在读写DDR之前,通常需要DDR控制器对DDR SDRAM初始化数据,即需要预先写入带有ECC数值的初始数据[7],否则DDR SDRAM中的数据是随机值,其ECC数值是错误的(仿真时是x态),当写入数据宽度小于DDR memory总宽度时,DDR控制器会做读-改-写(RMW)操作[7],先从DDR memory中读取数据,然后与新写入的数据合并,接着通过控制器内的ECC算法计算出该数据的ECC值,最后写入DDR memory。如果不预先初始化数据,在读取数据的阶段,由于DDR memory中初始数据和ECC均为随机值,当被读进DDR控制器后,ECC校验时出现2 bit以上错误,实际应用中会使系统不能正常工作,而仿真时则由于出现x态等情况造成仿真进入死循环。而在不支持ECC功能的DDR系统中,则不需要初始化数据,只要先写后读即可。
当开启ECC功能后,在仿真验证时通常的办法是通过DDR控制器里的ECC算法计算出对应数据的ECC值,然后将ECC值连同数据一起写到DDR SDRAM中,这是常用的前门访问方式。前门访问方式需要通过控制器发出指令,经过DDR PHY,最后变成DDR SDRAM指令,才能将带有ECC值的数据写入DDR SDRAM,对其进行初始化数据操作[7],这消耗了大量的仿真时间。……
