以ARM、 DSP 等 SOC 为核心的电子系统中,经常存在两片或者以上的 DDR/DDRIISDRAM 。考虑到 DDR/DDRII SDRAM 的运行频率一般都比较高,在做PCB layout 的时候需要等长布线来保证 DDR/DDRII SDRAM 的读写时序。对于包含两片及以上 DDR/DDRII SDRAM 的系统 ,这里要求的等长布线有两层含义。拿 ADDRESS 信号来讲,第一层含义要求从 SOC 的某一个 ADDRESS 的 pad 到每一块儿 DDR/DDRII SDRAM 对应的 pad 之间的长度要相等 ( A+B =A+C ) , 第二层含义要求 SOC 的所有 ADDRESS 的 pad 到对应 DDR/DDRII SDRAM 的 pad 之间的长度要相等(所有的 A+B = 所有的 A+C )。
但在Altium Designer中,我花了几天也没试出焊盘到焊盘等长功能,只有网络的等长功能。 SOC 的某一 ADDRESS pad 与对应 DDR/DDRII SDRAM 的 pad 之间的网络 定义是唯一的(也就是 A , B , C 拥有同样的网络名称 ) ,网络的长度定义为( A+B+C ),无法准确知道 A ,B 和 C 的长度 。那如何在 Altium Designer 中实现 DDR/DDRII SDRAM 的等长布线呢?
我目前所用的是Cyclone IV 控制两片DDR2,根据Cyclone 的手册,在进行DDR2设计时,FPGA的管脚分配是要有所考虑的,而不能随意分配。Cyclone IV 就指定了相关的DQ、DQS和DQM引脚,我们设计时应该遵从这些引脚约束。在该FPGA的上、下、左、右区域分别都指定有这些引脚,这里不详细说明,请参考手册。数据组的拓扑关系比命令和地址的简单些,这里用命令和地址线组的等长来说明怎么用Altium Designer来实现等长画线。
现在行业标准设计软件Allegro,我一直没用,我知道Altium Designer有些问题,上次有一个参考的标准设计是Allegro设计的*.brd,转换过来就有很多问题,错位,不能直接用,想用还得修补。还是请我同学的研究生转的,年轻人对新软件很熟。我的同学早就不做这么具体的事了。习惯用PROTEL,也不想改了。
在Altium Designer 软件中我没有找到焊盘到焊盘等长功能,只有对某个NET的等长,如果Allegro有焊盘对焊盘的等长设计功能,那这个DDR2等长布线就太容易了。Altium Designer 软件中有焊盘到焊盘的检测功能 From-To Editor,测看焊盘到焊盘的线长还是很方便的。
利用 Altium Designer软件先测出NET总长,和A、B、C的长度,算出D的长度。
上图我们找出DDR2_A7地址线,NET总长=2276.445,A=1192,B=377,C=539。算出D=NET-A-B-C.我用EXCEL建立一个表格,用EXCEL的计算功能来计算,很方便。
按照上面的方法,逐一列出地址A0—A12,以及控制命令线,在EXCEL中建立DDR2地址控制信号等长信号表。
找出A+B或者A+C最长的做1993做基准。算出各个调节A,B,C时的总长,根据总长来等长调节。最后实现A+B=A+C=1993.实际调节取整有误差,但肯定在可控范围。下图为某个地址线的示意图。可看出A,B,C,D,各段的情况。
图中的蛇形线是要调节的等长线。
蛇形线的调节设置。