专利名称:电工电子类虚拟实验快速自动布线方法
技术领域:
本发明属于虚拟实验技术领域,具体是一种电工电子类虚拟实验平台中的快速自动布线方法。
背景技术:
虚拟实验是以现代教育理论为指导,以计算机仿真技术、多媒体技术和网络技术为依托而建立的一种新型实验教学系统。它利用计算机模拟真实的实验环境,通过信息网络共享分布式的实验设备,为实验教学提供了一种全新的教学模式。电工电子类虚拟实验 (数字电路与逻辑、模拟电子技术、微机原理、单片机原理及应用、可编程逻辑器件)是用虚拟的实验平台来代替真实的实验设备平台,本质上是硬件实验环境的软件模拟。实验过程中,用导线连接各个独立的器件,最终使各个器件成为一个整体实验电路的布线操作,是计算机虚拟实验系统重要、不可或缺的组成部分。目前现有的系统大多采用手动布线的方法, 即由实验者从布线起点出发逐步根据鼠标的位置指定当前布线通过的路线,重复这一过程直到目标点到达布线终点,就完成了一次布线操作。手动布线的优点是实现简单,布线过程完全由用户控制,对用户来说更加直观,但其存在以下多个方面的不足(1)布线速度慢、耗时多。在布线起点和终点两点间需要由操作者手工逐段画出路径,布线前需要先观察确定一条大致的绕开所有器件障碍的布线路径,布线的过程中也要时刻观察以确定当前布线的路径段确保绕开所有障碍和冲突。这样在实验元器件较多、实验平台较为复杂的情况下需要耗费许多不必要的时间和精力。(2)布线路径较长。手动布线操作一般不能保证所布的路线是最短路线,当实验器件较多、实验台布局较复杂时布线结果大多较杂乱,占据实验台大部分的位置。(3)布线结果不够整齐美观。手动布线难以对所有的布线情况考虑周全,经常会出现不整齐美观的现象(如线条间的间距可能大小不一),会从总体上影响对设计结果的观察,从总体上破坏了版面的设计,更严重的是可能会引起电信号的互相干扰。(4)布线操作较为复杂。手动布线操作过于繁琐,使得实验者不能将注意力集中在实验方案和实验程序的设计上,影响虚拟实验平台的预期教学效果。由于手动布线存在以上所述种种问题,为了适应计算机辅助设计发展的需要,自动布线相关技术应运而生。经过多年的研究与发展,计算机自动布线问题的理论、技术和方法都有了巨大的进步,并在电子辅助设计中扮演着越来越重要的作用。实际的自动布线的方法中,用户只需要指定布线起点和终点,即可由系统自动生成一条连接这两点间的布线路径。自动布线的效果取决于所采用的布线算法,并没有固定的解决模式,其可以归结为对需要布线的平台的搜索以寻找一条最合适的路径的问题,它本质上属于NP完全问题,目前并没有一个通用的解决方案,实际中一般按照系统需求选择合适的布线算法满足自身系统的需要。布线问题与最短路径问题存在许多相似之处。首先,布线操作是在固定的实验平台区域上进行的,最短路径的求解也是在一个固定的区域内进行的;其次,布线时需要实验者先指定一个端点作为布线开始端点,再指定另一个端点作为布线结束端点。起始端点可看作最短路径问题中两个顶点中的一个,结束端点则可相应的看作是最短路径问题中两个顶点中的另外一个;最后,布线的目标是要找出连接布线开始端点和结束端点的一条路径,该路径必须绕过台面上所有的元器件,并且路径只能走横线或竖线而不能走斜线。而最短路径问题是要从一个顶点开始寻找一条路径绕过所有权值非常大的点(类似于障碍物),最后达到另一顶点。关于最短路径问题的求解,现有的方法可以归纳为两类迷宫 (Maze-running)算法和线搜索(Line-searching)算法。(1)迷宫算法。迷宫(maze)是一个矩形区域,它仅有一个入口和一个出口,迷宫内部包含有多个不能穿越的障碍物。迷宫问题是指寻找一条路径,该路径从迷宫入口进入,沿着通道行走, 同时要求绕开所有不能通行的障碍。行走的路线只能是水平或者垂直的,不能沿着斜线行进也不能跳跃,即只能沿着当前位置方格的上下左右四个相邻的方格移动,直到走到出口为止。1959年Moore提出迷宫最短路径算法,1961年Lee首次将Moore提出的迷宫最短路径算法成功用于解决自动布线问题。Lee氏算法的基本思想可以描述为波的传播过程的模拟。在一个存在障碍的湖面上,若需寻找连接A、B两点的最小路径,可以在A点投下一枚石子,然后观察所引起的水波传播情况。假定“水波”传播时没有能量损失,当遇到障碍物时,“水波”会产生反射,最先到达的目标点波所经过的路径必定是一条最短距离。而且只要两点间有通路存在,则自A点扩散出去的波一定能传播到达B点,这个过程可以在计算机上描述。(2)线搜索算法。迷宫算法在时间和空间上较低效,因此人们提出线搜索算法错误!未找到引用源。,其基本思想是先构造一个代表障碍和结点位置的图,然后在图中寻找最短路径得到原网格点中的最短路径。线探索法不用存储各网点信息,只须存储障碍物的外形尺寸和连接线宽度及端点坐标。在基于网格的线探索中,探索线端点及回溯处理时的步长都以网格为单位计算;在无网格线探索方案中,坐标以最小设计精度为单位,探索线端点则根据障碍的几何尺寸及探索线与障碍之间的允许最小间隙而计算,回溯处理以线间最小距离为步长, 并结合障碍的几何尺寸灵活调整探索起点及探索方向。通常线探索法使用双向搜索法,例如Higtower算法,其算法描述如下生成两个空表Slist和Dlist,并用于存放源点和目标点产生的逃避线,该线不能穿越障碍区如果 Slist与Dlist中线段相交则结束。否则交替使用Slist和Dlist中线段上的“逸出点”产生新的直线,新的Slist(Dlist)要与原Slist(Dlist)相交。若探索结束则可以通过从目标点回溯到源点找到一条路径。为了提高搜索的效率可以对搜索的顺序给定一些规则或与网格相结合,比较有代表性的是Mikami算法和J · Soukup算法。上述方法在一定范围内可以达到自动布线的目的,然而,在指定区域内实现两点的连接并不困难,但当问题规模扩大,或者加上多种线约束之后,布线问题的难度也随之上升。比如实际系统中,经常存在着多个点组成的网络,这个网络中邻近的点之间的信号传输距离需要满足某些条件的限制如信号线不能交叉,或者某些区域的器件障碍导致该区域不能布线,同时布线还应考虑当前布线可能对之后的线网布局造成的影响等。此时如何从众多可行的布线方案中找出一种最合理的解决办法使问题变得更加复杂。一般布线问题的最优路线均为最短路线,故大多布线问题的求解都可以归结于最短路径求解问题。最短路径问题是图论的重要课题之一,归结为求加权图G =< V,E,W >中两给定顶点之间的最短路径,即在出发点和目标点之间找出总代价最低的路径,其关键点是寻找到合适的路径寻优算法。路径寻优算法一方面要完成探索最低代价的路径,另一方面要做到尽可能快、尽可能少占用内存,即尽可能降低算法的时间复杂度和空间复杂度。通常求最短路径是在一个连通图中进行,各个节点由有向或无向的连线连接,而障碍物群中最短路径指的是图中两点通过一条折线或曲线相连,不与任一障碍物发生碰撞,且这条折线或曲线的路径长度或者代价最小。经典的最短路径问题只涉及单目标优化,常考虑获得最短的花费时间或距离。但单一的目标函数往往很难准确描述实际问题,因为复杂的现实问题一般有多个目标函数需要优化,这样引出了多目标最短路径问题。多目标的引入使得问题的求解与单目标条件下有所不同,由于各个目标之间通常都存在着冲突,针对某个目标具有优势的解对于另一个目标来说可能并不是优化的,这样造成多目标最短路径问题一般不存在单一的优化解,而是一个优化解集(也称为Pareto解集),相应的问题难度也随之大大增加。(3) Dijkstra (迪杰斯特拉)算法Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。Dijkstra—般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN,CLOSE表的方式。
发明内容
本发明提供一种电工电子类虚拟实验平台中的快速自动布线方法,采用交互式布线法,综合考虑尽量减少连线路径长度和连线拐角数,尽量利用连线空间,在不影响可读性的前提下尽量利用已有路径,可以保证连线清晰,疏密合理,电路图的整体结构趋于最佳, 从而提高虚拟实验系统的用户体验。为实现本发明的目的,采用的技术方案如下步骤(1)初始化实验平台信息,具体为(1. 1)读入实验台布局,获取平台上已经布有的器件以及已有连线等信息,获取实验平台宽度和高度属性,以建立布线数据结构。(1. 2)将实验台区域划分成m*n个相等大小的网格,为这些网格建立一个m*n的 Dijkstra表,每个网格对应表中相同位置的一项。每个网格抽象为一个DijkstraNode类型的对象,它包含Dijkstra算法所需要的所有信息,包括路径长度distance、该网格处的权值weight、该网格是否已被计算 beConsidered、网格点坐标coordinate和该点在路径上的方向track。步骤⑵生成导线起点的源路径。利用步骤⑴建立的平台信息,找到某个起点 (一般是实验平台上的接线柱)到另一个接线柱的布线路径,具体为(2. 1)建立布线起点的Dijkstra表。
建立一个先进先出队列UncalcList来处理所有未被初始化的点,从布线起点开始将其右、左、上、下四个点依次加入到队列中,再以相同方法考虑队列中第一个点,将其相邻且未被考虑的点加入队列尾部。将队列第一个点的DijkstraNode信息依照该点的实际情况完成赋值,该点信息处理完毕后就将其自身从UncalcList队列中移除。如此反复下去直到从导线起点出发,平台上所有网格点均按照上述方法处理完毕。步骤(2. 2)寻找布线起点对应的单源路径。将当前终点加入数组并暂存终点坐标,再用这个坐标减去该点处DijkstraNode 的track值,回退到路径上前一个点的坐标。比较两个点的track,若他们的横坐标或纵坐标之一不相同则说明导线的运动方向发生了变化,将变化点的坐标加入到路径数组中,找到一个拐点。这样重复上面的过程,直到回退点的track值与起点的轨迹值相等,就从终点回找到了起点,从而完成路径的生成。此步骤中当前布线终点即为确定布线起点后当前鼠标所在位置的网格点,不一定要求是接线柱,目的是生成一个预览路径方便用户随时观察布线情况。步骤(3)利用起点和终点生成路径结果。只利用导线起点的Dijkstra表得到的并不是两个接线柱间的最短的路径,完成一次布线操作还需要以导线的终点接线柱为初始点再建立一个新的Dijkstra表,该表的结构和创建过程与之前讨论的结构相同。分析两表可知,两张表存在一个唯一的公共点使得该点到起点和终点同时具有最短距离,故需要同时遍历两张表直到找到这个点。将该公共点作为导线起点接线柱和终点接线柱的公共终点,分别利用步骤O)中的算法找到两条路径,将这两条路径组合起来按顺序存入路径数组中就得到了最终的导线路径。为了随时能够跟随用户鼠标的位置获得当前的预览路径,由起点生成的单源路径一般是按整个平台的信息来初始化的,这时已经得到了大量的路径信息,但这些信息并不能保证是两个接线柱间的路径是最优(最短)的。从终点出发建立Dijkstra表的过程若也按全平台的信息进行运算会导致计算量过大,影响算法的执行速度;同时,获得起点和终点后意味着自动布线的大体区域可以在算法初始时获得,即使该区域被用尽,也只需要按一定的策略逐步扩展区域使得自动布线有路径可走。因此,为了减小运算量、提高布线速度,可以根据起点和终点位置获得布线区域,在此区域内执行自动布线算法,若在区域内无法找到合适的路径,则逐步扩大搜索区域,直到找到路径为止;扩展区域最大为实验平台的全布线区域。步骤设定实验平台的导线信息。按照前述步骤获得每条导线路径后,还需要记录下每条导线经过路径的形状,以便正确设定实验平台的全局导线信息。每个形状可以用一个整型常量表示,这些形状均定义为全局常量。根据这些信息即可由步骤(5)获取导线形状。步骤( 获取导线形状。布线过程中路径的行进方向只有从左到右、从右到左、从上到下、从下到上四种,由此可得到多种导线的形状,复杂的形状都是由简单形状有序叠加得到的。(5. 1)获取当前布线通过该点产生的导线形状。主要方法是根据当前路径方向和路径上下一个点的路径方向做逻辑判断,从所有可能的组合中选取匹配的形状值。该步骤需要建立两个路径方向值和形状值的映射关系来支持,具体应从路径起点出发,依次按照此映射关系一次得到路径上每个点的导线形状值。起点和终点的形状值作为特殊值处理, 并不需要经过映射,直接获取即可。(5.2)将原有导线形状和新导线形状组合成新的形状状态。该步骤即是步骤 (5. 1)获取的当前步骤产生的新形状与实验平台上相关网格位置中原有的形状组合,得到该条布线路径上的最终形状,组合规则也是一个映射关系。每次完成一条导线的布线,就用该导线路径上所有网格点新得到的形状状态代替旧的形状状态。该步骤主要目的是随时更新平台信息,确保状态信息的一致性。步骤(6)存储导线对象的数据结构和信息。实验台上成功添加一条导线后,不仅要画出导线的图形,还要存储必要的相关信息供以提供给其他功能模块使用。保存信息结束,即完成了一次自动布线操作。电工电子类虚拟实验系统允许用户在虚拟实验环境中实现设计、搭建和演示实验结果等主动实验功能,在实验方案搭建的过程中,器件间的导线连接是必不可少的重要环节,导线连接时采用的布线算法是衡量实验方案图好坏的一个决定性因素。布线过程是实验者主动实验的过程,一方面他们希望在布线过程中随时预览导线的路径并在每条导线连接后立刻看到布线结果,另一方面走线路径要能够快速自动生成,还要满足正确、易读、美观和有效利用实验平台空间等要求。本发明的方法既保证了在用户容许的时间内完成布线操作,又能够在用户交互的同时自动完成寻找路径、设定信息、存储导线信息等相关操作, 用户只需利用鼠标点击指定布线起点并拖动鼠标即可观察到路径随着鼠标位置的变化而变化,方便直观。点击布线终点后即生成最终布线路径,结果美观。该方法使用面向对象的思想设计和实现,具有较强的平台通用性,可运行于多种平台上。本发明对经典的最短路径求取方法进行改进,以经典Dijkstra算法为基础,对对布线实验台上的各个逻辑网格点进行初始化以确定它们的权值大小,然后网格点为基础构建一个邻接矩阵来存放这些网格点的信息,最后根据上述基础找到起点和终点间路径上的所有中间点,将起点、所有中间点以及终点依次连接起来就构成了一条布线路径。由于上述特点, 本发明在虚拟实验平台的实际应用中具有很好的结果,可按照用户的实验需求完成自动布线,并能在用户可接受的时间内搜索到较好的路径,满足虚拟实验平台实时性的要求。
图1为建立导线起点Dijkstra表的流程图; 图2为利用单个Dijkstra表生成导线路径的流程图; 图3为自动布线方法的流程图; 图4为布线模块功能结构图。
具体实施例方式下面结合附图和具体实施例对本发明作进一步详细说明。数字逻辑虚拟实验平台的操作状态切换是通过改变其工作模式实现的,在布线模式下选择导线颜色后,就可以在实验台区域内进行布线,包括导线的添加、删除和移动等操作,布线模块功能结构图如图4。(1)确定操作状态为布线状态,选取导线颜色,即开始进入布线操作,并初始化平台信息。(1. 1)读入实验台布局。根据实验平台上的实验方案搭建情况,获取平台上已经布有的器件以及有连线等信息,数字逻辑虚拟实验平台区域默认大小设定为1500*1500象素。(1.2)设定每个网格大小为12*12象素,这样将实验台划分为125*125个相等大小的网格。建立一个125*125的Dijkstra表,该表为一个二维数组,每个元素都是一个 DijkstraNode类型数据,为表述方便,下文中的坐标均指的是相对网格的坐标,如象素点 (12,12)的坐标为(1,1)。将其属性distance置0,权值weight置0,所有点初始都未计算, beConsidered置为false,网格点坐标coordinate为所有网格的相对坐标,点在路径上的方向track置为(0,0)。根据Dijkstra算法的思想,将实验操作面板上有障碍的点和不能布线的点(一般是布线后会产生不符合布线规则形状的点)的权值设为无穷大,无穷大可以用计算机所能表示的最大int型变量值OxlFFFFFFF表示。另外,为了尽可能减少拐角, 给拐角处的权值额外增加一定的量,即在原有权值的基础上加上一个固定的增量。下表1 给出了五种权值的设计以及它们的意义。表1权值设计表
权利要求
1.一种电工电子类虚拟实验平台中的快速自动布线方法,包括如下步骤(1)初始化实验平台信息,具体为(11)读入实验台布局,获取平台上已经布有的器件以及已有连线信息,获取实验平台宽度和高度,以建立布线数据结构;(1. 2)根据获取的宽度和高度,将实验台区域划分成m*n个相等大小的网格,为这些网格建立一个m*n的Di jkstra表,每个网格对应表中相同位置的一项,每个网格抽象为一个 DijkstraNode类型的对象,其中m,η均为正整数;(2)利用步骤(1)建立的实验平台信息,找到任一起点到任意一个接线柱的布线路径, 生成导线起点的源路径;(3)利用起点和终点生成路径结果,具体为建立一个新的Di jkstra表,同时遍历两张Di jkstra表,在找到两张表中使得到起点和终点同时具有最短距离的公共点;将该公共点作为导线起点接线柱和终点接线柱的公共终点,分别利用步骤找到两条路径,将这两条路径组合起来按顺序存入路径数组中就得到了最终的导线路径;(4)获得导线形状,完成布线操作根据上述步骤获得每条导线路径,并记录下每条导线经过路径的形状,从而获得导线形状,完成布线操作。
2.根据权利要求1所述的方法,其特征在于,所述的步骤( 中生成导线起点的源路径的具体过程为(2. 1)建立布线起点的Dijkstra表建立一个先进先出队列来处理所有未被初始化的点,从布线起点开始将其右、左、上、 下四个点依次加入到该队列中,再以相同方法考虑队列中第一个点,将与该第一个点相邻且未被考虑的点加入队列尾部,对该队列第一个点的DijkstraNode信息赋值,该第一个点信息处理完毕后就将其自身从队列UncalcList中移除,如此循环反复直至平台上所有网格点均处理完毕;(2. 2)寻找布线起点对应的单源路径将路径上当前终点加入一个数组中并暂存终点坐标,再用这个终点坐标减去该点处 DijkstraNode类型的track值,回退到路径上前一个点的坐标,比较两个点的track,若他们的横坐标或纵坐标之一不相同则说明导线的运动方向发生了变化,将变化点的坐标加入到路径数组中,找到一个拐点,重复上面的过程,直到回退点的track值与起点的轨迹值相等,就从终点回找到了起点,从而完成源路径的生成。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤(4)具体过程为(4. 1)首先,建立两个路径方向值和形状值的映射关系;然后,从路径起点出发,依次按照映射关系得到路径上每个点的导线形状值;最后,根据当前路径方向和路径上下一个点的路径方向,从所有可能的组合中选取匹配的形状值,获取当前布线通过该点产生的导线形状(4. 2)将原有导线形状和新导线形状组合成新的形状状态当前步骤产生的新形状与实验平台上相关网格位置中原有的形状组合,得到该条布线路径上的最终形状。
4.根据权利要求1-3之一所述的方法,其特征在于,每个DijkstraNode类型的对象包含Dijkstra算法所需要的所有信息,包括路径长度distance、该网格处的权值weight、该网格是否已被计算beConsidered、网格点坐标coordinate和该点在路径上的方向track。
全文摘要
本发明公开了一种应用于电工电子类虚拟实验平台的自动布线算法,包括(1)初始化实验平台信息;(2)利用步骤(1)建立的实验平台信息,找到任一起点到任意一个接线柱的布线路径,生成导线起点的源路径;(3)利用起点和终点生成路径结果;(4)获得导线形状,完成布线操作。该方法不仅克服了手动布线方式操作繁琐和布线结果杂乱的缺点,同时保证了一定的用户交互体验,不仅保证了虚拟实验操作要求的实时性,在布线过程中的时间消耗和空间消耗都比其他传统方法小,而且操作方式具有方便直观的特点。该方法具有较强的平台通用性和可移植性,可运行于多种平台上。
文档编号G09B9/00GK102346795SQ20111027659
公开日2012年2月8日 申请日期2011年9月16日 优先权日2011年9月16日
发明者于俊清, 冉啟皓, 刘宇环, 唐九飞, 欧阳星明 申请人:华中科技大学