差分对提取工具开发往事
上篇《我与PADS的那点事》文章发表后,收到不少网友索取所写小工具的免费授权文件,程序能被大家接受,不免有“那么一点点”的成就感。
在Allegro Constraint Manager菜单没有出现前,那时把网络设置成差分线需要手工逐对添加Property属性来实现。那时我还在H公司,用刚学点皮毛的PERL编程写了 个差分线的自动提取工具,这个程序在部门得到推广及广泛使用(现在H公司还有不少人在使用)。
我 写的程序使用了很久一段时间后,Allegro在后来的版本才出现类似的功能,它提出了Constraint Manage的概念,差分线等各种网络的规则通过类EXCEL界面管理,如下图1。这样使规则管理起来更直观及更简单,其它EDA厂商的软件后来也跟着出 现了类似的管理界面。
图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 A软件匹配输入界面
如这类网络不多手工处理起来问题不大,如下图中的从N0,P0到N43到P43只需要手工输入44次匹配方式。而程序又不能识别P* N*,万一要网络定义到N1000,P1000,哪怎么办呢?要手工输入1000次那就有点“扯蛋”了。
图3 差分网络定义格式
*以上测试基于16.5版的平台,更高级的版本没有测试。
EDA软件M*差分对自动匹配存在的问题
业 界另一个EDA巨头M公司,他的差分对匹配算法很强悍,但是强悍得过了头,识别后会多出很多不符合要求的差分对,这些需要手工再去删除,反而有点画蛇添足 了。如下面它对网络的匹配效果,多出了太多不想要的差分线。下图4中所有粉红色都是被匹配出的错误差分对:如B8_TX_P22 B8_RX_P22 ,而真正的差分对是B8_TX_P22 B8_TX_N22
图4 M软件匹配出的多余组合
自开发差分线匹配工具的优点
基 于目前两在EDA软件巨头差分对算法方面的问题,我优化算法,克服了他们现存的缺点,并实现输入窗口可以同时加入多个匹配字符,从而一次性提取出所有差分 线,对抽取的结果可以在文本文件中或调入后在Constraint Manager界面上把多余的删除(删除的操作总比增加的操作用起来更令人愉快),从而一次性匹配几百乃至上千对差分线。
图5 自开发的差分线自动匹配软件工具界面
下图6是用程序对网表处理后,不到1分钟就完成的179对差分线匹配图。
图6 自开发软件匹配效果
特点
1) 克服两大EDA公司的差分线匹配算法问题
2)适用任何Allegro版本
3)可一次性全部匹配
其它
程序使用说明及下载,请到地址:http://www.eda365.com/thread-110362-1-1.html
*《IC封装基础与工程设计实例》书籍答疑QQ群号:433148683
* 如对相关内容感兴趣,请关注微信公共帐号:amao_eda365
用户1678053 2015-11-4 08:45
用户1454308 2015-11-4 07:42
do3think 2015-11-3 13:44
忆轻狂 2015-11-3 12:40
用户1277994 2015-11-3 09:19
用户1454308 2015-7-13 11:03
用户1653869 2015-7-8 17:28