ODB++文件转换为可编辑PCB板图研究

2015-12-18 11:40甄江平原玉章
电子科技 2015年1期
关键词:板图数据结构器件

赵 强,甄江平,杨 菊,原玉章

(西安电子科技大学CAD研究所,陕西西安 710071)

目前市场上常用的EDA软件,例如Cadence公司的 SI仿真软件,虽已包含 PCB 板图审查功能[1-2],但缺乏整板仿真能力[3]。另外,虽不同EDA软件的审查功能模块各具特色,但软件平台间并不具备统一的文件交换接口规范,造成不同EDA软件开发平台间资源共享困难,无法实现PCB板图的整体优化设计。因此,为解决各种EDA软件之间的数据交换问题和PCB板图的整板仿真问题,开发统一数据交换接口和自动整板仿真平台尤为重要。

本文着重描述了基于ODB++的统一数据交换接口的实现方法研究。因各软件已经能输出ODB++文件,故本文只针对 ODB++文件的输入做出研究[4]。此研究基于Altium Designer软件和PLV平台,PLV平台是一个以PCB工程审查为主要功能的软件。

1 ODB++标准

ODB++(Open Data Base)―开放式数据库。

ODB++标准文件是由VALOR提出的一种ASCII码,双向传输文件。文件集成了所有PCB和线路板装配功能性描述。涵盖了PCB设计、制造和装配方面的要求。包括所有PCB绘图、布线层、布线图、焊盘堆叠、夹具等所有信息。它的提出主要用来代替GEBER文件的不足,包含更多板图和制造装配信息。

ODB++文件的结构,如图1所示。ODB++标准是一个拥有多级目录的文件系统。图1所示是该文件系统的一级目录,其中带有“<◇>”符号的文件名是自定义文件名,而不带符号的则是标准定义的文件名称,不可更改。本文研究所需数据在matrix和steps文件目录下。

图1 ODB++文件系统

matrix目录如图2所示,在此文件夹中有一个matrix文件。在此文件中使用二维矩阵的形式记录了电路板系统名称、各层的名称和层数及其他的简略信息。

另一个重要的目录是steps,这里有电路板图的所有信息。如图3所示,为此目录下的文件结构。其中,略去了包含关于PCB制造和装配信息文件的结构,而文中只关心记录PCB编辑信息文件[5]。

图2 matix文件系统

图3 steps文件系统

从以上文件中便可提取出一个PCB工程所需的所有信息。因此,以ODB++作为统一接口的标准是可行的。

2 PLV平台

PLV软件是本实验室自行开发的一款PCB板图编辑审查软件。其中,审查功能是重点,其除具有基本的编辑、审查功能外,还可实现如下功能:(1)具有导入导出ODB++标准文件的接口。(2)具有功能强大的信号完整性(SI)审查功能。(3)具有丰富的DRC审查。(4)具有友好的界面。(5)规则自定义功能。(6)强大的规则管理存储功能。

此软件的数据结构所包含的PCB相关数据是全面、完备、正交的,既不遗漏PCB编辑、审查所需的数据,又不对同一数据重复存储。本文所做实验就是以PLV平台为基础,该平台的数据结构部分,如图4所示。软件总体指针下包含PCB工程的所有信息,如外框描述、阻焊切口、器件列表、封装列表、网络列表等。充分满足了编辑审查PCB工程所需的全部信息[6]。

3 ODB++转换为PLV数据结构

建立一个用于绘制PCB板图的软件平台PLV,并创建一个读取ODB++文件的菜单界面。根据ODB++文件的标准读取其中与PCB板图相关的内容并进行处理,然后再将其转化为PLV平台中可存储的数据结构,实现从ODB++文件到PCB板图的转化。

步骤1 创建的PLV软件平台其实现基于MFC,其既可绘制编辑PCB板图,又具有功能强大的板图审查模块。具体描述如下:

(1)PLV平台的主要基类说明。构成PLV平台的基类有CDialog-主要支持生成子窗口及对话框;CToolBar-主要用于工具栏的创建;CFrameWnd-主要用于创建应用程序的主窗口;CView-用户的主要操作界面;CDocument-主要为用户定义的文档类提供了基本的函数功能;CWinApp-作为MFC中的主应用程序类封装用于Windows操作系统的应用程序初始化、运行和终止[7]。

(2)与PCB板图相关类说明。板图相关的类为CShape-主要用于描述器件的封装;CPartList-主要用于对器件的描述;CNetList-主要用于对网络的连接描述;CTextList-主要对丝印层中的文本信息进行描述。

步骤2 设计人性化的菜单界面作为ODB++文件的输入口,在此窗口中选定ODB++文件的路径,点击“确定”即可开始文件转换。

步骤3 用C++高级语言编写代码读取由任意一种EDA软件导出的ODB++文件。其中,本文实验采用 Altium Designer软件生成的 ODB++ 文件[8],由于OBD++文件是一种国际标准文件,所以任何一个EDA软件导出的ODB++文件均一致。

步骤4 根据ODB++文件定义的标准符号智能筛选出PCB板图的边框信息并存储到PLV的内部数据结构中。

图4 PLV数据结构

(1)确定存储PCB边框信息的文件路径信息。PCB板图的边框信息一般存储在ODB++文件中的keepout或mechanical文件夹中的features文件中。通过判断features文件中#Layer features之后是否有线段或圆弧信息来确定边框信息的存储位置。

(2)读取线段的尺寸信息并存储到定义的数组阵列中。通过读取features文件中#Feature symbol names之后的$(n)r(m)格式中的m值来获得边框线的尺寸大小。

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

步骤5 根据ODB++文件定义的标准符号筛选出PCB板图的封装信息。

(1)读取顶层丝印层和底层丝印层features文件中的数据,并按线段、圆弧、点等图形类型分类存储到相应的变量数组中。

<job_name>/steps/<step_name>/layers/<layer_name>/features文件中#Layer features部分存储的是具体的封装信息,对其进行逐行读取,根据首字符可知此行数据描述的图形,再按不同的图形存储这些数据到不同的变量中。

(2)通过就近原则、名称匹配和封装库对比的方法将变量数组中的数据重组成每个器件的封装。对于封闭、折线或其他不同图形相连的情况,必定会有同一个端点。将这些有同一端点且位置上距离这些图形极其相近的图形数据重组。根据其位置信息对应到相应的器件,即可查找到此封装的名称及对应器件的名称。将这些重组好的封装与封装库中的对应相同名称的数据进行对比匹配,查找是否有丢失遗漏或连接错误的图形信息,以完善封装数据。

(3)这些封装信息存储到PLV数据结构中shape类型指针内。ODB++中的封装信息描述与PLV数据结构中的描述有些许差异,需对原数据进行运算变换后再存储到PLV的数据结构中。

步骤6 根据ODB++文件定义的标准符号筛选出PCB板图的器件信息。

(1)分别查询ODB++文件中的顶层和底层器件信息,并分别存储到对应定义的类成员变量数组阵列中。

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

步骤7 根据ODB++文件定义的标准符号筛选出PCB板图的网络信息。

(1)根据ODB++文件中定义的网络标识符号来获得整个PCB板图中所包含的网络个数及名称,所属网络的器件引脚和过孔,并将其分别存储到定义类的成员变量中。

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

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

(4)以属于网络中的某一个器件引脚为起点,从所得线段中查找与此引脚相连的一条线段,若查找到了该条线段,则判断线段的另一个端点是否连接到过孔上或连接到另一个引脚上,并将这条线段删除掉,日后不再查询。

(5)若判断出另一端点是连接到另一个引脚上的,则此次过程完成,并开始下一过程。

(6)若判断出另一个端点连接到过孔上,则再查询与此过孔相连的线段,由此依次查询直到找出与线段相连的引脚。

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

步骤8 根据ODB++文件定义的标准符号筛选出PCB板图丝印层的文本信息。

步骤9 将以上获得的所有信息统一转存到PLV平台的内部数据结构中,然后通过调用显示函数即可显示出可选择可编辑的PCB板图。

实验结果显示转换过后PLV中的PCB板图显示与原先Altium Designer软件中的板图完全吻合。

4 结束语

实验效果:其中图5是用Altium Designer软件画出的 PCB板图,而图6是 Altium Designer软件导出ODB++文件后,再导入到PLV平台所得出的PCB板图。对比两幅图可看出,两个PCB板图完全一致。

当前各种EDA软件功能呈现出多元化发展趋势。然而,各软件之间没有统一的工程文件格式。这就造成了软件之间功能的共享,从而产生了极大的障碍。为了摆脱该种状况,找到统一的可编辑标准文件格式是必然。EDA软件输出的格式多样,其中支持Geber和ODB++输出格式的软件最广,在这两个格式中Geber格式虽比ODB++标准使用更广泛,但其只包含单一的制版和装配信息[9-10]。而ODB++文件不仅包含制版、装配信息,还包含完整的PCB板图各种信息,如鲜明的网络连接和网络名称、器件的封装信息。因此,本文选择ODB++标准作为统一的接口规范。由于各软件已经能输出此标准,文中着重讲述了ODB++文件转换为EDA软件数据结构的方法,以达到EDA软件间PCB板图数据互通的目的。

图6 PLV中转换后的板图

[1]Pellizzari L.EDA tools for PCB design[J].Elettronica Oggj,2003,32(3):94 -104.

[2]Jomsky L,Vigil J.Pluses of ODB++ [PCB data transfer standards][J].Printed Circuit Fabrication,1999(22):30-31.

[3]周润景,袁伟亭,张鹏飞.Cadence高速电路板设计与仿真[M].3 版.北京:人民邮电出版社,2009.

[4]Michael Santarini.ODB++spec tapped for CAD -to-CAM data exchange[M].Boston:EE Times,2002.

[5]Valor Conpration.ODB++software version 5.2[M].Israel:Valor Conpration,2000.

[6]李玉山.PLV详细设计说明书[M].西安:西安电子科技大学电路CAD所,2014.

[7]侯俊杰.深入浅出MFC[M].武汉:华中科技大学出版社,2001.

[8]牛耀国,朱朝霞,芮新芳.Altium Designer软件在印刷电路板设计中的应用[J].电子科技,2011,24(8):128 -130.

[9]Dolberg S,Kovarsky M.ODB++format- the replacement for Gerber[J].Electronic Engineering,1998,70(6):53 -56,58.

[10]Andy Shaughnessy.Which data transfer format is best for the industry[M].Boston:EE Times,2011.

猜你喜欢
板图数据结构器件
数据结构线上线下混合教学模式探讨
板图在人体解剖学教学中的应用体会
地理教学板图的意义和运用
黑板上的精彩世界
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
高职高专数据结构教学改革探讨
毫米波高频器件高效加工方法
旋涂-蒸镀工艺制备红光量子点器件
CDIO模式在民办院校数据结构课程实践教学中的应用
一种加载集总器件的可调三维周期结构