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