在网络通讯领域,ATM交换机、核心路由器、千兆以太网以及各种网关设备中,系统数据速率、时钟速率不断提高,相应处理器的工作频率也越来越高;数据、语音、图像的传输速度已经远远高于500Mbps,数百兆乃至数吉的背板也越来越普遍。数字系统速度的提高意味着信号的升降时间尽可能短,由数字信号频率和边沿速率提高而产生的一系列高速设计问题也变得越来越突出。当信号的互连延迟大于边沿信号翻转时间的20%时,板上的信号导线就会呈现出传输线效应,这样的设计就成为高速设计。高速问题的出现给硬件设计带来了更大的挑战,有许多从逻辑角度看来正确的设计,如果在实际PCB设计中处理不当就会导致整个设计失败,这种情形在日益追求高速的网络通信领域更加明显。专家预测,在未来的硬件电路设计开销方面,逻辑功能设计的开销将大为缩减,而与高速设计相关的开销将占总开销的80%甚至更多。高速问题已成为系统设计能否成功的重要因素之一。
因高速问题产生的信号过冲、下冲、反射、振铃、串扰等将严重影响系统的正常时序,系统时序余量的减少迫使人们关注影响数字波形时序和质量的各种现象。由于速度的提高使时序变得苛刻时,无论事先对系统原理理解得多么透彻,任何忽略和简化都可能给系统带来严重的后果。在高速设计中,时序问题的影响更为关键,本文将专门讨论高速设计中的时序分析及其仿真策略。
1 公共时钟同步的时序分析及仿真
在高速数字电路中,数据的传输一般都通过时钟对数据信号进行有序的收发控制。芯片只能按规定的时序发送和接收数据,过长的信号延迟或信号延时匹配不当都可能导致信号时序的违背和功能混乱。在低速系统中,互连延迟和振铃等现象都可忽略不计,因为在这种低速系统中信号有足够的时间达到稳定状态。但在高速系统中,边沿速率加快、系统时钟速率上升,信号在器件之间的传输时间以及同步准备时间都缩短,传输线上的等效电容、电感也会对信号的数字转换产生延迟和畸变,再加上信号延时不匹配等因素,都会影响芯片的建立和保持时间,导致芯片无法正确收发数据、系统无法正常工作。
所谓公共时钟同步,是指在数据的传输过程中,总线上的驱动端和接收端共享同一个时钟源,在同一个时钟缓冲器(CLOCK BUFFER)发出同相时钟的作用下,完成数据的发送和接收。图1所示为一个典型的公共时钟同步数据收发工作示意图。图1中,晶振CRYSTAL产生输出信号CLK_IN到达时钟分配器CLOCK BUFFER,经CLOCK BUFFER分配缓冲后发出两路同相时钟,一路是CLKB,用于DRIVER的数据输出;另一路是CLKA,用于采样锁存由DRIVER发往RECEIVER的数据。时钟CLKB经Tflt_CLKB一段飞行时间(FLIGHT TIME)后到达DRIVER,DRIVER内部数据由CLKB锁存经过TCO_DATA时间后出现在DRIVER的输出端口上,输出的数据然后再经过一段飞行时间Tflt_DATA到达RECEIVER的输入端口;在RECEIVER的输入端口上,利用CLOCK BUFFER产生的另一个时钟CLKA(经过的延时就是CLKA时钟飞行时间,即Tflt_CLKA)采样锁存这批来自DRIVER的数据,从而完成COMMON CLOCK一个时钟周期的数据传送过程。
图1 数据由DRIVER发向RECEIVER的公共时钟同步工作示意图
以上过程表明,到达RECEIVER的数据是利用时钟下一个周期的上升沿采样的,据此可得到数据传送所应满足的两个必要条件:①RECEIVER输入端的数据一般都有所要求的建立时间Tsetup,它表示数据有效必须先于时钟有效的最小时间值,数据信号到达输入端的时间应该足够早于时钟信号,由此可得出建立时间所满足的不等式;②为了成功地将数据锁存到器件内部,数据信号必须在接收芯片的输入端保持足够长时间有效以确保信号正确无误地被时钟采样锁存,这段时间称为保持时间,CLKA的延时必须小于数据的无效时间(INVALID),由此可得出保持时间所满足的不等式。
1.1 数据建立时间的时序分析
由第一个条件可知,数据信号必须先于时钟CLKA到达接收端,才能正确地锁存数据。在公共时钟总线中,第一个时钟周期的作用是将数据锁存到DRIVER的输出端,第二个时钟周期则将数据锁存到RECEIVER的内部,这意味着数据信号到达RECEIVER输入端的时间应该足够早于时钟信号CLKA。为了满足这一条件,必须确定时钟和数据信号到达RECEIVER的延时并保证满足接收端建立时间的要求,任何比需要的建立时间多出来的时间量即为建立时间时序余量Tmargin。在图1的时序图中,所有箭头线路表示数据信号和时钟信号在芯片内部或传输线上产生的延时,在下面的箭头线路表示从第一个时钟边沿有效至数据到达RECEIVER输入端的总延时,在上面的箭头线路表示接收时钟CLKA的总延时。从第一个时钟边沿有效至数据到达RECEIVER输入端的总延时为:
TDATA_DELAY=TCO_CLKB+Tflt_CLKB+TCO_DATA+Tflt_DATA
接收时钟CLKA下一个周期的总延时为:
TCLKA_DELAY=TCYCLE+TCO_CLKA+Tflt_CLKA
要满足数据的建立时间则必须有:
TCLKA_DELAY_MIN-TDATA_DELAY_MAX-Tsetup-Tmargin>0
展开并考虑时钟的抖动Tjitter等因素整理后得到:
TCYCLE+(TCO_CLKA_MIN-TCO_CLKB_MAX)+ (Tflt_CLKA_MIN-Tflt_CLKB_MAX)-TCO_DATA_MAX-Tflt_DATA_SETTLE_DELAY_MAX-Tjitter-Tsetup-Tmargin>0 (1)
式(1)中TCYCLE为时钟的一个时钟周期;第一个括号内是时钟芯片CLOCK BUFFER输出时钟CLKA、CLKB之间的最大相位差,即手册上称的OUTPUT-output skew;第二个括号内则是CLOCK BUFFER芯片输出的两个时钟CLKA、CLKB分别到达RECEIVER和DRIVER的最大延时差。式(1)中TCO_DATA是指在一定的测试负载和测试条件下,从时钟触发开始到数据出现在输出端口并到达测试电压Vmeas(或VREF)阈值的时间间隔,TCO_DATA的大小与芯片内部逻辑延时、缓冲器OUTPUT BUFFER特性、输出负载情况都有直接关系,TCO可在芯片数据手册中查得。
由公式(1)可知,可调部分实际只有两项:Tflt_CLKB_MIN-Tflt_CLKB_MAX和Tflt_DATA_SETTLE_DELAY_MAX。单从满足建立时间而言,Tflt_CLKA_MIN应尽可能大,而Tflt_CLKB_MAX和Tflt_DATA_SETTLE_DELAY_MAX则要尽可能小。实质上,就是要求接收时钟来得晚一点,数据来得早一点。
1.2 数据保持时间的时序分析
为了成功地将数据锁存到器件内部,数据信号必须在接收芯片的输入端保持足够长时间有效以确保信号正确无误地被时钟采样锁存,这段时间称为保持时间。在公共时钟总线中,接收端缓冲器利用第二个时钟边沿锁存数据,同时在驱动端把下一个数据锁存到数据发送端。因此为了满足接收端保持时间,必须保证有效数据在下一个数据信号到达之前锁存到接收端触发器中,这就要求接收时钟CLKA的延时要小于接收数据信号的延时。
TCLKA_DELAY=TCO_CLKA+Tflt_CLKA
而数据延时:
TDATA_DELAY=TCO_CLKB+Tflt_CLKB+TCO_DATA+Tflt_DATA_SWITCH_DELAY
若要满足数据的保持时间,则必须有:
TDATA_DELAY_MIN-TCLKA_DELAY_MAX-Thold-Tmargin>0
展开、整理并考虑时钟抖动Tjitter等因素,可得如下关系:
(TCO_CLKB_MIN-TCO_CLKA_MAX)+(Tflt_CLKB_MIN-Tflt_CLKA_MAX)+TCO_DATA_MIN+Tflt_DATA_SWITCH_DELAY_MIN-Thold-Tmargin-Tjitter>0 (2)
式(2)中,第一个括号内仍然是时钟芯片CLOCK BUFFER输出时钟之间的最大相位差;第二个括号内继续可以理解为时钟芯片输出的两个时钟CLKA、CLKB分别到达RECEIVER和DRIVER的最大延时差;要满足数据的保持时间,实际可调整的部分也只有两项,即Tflt_CLKB_MIN-Tflt_CLKA_MAX和Tflt_DATA_SWITCH_DELAY_MIN。单从满足保持时间的角度而言,Tflt_CLKB_MIN和Tflt_DATA_SWITCH_DELAY_MIN应尽可能大,而Tflt_CLKA_MAX则要尽可能小。也就是说,若欲满足保持时间,就要使接收时钟早点来,而数据则要晚点无效(invalid)。
为了正确无误地接收数据,必须综合考虑数据的建立时间和保持时间,即同时满足(1)式和(2)式。分析这两个不等式可以看出,调整的途径只有三个:发送时钟延时、接收时钟延时和数据的延时。调整方案可这样进行:首先假定发送时钟延时严格等于接收时钟延时,即Tflt_CLKA_MIN-Tflt_CLKB_MAX=0和Tflt_CLKB_MIN-Tflt_CLKA_MAX=0(后文将对这两个等式的假设产生的时序偏差进行考虑),然后通过仿真可以得出数据的延时范围,如果数据延时无解则返回上述两个等式,调整发送时钟延时或接收时钟延时。下面是宽带网交换机中GLINK总线公共时钟同步数据收发的例子:首先假定发送时钟延时严格等于接收时钟延时,然后确定数据的延时范围,代入各参数,(1)和(2)式分别变为:
1.5-Tflt_DATA_SETTLE_DELAY_MAX-Tmargin>0
0.5+Tflt_DATA_SWITCH_DELAY_MIN-Tmargin>0
在不等式提示下,结合PCB布局实际,确定Tflt_DATA_SETTLE_DELAY_MAX<1.1;tflt_data_switch_delay_min>-0.1,剩下0.4ns的余量分配给了两个时钟的时差和Tmargin。在SPECCTRAQUEST中提取拓扑并进行信号完整性仿真,进而确定各段线长及拓扑结构。对此结构(共12种组合)进行全扫描仿真,得到Tflt_DATA_SETTLE_DELAY_MAX=1.0825 Tflt_DATA_SWITCH_DELAY_MIN =-0.0835004,符合确定的1.1和-0.1的范围指标。由此可以得出GLINK总线数据线的约束规则:①匹配电阻到发送端的延时不应大于0.1ns;②数据线必须以0.1ns进行匹配,即每个数据线都必须在0.65ns~0.75ns之间。有了上述的约束规则就可以指导布线了。
下面再考虑硬性规定 Tflt_CLKA_MIN-Tflt_CLKB_MAX=0和Tflt_CLKB_MIN-Tflt_CLKA_MAX=0带来的影响。事先约束发送时钟和接收时钟完全等长(在实际操作中以0.02ns进行匹配)在CADENCE环境下,进行时钟仿真,得到结果:|Tflt_CLKA_MIN-Tflt_CLKB_MAX|<0.2和|tflt_clkb_min-tflt_clka_max|<0.2。可见留给tmargin的余量为0.2ns。
最终的仿真结果是:① 匹配电阻到发送端的延时不应大于0.1ns;②数据线以0.1ns进行匹配,即每个数据线都必须在0.65ns~0.75ns之间;③发送时钟和接收时钟以0.02ns匹配等长;④Tmargin=0.2ns。有了上述拓扑结构样板和约束规则就可以将SPECCTRAQUEST或ALLEGRO导入到CONSTRAINS MANAGER中。当这些设计约束规则设置好后,就可以利用自动布线器进行规则驱动自动布线或人工调线。
2 源同步时序关系及仿真实例
所谓源同步就是指时钟选通信号CLK由驱动芯片伴随发送数据一起发送,它并不象公共时钟同步那样采用独立的时钟源。在源同步数据收发中,数据首先发向接收端,经稍短时间选通时钟再发向接收端用于采样锁存这批数据。其示意图如图2所示。源同步的时序分析较公共时钟同步较为简单,分析方法很类似,下面直接给出分析公式:
建立时间:Tvb_min+(Tflt_clk_min-Tflt_data_settle_delay_max)-Tsetup-Tmargin>0
保持时间:Tva_min+(Tflt_data_switch_delay min-Tflt_clk _max)-Thold-Tmargin>0
其中,Tvb为驱动端的建立时间,表示驱动端数据在时钟有效前多少时间有效;Tva为发送端的保持时间,表示驱动端数据在时钟有效后保持有效的时间;其他参量含义同前。下面以通信电路中很常见的TBI接口为例介绍源同步时序分析及仿真过程。TBI接口主要包括发送时钟和10bit的发送数据、两个接收时钟和10bit接收数据。RBC0、RBC1为两个接收时钟,在千兆以太网中,这两个时钟频率为62.5MHz,相差为180°,两个时钟的上升沿轮流用于锁存数据。根据数据手册的时序参数,代入上式可得:
2.5+Tflt_clk _min-Tflt_data__settle_delay_max-1-Tmargin>0
1.5+Tflt_data__switch_delay min-Tflt_clk _max-0.5-Tmargin>0
仿照前述分析方法:假设时钟、数据信号线的飞行时间严格相等,即时钟和数据完全匹配,然后分析它们不匹配带来的影响。上式变为
1.5-Tmargin>0
1-Tmargin>0
可见,无论是建立时间还是保持时间都有很大的余量。经过仿真,发现数据和时钟完全匹配等长(以0.02ns匹配为例),仍有0.3ns的差别,即
Tflt_clk_min-Tflt_data_settle_delay_max<0.3
Tflt_data_switch_delay min-Tflt_clk_max<0.3
取Tmargin=0.5ns得到时钟和数据的匹配为0.2ns,即数据和时钟的长度匹配不应超过0.2ns。
在实际仿真中首先就时钟和数据的信号完整性进行分析仿真,通过适当的端接匹配得到较好的接收波形。图3是一组无源端匹配和有源端匹配时钟线的不同仿真波形比较,从中可以看出首先进行信号完整性仿真的必要性。
在公共时钟同步中,数据的发送和接收必须在一个时钟周期内完成。同时器件的延时和PCB走线的延迟也限制了公共时钟总线的最高理论工作频率。故公共时钟同步一般用于低于200MHz~300MHz的传输速率,高于这个速率的传输,一般应引入源同步技术。源同步技术工作在相对的时钟系统下,采用数据和时钟并行传输,传输速率主要由数据和时钟信号间的时差决定,这样可以使系统达到更高的传输速率。笔者通过对宽带以太网交换机主机和子卡板进行信号完整性分析、时序分析及其仿真,大大缩短了产品的设计周期,通过分析仿真有效地解决了高速设计中出现的信号完整性、时序等方面的问题,充分保证了设计的质量和设计速度,真正做到了PCB板的一次通过。主板和子卡板目前已经通过调试,并顺利转产。