0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用ATL技术与数据结构转换模块实现原理图解析器的设计

电子设计 来源:郭婷 作者:电子设计 2019-05-03 08:48 次阅读

在原理图设计过程中,有时候需要在不打开EDA工具的情况下访问原理图文件,详细了解原理图中的资源。如果设计人员通过第三方软件而不是启动一个庞大的EDA软件就可以实现对原理图内部资源访问的话,会很大程度上减轻了对国外EDA软件的依赖并提高效率。尤其对于不是直接进行原理图设计的技术人员,如物料统计配送人员和原理图审查人员更是如此。

实现的原理图解析器使用ATL技术,将解析器包装成一个标准的COM组件。该解析器主要针对Mentor公司的ViewDraw原理图设计工具,可对ViewDraw设计生成的原理图文件在不依赖ViewDraw的条件下进行分析,并将其底层数据进行格式转换和整理归纳,然后以接口形式提供给客户程序使用。

1 原理图通用数据结构

在原理图设计中,现在国外有很多种EDA工具,每种设计工具都有自己的底层数据组织结构。原理图解析器采用了一种通用数据结构来兼容ViewDraw、EDIF200和Concept这3种原理图设计的数据结构。文中在解析器前端采用的数据结构转换模块只针对ViewDraw的底层原理图,解析器在工作时通过数据结构转换模块把ViewDraw的底层原理图数据转换为通用数据结构保存在内存中供解析器使用。

采用ATL技术与数据结构转换模块实现原理图解析器的设计

2 COM组件技术与ATL技术简介

COM即组件对象模型,是由Microsoft提出的组件标准,是一种以组件为发布单元的对象模型,它不仅提供了组件之间进行交互的规范,也提供了实现交互的环境。组件之间的接口是组件软件的核心,因为接口是组件之间进行通信的基础。因此,软件组件应该遵循统一的标准,在同一软件中的组件必须使用同样的接口标准才能保证组件之间可以进行通信。COM就是这样一个为大家一致推崇的组件标准。组件对象之间进行交互的环境不依赖于任何特定的语言,所以COM也可以是不同语言协作开发的一种标准。

ATL(Active Template Library)活动模板库,是Visual c++提供的一套基于模板的C++类库,利用这些模板库,可以建立小巧、快捷的COM组件程序。ATL使用了C++中的模板、多继承等高级技术,甚至还用到了STL。在Visual C++的编译环境中,对ATL的支持非常强大,所以采用ATL技术可以方便地实现COM组件的开发,但又不用过多的去考虑COM的底层技术,这样极大地提高了COM组件的开发效率。

采用ATL技术与数据结构转换模块实现原理图解析器的设计

3 系统构成

原理图解析器,主要以数据格式转换模块和原理图通用数据结构模块,为系统构成的基础,按通用数据结构格式存储的原理图数据为数据资源,并在ATL技术平台下对这些数据资源进行规划和组织。解析器最终以COM组件的形式向外部客户程序提供服务。解析器提供了21个接口,81个方法,这些接口与原理图的主要构成对象一一对应。整个系统以下方式进行组织和运行的:

(1)数据格式转换模块将原理图进行数据格式转换并以通用数据结构的格式存储于内存中,这个功能主要由工程接口IFvdProj实现;

(2)按照接口的功能需求对原理图的数据资源进行归纳和整理,这里主要处理了器件、模块、管脚、网络(普通网络和总线网络)、网络段、连接等,还有这些物理实体的位置、标识及属性等;

(3)对各种异常情况在组件内部进行了处理,并将相应的错误代码以函数值的形式返回,客户端可以用捕获COM异常的方法来获取这些错误代码。系统结构,如图l所示。

4 原理图解析器接口组织调用关系描述

原理图通用数据结构本身有着庞大复杂的组织结构,如果直接把通用数据结构以COM接口的形式提供给客户端,会使原理图解析器接口规模过大,信息零散且组织规律性较差。因此,必须对数据资源的提供方式进行规划。原理图解析器提供了,如图2所示的数据资源组织方式。

该图列出了原理图解析器的21个接口和主要的调用关系,其中实线箭头表示从原理图组织结构上讲由上层对象调用下层对象,虚线箭头表示由下层对象调用上层对象。以器件和网络为核心介绍接口对数据资源的组织关系。

(1)原理图——网络:由工程接口进入,生成目标原理图的通用数据结构,再调用单页原理图接口,由单页原理图接口中的GetNets()方法或GetAllNets()方法可以获取网络(包括普通网络和总线网络)集接口IFvdNets,通过该接口的Item()方法可以获取单个网络对应的接口。

(2)原理图——器件:由工程接口进入,生成目标原理图的通用数据结构,再调用单页原理图接口,由单页原理图接口中的GetComps()方法或GetAllComps()方法可以获取器件(包括普通器件和模块)集合接口IFvdComps,通过该接口的Item()方法可以获取单个器件对应的器件接口IFvdComp。

(3)由下层对象向上层对象的访问:例如可以通过一个器件管脚的接口IFvdCmpPin来获得该管脚所在的器件接口IFvdComp,而通过接口IFvd—Comp又可获取该器件所在的原理图页的接口IFvdSheet,通过接口IFvdSheet又可访问该原理图页的所有资源。在此需要说明,对于某一页确定的原理图,不管通过哪种途径来获取其对应的接口,这个接口可以提供的原理图资源总是相同的,这也是符合客观实际的。

由以上分析可以看出,原理图解析器的这种接口组织调用关系支持了各种形式的对原理图资源的访问,同时也保持了信息的准确性和完整性。

另外,为了方便用户使用,在原理图接口IF—vdSchs和单页原理图接口IFvdSheet的方法中还提供了器件和网络的查找功能:对于器件支持Refdes(器件的引用属J陛定义)和全路径uID(器件在原理理图中的唯一的标识)查找;对于网络支持Label值查找和全路径UID的查找。

各接口说明如下:

(1)IFvdAur:属性接口,获取属性名、属性值和属性的可见性;

(2)IFvdAttrs:提供一个访问属性集合对象的接口,该属性集合对象内部包含一组属性对象的接口指针;

(3)IFvdBox:外围框接口;

(4)IFvdCmpPin:器件管脚接口,获取管脚所在器件、管脚属性集、管脚连接和管脚相连的symbol的管脚;

(5)IFvdCmpPins:器件管脚集合接口,提供一个访问器件管脚集合对象的接口;

(6)IFvdComp:器件接口,可获取各类子对象和内部属性;

(7)IFvdComps:器件集合接口,提供一个访问器件集合对象的接口;

(8)IFvdConnection:连接接口,可获取连接中的器件管脚、网络和网络段;

(9)IFvdConnections:连接集合接口,提供一个访问连接集合对象的接口;

(10)IFvdLabel:Label接口,获取Label的名字和可见性;

(11)IFvdNet:网络接口,可获得各类子对象及内部属性;

(12)IFvdNets:网络集合接口,提供一个访问网络集合对象的接口;

(13)IFvdSymPin:Symbol管脚接口,可获得Symbol管脚的内部属性;

(14)IFvdSymPins:Symbol管脚集合接口,提供一个访问Symbol管脚集合对象的接口;

(15)IFvdPoint:位置坐标接口,获取位置的坐标值;

(16)IFvdProj:解析原理图工程接口;

(17)IFvdSheet:单页原理图接口,可获取单页原理图中各种对象及搜索器件和网络;

(18)IFvdSch:原理图接口,可获得原理图中单页原理图的页数和原理图对象集合;

(19)IFvdSegment:网络集合接口,可获取网络段属性集合和网络段所属的网络;

(20)IFvdSegments:网络段集合接口,提供一个访问网络段集的接口;

(21)IFvdSymbol:符号接口,获取内部管脚集和属性集。

5 调用方法说明

原理图解析器是基于ATL技术而开发的,是一个符合COM标准的组件,因此在使用时要按照COM组件的使用规范。原理图解析器共有21个接口,其内部分别对应21个COM类。在这21个COM类中,只有原理图工程接口IFvdProj对应的类为可创建类,其余20个接口对应的类均为不可创建类。客户端程序都要以工程接口IFvdProj为入口点,通过创建解析器的组件实例来获取接口IFvdProj的地址指针,其它接口的获取都要从IFvdProj开始,通过接口提供的各种方法来获取。客户端建立组件,通过组件接口访问原理图资源的流程如下:

(1)在系统上注册…原理图解析器组件PST.DLL;

(2)在客户程序中使用“import”预处理指令导入PST.DLL:

(3)创建解析器组件,并获取入口点接口IF

采用ATL技术与数据结构转换模块实现原理图解析器的设计

(4)通过接口IFvdProj的方法ParseProj()生成目标原理图的通用数据结构,并用原理图接口IF—vdSchs接收其返回值如下:

采用ATL技术与数据结构转换模块实现原理图解析器的设计

6 使用结果示例

下面这段程序统计了一页原理图中当前层的网络数和包括所有底层后的网络数,并且使用了对网络的查找功能:

采用ATL技术与数据结构转换模块实现原理图解析器的设计

程序的执行结果,如图3所示。

7 结束语

文中描述了自行开发的基于ATL技术的原理图解析器,介绍了系统的基本构成和接口的组织关系。另外,还对解析器的使用作了详细说明,并在文中最后给出了一个实际使用的示例。原理图解析器的开发得以在不使用国外EDA工具的情况下,方便地访问原理图资源,从而节约了大量的资金,并为国产EDA软件的开发和市场化进行了有益的尝试。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    6039

    浏览量

    136111
  • eda
    eda
    +关注

    关注

    71

    文章

    2767

    浏览量

    173390
  • C++
    C++
    +关注

    关注

    22

    文章

    2110

    浏览量

    73696
收藏 人收藏

    评论

    相关推荐

    XCP解析器如何组成的

    嗨,我正在尝试用XCP为向量CANape生成一个.a2l。我使用的ASAP2工具支持ELF或COFF文件。XC16创建的COFF很大(>10MB),不知怎么搞砸了解析器。ELF没有包含足够
    发表于 04-22 12:57

    请问大神这种数据结构一般如何解析额?

    请问大神,这种数据结构一般如何解析额。。 不太懂。。
    发表于 06-10 09:27

    电子灭蝇电路原理图解析

    电子灭蝇电路原理图解析
    发表于 04-27 07:18

    分享一个命令解析器代码实现

    一、介绍嵌入式里面经常会自己做命令行,这里分享一个命令解析器代码实现二、代码实现mycmd.c
    发表于 02-17 07:02

    基于黑板结构模式的XML解析器

    以协同工作平台服务(CWPS)项目为研究背景,提出一种基于黑板结构模式的XML解析器的设计方案。分析传统编译的缺陷,给出XML解析器的软件构架,阐述该构架的设计思想,探讨关
    发表于 04-14 09:23 19次下载

    数据结构教程,下载

    1. 数据结构的基本概念 2. 算法与数据结构3. C语言的数据类型及其算法描述要点4. 学习算法与数据结构的意义与方法
    发表于 05-14 17:22 0次下载
    <b class='flag-5'>数据结构</b>教程,下载

    华硕电脑电路原理图解析

    华硕电脑电路原理图解析
    发表于 09-09 16:23 1527次下载

    TI最新C2000 MCU解析器套件替代昂贵的解析器至数字转换解决方案

    德州仪器 (TI) 宣布推出首款支持解析器至数字解码的可编程微控制 (MCU) 解决方案:C2000™ MCU 解析器套件,能够为机器人、伺服驱动、自动化、航空与交通运输等各种工业
    发表于 04-16 17:34 1769次阅读

    数据结构是什么_数据结构有什么用

    数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高
    发表于 11-17 14:45 1.6w次阅读
    <b class='flag-5'>数据结构</b>是什么_<b class='flag-5'>数据结构</b>有什么用

    什么是数据结构?为什么要学习数据结构数据结构的应用实例分析

    本文档的主要内容详细介绍的是什么是数据结构?为什么要学习数据结构数据结构的应用实例分析包括了:数据结构在串口通信当中的应用,数据结构在按键
    发表于 09-26 15:45 14次下载
    什么是<b class='flag-5'>数据结构</b>?为什么要学习<b class='flag-5'>数据结构</b>?<b class='flag-5'>数据结构</b>的应用实例分析

    MIT开发新语义解析器应用于家用机器人

    美国麻省理工学院(MIT)的研究人员开发出一种语义解析器,该解析器通过模仿儿童学习语言的方式,将口语短语转换为机器可理解的意思。该解析器会观察一些带标题的视频,并将这些单词与视频中的对
    的头像 发表于 11-14 16:36 2848次阅读

    自己动手实现命令行解析器

    一、介绍嵌入式里面经常会自己做命令行,这里分享一个命令解析器代码实现二、代码实现mycmd.c
    发表于 12-22 18:51 13次下载
    自己动手<b class='flag-5'>实现</b>命令行<b class='flag-5'>解析器</b>

    构建BittWare的数据解析器

    BittWare的SmartNIC Shell和BittWare的Loopback Example的功能之一是一个数据解析器/分类,它可以从数据包中提取协议字段。通过这篇白皮书,我
    的头像 发表于 08-02 08:03 936次阅读
    构建BittWare的<b class='flag-5'>数据</b>包<b class='flag-5'>解析器</b>

    NetApp的数据结构是如何演变的

    统一数据跨分布式资源进行管理,以实现数据移动的一致性和控制,安全、可见性、保护和访问。 本文定义了数据结构及其体系结构,讨论了
    发表于 08-25 17:15 0次下载
    NetApp的<b class='flag-5'>数据结构</b>是如何演变的

    redis数据结构的底层实现

    Redis是一种内存键值数据库,常用于缓存、消息队列、实时数据分析等场景。它的高性能得益于其精心设计的数据结构和底层实现。本文将详细介绍Redis常用的
    的头像 发表于 12-05 10:14 626次阅读