EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 amao 于 2015-6-30 11:52 编辑
$ ^- f) V6 y0 o" g# H. K
+ ?. L2 M: a3 z; C6 j【原创】史上最强悍Allegro差分线匹配工具与开发往事 o7 i" h! z/ i
毛忠宇 201506, i, ]0 Z* d9 Z$ K/ M2 Q
" _5 B. O3 x8 K7 D* r9 V
差分对提取工具开发往事 上篇《我与PADS的那点事》文章发表后,收到不少网友索取所写小工具的免费授权文件,程序能被大家接受,不免有“那么一点点”的成就感。 在Allegro Constraint Manager菜单没有出现前,那时把网络设置成差分线需要手工逐对添加Property属性来实现。那时我还在H公司,用刚学点皮毛的PERL编程写了个差分线的自动提取工具,这个程序在部门得到推广及广泛使用(现在H公司还有不少人在使用)。 我写的程序使用了很久一段时间后,Allegro在后来的版本才出现类似的功能,它提出了Constraint Manage的概念,差分线等各种网络的规则通过类EXCEL界面管理,如下图1。这样使规则管理起来更直观及更简单,其它EDA厂商的软件后来也跟着出现了类似的管理界面。
$ d7 ^* x/ _- _1 c& M/ @2 u图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' ……
1 j0 [: T- F6 Z7 d图2 A软件匹配输入界面 如这类网络不多手工处理起来问题不大,如下图中的从N0,P0到N43到P43只需要手工输入44次匹配方式。而程序又不能识别P* N*,万一要网络定义到N1000,P1000,哪怎么办呢?要手工输入1000次那就有点“扯蛋”了。
1 U' a# g6 d$ i. U# U
图3 差分网络定义格式 *以上测试基于16.5版的平台,更高级的版本没有测试。 EDA软件M*差分对自动匹配存在的问题 业界另一个EDA巨头M公司,他的差分对匹配算法很强悍,但是强悍得过了头,识别后会多出很多不符合要求的差分对,这些需要手工再去删除,反而有点画蛇添足了。如下面它对网络的匹配效果,多出了太多不想要的差分线。下图4中所有粉红色都是被匹配出的错误差分对:如B8_TX_P22 B8_RX_P22 ,而真正的差分对是B8_TX_P22 B8_TX_N22
1 D9 \, `4 Q+ F# u8 @! E图4 M软件匹配出的多余组合 自开发差分线匹配工具的优点 基于目前两在EDA软件巨头差分对算法方面的问题,我优化算法,克服了他们现存的缺点,并实现输入窗口可以同时加入多个匹配字符,从而一次性提取出所有差分线,对抽取的结果可以在文本文件中或调入后在Constraint Manager界面上把多余的删除(删除的操作总比增加的操作用起来更令人愉快),从而一次性匹配几百乃至上千对差分线。
3 d1 I+ C E8 _: m2 d+ z
图5 自开发的差分线自动匹配软件工具界面 下图6是用程序对网表处理后,不到1分钟就完成的179对差分线匹配图。
4 ], b) Q+ `& h: ?9 ^6 D( l
图6 自开发软件匹配效果 特点 1) 克服两大EDA公司的差分线匹配算法问题 2)适用任何Allegro版本 3)可一次性全部匹配 - I, F1 k" P2 {, u1 i& y1 p- N) ]
*《IC封装基础与工程设计实例》书籍答疑QQ群号:433148683 * 如对相关内容感兴趣,请关注微信公共帐号:amao_eda365附
1 L+ ~5 d" Q# M: s程序使用方法:
8 T# I9 a' I; r. \
& e4 G) B2 m$ v7 i
|