背景技术
在多时钟电路设计中,异步时钟域间信号传递需要同步电路来保证设计的安全性,常用的同步电路如图1所示。
当电路的时钟较多时,时钟域间交互的信号较多,同步电路的数量也较多。为了方便检查时钟域间交互的信号是否全部做了同步处理,同时也为了统一同步电路的做法,一般会将同步电路从整体电路中独立出来,做成标准的同步电路模块,设计中凡是有需要做信号同步的点,就调用此模块。
事实上,不是所有的设计只要调用了同步电路模块对异步信号作同步就可以保证电路的安全。设计者需要考虑的是:多个信号经过同步电路模块同步后是否会有逻辑关联,如果有关联,信号间的相位关系的变化是否影响电路的功能。以图2所示电路为例,Xa和Ya是A时钟域的两个信号,它们经过同步电路被同步到B时钟域,Xb和Yb是同步电路的输出信号。此电路同步过程的时序如图3所示,在Ta时刻时钟信号Ca的上升沿,Xa和Ya信号同时由低变高,由于两路信号在传输过程中延时不同,到达同步电路输入端的信号变为Xa’和Ya’。同步电路在Tb1时刻时钟信号Cb的上升沿采样到Xa’的高电平,但采不到Ya’的高电平,而在Tb2时刻时钟信号Cb的上升沿才采样到Ya’的高电平,从而使在A时钟域同时变化的两个信号Xa和Ya经过同步电路同步后,输出的两个信号Xb和Yb之间相差了一个Cb的时钟周期,即信号的相位关系在同步前后不一致。基于这点,设计者需要考虑多个被同步的信号是否可以用在一起作逻辑运算:如果电路对这些信号之间的相位关系没有严格要求,则可以将它们用在一起作逻辑运算;反之则不能。
对于对被同步信号的相位关系有严格要求的电路来说,当电路较复杂时,设计者往往容易忽视多个被同步信号之间的相位关系,而直接或间接的将它们用在一起作逻辑运算。如图4所示,A时钟域的两个信号Xa和Ya经过同步电路同步到B时钟域,同步电路输出的信号为Xb和Yb,它们分别作为电路1和电路2的输入,电路1和电路2的输出又作为电路3的输入。由于Xa和Ya在同步前后相位关系可能发生变化,最终可能使电路3的输出信号Zb与预期的不同而导致电路逻辑错误。上述情况较易发生在复杂的多时钟域设计中。尤其是,当设计是从之前的版本继承而来,需要对其进行某些功能的改进时,特别容易引入这种隐患。
一旦设计中引入了这种风险,设计者在设计初期的仿真和验证中是无法发现的,即使到了IC tapeout前的后仿真阶段,也很难发现。因为这种隐患实际就是小概率事件,它是在特定的应用场景下(比如温度,电压,特定的操作等)才会偶然出现。设计中引入这种隐患后往往造成产品量产时不稳定,而要查清这种不稳定现象的根源往往需要花费很大的人力和时间,这既增加了产品的成本,也影响了产品的上市进度。
所以如何在设计初期就发现和排除这种隐患,对IC设计工作具有重要意义——增强设计安全性,降低设计成本,保证产品上市进度。
发明内容
本发明提供了一种检测异步时钟域间信号传递安全性的装置及方法,用于解决现有技术中,设计者难以发现异步电路设计隐患的问题。
本发明提供了一种检测异步时钟域间信号传递安全性的装置,包括N+1个寄存单元和选择单元,其中N为大于等于1的自然数;
所述N+1个寄存单元相互级联,每个寄存单元的输出端分别连接选择单元的不同输入端,每个寄存单元均接收同一个时钟信号,每个寄存单元在每个时钟周期内寄存输入的信号值;
所述选择单元根据选择端输入的选择信号从N+1个寄存单元的输出值中选择一个输出值或多个输出值作逻辑运算后的值作为选择单元的输出。
应用本发明提供的检测装置检测异步电路设计安全性的方法为:
用于采用权利要求1所述的电路检测装置检测待测电路中异步时钟域间信号传递的安全性,所述待测电路包括M个同步电路,M为大于1的自然数,其特征在于,该电路检测方法包括:
A、用M个电路检测装置替换待测电路中的M个同步电路,组成验证电路;
B、从未被选择过的电路检测装置中选择任意一个电路检测装置作为当前电路检测装置;
C、设置当前电路检测装置的选择信号,并将其他电路检测装置的选择信号设置成同一值,并且是与所述当前电路检测装置的选择信号不相同;
D、对验证电路进行仿真,根据仿真结果判断验证电路是否正常工作:如果验证电路不能正常工作,则确定待测电路设计存在风险,并结束检测;如果验证电路能正常工作,则进入步骤E;
E、判断是否已选择所有的电路检测装置对验证电路进行了仿真,是则确定待测电路设计安全,并结束检测;否则返回步骤B。
应用本发明提供的装置及其检测方法,设计者在设计前期就可以发现异步时钟域间信号传递设计中的风险,使错误现象尽早被发现,弥补了仿真和验证阶段难以发现异步电路设计错误的不足,给异步电路的安全性提供了保障,降低了设计成本,提高了产品的稳定性,保证了产品的上市进度。
具体实施方式
本发明提供了一种检测异步时钟域间信号传递安全性的装置,该装置包括N+1个寄存单元和选择单元,其中N为大于等于1的整数;所述N+1个寄存单元相互级联,每个寄存单元的输出端分别连接选择单元的不同输入端,每个寄存单元均接收同一个时钟信号,每个寄存单元在每个时钟周期内寄存输入的信号值;所述选择单元根据选择端输入的选择信号从N+1个寄存单元的输出值中选择一个输出值或几个输出值作逻辑运算后的值作为选择单元的输出,实现检测装置的输出值在预期时刻之前出现、在预期时刻之后出现或者在预期时刻出现。
下面结合说明书附图对本发明的具体实施方式进行详细说明。
本发明实施例提出了一种检测异步时钟域间信号传递安全性的检测装置,如图5A所示。该装置包括N+1个寄存单元和选择单元,其中N是大于等于1的自然数。
所述N+1个寄存单元相互级联,每个寄存单元的输出端分别连接选择单元的不同输入端,每个寄存单元均接收同一个时钟信号,每个寄存单元在每个时钟周期内寄存输入的信号值。
所述选择单元根据选择端输入的选择信号从N+1个寄存单元的输出值中选择一个输出值或几个输出值作逻辑运算后的值作为选择单元的输出,实现检测装置的输出值在预期时刻之前出现、在预期时刻之后出现或者在预期时刻出现。
本发明实施例提出了另一种电路检测装置,用于检测异步时钟域间信号传递安全性,如图5B所示。该装置在图5A所示装置的基础上还包括逻辑运算单元,该逻辑运算单元连接在寄存单元的输出端和选择单元输入端之间,用于如果选择单元选择多个寄存单元的多个输出值作逻辑运算后的值作为自身的输出。
在本发明实施中所述逻辑运算实现逻辑与运算和/或逻辑或运算。所述逻辑运算单元由多级逻辑运算子单元组合形成,该逻辑运算子单元实现逻辑或、逻辑与或逻辑非运算。
则所述几个输出值作逻辑运算后的值作为选择单元的输出可以是:
选择单元选择所述N+1个寄存单元中的几路输出值进行逻辑与运算,并将运算结果作为输出。在实际的应用中也可以对几路输出值进行逻辑或运算或者是逻辑与和逻辑或同时进行;逻辑或、逻辑与运算只是本发明实施例最优的两种实施例。根据具体的应用条件对于其他运算规则本实施所提供的方法也适用。
在实际应用当中,选择单元的选择规则可以有多种。无论哪种选择规则,目的都是为了实现“检测装置的输出值在预期时刻之前出现、在预期时刻之后出现或者在预期时刻出现”。在本发明实施例中用一个“三选一”的选择单元实现检测装置的输出值在预期时刻的前一个时钟周期出现、在预期时刻的后一个时钟周期出现或者在预期时刻出现。在此情况下,选择规则可以设计成:选择信号为“1”时,选择单元选择第一个寄存单元的输出值作为选择单元的输出,此时检测装置的输出值在预期时刻的前一个时钟周期出现;选择信号为“2”时,选择单元选择第二个寄存单元的输出值作为选择单元的输出,此时检测装置的输出值在预期时刻出现;选择信号为“3”时,选择单元选择第三个寄存单元的输出值作为选择单元的输出,此时检测装置的输出值在预期时刻的后一个时钟周期出现。也可以将选择规则设计成:选择信号为“3”时,选择单元选择第一个寄存单元的输出值作为选择单元的输出,此时检测装置的输出值在预期时刻的前一个时钟周期出现;选择信号为“2”时,选择单元选择第二个寄存单元的输出值作为选择单元的输出,此时检测装置的输出值在预期时刻出现;选择信号为“1”时,选择单元选择第三个寄存单元的输出值作为选择单元的输出,此时检测装置的输出值在预期时刻的后一个时钟周期出现。本领域的技术人员可以理解,当选用带有更多输入端的选择单元时,相应的选择规则也会更多。
下面结合具体的实施例对应用本发明的装置检测异步电路安全性的过程进行详细说明。
如图6所示,在具体实施例中,检测装置中N+1个寄存单元可以是两个D触发器,选择单元可以是二选一多路选择器。每个D触发器在时钟信号的上升沿寄存输入的信号值。二选一多路选择器的选择规则为:当选择信号为1时,二选一多路选择器选择D触发器1的输出信号作为被同步以后的信号;当选择信号为0时,二选一多路选择器选择D触发器2的输出信号作为被同步以后的信号。
将图6的检测电路应用在图7所示的电路中,就可以通过仿真检测出图7电路的错误现象。
如图7所示,虚线左边为A时钟域,虚线右边为B时钟域。B时钟域的寄存器在寄存数据时受装载信号load_a和使能信号enable_a控制,只有当装载信号和使能信号都为高电平时,数据才会被寄存。而装载信号和使能信号来自A时钟域,因此设计者用同步电路将它们同步到B时钟域后才使用。
上述电路的风险在于,当A时钟域的装载信号load_a和使能信号enable_a传输路径延时不同时,B时钟域的同步电路在时钟信号clk_b的上升沿处可能对load_a采样到高电平,但对enable_a采样到低电平,而在后一个上升沿处,对load_a采样到低电平,而对enable_a采样到高电平,即同步电路输出的装载信号load_b和使能信号enable_b不是按照预期那样的彼此对齐,而是错开了一个时钟周期,这导致输入数据data_in无法装载进寄存器。
在仿真中,传输路径间的延时之差通常不会很明显,导致仿真中出现数据无法装载的几率非常小,使仿真过程很难发现问题。
为了解决上述问题,将图7中的同步电路换成图6所示的检测装置,具体结构如图8所示,将连接装载信号的检测电路的选择信号设置为1(选择D触发器1的输出信号作为被同步以后的信号),将连接使能信号的检测电路的选择信号设置为0(选择D触发器2的输出信号作为被同步以后的信号),这样装载信号有效的时刻就比预期的提前了一个时钟周期,而使能信号有效的时刻仍为预期的时刻,波形如图9所示。通过上述方法对图7电路进行仿真后则可出现数据无法装载的现象,从而确定两个被同步信号的相位关系会对该电路的安全性造成影响。
上面的实施例针对的是两个同步后的信号直接用在一起作逻辑运算的情况。下面的实施例针对的是两个同步后的信号经过了其他电路以后,再用在一起作逻辑运算的情况。
在图10所示的电路中,虚线左边为A时钟域,虚线右边为B时钟域。B时钟域的寄存器1和寄存器2构成两级流水线电路,用来传递数据序列。电路通过两个使能信号enable1和enable2分别控制第一级的输入和第二级的输入,当使能信号为高电平时,输入信号才会穿过“与门”到达寄存器的输入端。两个使能信号是A时钟域的信号,因此设计者用同步电路将它们同步到B时钟域后才使用。
上述电路的风险在于,当同步电路在时钟信号clk_b的某个上升沿采样到使能信号enable1_a的低电平时,由于使能信号enable2_a的传输延时比enable1_a的大,导致同步电路采不到enable2_a的高电平,而只有在下一个周期才采到,这就使在A时钟域相邻的两个控制信号经过同步电路后变成了间隔一个时钟周期的两个控制信号,导致流水线电路输出的序列中有数据丢失。
在仿真中,传输路径间的延时之差通常不会很明显,导致仿真中很难出现数据丢失的情况。将图10中的同步电路换成图6所示的检测装置,具体结构如图11所示,将连接使能信号enable1_a的检测电路的选择信号设置为1(选择D触发器1的输出信号作为被同步以后的信号),将连接使能信号enable2_a的检测电路的选择信号设置为0(选择D触发器2的输出信号作为被同步以后的信号),这样输出的信号enable1_b有效的时刻就比预期的提前了一个时钟周期,而信号enable2_b有效的时刻仍为预期的时刻,波形如图12所示,使得数据丢失的现象得以出现。
上面的实施例说明的是同步后的信号穿过的其他电路相对简单,并且级数比较少的情况。本领域的技术人员可以理解,当同步后的信号穿过的其他电路的级数很多时,对电路的检测原理与上述实施例类似。
以上是两个被同步信号作逻辑运算时检测电路安全性的实施例。如果异步电路中用到两个以上被同步的信号作逻辑运算时,检测电路安全性的方法与之类似,检测流程如图13所示:
步骤1301,用M个电路检测装置替换待测电路中的M个同步电路,组成验证电路;
步骤1302,从未被选择过的电路检测装置中选择任意一个电路检测装置作为当前电路检测装置;
步骤1303,设置当前电路检测装置的选择信号,并将其他电路检测装置的选择信号设置成同一值,并且是与所述当前电路检测装置的选择信号不相同;
步骤1304,对验证电路进行仿真;
步骤1305,根据仿真结果判断验证电路是否正常工作:如果验证电路不能正常工作,则确定待测电路设计存在风险,并结束检测;如果验证电路能正常工作,则进入步骤1306;
如果电路不能正常工作,则确定待测电路当中存在将多个被同步信号用在一起作逻辑运算的情况,并且这种情况会影响电路的逻辑功能,因此该待测电路存在风险,检测结束;如果电路能正常工作,则确定待测电路当中没有将多个被同步信号用在一起作逻辑运算的情况,或者虽然有这一情况,但是不影响待测电路的逻辑功能。此次检测只是针对多个检测装置中选出的一个,尚未检测其他的检测装置,检测流程进入步骤1306;
步骤1306,判断是否已选择所有的电路检测装置对验证电路进行了仿真,是则确定待测电路设计安全,并结束检测;否则返回步骤1302。
判断是否已选择所有的电路检测装置对验证电路进行了仿真,如果是,则确定待检测电路当中的每一个被同步信号都没有和其他的被同步信号用在一起作逻辑运算,或者虽然有作逻辑运算,但是运算结果不影响电路的逻辑功能,此时则可以确定该待检测电路设计是安全的,检测结束;如果不是,则检测流程返回步骤1302。
应用本发明提供的装置及其检测方法,在检测异步电路时实施步骤简单,仅需改变装置中的选择信号就可以在仿真中检测电路中是否存在用多个被同步信号作逻辑运算的情况。另外,该检测电路不占电路面积,由于本发明应用于仿真阶段,因此被测电路可以在仿真时用本发明提出的装置替换原有的同步电路模块进行仿真和验证,在电路综合时再将检测装置替换回原有的同步电路模块即可。此外,该检测电路适用范围广泛,只要电路中存在多个被同步的信号,就可以使用本发明检测其设计的安全性。
本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出其它的实施方式,同样属于本发明的技术创新范围。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。