李世平 张洪昱 朱静浩 刘静 倪暹
(江苏华创微系统有限公司,江苏南京 211899)
集成电路是现代信息社会的基石,自诞生起,在摩尔定律的驱动下飞速发展,从20世纪60年代的十几个晶体管到如今成百上千个晶体管,进入了片上系统(SoC)时代,高主频、高集成是其发展趋势,芯片温度也随之越来越高,其对芯片功能、性能及可靠性的影响备受关注。在探索散热方法的同时,通过在大规模SoC芯片内部集成温度传感器,准确监控芯片内部温度,及早发现过热问题,成为芯片设计行业的主流方向[1-3]。
本文面向高性能异构多核SoC芯片的需求,单片集成了多个高精度、低功耗温度传感器,实现了对片内不同核温度状态的动态监测,结合系统级降频和电源门控等方法支持过温保护,保障了运行时芯片功能性能的长期稳定,有效提升了芯片可靠性。
温度传感器结构框图如图1所示,主要包括温传控制器(Temperature Sensor Controller,TSC)和温度传感电路(Temperature Sensor Physical circuit,TSP)两个模块。TSC模块主要负责与SoC芯片主控单元交互、启动和结束温度监测、读取温度编码数据、上报中断或门控信号等功能,交互接口为标准APB接口,内部包括APB接口译码、温传寄存器、电路接口信号生成器、中断产生器、门控产生器等多个子模块;TSP模块主要负责实时测量当前电路的温度并上报温度编码数据。整个温度传感器的工作电压为模拟1.8 V、数字0.8 V,动态电流仅在百μA量级。
图1 温度传感器结构框图
温度传感器的具体工作流程如下:
(1)SoC芯片主控单元通过APB标准总线接口通知TSC模块启动温度监测;
(2)TSC模块向TSP模块发起温度监测启动命令;
(3)TSP模块开始持续的温度测量,并将测量得到的温度编码数据送给TSC模块;
(4)TSC模块读取温度编码数据,支持单次读取或多次读取求平均两种模式,当读取完毕后,TSC模块向TSP模块发起温度监测结束命令;
(5)TSC模块通过APB标准接口将温度编码数据上报给SoC芯片主控单元;
(6)当需要过温保护时,SoC芯片主控单元可通过APB标准总线配置TSC模块内部的温度阈值寄存器,当TSC模块读取到温度编码后,自动与温度阈值寄存器进行比较,若超过阈值,则通过中断信号上报SoC芯片主控单元,同时产生门控信号通知SoC实施降频或电源关断等操作,防止芯片继续升温,保障芯片可靠性。
片内温度传感器通常需要校正才能获得更高的精度[4],本文所述温度传感器包含了TRIMG、TRIMO两个校正参数,通过在芯片测试阶段对其进行校正则可以达到高精度目标,具体校正方式如下:
(1)首先设置TRIMG=15,TRIMO=0。
(2)在Temp1=125 ℃下测出温度编码数据为TD1,建议测试64次取平均值。
(3)在Temp2=25 ℃下测出温度编码数据为TD2,建议测试64次取平均值。
(4)代入公式(1)计算得到校正后的TRIMG参数值,其中P2、P1、P0为固定值。
(5)将计算出的TRIMG写入TSC模块,在Temp2=25 ℃下再次测出温度编码数据为TD3,建议测试64次取平均值。
(6)代入公式(2)计算得到校正后的TRIMO[4:0]的参数值,其中TDref为25 ℃下的温度编码。当TDref>TD3时,TRIMO[5]为0,反之为1。
(7)经过(1)~(6)后所得的TRIMG、TRIMO为校正后的参数值,将该数值存入EFuse内固化即可。
TSC模块和TSP模块中间的接口时序如图2所示,其中Control Signals为各类控制参数,包括前文所述的TRIMG、TRIMO等;ENA为使能信号,高有效,有效时间内进行温度测量;DATA_VALID为返回的温度编码数据有效信号;DATA_OUT为返回的温度编码数据。
图2 关键接口时序图
当各类控制参数确定后,需要启动温度监测时,TSC模块将使能信号ENA置高,通知TSP模块启动一轮温度监测,ENA至少需要持续40 μs,经过一段时间后,TSP模块将通过DATA_VALID和DATA_OUT返回温度编码数据,在温度监测过程中该数据将持续有效,TSC模块可以多次读取温度编码数据并求取平均以提高精度,最大可读256次,直到TSC模块读取结束后将ENA置低,本轮温度监测过程结束。
本文所述温度传感器应用于3080型SoC芯片,该芯片采用4个通用处理核和4个专用加速核的异构多核架构,其中,通用处理核采用多发射超标量结构,支持乱序执行和分支预测,核内集成向量部件实现SIMD矢量计算,专用加速核则通过动态可重构的方式支持FFT、FIR、矩阵运算等十余种典型信号处理算法的硬件加速,全芯片单精度浮点峰值计算能力超过了每秒5 000亿次,支持DDR、PCIe等高速接口以及FLASH、UART、CAN、I2C、GPIO等低速接口,支持网络和EJTAG调试,并构建了包括编译器、调试器、操作系统在内的完整的软件工具链,提供了丰富的通信中间件、计算中间件以及可视化集成开发环境,支持应用便捷开发。
因芯片主频和算力较高,运行时功率密度较大,为了能够监测到各功耗密集区域的温度,片内共集成了8个温度传感器,物理设计过程中将温度传感器重点分布在处理核和专用加速核的周围。该芯片流片后的实物图如图3所示。
图3 芯片实物图
温度传感器的功能和性能测试基于3080型SoC芯片测试板开展,测试板为+12 V直流电源输入,板载DDR内存条、FPGA、FLASH、MCU等多种器件,配备芯片定制插座以及PCIe子卡等器材。测试时芯片放置在定制插座中,通过串口或网络与上位机通信。芯片支持从多个设备空间启动,测试时选择外部SPI FLASH启动模式,启动后加载操作系统,然后片内多核同时循环运行FFT程序。通过红外测温仪监测芯片壳温,同时读取片内8个温度传感器(记为p0~p7)的温度,选取12个温度测试点,8个温度传感器读出的温度和壳温的关系如图4所示,可以看到,不同位置的温度传感器所测量的温度具有较好的一致性。
图4 8个温度传感器(p0~p7)的测试结果与壳温的对比
不失一般性,选取p0号温度传感器的测试结果,将其与壳温进行线性拟合如图5所示,可以看到,两者具有很强的线性关系,线性相关系数达到0.995 9。
图5 p0号温度传感器测试温度与实际壳温的线性拟合情况
本文面向高性能异构多核SoC芯片的应用需求,集成设计并实现了8个高精度、低功耗的温度传感器,能够对芯片内部不同区域的温度状态进行动态监测。芯片实测结果显示,不同位置的温度传感器具有较好的一致性,且温度传感器测量温度和芯片实际壳温具有很强的线性度,线性相关系数高达0.995 9,这表明温度传感器能够准确反映芯片内部温度的实时变化,同时,该温度传感器还支持过温预警功能,当温度超过所设置的阈值时,能够及时上报中断信号和门控信号,支撑实现了系统级的降频和电源关断,在全芯片状态监控、过温保护等方面都具有重要意义,有效提升了芯片运行时的可靠性。