文献标识码:A
DOI:10.16157/j.issn.0258-7998.172154
中文引用格式:王鹏,尤然,刘旭红,等. 基于SoC的信号跨时钟域传输验证方法研究[J].电子技术应用,2017,43(12):29-32.
英文引用格式:Wang Peng,You Ran,Liu Xuhong,et al. Research on verification method of signal clock domain crossing transmission based on SOC[J].Application of Electronic Technique,2017,43(12):29-32.
0 引言
随着现代工业的不断发展,数字电路设计的规模和复杂程度也在不断的增加。在系统级芯片(System on Chip,SoC)中数据信号的传输也更多地在多个时钟域间进行即跨时钟域(Clock Domain Crossing,CDC)传输。但因为各个时钟在频率、相位上的差异,可能会因为建立时间或保持时间不满足要求,而造成亚稳态问题。在输出端可能会出现毛刺、震荡或某一固定的值,有可能会导致逻辑误判。甚至有可能输出0~1之间的电压值进而导致下一级亚稳态,即亚稳态的传播,逻辑误判将导致功能性错误,而亚稳态的传播则扩大了故障面[1]。为了避免亚稳态及其产生的危害,常见的解决方法是通过CDC同步电路来保证数据的正确传输。但是同步电路不一定能正确地将数据同步过去,还需要保证电路的同步结构正确并且满足相应的传输协议。当分散传播的CDC信号经过同步电路同步后,再重新进行组合逻辑运算时,会有可能因为亚稳态而导致信号提前或延迟到达,从而使逻辑运算后的结果与期望值不符,即重汇聚问题。对于CDC同步电路的验证,传统的模拟仿真无法精确地模拟亚稳态现象,而且静态时序分析也不能对其时序进行分析[2]。
因此国内不少研究人员对其进行了研究讨论。文献[3]中提出了基于SpyGlass的静态验证流程,对同步电路结构进行了讨论,但没有涉及到传输协议和重汇聚问题。梁骏等人在文献[4]中对CDC同步电路进行了重汇聚问题分析,没有系统地进行结构分析和传输协议验证。国防科技大学罗莉等人在文献[5]中对CDC同步电路进行了结构检查和传输协议验证,但没有对重汇聚问题进行分析。对于上述问题,现在并没有一套完整且通用的验证方法。
本文在基于传统SoC设计和验证仿真工具基础上,形成的一整套完整且通用的CDC同步电路验证方法。首先通过对CDC电路进行结构分析来保证电路同步结构的正确,再通过对电路进行基于断言的CDC协议验证来保证同步电路正确地传输了数据,最后通过亚稳态注入分析来判断保证不会出现重汇聚问题。
1 验证方法的论述
对CDC传输信号的验证包括结构分析、协议验证、亚稳态注入分析三个方面,图1的验证流程图描述了三个验证方面的逻辑关系和验证条件。具体的验证方法步骤在下面小节中进行说明。
1.1 CDC结构分析
常用的跨时钟域同步电路是通过两级触发器结构来进行同步,CDC结构分析是为了保证设计中的CDC同步电路有同步结构,并且两级触发器中没有组合逻辑,也没有被另外使用。本文的CDC结构分析是基于传统的SoC设计工具,在Quartes II或ISE等工具中,先经过综合或全编译,再生成RTL原理图。
然后可以在生成的RTL原理图中采用下列步骤来判断是否正确地生成电路同步结构:
(1)在生成的原理图中,识别出输入时钟域和采样时钟域。
(2)判断在时钟域交界处有无同步结构,如果没有同步结构需要重新返回修改RTL代码。
(3)判断电路同步结构中的两级触发器中有无其他组合逻辑,是否被另外的使用。如果两级触发器中有其他的组合逻辑,或者被另外的使用时,需返回修改RTL代码。
CDC结构分析保证了同步结构正确后,需再进行协议验证。从原理结构中判断同步后有无组合逻辑运算,如果有组合逻辑运算还需进行亚稳态注入分析。
1.2 基于断言的CDC协议验证
结构分析完成后仅能说明电路结构正确,并不能表明数据可以正确传输,在工程实际中,跨时钟域同步电路传输时都有其相应的传输协议,只有满足相应的传输协议时,数据才可以正确地传输过去。本文验证电路是否满足其相应传输协议的方法是通过基于断言的CDC协议验证。基于断言的CDC协议验证是通过采用System Verilog语言来描述CDC电路要满足的协议所需信号的属性。在模拟仿真中,如果所检查的属性不符合正确传输的协议时,断言就会宣告失败。基于断言的验证技术可以在工程实际中发现在一般的验证中难以发现的时序和事件序列相关问题。如果断言宣告失败后,需修改RTL代码,直到满足传输协议为止。
1.3 亚稳态注入分析
传输数据经过了同步电路的同步,可以将数据正确地同步过去了,但可能因为亚稳态而使输出数据延迟或提前到达。此时,如果输出端的输出数据再进行组合逻辑运算时,会因为数据的提前或延迟输出而导致运算结果与预期不符即重汇聚问题。所以本文采用在同步之后的数据处随机注入延迟的方法来验证当电路有亚稳态问题时,是否可能会产生重汇聚问题。如果注入随机延迟后,经过组合逻辑后的数据结果与预期不符,则表明此电路可能会产生重汇聚问题。需要修改RTL代码,直到亚稳态注入分析通过为止。
2 实例分析
本部分的测试案例以实际工程中的一个跨时钟域数据传输模块为例,此传输模块数据由频率为166.7 MHz的时钟域传输到频率为100 MHz时钟域。模块的输出端出现了非预期的数据,现以第一节的验证方法对跨时钟域数据传输模块进行验证。
2.1 CDC结构分析
在进行CDC结构分析时,以Quartus II 软件为例,进行分析验证。在Quartus II 软件中通过Tools-> Netlist Viewers->RTL Viewer生成RTL原理图。可以得到如图2所示原理图。
在RTL原理图中可以分析得出该跨时钟域数据传输模块是由两个DMUX模块把数据同步过去后再进行逻辑运算。现采用1.1节的方法对异步时钟数据传输模块RTL原理图进行讨论:
(1)输入数据时钟域clk1,频率为166.7 MHz,同步采样时钟域clk2,频率为100 MHz。
(2)可以看到在采样时钟域中有同步结构—两级触发器(en2_1模块和en2_2模块)。
(3)两级触发器模块中均无其他组合逻辑。这表明该跨时钟域数据传输模块的同步结构正确,为了保证数据正确地同步过去,还需进行CDC协议验证。从原理图中可以看到数据同步过去后,有组合逻辑运算,所以还需进行亚稳态注入分析。
2.2 基于断言的CDC协议验证
数据要从两个DMUX模块中正确地传输过去,需要满足相应的传输协议:输入数据在发送时钟域的选择信号有效期间一直保持稳定,且同步到接收时钟域后,在接收时钟域的输入数据需在接收时钟域的选择信号稳定期间一直保持稳定。
其断言协议如下:
property en1_p1;
@(posedge clk1) $rose(en1)|-> en1[*(`T2/`T1+1)];
endproperty
property en1_p;
@(posedge clk1) (en1 ##1 en1) |-> $stable(datin1);
endproperty
property en2_p;
@(posedge clk2) (en2 ##1 en2)|-> $stable(datin1);
endproperty
其中T1为clk1的时钟周期,时钟周期长度为6 ns。T2为clk2的时钟周期,时钟周期长度为10 ns。第一段代码表示同步信号en1至少保持两个采样时钟长度的稳定,第二段代码表示的是输入数据datain1在发送时钟域的选择信号en1有效期间一直保持稳定,第三段代码表示输入数据在接收时钟域的选择信号en2有效期间一直保持稳定。
由图4可以看到失效断言数量为0,通过了传输协议,表明数据可以正确地传输过去。
2.3 亚稳态注入分析
两个DMUX模块分别将数据datain1和数据datain2同步过去后,再进行组合逻辑运算。根据本文1.3节的方法,采用随机注入延迟的方法是随机注入一个延迟的采样时钟。可从下面的波形图中看到当有一个采样时钟的随机延迟时,组合逻辑运算后的输出数据会与预期的输出有不相符的地方。圆圈圈出部分为错误的运算结果。
因此,当电路中有亚稳态的情况发生时,尽管经过同步后,数据正确地传输出来,但当进行组合逻辑运算时,可能会因为数据的延迟而使逻辑运算后的结果和预期不符。由此可以得知此跨时钟域数据传输模块可能出现重汇聚问题。因此需要修改此设计模块的RTL代码,然后重新进行验证。
3 结束语
本文介绍了基于传统SoC设计和仿真工具的一整套对信号CDC传输的验证方法。从电路结构、传输协议、亚稳态注入三个循序渐进的角度进行了论述。并使用此套方法对一个跨时钟域传输模块进行了验证,证明了本文所提出的方法能在设计初期发现设计中的不合理地方,提高设计的可靠性和效率。
参考文献
[1] 周伟,杜玉晓,杨其宇,等.FPGA跨时钟域亚稳态研究[J].电子世界,2012:87-89.
[2] 范毓洋,刘万和,田毅,等.基于SVA的跨时钟域协议验证方法[J].微电子学与计算机,2015,32(9):23-27,32.
[3] 赵文锋.基于SpyGlass的同步设计分析与静态验证[D].西安:西安电子科技大学,2014.
[4] 梁骏,唐露,张明,等.基于随机延时注入的跨时钟域信号验证方法[J].微电子学与计算机,2014,31(2):1-4.
[5] 罗莉,何鸿君,徐炜遐,等.面向SOC芯片的跨时钟域设计和验证[J].计算机科学,2011,38(9):279-281.
[6] Luo Li,He Hongjun,Dou Qiang,et al.Design and verification of multi-clock domain synchronizers [C]//Intelligent System Design and Engineering Applicat.Changsha,2010:544-547.
[7] CUMMINGS C E.Clock domain crossing(CDC) design & verification techniques using system verilog[EB/OL].[2008-09-26].http://www.sunburst-design.com/papers.
[8] Mentor Graphics.0-In CDC Analyzer User Guide software version 3.0c,September 2010.
[9] 黄隶凡,郑学仁.FPGA设计中的亚稳态研究[J].微电子学,2011,41(2).
[10] 高文辉,胥志毅,邬天凯,等.异步时钟亚稳态仿真方法[J].信息技术,2012(10):167-169.
作者信息:
王 鹏1,尤 然2,刘旭红2,范毓洋1,田 毅1
(1.中国民航大学 民用航空器适航审定技术与管理研究中心 天津市民用航空器适航与维修重点实验室,天津300300;
2.中国民航大学 适航学院,天津300300)