作者:一博科技高速先生成员 肖勇超
对于DDR4的设计,相信攻城狮们经历过万千项目的历练,肯定是很得心应手,应该已经有自己的独门技巧了。比如选择合适的拓扑结构,信号同组同层,容性负载补偿,加上拉电阻等等。但是对于时序方面的控制,理论上只有一个办法——绕等长,速率越高的DDR4,等长控制越严格,从±100mil,到±50mil,甚至±5mil……
一个平平无奇的日子,网红芬带着新合作的客户项目经理李工来找我,客户对我们做某FPGA DDR4设计要求有疑问,说我给的等长规则不对,为啥要按时间设置等长,以及他看到规则管理器的长度差很大,其中时钟和地址信号长度明显超过了手册spec要求,以前用P软件设计从来没有出现这样的问题。紧接着李工急促说道:“我们设计的DDR4项目本来就运行不到2400Mbps,找你们debug优化设计,就是信任你们的品牌,你们这样做设计让我感觉很不专业,我们项目很重要……”


对于李工个中艰辛自不必多说,我们相当明白他的痛点。我问道:“李工你们对于DDR4换层过孔的补偿在P软件是如何考量的?pin delay是怎样设置的?表层布线和内层布线长度一样,就是时序一样了吗?”李工当场就愣住了!
高速先生以前说过,等长从来都不是目的,DDRx系统要求的是等时,除了差分对内的等时是为了相位之外,绝大多数的等时都是为了时序!现在流行重要的事情说三遍:等时,等时,等时!那如何保证我们的DDR4 PCB设计是等时的呢?大致可以按照下面的操作步骤来。
做等长第一步是要设置准确的层叠参数,介质厚度和Dk。在设计过程中我们需要将设计层叠发送给板厂做加工层叠确认和备料。加工备料层叠如下图所示:

根据备料层叠按照材料手册来设置相关的介质厚度和Dk/Df参数:

点击Setup菜单栏下方-Materials,即可以打开allegro自带的材料参数表,由于我们使用M6-G材料需要自定义增加相关材料参数,选中表格点击右键即可增加自定义的材料参数。

自定义一个自己使用习惯的名字,既可设置不同频率下的Dk/Df,也可设置不同温度下的Dk/Df,相关数据设置如下所示:

设置好材料参数之后,就可以打开层叠将相关参数设置好,这样我们对于层叠部分的设置就基本完成了,如下所示:

接着就可以导入Pin delay和设置等长规则了,我们的网红芬就是按照上述操作设置的相关规则。对于相关操作大家感兴趣的也可以参考我们和cadence联合最新出版的红宝书《Cadence印制电路板设计--Allegro PCB Editor设计指南》(第3版)。对,就是下图这本。

对于已经拥有第一/二版本红宝书的小伙伴们可以查阅之前的书籍设置或者查看高速先生刘大侠之前写的cadence等长规则设置,设置规则反正就是左键不行用右键,调皮偷懒就来Skill啦!
说了这么多我们是不是该结束了?不要太年轻,我们还要开Z轴延时,一般人我还不轻易告诉他。

记得打开勾选上它。
按照上面的操作来做等长是不是可以更准一点,给DDR4系统留取更多的裕量呢?由于李工的项目最根本原因不是等长,而是由于他使用了多颗粒双die DDR4表底贴设计,阻抗和拓扑结构优化不到位导致(这种设计在我司的定位难度级别最高),为了让他安心,我们直接仿真对比了他原始设计版本和经过网红芬优化设计后版本的近端颗粒的眼图,如下所示:


看到仿真验证数据,李工终于面露笑容,后续正常加工制造了,两个月后我问李工测试如何,他说一切正常。

至此我们的等长设置正式完毕。