一种基于ODB++文件转化为可编辑PCB版图的方法转让专利

申请号 : CN201410734543.6

文献号 : CN104346502B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王振轩刘洋霍明亮甄江平蔡萌

申请人 : 中国电子科技集团公司第五十四研究所

摘要 :

本发明公开了计算机软件创新技术领域中的一种基于ODB++文件转化为可编辑PCB版图的方法,主要解决了目前多数PCB制板软件只可将ODB++文件转化为可视化图形界面而不能对其进行器件的选择和编辑的问题。其技术方案为:建立一个用于绘制PCB版图的软件平台PLV,并创建一个读取ODB++文件的菜单界面。根据ODB++文件的标准读取其中与PCB版图相关的内容并进行处理,然后再将其转化为PLV平台中可存储的数据结构,最终实现从ODB++文件到PCB版图的转化。本发明实现了在PCB版图制板前可进行再次编辑修改的可能性,同时能够对多种EDA软件设计的PCB版图进行DRC以及信号完整性审查。

权利要求 :

1.一种基于ODB++文件转化为可编辑PCB版图的方法,其特征在于:建立一个用于绘制PCB版图的软件平台PLV,并创建一个读取ODB++文件的菜单界面,根据ODB++文件的标准读取其中与PCB版图相关的内容并进行处理,然后再将其转化为PLV平台中可存储的数据结构,最终实现从ODB++文件到PCB版图的转化,具体包括以下步骤:(1)创建支持PCB版图设计的软件平台PLV;其中,软件平台PLV是基于MFC生成的主框架结构来实现PCB版图的设计;软件平台PLV的开发环境为Visual Studio 2005及以上版本;

(2)设计菜单界面作为ODB++文件的输入口;

(3)用C++高级语言编写代码读取由EDA软件导出的ODB++文件;

(4)根据ODB++文件定义的标准符号筛选出PCB版图的边框信息并存储到软件平台PLV的内部数据结构中;

(5)根据ODB++文件定义的标准符号筛选出PCB版图的封装信息、PCB版图的器件信息、PCB版图的网络信息和PCB版图丝印层的文本信息;

(6)将得到的PCB版图的边框信息、PCB版图的封装信息、PCB版图的器件信息、PCB版图的网络信息和PCB版图丝印层的文本信息统一转存到PLV平台的内部数据结构中,然后通过调用显示函数即可显示出可选择可编辑的PCB版图;

步骤(4)具体包括以下步骤:

(4a)确定存储PCB边框信息的文件的路径信息;

(4b)读取线段的尺寸信息并存储到定义的数组阵列中;

(4c)通过智能处理将线段信息组合成PCB的边框信息存储到PLV的内部数据结构中;

步骤(5)中根据ODB++文件定义的标准符号筛选出PCB版图的封装信息,具体包括以下步骤:(5a)读取ODB++中的封装数据,并按照图形类型进行归类存储;其中,图形类型包括直线、点和圆弧;

(5b)根据就近原则、名称匹配和封装库对比的方法把存储的封装数据按器件类型分别重组;其中,器件类型包括电阻、电感和电容;

(5c)重组后的数据根据ODB++中的封装编号对应导入到软件平台PLV内部数据结构中;

步骤(5)中根据ODB++文件定义的标准符号筛选出PCB版图的器件信息,具体包括以下步骤:(6a)分别查询ODB++文件中的顶层和底层器件信息,并分别存储到对应定义的类的成员变量数组阵列中;

(6b)通过ODB++文件定义的标准符号查询出器件所对应的封装信息和引脚信息,并存储到所属器件对应类的成员变量数组阵列中;

步骤(5)中根据ODB++文件定义的标准符号筛选出PCB版图的网络信息,具体包括以下步骤:(7a)根据ODB++文件中定义的网络标识符号来获得整个PCB版图中所包含的网络个数及名称,所属网络的器件引脚和过孔,并将其分别存储到定义的类的成员变量中;

(7b)从有关网络连接的文件中获取用于网络连接的线段信息,并将其端点信息和尺寸信息分别存储到对应网络类的成员变量中以便进行数据处理时进行查询和删除操作;

(7c)对数组阵列中存储的所有线段进行分析,并分配给各个网络,实现PCB版图中的网络连接;

步骤(7c)中的对数组阵列中存储的所有线段进行分析,并分配给各个网络,按如下方法进行:(7c1)从属于网络中的某一个器件引脚为起点,从所的线段中查找与此引脚相连的一条线段,如果查找到了这条线段,则判断线段的另一个端点是否连接到过孔上或连接到另一个引脚上,并将这条线段删除掉,以后不再被查询;

(7c2)如果判断出另一端点是连接到另一个引脚上,则此次过程完成,并开始下一个过程;

(7c3)如果判断出另一个端点连接到过孔上,则再查询与此过孔相连的线段,这样以次查询直到找到与线段相连的引脚;

(7c4)不断重复上述操作直到所有的线段都被分配到网络中并从数组阵列中删除。

说明书 :

一种基于ODB++文件转化为可编辑PCB版图的方法

技术领域

[0001] 本发明属于计算机软件创新技术领域,更具体的是关于将应用于版图制造的ODB++文件转化为一种可编辑的PCB版图的方法,可应用于PCB版图的DRC和信号完整性规则审查的系统设计。

背景技术

[0002] 随着IC工艺尺寸降低到20nm以下,单芯片供电电压在不断降低的同时电流密度却在持续增大,且工作频率已达到10G赫兹以上,由此引发的板级电源完整性和信号完整性问题日益严重。在制版之前就对PCB版图进行电气规则检查和信号完整性审查是决定高速板级系统是否能说够实现从设计到制造一次性成功的关键因素。然而,对于高速高密度的PCB板级系统而言,其层数在国内可达四五十层,而在国外甚至可高达上百层,器件及网络间互连、过孔个数更是以百万记,导致仅通过个人经验或者人工方式来实现PCB版图的DRC检查、电源完整性和信号完整性的审查几乎是不可能的。
[0003] 目前市场上常用的EDA软件,例如Cadence公司的SI仿真软件,虽已包含PCB版图审查功能,但缺乏整板仿真的能力。另外,虽然不同EDA软件的审查功能模块各具特色,但软件平台间并不具备统一的文件交换接口规范,造成不同EDA软件开发平台间资源共享困难,无法实现PCB版图的整体优化设计。因此,为了解决各种EDA软件之间的数据交换问题和PCB版图的整板仿真问题,开发具有统一数据交换接口的PCB整板自动审查平台显得尤为重要。

发明内容

[0004] 本发明的目的在于针对上述描述的在数据交换方面存在的不足,提出了一种将各EDA软件都能导出的标准ODB++文件转化为可编辑PCB版图的方法,以满足用户对来自各种不同的EDA软件的PCB版图进行信号完整性审查和再编辑的需求。
[0005] 本发明所采取的技术方案为:
[0006] 一种基于ODB++文件转化为可编辑PCB版图的方法,其特征在于:建立一个用于绘制PCB版图的软件平台PLV,并创建一个读取ODB++文件的菜单界面。根据ODB++文件的标准读取其中与PCB版图相关的内容并进行处理,然后再将其转化为PLV平台中可存储的数据结构,最终实现从ODB++文件到PCB版图的转化,具体包括以下步骤:
[0007] (1)创建支持PCB版图设计的软件平台PLV;其中,软件平台PLV是基于MFC生成的主框架结构来实现PCB版图的设计;软件平台PLV的开发环境为Visual Studio 2005及以上版本;
[0008] (2)设计菜单界面作为ODB++文件的输入口;
[0009] (3)用C++高级语言编写代码读取由EDA软件导出的ODB++文件;
[0010] (4)根据ODB++文件定义的标准符号筛选出PCB版图的边框信息并存储到软件平台PLV的内部数据结构中;
[0011] (5)根据ODB++文件定义的标准符号筛选出PCB版图的封装信息、PCB版图的器件信息、PCB版图的网络信息和PCB版图丝印层的文本信息;
[0012] (6)将得到的PCB版图的边框信息、PCB版图的封装信息、PCB版图的器件信息、PCB版图的网络信息和PCB版图丝印层的文本信息统一转存到PLV平台的内部数据结构中,然后通过调用显示函数即可显示出可选择可编辑的PCB版图。
[0013] 其中,步骤(4)具体包括以下步骤:
[0014] (4a)确定存储PCB边框信息的文件的路径信息;
[0015] (4b)读取线段的尺寸信息并存储到定义的数组阵列中;
[0016] (4c)通过智能处理将线段信息组合成PCB的边框信息存储到PLV的内部数据结构中。
[0017] 其中,步骤(5)中根据ODB++文件定义的标准符号筛选出PCB版图的封装信息,具体包括以下步骤:
[0018] (5a)读取ODB++中的封装数据,并按照图形类型进行归类存储;其中,图形类型包括直线、点和圆弧;
[0019] (5b)根据就近原则、名称匹配和封装库对比的方法把存储的封装数据按器件类型分别重组;其中,器件类型包括电阻、电感和电容;
[0020] (5c)重组后的数据根据ODB++中的封装编号对应导入到软件平台PLV内部数据结构中。
[0021] 其中,步骤(5)中根据ODB++文件定义的标准符号筛选出PCB版图的器件信息,具体包括以下步骤:
[0022] (6a)分别查询ODB++文件中的顶层和底层器件信息,并分别存储到对应定义的类的成员变量数组阵列中;
[0023] (6b)通过ODB++文件定义的标准符号查询出器件所对应的封装信息和引脚信息,并存储到所属器件对应类的成员变量数组阵列中。
[0024] 其中,步骤(5)中根据ODB++文件定义的标准符号筛选出PCB版图的网络信息,具体包括以下步骤:
[0025] (7a)根据ODB++文件中定义的网络标识符号来获得整个PCB版图中所包含的网络个数及名称,所属网络的器件引脚和过孔,并将其分别存储到定义的类的成员变量中;
[0026] (7b)从有关网络连接的文件中获取用于网络连接的线段信息,并将其端点信息和尺寸信息分别存储到对应网络类的成员变量中以便进行数据处理时进行查询和删除操作;
[0027] (7c)对数组阵列中存储的所有线段进行分析,并分配给各个网络,实现PCB版图中的网络连接。
[0028] 其中,步骤(7c)中的对数组阵列中存储的所有线段进行分析,并分配给各个网络,按如下方法进行:
[0029] (7c1)从属于网络中的某一个器件引脚为起点,从所的线段中查找与此引脚相连的一条线段,如果查找到了这条线段,则判断线段的另一个端点是否连接到过孔上或连接到另一个引脚上,并将这条线段删除掉,以后不再被查询;
[0030] (7c2)如果判断出另一端点是连接到另一个引脚上,则此次过程完成,并开始下一个过程;
[0031] (7c3)如果判断出另一个端点连接到过孔上,则再查询与此过孔相连的线段,这样以次查询直到找到与线段相连的引脚;
[0032] (7c4)不断重复上述操作直到所有的线段都被分配到网络中并从数组阵列中删除。
[0033] 本发明与现有技术相比具有以下优点:
[0034] 第一,本发明首次实现了由ODB++文件转化为可编辑PCB版图,解决了PCB版图文件只可在单一EDA软件中打开的局限性;
[0035] 第二,本发明可以实现用户对信号完整性审查的特殊要求,用户自己可以根据需要自己编写脚本语言任意添加自己的审查规则,并使这些规则可以得到不断积累;
[0036] 实际情况可以表明,本发明在实际工作应用中,绘制PCB版,PCB版生产中是很有价值的。

附图说明

[0037] 图1是本发明的流程图;
[0038] 图2是本发明PLV软件的功能结构图。

具体实施方式

[0039] 下面结合附图对本发明的具体实施和效果作进一步描述:
[0040] 参照图1和图2,一种基于ODB++文件转化为可编辑PCB版图的方法,其特征在于:建立一个用于绘制PCB版图的软件平台PLV,并创建一个读取ODB++文件的菜单界面。根据ODB++文件的标准读取其中与PCB版图相关的内容并进行处理,然后再将其转化为PLV平台中可存储的数据结构,最终实现从ODB++文件到PCB版图的转化,具体包括以下步骤:
[0041] (1)创建支持PCB版图设计的软件平台PLV;其中,软件平台PLV是基于MFC生成的主框架结构来实现PCB版图的设计;软件平台PLV的开发环境为Visual Studio 2005及以上版本。
[0042] 具体描述如下所示:
[0043] 1)PLV平台的主要基类说明
[0044] 构成PLV平台的主要基类有CDialog-主要支持生成子窗口及对话框;CToolBar-主要用于工具栏的创建;CFrameWnd-主要用于创建应用程序的主窗口;CView-用户的主要操作界面;CDocument-主要为用户定义的文档类提供了基本的函数功能;CWinApp-作为MFC中的主应用程序类封装用于Windows操作系统的应用程序的初始化、运行和终止;
[0045] 2)与PCB板图相关类说明
[0046] 板图相关的类主要为CShape-主要用于描述器件的封装;CPartList-主要用于对器件的描述;CNetList-主要用于对网络的连接描述;CTextList-主要对丝印层中的文本信息进行描述;
[0047] (2)设计菜单界面作为ODB++文件的输入口。
[0048] 实施中,设计人性化的菜单界面作为ODB++文件的输入口,在此窗口中选定ODB++文件的路径,点击“确定”即可开始文件转换。
[0049] (3)用C++高级语言编写代码读取由EDA软件导出的ODB++文件。
[0050] 实施中,用C++高级语言编写代码读取由任意一种EDA软件导出的ODB++文件。其中本文实验用的是Altium Designer软件生成的ODB++文件,由于OBD++文件是一种国际标准文件,所以任何一个EDA软件导出的ODB++文件都是一样的。
[0051] (4)根据ODB++文件定义的标准符号筛选出PCB版图的边框信息并存储到软件平台PLV的内部数据结构中。
[0052] 步骤(4)具体包括以下步骤:
[0053] (4a)确定存储PCB边框信息的文件的路径信息;
[0054] PCB板图的边框信息一般存储在ODB++文件中的keepout或mechanical文件夹中的features文件中。通过判断features文件中#Layer features之后是否有线段或圆弧信息来确定边框信息的存储位置;
[0055] (4b)读取线段的尺寸信息并存储到定义的数组阵列中;
[0056] 通过读取features文件中#Feature symbol names之后的$(n)r(m)(其中n为自然数,m为正实数)格式中的m值来获得边框线的尺寸大小。
[0057] (4c)通过智能处理将线段信息组合成PCB的边框信息存储到PLV的内部数据结构中。
[0058] (5)根据ODB++文件定义的标准符号筛选出PCB版图的封装信息、PCB版图的器件信息、PCB版图的网络信息和PCB版图丝印层的文本信息。
[0059] 步骤(5)中根据ODB++文件定义的标准符号筛选出PCB版图的封装信息,具体包括以下步骤:
[0060] (5a)读取ODB++中的封装数据,并按照图形类型进行归类存储;其中,图形类型包括直线、点和圆弧;
[0061] 实施例中,读取顶层丝印层和底层丝印层features文件中的数据,并按线段、圆弧、点等图形类型分类存储到相应的变量数组中;
[0062] /steps//layers//features文件中#Layer features部分存储的是具体的封装信息,对其进行逐行读取,根据首字符(如A代表弧,L代表直线,P代表焊盘形)可知此行数据描述的图形,再按不同的图形存储这些数据到不同的变量中。
[0063] (5b)根据就近原则、名称匹配和封装库对比的方法把存储的封装数据按器件类型分别重组;其中,器件类型包括电阻、电感和电容;
[0064] 实施例中,对于封闭、折线或者其它不同图形相连的情况,必定会有同一个端点。把这些有同一端点并且位置上距离这些图形极其相近的图形数据重组到一起。根据其位置信息对应到相应的器件,即可查找到此封装的名称及对应器件的名称。这些重组好的封装与封装库中的对应相同封装名字的封装数据进行对比匹配,查找是否有丢失遗漏或者连接错误的图形信息,以完善封装数据;
[0065] (5c)重组后的数据根据ODB++中的封装编号对应导入到软件平台PLV内部数据结构中。
[0066] 实施例中,将这些封装信息存储到PLV数据结构中shape类型指针里;
[0067] ODB++中的封装信息描述与PLV数据结构中的描述有些许差异,需要对原数据进行运算变换后再存储到PLV的数据结构中。
[0068] 步骤(5)中根据ODB++文件定义的标准符号筛选出PCB版图的器件信息,具体包括以下步骤:
[0069] (6a)分别查询ODB++文件中的顶层和底层器件信息,并分别存储到对应定义的类的成员变量数组阵列中;
[0070] (6b)通过ODB++文件定义的标准符号查询出器件所对应的封装信息和引脚信息,并存储到所属器件对应类的成员变量数组阵列中。
[0071] 步骤(5)中根据ODB++文件定义的标准符号筛选出PCB版图的网络信息,具体包括以下步骤:
[0072] (7a)根据ODB++文件中定义的网络标识符号来获得整个PCB版图中所包含的网络个数及名称,所属网络的器件引脚和过孔,并将其分别存储到定义的类的成员变量中;
[0073] (7b)从有关网络连接的文件中获取用于网络连接的线段信息,并将其端点信息和尺寸信息分别存储到对应网络类的成员变量中以便进行数据处理时进行查询和删除操作;
[0074] (7c)对数组阵列中存储的所有线段进行分析,并分配给各个网络,实现PCB版图中的网络连接。
[0075] 其中,步骤(7c)中的对数组阵列中存储的所有线段进行分析,并分配给各个网络,是按如下方法进行:
[0076] (7c1)从属于网络中的某一个器件引脚为起点,从所的线段中查找与此引脚相连的一条线段,如果查找到了这条线段,则判断线段的另一个端点是否连接到过孔上或连接到另一个引脚上,并将这条线段删除掉,以后不再被查询;
[0077] (7c2)如果判断出另一端点是连接到另一个引脚上,则此次过程完成,并开始下一个过程;
[0078] (7c3)如果判断出另一个端点连接到过孔上,则再查询与此过孔相连的线段,这样以次查询直到找到与线段相连的引脚;
[0079] (7c4)不断重复上述操作直到所有的线段都被分配到网络中并从数组阵列中删除。
[0080] (6)将得到的PCB版图的边框信息、PCB版图的封装信息、PCB版图的器件信息、PCB版图的网络信息和PCB版图丝印层的文本信息统一转存到PLV平台的内部数据结构中,然后通过调用显示函数即可显示出可选择可编辑的PCB版图。
[0081] 实验结果显示转换过后PLV中的PCB板图显示与原来的Altium Designer软件中的板图完全吻合。