EDN China > 设计实例 > EDA工具与服务 > IC设计与设计服务 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

可尽早捕获缺陷的DDR仿真策略

Ankit Khandelwal?? Neha Srivastava?? 2015年09月25日 ?? 收藏1

输出缓冲使能(OBE)时序要求

大多数DDR控制器的设计是这样的,它们为了DQ(数据)和DQS(选通)焊盘本身而驱动OBE(输出缓冲使能),因为相同的焊盘可以用于写/读。由于各种各样的原因,OBE时序在服务路径时一般会被忽略,但在DDR场合这样做将导致灾难性结果。举例来说,在DDR协议读/写过程中,在READ/WRITE命令之后、在DQS第一个上升沿之前的DQS上的低电平(LOW)状态被认为是读/写先导码;同样,最后一个数据入单元之后在DQS上的低电平状态被认为是读/写后导码。前导部分为接收器件提供了一个时序窗口,用于激活其数据捕获电路,同时在选通信号上呈现一个已知/有效的电平,从而避免错误触发捕获电路。在前导部分过后的数据串发生期间选通信号将以与时钟信号相同的频率触发。在写入操作过程中是有特定的时序要求的,对DDR2来说必须满足比如0.35Ck的最小前导宽度,DDR3是0.9Ck。同样,对写后导时序也有要求。DDR2是0.4Ck至0.6Ck,DDR3最小是0.3Ck。如果在DDR GLS时遇到这种最常见的问题,这些参数可能会发生违例。

图2:DDR的前导和后导。
图2:DDR的前导和后导。

DDR焊盘的压摆率设置

焊盘以不同的压摆率进行表征,压摆率决定了单位时间内输出电压的变化率。这些设置在RTL仿真中是没有任何作用的,因为RTL仿真中不关心延时。但在GLS仿真中要考虑延时因素,因此为了避免不必要的调试工作,正确的设置非常重要。系统中针对不同焊盘的时序要求一般是要满足最大压摆率,但根据不同的参数有不同的要求。一个这样的例子是,像DDR等协议如果知道了最大压摆率,就能发现反射和干扰问题。这个参数在不同的设置情况下焊盘延时会有很大的变化,具体取决于最终在实际电路板和测试仪上使用的负载和电阻值。我们必须确保在设置了正确的焊盘参数下开展仿真,以便消除期望结果和观察结果之间的偏差。

表4提供了针对某个SoC的不同接口的推荐SRE设置值。

表4:针对SoC不同接口的推荐压摆率设置。
表4:针对SoC不同接口的推荐压摆率设置。

I/O中的表征问题

这方面的问题同样只在门级仿真(GLS)中可见,在RTL中是不会遇到这种问题的。如果从一开始就得到保证,就可以确保能够最大程度地减少验证和静态时序分析之间的反复调试和反馈。就背景而言,每个单元都有一个与上升沿和下降沿有关的延时。任何单元的延时都直接取自于拥有PVT间延时信息的许可文件。针对单元的这些上升和下降时间每个都不同。但DDR等协议对占空比、高电平时间、低电平时间等都有严格的要求,必要满足这些要求才能确保协议正确工作。设计中常用上升和下降时间几乎相同的对称缓冲器和单元,确保CLK、DQS等关键信号路径的平衡。但I/O的上升和下降时间也可能因为表征问题而存在很大差异,这种情况下将破坏占空比,进而在存储器端导致违例。

图3:上升下降延时差异导致占空比要求的违例。
图3:上升下降延时差异导致占空比要求的违例。

SDF延时近似是高速门级仿真验证的关键

测试平台有一个时间刻度用于定义设计仿真时的事件颗粒度。在时间刻度语句中,第一个值是时间单位,第二个值是仿真的精度。对于高速电路来说定义时间刻度的精度必须非常谨慎。一般来说,测试平台中的时间刻度定义为1ns/10ps,这意味着所有延时都将被近似为最接近的10ps。但在DDR等时序非常重要的高速协议中,裕量可能非常小(在ps数量级)。举例来说,如果数据路径中有10个缓冲器,每个的延时为26ps,那么如果时间刻度是1ns/10ps,所有这些延时都将被近似为30ps,进而在门级仿真中将引入40ps的不精确性。这将在门级仿真中导致错误的时序违例。有鉴于此,仿真环境必须更新到合适的时间刻度才能避免这样的问题发生。

应该解决来自存储器的错误

一般来说,仿真中可以使用不同供应商提供的模型。这些模型可以是Verilog模型或Denali模型。这些模型可能来自美光、Spansion、Macronix等存储器供应商。针对仿真目的最好选用Denali模型,因为这些模型对所有时序参数和协议都做了非常严格的检查,而且还包括CK/DQS/DQ之间的抖动和偏移,因此非常接近于电路板中使用的实际存储器。当在存储器接口处违反任何时序规格时,模型将标记上错误信息。RTL仿真中是没有延时的,如果时序参数得到了正确配置,那么正常情况下不会遇到这些错误。但在GLS仿真中需要考虑延时因素,因此很可能发生某些参数违例,错误信息被抛出来。对这些错误必须仔细审查,并加以解决。正常情况下,当信号由控制器给出并到达存储器时,在写周期中会遇到这些问题。在读周期中,信号是模型自身产生的并到达控制器。Denali存储器模型有许多开关用于控制各种参数,如允许的差分偏移、将存储器初始化到某个值、禁止来自存储器的错误消息等。必须注意的是,没有哪个开关可以忽略,这样做很可能屏蔽重要的错误信息。

本文小结

从上述讨论的各个要点看,很明显门级仿真(GLS)有助于发现在RTL级无法预料的设计问题,并在做成硅片前得到解决。如果我们一味地从事重复劳动,那么在门级仿真中调试DDR可能是一个极具挑战性的任务,但通过经验并遵循基本的调试规则可以使工作顺利开展。这些问题与门级仿真其它协议时常常遇到的问题不同,也更有技巧性,因此经常耗费更长的调试时间。从一开始就关注这些关键的调试参数可以在门级仿真中实现高效快速的DDR调试,并有助于在更早的SoC设计阶段发现隐藏的设计问题。

本文来自《电子技术设计》2015年10月刊,版权所有,谢绝转载。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

DDR? 仿真?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈