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