具体实施方式
此处的说明、讨论和附图说明了与本发明相关的技术,示出了本发明的例子并给出了使用本发明的例子。已知的方法、程序、系统、电路或元件可能没有被详细地说明和描述,以免模糊本发明的原理。另一方面,本发明的具体实施例的细节被给出,然而这类细节可能不适用于本发明的其它实施例。
此处的某些说明和讨论使用抽象或常规术语,它们非限制性地包括:发送、接收、传递、等于、小于、保持、相位、时钟、变化、递增、断言、真或假。本领域技术人员使用这类术语来为计算机内、数字或机电系统内的元件、数据或操作、适当地命名。这类元件、数据和操作由实际目标的物理性能来表示,非限制性地包括电子电压、磁场或光反射率。例如,″断言″或″真″可能指一个大约为3伏特的电子信号,而″没有断言″或″假″则可能指一个大约为0.3伏特的信号,反之亦然。类似地,非限制性地包括检测、确定和控制的感知或精神的术语也可能指这类元件、数据、操作或物理性能处理。
图1是一个根据本发明实施例的IC的功能框图,其具有三个时钟域。本发明可被用于不同设计的IC并可被用于包括多个IC的系统。从而,图1的系统配置只是众多例子中的一个。
集成电路100包括监控与调试模块140、第一处理器110、共享存储器120和第二处理器130。第一处理器和共享存储器在一个时钟上运行并且构成第一目标时钟域170A。事件A发生在第一处理器内并导致请求信号150A的值发生变化,比如从低到高的上升变化或转换,或者从高到低的下降转换。请求信号150A在监控与调试模块140内被接收。事件B发生在共享存储器内并导致请求信号150B的值发生变化,该信号也在监控与调试模块140内被接收。
第二处理器130在另一个时钟上运行并构成第二目标时钟域170B。事件C和D发生在第二处理器内并导致请求信号150C并150D的值发生变化,这两个信号也在监控与调试模块140内被接收。监控与调试模块140在监控时钟上运行并构成监控时钟域180。
使用本发明的一个实施例,监控与调试模块180能够精确地确定在目标域事件信号被断言的任一目标时钟域中的周期数量。事件不会在时钟域之间的传递过程中丢失,也不会被插入任何无关的事件。不需要暂停、停顿、停止或改变目标事件的产生速率。
然而,本发明没有穿过时钟域边界来传达确定的信息。其中没有断言目标域事件信号的周期的正确数目在监控域中是未知的。具有断言事件信号和那些不具有断言事件信号的目标域时钟周期的确切交错顺序是未知的。目标域事件发生和其在监控时钟域中的再现或检测之间的延迟不具有顶级优先级。一个任意值可以通过首先把值串插到事件序列中而在时钟域之间被传递,其中,该序列中的事件数量指示所述值。这些冗长(omissions)是深思熟虑的,目的在于有利地使本发明的某些实施例更简单、更迅速、并小于提供这类能力的电路。
图2是一个根据本发明的实施例的用于在时钟域之间传递事件的电路功能框图。传递电路200很简单、所要求的IC面积很小、延迟很低、并且能够以高速运行。然而,它对监控与目标域中的时钟强加了约束。
传递电路200包括事件检测器210和发送电路220,它们都由目标时钟信号来计时。目标时钟域170包括事件检测器和发送电路,以及任何在这个时钟上运行的其它电路。
传递电路200还包括接收电路230和事件监控器240,它们都由监控时钟信号来计时。监控时钟域180包括接收电路和事件检测器,以及任何基于监控器时钟运行的其它电路。
分别在目标和监控时钟域170或180中的电路优选地、但不是必要地以用于同步、上升沿触发数字电路的设计技术为基础。在这类电路中,认为输入信号在每个时钟周期中都被断言,其中,信号值在时钟上升沿处为高。
特别地考虑一个例子,其中,一个事件信号进入一个具有建立时间和保持时间的时钟逻辑元件,例如D型触发器。事件信号在每个时钟周期中被断言一次,其中,信号从时钟上升沿之前的至少一个建立时间直到上升沿之后的至少一个保持时间中为高。
如果事件信号在违反建立时间或保持时间约束的时刻改变值,则由D型触发器输出的值不可预知或亚稳定。这类亚稳定的输出信号可能具有转换之前的事件信号值,转换之后的事件信号值,或者输出信号可能不稳定并且值有变化。通常,D型触发器的亚稳定性在下一个事件信号不违反约束的时钟周期中结束,但是这取决于D型触发器的设计细节。尽管取决于设计、处理和工作参数,然而亚稳定状态持续一个时钟周期以上是有可能的,这个可能性不太可能产生。
许多标准的时钟信号和逻辑元件是上升沿触发的;即,当它由时钟上升沿触发时,时钟元件的输出取决于元件的输入。许多标准的逻辑元件只响应时钟上升沿的信号值。
相比之下,请求信号150根据请求信号的当前值把一个请求编码为上升沿或下降沿。接收电路230以相同模式响应请求信号150的上升沿或下降沿;即,请求信号值中的任何变化产生相同的响应。
传递电路200有利地是简单的、高性能的、并且其所要求的IC面积很小。然而,不同于传递电路400和500(关于图4、5描述)、传递电路200电路在目标域和监控域时钟之间的关系上强加了一个重要的约束。监控时钟域必须比目标时钟域运行得更快。
在一个目标时钟域比监控时钟域运行更快而传递电路200不能正确运行的系统中,与监控域可以接受、检测、计数或监控的数目相比,目标时钟域可以产生更多的目标事件。
传递电路200正确运行的主要情况是,当目标时钟周期至少是监控器时钟周期与接收电路所要求的设置时间之和时。甚至在这个约束之下,接收电路内的第一逻辑元件(即D触发器320B)也有可能进入亚稳定状态。虽然如此,因为请求被编码为转换而不是被编码为值,所以触发器320B中的临时亚稳定状态不会导致故障的信息传递。从而,即使当请求信号值的变化最初引起亚稳定性,请求信号值的变化也在下一个监控域时钟周期中被正确地解释。
在一些SoC设计中,要求目标时钟的周期至少是监控器时钟周期与接收电路所要求的设置时间之和也许不太现实。这类设计应该利用传递电路400或500,它们关于图4和5被描述。
传递电路200正确运行的次要情况是当目标时钟和监控器时钟具有相等的周期并具有一个适当的相位关系时。虽然传递电路200在一个总是在这个条件下运行的系统中是多余的,但是如果这类系统中的时钟发生变化,或者由于系统工作模式的故意变化或由于时钟中的非故意变化,则也可能需要传递电路200。
在本发明不同的实施例中,不同的检测输入205由事件检测器210接收。在一些实施例中,一个或多个检测输入信号是目标电路或模块的固有部分。在其它情况下,监控或调试逻辑被添加到一个电路中以便产生检测输入205。
通常,检测输入205和事件检测器210的设计取决于由监控与调试模块140监控的电路或模块的具体情况。可能被检测到的事件非限制性地包括以下一个或多个:
●一个指令地址断点,其中,处理器的程序计数器匹配一个目标值,在一个范围之内或具有匹配目标值的指定比特位;
●一个指令操作断点,其中,处理器执行的操作码匹配一个目标值,在一个范围之内或具有指定匹配目标值的指定比特位;
●一个数据地址断点,其中,负载事务处理或存储事务处理、或载入或存储使用了一个与目标值匹配的数据地址,在一个范围之内或具有匹配目标值的比特位;
●一个数据值断点,其中,负载事务处理或存储事务处理、或载入或存储使用一个与目标值匹配的数据值,在一个范围之内或具有匹配目标值的比特位;
●一个中断或异常发生;
●一个电路或模块转换到目标运行模式中,比如用户模式、核心模式、管理模式、调试模式等等;
●一个性能监控事件,比如缓存缺失、管道停顿、支路误预测等等;
●一个总线或存储控制器选择了一个目标装置或信道;
●一个芯片内的锁相环路(PLL)获得了对输入信号的锁定从而产生一个可靠的时钟信号;
●一个缓存器,或一个先进先出(FIFO)寄存器溢出或变成空;
●一个电路或模块进入或离开一个目标状态;或
●以上两个或更多的逻辑组合,例如,目标FIFO寄存器在目标模块没有在空闲状态中的时候变成空。
响应于一个或多个检测输入信号205的值,事件检测器210产生一个或多个目标域事件信号215,每个信号都被耦合到发送电路220的对应情况。发送电路220的每个情况都具有接收电路230的一个对应情况和请求信号150的一个对应情况。
响应于目标域事件信号215的每次断言,发送电路220都改变请求信号150的值,例如,发送电路220把当前为″1″的请求信号变为″0″,反之亦然。使用一个如请求信号150的信号把相同的信息编码为上升或者下降转换是有利的,因为请求信号会传输穿过时钟域。因为请求信号把请求编码为任一转换,所以由请求信号传达的信息和请求信号的结果与基于时钟的定时无关。请求信号转换发生时的目标时钟周期的相位和监控器时钟周期的相位都不对接收电路230或事件监控器240怎样响应请求信号产生任何影响。
响应于请求信号150的一个情况的每次的变化,对应的接收电路230做出一个监控域事件信号235的断言。一个或多个监控域事件信号被提供到事件监控器240。响应于监控域事件信号,事件监控器240产生一个或多个调试信号245。
事件监控器240的设计细节、一个或多个所产生的调试信号245的特性和该调试信号的使用通常取决于被监控与调试模块140监控的电路或模块的设计细节。事件监控器240可能非限制性地包括用来执行以下一个或多个的电路:
●保存标志,其示出什么类型的目标事件已经发生或已经在一个目标事件之后发生;
●计数每一种目标事件的发生;
●执行对目标事件计数的算术操作,例如,确定类型A事件发生了三次;
●执行对事件标志的逻辑操作,例如,确定已经发生了A、B类型的目标事件;或
●执行其两个或更多的组合的操作,例如,类型A事件至少发生了两次,而类型B事件发生小于1000次。
调试信号245的断言可以导致一个或多个以下动作:
●通过暂停或停止用于那些电路的一个或多个时钟来暂停或停止一个或多个电路或模块的操作;
●向一个或多个电路或模块发送一个停止、暂停或关闭信号;
●把被监控事件的当前状况、值和状态编码到一个信息中,并经由一个输出管脚把该信息发送到集成电路100之外的调试或监控电路;
●把一个值强加到一个被监控的电路或模块内的寄存器中;
●把一个值强加到一个总线上;和
●强制被监控的电路或模块改变状态。
在某些情况下,所使用的调试信号固有地是目标电路或模块的一部分。在其它情况下,监控或调试逻辑被添加到一个电路以便响应于调试信号来执行适当的动作。
图3是根据本发明一个实施例的请求发送电路和请求接收电路的逻辑图。
请求发送电路220接收进入请求信号330并产生请求信号150。发送电路220响应于输入请求信号的每次断言而改变请求信号150的值。如在传递电路200(关于图2描述)中所使用的,目标域事件信号215作为输入请求信号330被提供给请求发送电路。如在传递电路500(关于图5描述)中所使用的,传递信号522作为输入请求信号330被提供给请求发送电路。
请求接收电路230接收请求信号150并产生监控域请求信号340。响应于请求信号150值的每次变化,接收电路230做出一个呼出请求信号340的断言。
如在传递电路200中所使用的,呼出请求信号340变成监控域事件信号235。如在传递电路500中所使用的,传递呼出请求信号340变成接收信号535。
发送电路220包括″异或″门310A和D触发器320A。请求信号150是由目标域时钟370来计时的D触发器320A的输出。触发器420A的D输入端是具有两个输入端的异或(XOR)门310A的输出端。门310A的第一输入是请求信号150。第二输入是输入请求信号320。
接收电路230包括三个D触发器320B、320C和320D,它们由监控域时钟380来计时。这三个触发器被串联连接,即除了第一D触发器外所有的D输入是前面D触发器的输出。这个序列中的第一D触发器320B的一个输入是请求信号150。呼出请求信号330、信号235是”异或”门310B的输出,”异或”门310B的两个输入是D触发器320C和320D的输出。
图4是一个根据本发明实施例用于在时钟域之间传递事件的另一个电路的功能框图。传递电路200和传递电路400跨越时钟域边界来传递事件。两个传递电路在监控时钟域比目标时钟域运行得快得多的时候都正确地运行。
与传递电路400相比,传递电路200有利地更简单、IC面积更小、并且在目标事件发生的时间和它被传递到监控域的时间之间的延迟更低。
与传递电路200相比,传递电路400有利地对监控和目标域中的时钟强加更少的约束。传递电路400在目标域和监控域具有相等的时钟周期的情况中正确地运行,而不管时钟之间有什么相位关系。此外,传递电路400在监控时钟域比目标时钟域快但快的程度不足以满足目标时钟周期等于监控器时钟周期加上接收电路所要求设置时间这一约束条件的情况中也工作。
在目标时钟域比监控时钟域运行更快的情况中,传递电路400并不总是正确地运行;即,较慢的监控时钟域可能跟不上在较快的目标时钟域中产生的事件。然而本领域技术人员应当明白可能存在特殊的系统,其中,时钟速率差别、事件发生速率、事件发生之间的最小延迟以及计数器410的大小可以让传递电路400正确运行。
传递电路400在目标时钟域170中包括:事件检测器210;计数器410;发送寄存器420;请求发送电路220;以及确认接收电路480。传递电路400在监控时钟域180中还包括:请求接收电路230;接收寄存器430;确认发送电路470;以及事件监控器240。事件监控器240包括目标值寄存器450、累加器440以及比较电路460。
事件检测器210、请求发送电路220和请求接收电路230与参考图2和3说明的设计和操作相同,不同之处在于请求信号150在目标域事件信号215每次发生的时候不改变它的值。相反地,请求信号150每当存在一个递增事件计数值的时候发生改变,该递增事件计数值准备从发送寄存器420传递到接收寄存器430。
当第一递增计数值的传递正在进行和当正在返回对应的确认的时候,如果必要,即如果目标事件在这个期间发生,则计数器410累加另一个递增计数值。这样的一个递增计数值将在当前运行的传递完成之后被传递。
因为传递是一个相对较快的过程,所以递增计数的最大值很小;在执行同步开销所需的时间期间,它只需要足够大来缓存事件。例如,当传递电路500(关于图5描述)在具有相同时钟周期的域之间传递事件时,传递完成之前在目标时钟域中最多只能存在七个时钟周期。
计数器410产生一个目标域时钟周期数量的递增计数,所述目标域时钟周期内目标域事件信号215被断言。这个计数只在有限的时间周期内被累加。响应于一个传递信号,计数器410把递增计数传递到发送寄存器420并清除保持的递增计数的值。响应于相同的传递信号,发送寄存器420从计数器410载入该递增计数。然后发送寄存器保持该递增计数值直到传递信号下一次发生为止。同样,响应于该传递信号,请求发送电路220改变请求信号150的值。
请求接收电路230检测请求信号150中的变化,并且响应地产生一个接收信号。响应于该接收信号,接收寄存器430从发送寄存器420中载入域间递增计数425。
同样响应于该接收信号,确认发送电路470改变确认信号475的值。发送电路470与发送电路220的设计相同。尽管域间传递的方向相反,然而电路470和220在功能上也是相同的。
确认接收电路480检测确认信号475中的变化,并且响应地产生一个目标域确认信号。接收电路480与接收电路230相比在设计上是相同的。尽管域间传递的方向相反,电路480和230在功能上也是相同的。
目标时钟域170内的一个控制电路基于计数器410中的递增计数和目标域确认信号来产生传递信号。
在事件监控器240内,累加器440通常但不是必要地在监控器时钟周期期间从接收寄存器430接收递增计数,这紧在接收寄存器430接收递增计数之后。累加器440保持事件计数445,其计数目标事件的发生。累加器通过将每次接收到的递增计数值加入其中来更新计数445。
此外在事件监控器240内,目标值寄存器450保持目标值455。在所使用的其它目标选择当中,目标值455可能是一个预定值,或者可以被用户编程,或者可以在事件监控器240内动态地产生。比较电路460比较目标值455与事件计数445,并基于这个比较来断言调试信号245。任何逻辑或算术比较都可以被使用,非限制性地包括:等于、大于、小于、小于或等于等等。
图5是一个根据本发明实施例的用于在时钟域之间传递事件的一个电路的功能框图。传递电路500在被用作传递电路400的时钟上强加约束,因而不同于传递电路200。不同于产生事件计数的传递电路400,传递电路500使用降值计数器530在对应于目标事件的监控域中产生事件。传递电路400和500之间的选择可以基于系统是否要求计数或再产生目标事件而做出。
请求发送电路220、计数器410、发送寄存器420、域间递增计数425、请求信号150、确认信号475和确认接收电路480和参考图4描述的操作和设计相同。
降值计数器530响应于接收信号535从发送寄存器420接收域间递增计数425。在随后的时钟周期内,降值计数器530递减计数器530中保持的递增计数值并断言监控域事件信号235。断言和递减一直持续到降值计数器中保持的递增计数值为零为止。降值计数器530产生的忽略延迟、监控域事件的数量正好等于被检测到的目标域事件的数量。
请求接收和确认发送电路510产生接收信号535,并且在这点上它与请求接收电路230的操作和设计是等效的。电路510还产生确认信号475,是中间的D触发器540E的输出。电路510与请求接收电路230和确认发送电路430的组合在功能方面是等效的,而电路510更简单、所要求的IC面积更小,并且在传递事件中具有更低的延迟。
状态机520产生传递信号522,对传递信号522的断言使计数器410清除它的值,使发送寄存器420加载目标域递增计数415并使请求发送电路改变请求信号150的值。
状态机520基于目标域确认信号524的历史和当前值以及计数为零信号526的当前值来产生传递信号522。特别地,除了状态机520等候从监控时钟域接收一个确认信号的时段之外,非零计数器410中保持的计数触发传递信号522的断言,该确认信号指出递增计数值的当前主动传递已完成。
图6是被用于本发明的实施例的一个有限状态机的状态图。状态机520包括两种状态:空闲状态610和等待确认状态620。
每当状态机520处于空闲状态610并且计数器410大于零的时候,即计数为零的信号526没有被断言的时候,转换640发生。转换640使状态机进入等待确认状态620。另外,转换640触发事件630A,其中,状态机520在下一个时钟周期中断言传递信号522。作为断言传递信号522的结果,目标域递增计数415从计数器410被传递到发送寄存器420,计数器410中的值被重置为零,并且请求信号150的值被改变。
每当状态机520处于等待状态620,计数器410是零并且目标域确认信号524被断言的时候,转换650发生。转换650使状态机520进入空闲状态610。转换650不使状态机断言任何信号,其在图6中被示为事件635。
当状态机520在等待状态620中、计数器410不是零并且确认信号被接收时,转换660发生。转换660把状态机520保留在等待状态620中。另外,转换660使状态机520在下一个时钟周期期间断言传递信号522,其导致事件630B发生。事件630B的语义与事件603A的语义相同,即传递信号522被断言。
本发明可以在工业上被采用,根据在此包含的本发明及其使用的说明,这对于本领域技术人员来说是显而易见的。本发明可以用已知的或在此描述的元件和制造技术来实现。例如,包括触发器和计数器的集成电路是众所周知的。
本发明解决了目前的问题并满足了在此描述的当前需要。例如,片上系统(SoC)是IC的例子,两者常常包括多个时钟域并且常常要求跨时钟域监控事件。
本发明的范围通过以下的权利要求及其合法的等效物来阐明。根据这里的讲解,本发明可以进行许多更改、变化、替换选择、形式改变和改进,这些技术为本领域技术人员所熟知并且有待于在本领域中进一步地发展。这里的附图和说明用来通过给出具体细节来说明本发明;不打算用它们将本发明排他地限定于所公开的设计、形式和实施例。