实施方案
[0021] 为更好地理解本发明的精神,以下结合本发明的部分优选实施例对其作进一步说明。
[0022] 图1是一堆叠片上系统10的结构示意图。如图1所示,在该堆叠片上系统10中,在顶层(top die)芯片12中实现的是高速模块,例如SRAM120、非易失性存储器121、数字外设122、CPU或GPU 123、片上时钟124、标准系统总线125。而在底层(bot die)芯片14中实现的是一些低速模块,例如中断管理140、电源管理141、模拟外设142、输入输出PAD143、标准系统总线144。顶层芯片12和底层芯片14的连接是通过由微控制器标准系统总线做成的输入输出管脚16上下互连的。
[0023] 图2是图1中堆叠片上系统10中顶层芯片12和底层芯片14进行数据通信时的系统时钟树(clock tree)20的结构图。顶层芯片12上的模块大多是运行速度比较快的模块,且嵌入式微处理器内核(CPU或GPU)也设置在顶层芯片12。所以,将系统时钟源22放在顶层芯片12中可方便直接由微控制器内核访问高速模块使用。系统时钟源22产生的时钟波形通过时钟树20传输到需要时钟的时序单元24。底层芯片14都是些低速外设模块,系统时钟源22产生的时钟波形,经过时钟分频器26后,产生输入输出串行时钟,其通过顶层芯片12的接口(如PAD1)128传到底层芯片14的接口(如PAD2)148上。而这两个接口是通过引线键合(wire bonding)或硅通孔技术(TSV)连接。输入输出串行时钟是在上、下芯片间进行数据通信时的同步时钟信号,顶层芯片12的输入输出串行时钟通过顶层接口(PAD1)128和连接引线,传输到底层芯片14,再通过底层的时钟树20,传输到需要时钟信号的时序单元24。
[0024] 图3是两层芯片间数据基于输入输出串行时钟18传输的数据路径21和时钟路径23示意图。如图3所示,数据路径21如下:输入输出串行时钟(IO_MUX_clk1)18触发顶层芯片12中的一个时序逻辑210的时钟端口128后,输出端(Q1)211经过一段时间(t0)的组合逻辑212延时后达到顶层芯片12上的输入输出管脚16,如IO_PAD1,IO_PAD1的内部延时为时间t2。然后经过堆叠芯片10间的引线传输到底层芯片14上的输入输出管脚16,如IO_PAD2,IO_PAD2的内部延时为t3,之后再经过t1时间的组合逻辑212的延时达到底层时序逻辑212的数据端口213,如D2。时钟路径23则如下:输入输出串行时钟18经过内部延时为t4的缓冲器231,然后达到顶层芯片12上的输入输出管脚16,如IO_PAD3,其内部延时为t6,通过引线连接到底层芯片14上的输入输出管脚16,IO_PAD4上,其内部延时为t7,再经过延时为t5的另一缓冲器231到达底层时序逻辑212的时钟端口233,如clk2。
[0025] 图4是顶层与底层芯片12、14间数据基于输入输出串行时钟18传输的时序图。如图4所示,当t0+t2+t3+t1>t4+t6+t7+t5,底层数据端口213,D2上的数据不会被时序逻辑212在时钟边缘edge0锁存,时序正确。然而,当t0+t2+t3+t1
[0026] 根据本发明实施例的不同芯片间同一时序路径上保持时间的调节装置和方法可以解决上述问题。该保持时间的调节装置与方法可动态调节不同芯片间同一条时序路径上的保持时间,直至该保持时间正确,从而保证不同芯片间数据通信的正常进行。在一实施例中,该保持时间的调节装置包含设置于一片上系统一芯片上的保持时间延时装置和设置于不同于该芯片的其它芯片上的保持时间延时校验装置。
[0027] 图5是应用根据本发明一实施例的保持时间延时装置30的数据基于输入输出串行时钟18传输的数据路径21和时钟路径23的示意图。如图5所示,在顶层芯片12的输入输出管脚16,如IO_PAD1之前设置一个多路选择器32,多路选择器32的选择端(sel)连接片上系统10的“保持时间延时选择特殊功能寄存器(SFR)”的输出。该特殊功能寄存器与片上系统10的微控制器内核,如主微控制器内核设置在相同的芯片上,如顶层芯片12。为获得不同保持时间的需求,多路选择器32可有0至n个输入端,n≥2,具体选择时需要综合考虑芯片面积问题,n越大,所占面积越大,但动态调节准确率越高。每一输入端连接至少一延时单元36,各个输入端和组合逻辑212输出之间的延时各不相同以获得不同的保持时间。具体可以由微控制器内核赋以不同的值给“保持时间延时选择特殊功能寄存器”来选择在数据路径21上施加不同的延时来满足不同芯片间同一条时序路径上保持时间的要求。例如在本实施例中,第一个输入端0前连接一个延时单元Del0-1,第二个输入端1前连接一个延时单元Del1-1和一个延时单元Del1-2,Del1-1与Del1-2串联。以此类推,第n+1个输入端n前连接n+1个串联在一起的延时单元,分别为Deln-1、Deln-2、……Deln-(n+1)。Del0-1、Del1-1、Del2-1……Deln-1的另一端分别连到顶层组合逻辑212的输出上。即对每一输入端,依次增加其连接的延时单元36的数量,连接同一输入端的延时单元36串联在一起;从而使得顶层组合逻辑212至多路选择器32的各输入端具有不同的延时。其中在顶层的一输入输出管脚16,如IO_PAD1和顶层组合逻辑212之间加入的最大延时是Tsssss(t4+t6+t7+t5)-Tfffff(t0+t2+t3+t1),Tsssss是两个芯片12、14处于最差情况下,即t4+t6+t7+t5达到最大;Tfffff是两个芯片处于最好情况下,即t0+t2+t3+t1达到最小。
[0028] 图6是根据本发明一实施例的保持时间校验装置40的结构示意图。如图6所示,该保持时间延时校验装置40是一设在底层芯片14上的一个乱序逻辑模块40,即该乱序逻辑模块40与片上系统10的主微控制器内核设置在不同芯片上。该乱序逻辑模块40包含一个乱序逻辑输入时钟400,是片上系统10上的一个乱序逻辑输入时钟特殊功能寄存器(未示出)的输出。同样,该特殊功能寄存器与片上系统10的微控制器内核设在不同的芯片上,由微控制器内核基于芯片间输入输出串行传输时钟18访问。乱序逻辑输入时钟400进一步连接n个共用一上电复位信号的乱序逻辑结果特殊功能寄存器402的时钟输入端,且每个乱序逻辑结果特殊功能寄存器402都有一个固定值(fixed_value)输入端。该固定值是片上系统10设计的时候预设的,可以是逻辑“0”或“1”。相应的,每个乱序逻辑结果特殊功能寄存器402会输出一乱序逻辑结果。
[0029] 图7是根据本发明一实施例的调节保持时间的方法。结合图6、7,在步骤50,片上系统10上电复位之后,乱序逻辑结果特殊功能寄存器402输出的乱序逻辑结果都被设成全“0”或者全“1”,或者是一个特定的值(reset_value),且保证reset_value不等于预设的固定值即可。在步骤52,翻转乱序逻辑输入时钟特殊功能寄存器402,读出乱序逻辑结果。例如,当乱序逻辑输入时钟400接收到一个有效时钟信号,各乱序逻辑结果特殊功能寄存器402的输出就会发生翻转,分别变成fixed_value_n、fixed_value_n-1、……、fixed_value_2、fixed_value_1,片上系统10的微控制器内核会读取该乱序逻辑结果特殊功能寄存器402中的值。在步骤54,检测乱序逻辑结果是否等于预期的值。如果保持时间调节正确,乱序逻辑结果就能输出与预期固定值相同的值。那么在步骤56,片上系统10会在满足保持时间的条件下继续后续的数据传输。反之,当乱序逻辑结果不能输出与预期固定值相同的值的话,则意味着保持时间的调节不正确,导致乱序逻辑输入时钟特殊功能寄存器不能被正确访问,或乱序逻辑结果特殊功能寄存器402不能被正确访问。需要在步骤58重新调节保持时间,即保持时间延时选择特殊功能寄存器自动加“1”,直至片上系统微控制器内核能够读出乱序逻辑结果与预期固定值相同的值。一般设置乱序逻辑结果特殊功能寄存器402的值位宽,即n的值可以是32位、64位或者96位,甚至更高。乱序逻辑结果读出特殊功能寄存器402的位宽越大,则动态调节保持时间出错的几率就会越小。
[0030] 需要注意的是,本发明的上述实施例仅用于示例而非限制,例如本发明的堆叠系统完全可以包含更多层的芯片,本领域技术人员依据本发明的教导和启示所作出的其它实施例均在本发明的保护之列。