EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 amao 于 2015-6-30 11:52 编辑
, a4 F% ?, v$ w6 A- f* b% j$ A9 i6 r' u! P
【原创】史上最强悍Allegro差分线匹配工具与开发往事
# G7 `- A V9 m- e毛忠宇 201506# o7 u9 i8 O" \7 u' l9 t
' s1 k0 f5 F. w: Z1 ?) v 差分对提取工具开发往事 上篇《我与PADS的那点事》文章发表后,收到不少网友索取所写小工具的免费授权文件,程序能被大家接受,不免有“那么一点点”的成就感。 在Allegro Constraint Manager菜单没有出现前,那时把网络设置成差分线需要手工逐对添加Property属性来实现。那时我还在H公司,用刚学点皮毛的PERL编程写了个差分线的自动提取工具,这个程序在部门得到推广及广泛使用(现在H公司还有不少人在使用)。 我写的程序使用了很久一段时间后,Allegro在后来的版本才出现类似的功能,它提出了Constraint Manage的概念,差分线等各种网络的规则通过类EXCEL界面管理,如下图1。这样使规则管理起来更直观及更简单,其它EDA厂商的软件后来也跟着出现了类似的管理界面。
3 B$ r* n0 f0 \1 L3 w0 E图1 A软件的Constraint Manager界面 EDA软件A*差分对自动匹配存在的问题 当年在H公司由于原理图与PCB LAYOUT软件平台的原因,所有网表都是第三方的模式调入。因此其员工是业界上对调第三网表都很熟悉的,我那时开发的程序还需要手工对网表文件手工处理一下,但他们用起来基本没遇到什么问题,就一直没有更新了。 上段有个现同事向我讲起她所用的Allegro自动生成差分对功能时,还有些不够完美的地方:一次只能生成一种类型的差分线:要生成下面网络组成的差分线,Allegro中要在匹配字符框中分别多次输入:N0,P0 N1,P1 N2,P2 N3,P3…… 'B7ABC_CLK_N0' 'B7ABC_CLK_P0' 'B7ABC_CLK_N1' 'B7ABC_CLK_P1' 'B7ABC_CLK_N2' 'B7ABC_CLK_P2' 'B7ABC_CLK_N3' 'B7ABC_CLK_P3' ……
6 u( d, X, Q% J* }& D* i图2 A软件匹配输入界面 如这类网络不多手工处理起来问题不大,如下图中的从N0,P0到N43到P43只需要手工输入44次匹配方式。而程序又不能识别P* N*,万一要网络定义到N1000,P1000,哪怎么办呢?要手工输入1000次那就有点“扯蛋”了。
! R. n2 ^0 `6 u9 P图3 差分网络定义格式 *以上测试基于16.5版的平台,更高级的版本没有测试。 EDA软件M*差分对自动匹配存在的问题 业界另一个EDA巨头M公司,他的差分对匹配算法很强悍,但是强悍得过了头,识别后会多出很多不符合要求的差分对,这些需要手工再去删除,反而有点画蛇添足了。如下面它对网络的匹配效果,多出了太多不想要的差分线。下图4中所有粉红色都是被匹配出的错误差分对:如B8_TX_P22 B8_RX_P22 ,而真正的差分对是B8_TX_P22 B8_TX_N22
& \. F" ~( S( I3 [- F& `5 Z图4 M软件匹配出的多余组合 自开发差分线匹配工具的优点 基于目前两在EDA软件巨头差分对算法方面的问题,我优化算法,克服了他们现存的缺点,并实现输入窗口可以同时加入多个匹配字符,从而一次性提取出所有差分线,对抽取的结果可以在文本文件中或调入后在Constraint Manager界面上把多余的删除(删除的操作总比增加的操作用起来更令人愉快),从而一次性匹配几百乃至上千对差分线。
, j9 s! o) G% Q; K& D% Z9 p
图5 自开发的差分线自动匹配软件工具界面 下图6是用程序对网表处理后,不到1分钟就完成的179对差分线匹配图。
; x: I$ K5 e/ I2 F9 m2 r图6 自开发软件匹配效果 特点 1) 克服两大EDA公司的差分线匹配算法问题 2)适用任何Allegro版本 3)可一次性全部匹配 3 i+ r+ ^0 H& F* R3 _
*《IC封装基础与工程设计实例》书籍答疑QQ群号:433148683 * 如对相关内容感兴趣,请关注微信公共帐号:amao_eda365附 / `0 _; O2 ^6 k3 Y# v4 W+ B
程序使用方法:, _6 X A! m, U; o/ ?
+ d; c8 j) U' d' P- g6 F- A |