CN102346795A - 电工电子类虚拟实验快速自动布线方法 - Google Patents
电工电子类虚拟实验快速自动布线方法 Download PDFInfo
- Publication number
- CN102346795A CN102346795A CN2011102765979A CN201110276597A CN102346795A CN 102346795 A CN102346795 A CN 102346795A CN 2011102765979 A CN2011102765979 A CN 2011102765979A CN 201110276597 A CN201110276597 A CN 201110276597A CN 102346795 A CN102346795 A CN 102346795A
- Authority
- CN
- China
- Prior art keywords
- point
- path
- wiring
- starting point
- coordinate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种应用于电工电子类虚拟实验平台的自动布线算法,包括:(1)初始化实验平台信息;(2)利用步骤(1)建立的实验平台信息,找到任一起点到任意一个接线柱的布线路径,生成导线起点的源路径;(3)利用起点和终点生成路径结果;(4)获得导线形状,完成布线操作。该方法不仅克服了手动布线方式操作繁琐和布线结果杂乱的缺点,同时保证了一定的用户交互体验,不仅保证了虚拟实验操作要求的实时性,在布线过程中的时间消耗和空间消耗都比其他传统方法小,而且操作方式具有方便直观的特点。该方法具有较强的平台通用性和可移植性,可运行于多种平台上。
Description
技术领域
本发明属于虚拟实验技术领域,具体是一种电工电子类虚拟实验平台中的快速自动布线方法。
背景技术
虚拟实验是以现代教育理论为指导,以计算机仿真技术、多媒体技术和网络技术为依托而建立的一种新型实验教学系统。它利用计算机模拟真实的实验环境,通过信息网络共享分布式的实验设备,为实验教学提供了一种全新的教学模式。电工电子类虚拟实验(数字电路与逻辑、模拟电子技术、微机原理、单片机原理及应用、可编程逻辑器件)是用虚拟的实验平台来代替真实的实验设备平台,本质上是硬件实验环境的软件模拟。实验过程中,用导线连接各个独立的器件,最终使各个器件成为一个整体实验电路的布线操作,是计算机虚拟实验系统重要、不可或缺的组成部分。目前现有的系统大多采用手动布线的方法,即由实验者从布线起点出发逐步根据鼠标的位置指定当前布线通过的路线,重复这一过程直到目标点到达布线终点,就完成了一次布线操作。手动布线的优点是实现简单,布线过程完全由用户控制,对用户来说更加直观,但其存在以下多个方面的不足:
(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)建立的平台信息,找到某个起点(一般是实验平台上的接线柱)到另一个接线柱的布线路径,具体为:
(2.1)建立布线起点的Dijkstra表。
建立一个先进先出队列UncalcList来处理所有未被初始化的点,从布线起点开始将其右、左、上、下四个点依次加入到队列中,再以相同方法考虑队列中第一个点,将其相邻且未被考虑的点加入队列尾部。将队列第一个点的DijkstraNode信息依照该点的实际情况完成赋值,该点信息处理完毕后就将其自身从UncalcList队列中移除。如此反复下去直到从导线起点出发,平台上所有网格点均按照上述方法处理完毕。
步骤(2.2)寻找布线起点对应的单源路径。
将当前终点加入数组并暂存终点坐标,再用这个坐标减去该点处DijkstraNode的track值,回退到路径上前一个点的坐标。比较两个点的track,若他们的横坐标或纵坐标之一不相同则说明导线的运动方向发生了变化,将变化点的坐标加入到路径数组中,找到一个拐点。这样重复上面的过程,直到回退点的track值与起点的轨迹值相等,就从终点回找到了起点,从而完成路径的生成。
此步骤中当前布线终点即为确定布线起点后当前鼠标所在位置的网格点,不一定要求是接线柱,目的是生成一个预览路径方便用户随时观察布线情况。
步骤(3)利用起点和终点生成路径结果。
只利用导线起点的Dijkstra表得到的并不是两个接线柱间的最短的路径,完成一次布线操作还需要以导线的终点接线柱为初始点再建立一个新的Dijkstra表,该表的结构和创建过程与之前讨论的结构相同。分析两表可知,两张表存在一个唯一的公共点使得该点到起点和终点同时具有最短距离,故需要同时遍历两张表直到找到这个点。将该公共点作为导线起点接线柱和终点接线柱的公共终点,分别利用步骤(2)中的算法找到两条路径,将这两条路径组合起来按顺序存入路径数组中就得到了最终的导线路径。
为了随时能够跟随用户鼠标的位置获得当前的预览路径,由起点生成的单源路径一般是按整个平台的信息来初始化的,这时已经得到了大量的路径信息,但这些信息并不能保证是两个接线柱间的路径是最优(最短)的。从终点出发建立Dijkstra表的过程若也按全平台的信息进行运算会导致计算量过大,影响算法的执行速度;同时,获得起点和终点后意味着自动布线的大体区域可以在算法初始时获得,即使该区域被用尽,也只需要按一定的策略逐步扩展区域使得自动布线有路径可走。因此,为了减小运算量、提高布线速度,可以根据起点和终点位置获得布线区域,在此区域内执行自动布线算法,若在区域内无法找到合适的路径,则逐步扩大搜索区域,直到找到路径为止;扩展区域最大为实验平台的全布线区域。
步骤(4)设定实验平台的导线信息。
按照前述步骤获得每条导线路径后,还需要记录下每条导线经过路径的形状,以便正确设定实验平台的全局导线信息。每个形状可以用一个整型常量表示,这些形状均定义为全局常量。根据这些信息即可由步骤(5)获取导线形状。
步骤(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型变量值0x1FFFFFFF表示。另外,为了尽可能减少拐角,给拐角处的权值额外增加一定的量,即在原有权值的基础上加上一个固定的增量。下表1给出了五种权值的设计以及它们的意义。
表1 权值设计表
按照表1的规则即可设定每一项相对于当前起点的权值。另外,为了得到拐点的位置,还需要用到成员track。它是一个Point(点)类型的变量,存储当前点是由路径上的上一个点经过何种方向的路径到该点的。方向信息可以用一个简单的全局静态数组表示:EXDIR:Array={(1,0),(-1,0),(0,1),(0,-1),(0,0)};该数组的每个元素依次表示向右、向左、向上、向下运动和保持原位置不动。每个点先确定当前权值是除CRANKEL_WEIGHT的哪一种,再比较当前点运动方向与前一点运动方向是否相同,相同则不做任何操作,若不同就要在之前设定权值的基础上加一个CRANKEL_WEIGHT。
(2)生成导线起点的单源路径。点击鼠标确定某布线起点,若点击的点不是接线柱,则不予处理;若是接线柱,则利用步骤(1)建立的平台信息生成导线起点的单源路径。
(2.1)建立布线起点的Dijkstra表。假设布线起点坐标为(5,5)。依次将点(5,5),(6,5),(5,5),(5,4),(5,6)加入UncalcList中。将队列第一个点(5,5)的DijkstraNode信息依照该点的实际情况完成赋值,该点信息处理完毕后就将其自身从UncalcList队列中移除。用同样方法考虑队列中第二个点(6,5),将将不重复的点(7,5),(6,4),(6,6)加入队列,完成点(6,5)处DijkstraNode的赋值。如此反复下去直到从导线起点出发,平台上所有网格点均按照上述方法处理完毕。图1为该处理过程的流程图。
对每个点的赋值处理方式如下:
Step1:记录当前的坐标值。将坐标与EXDIR[i](i=0,1,2,3)相加得到新的坐标,i增加1。
Step2:若新坐标点超出平台范围、权值为INFINITE_WEIGHT或已被考虑过,转Step1;否则转Step3。
Step3:比较新坐标处的导线形状与i值判断布线是否符合规则。若合乎规则,将新坐标处DijkstraNode的coordinate成员置为当前坐标;变量beConsidered值设为true; 如果EXDIR[i]与上一步的Track值不同,weight值就加上一个CRANKEL_WEIGHT;Track置为当前EXDIR[i]的值;distance为上一步的distance与当前点的权值weight之和;将该DijktraNode加入到起点的UncalcList队列中。若不合乎规则,则暂不考虑该点,留作其他扩展路径处理,转Step1。
Step4:重复Step1-Step3直到i=3,使得一个点的上、下、左、右四个方向的相邻点均被扩展。
(2.2)寻找布线起点对应的单源路径。假定此步骤的布线终点为平台上的某点,利用一个数组Pier存储最终路径点。将当前终点加入数组Pier并暂存终点坐标,假定坐标为(7,7)。用这个坐标减去该点处DijkstraNode的track值(0,1),回退到路径上前一个点的坐标(7,6),这两个点的track相同,则继续回退直到点(7,5)。由于点(7,5)的track值变成了(1,0),说明导线的运动方向发生了变化,那么将变化点坐标(7,5)加入到路径数组中,找到一个拐点。这样重复上面的过程,直到回退点的track值与起点的轨迹值相等,最终找到的路径点为(5,5),(7,5)和(7,7)。当然上述举例是比较简单的情况,实际过程中起点和终点间可能存在大量障碍物,路径也比此情况复杂,但由于采用了自动寻路的方法且各种信息步骤(2.1)中均已初始化完成,并不妨碍快速地寻找到路径。
图2为利用单个Dijkstra表生成路径的流程图。
(3)利用起点和终点生成路径结果。同样假设布线终点坐标为(7,7),且该终点为接线柱,此时点击终点就相当于确认一次布线操作。以布线终点(7,7)出发,按照步骤(2.1)相同的方式
建立一个新的Dijkstra表,该表代表由终点出发寻找最短路径的依据。同时遍历两张Dijkstra表直到找到一个同时到起点和终点均具有最短路径的公共点。将该公共点作为导线起点接线柱和终点接线柱的公共点,分别利用步骤(2.2)中的方法重复找到两条路径,分析知这两条路径分别为(5,5),(7,5)和(7,7),(7,5)将这两条路径组合起来按顺序存入路径数组Pier中就得到了最终寻找到的布线路径。
为减小运算量,提高寻路速度,确定布线终点同时需获取布线起点和终点间的相对布线区域。该区域为一个矩形区域,它的对角点即为布线起点和终点,布线终点的Dijkstra表只需在此区域内建立。由于布线起点已获取了平台的所有信息,大多布线均能在此区域内寻找到路径。少数情况下,此区域内无法找到路径,则将此区域往上、下、左、右四个方向均扩展10格,在新的区域建立布线终点的Dijkstra表。由于原有区域的 点均已计算,此时只需计算扩展的区域内的点,利用扩展后的区域再次寻找路径。重复以上过程,知道全平台均扩展完毕,若最后均无法找到路径,则说明两点间的障碍导致两点无法用导线连接,此种情况一般属于人为器件放置不合理造成的,大多情况下均可寻找到连接起点和终点的最短路径。
(4)记录每条导线经过路径的形状,导线路径上的所有坐标点均需要设置形状信息。每个形状可以用一个整型常量表示,根据形状即可直接获取该坐标处的权值信息。导线形状信息如表2所示。
表2 导线形状表
如果一个网格点之前已经有相同起始或结束接线柱的导线通过,那么该点导线形状 的初始权值设为LOW_WEIGHT。如果该点是拐点,就在其初始值的基础上加一个CRANKEL_WEIGHT。另外,通过定义元素个数为125*125的二维数组CellLineStyle来记录每个网格点形状的权值。同时,为了快速判断一个坐标点处已有的导线路径是否可以重复利用,定义了全局的三维数组CellLines来记录每个网格点上的导线信息,该数组的第一、二维元素表示网格坐标值,第三维元素存储所有通过该点的导线信息。
(5)获取导线形状。本实验平台中布线过程中路径的行进方向只有从左到右、从右到左、从上到下、从下到上四种,称为寻路的目标方向,即目标方向只能是水平或垂直的,每个方向均用一个整形变量表示,如表3所示。
表3 路径方向定义一览表
路径方向 | 变量名 | 值 |
从左到右 | LeftToRight | 0 |
从右到左 | RightToLeft | 1 |
从上到下 | UpToDown | 2 |
从下到上 | DownToUp | 3 |
未知方向 | UnknownDirection | 4 |
按照路径生成算法获得布线路径后,就可以根据路径中每个点的坐标位置关系很快确定出路径的行进方向。
(5.1)获取当前布线通过该点产生的导线形状,该形状属于表2中序号0-3,8-11中某一种。此步骤需要枚举所有导线当前方向和下一方向的情况,建立两个路径方向值和导线形状值的映射关系,该映射关系如表4所示。
表4 路径方向和导线形状的映射关系表
(5.2)将原有导线形状和新导线形状组合成新的形状状态,即将获得形状与CellLineStyle数组中记录的该坐标位置的形状组合,得到最终形状。组合规则也是一个映射关系,如表5所示,该步骤需要利用表2中的信息。
表5 原有导线形状、新导线形状与最终形状状态的映射关系表
(6)一次布线操作后,所布导线对平台信息的修改已在自动布线过程中自动完成。另外需要存储导线对象Line作为其他模块调用导线或实验台载入所有导线的依据。具体需要保存导线路径点和导线颜色、导线起点和终点等信息。
Claims (4)
1.一种电工电子类虚拟实验平台中的快速自动布线方法,包括如下步骤:
(1)初始化实验平台信息,具体为:
(11)读入实验台布局,获取平台上已经布有的器件以及已有连线信息,获取实验平台宽度和高度,以建立布线数据结构;
(1.2)根据获取的宽度和高度,将实验台区域划分成m*n个相等大小的网格,为这些网格建立一个m*n的Dijkstra表,每个网格对应表中相同位置的一项,每个网格抽象为一个DijkstraNode类型的对象,其中m,n均为正整数;
(2)利用步骤(1)建立的实验平台信息,找到任一起点到任意一个接线柱的布线路径,生成导线起点的源路径;
(3)利用起点和终点生成路径结果,具体为:
建立一个新的Dijkstra表,同时遍历两张Dijkstra表,在找到两张表中使得到起点和终点同时具有最短距离的公共点;
将该公共点作为导线起点接线柱和终点接线柱的公共终点,分别利用步骤(2)找到两条路径,将这两条路径组合起来按顺序存入路径数组中就得到了最终的导线路径;
(4)获得导线形状,完成布线操作
根据上述步骤获得每条导线路径,并记录下每条导线经过路径的形状,从而获得导线形状,完成布线操作。
2.根据权利要求1所述的方法,其特征在于,所述的步骤(2)中生成导线起点的源路径的具体过程为:
(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。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102765979A CN102346795B (zh) | 2011-09-16 | 2011-09-16 | 电工电子类虚拟实验快速自动布线方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102765979A CN102346795B (zh) | 2011-09-16 | 2011-09-16 | 电工电子类虚拟实验快速自动布线方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102346795A true CN102346795A (zh) | 2012-02-08 |
CN102346795B CN102346795B (zh) | 2012-11-21 |
Family
ID=45545468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102765979A Active CN102346795B (zh) | 2011-09-16 | 2011-09-16 | 电工电子类虚拟实验快速自动布线方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102346795B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778277A (zh) * | 2013-12-31 | 2014-05-07 | 浙江浙大中控信息技术有限公司 | 一种污水处理仿真软件连线绘图优化方法 |
CN104699868A (zh) * | 2013-12-04 | 2015-06-10 | 上海华虹宏力半导体制造有限公司 | 一种版图增量式布线的方法 |
TWI503683B (zh) * | 2013-09-25 | 2015-10-11 | Delta Electronics Inc | 用於繪/製圖之連線方法 |
CN105911450A (zh) * | 2016-03-22 | 2016-08-31 | 重庆大学 | 飞针测试机开路测试路径优化方法 |
CN107220448A (zh) * | 2017-06-06 | 2017-09-29 | 北京华大九天软件有限公司 | 一种导线路径实时计算与检查方法及引擎 |
CN107808061A (zh) * | 2017-11-20 | 2018-03-16 | 北京华大九天软件有限公司 | 一种支持正交与斜向走线的双向跨障碍布线方法 |
CN107944106A (zh) * | 2017-11-14 | 2018-04-20 | 天津百利越象模具制造有限责任公司 | 一种基于pdms软件的管线布局优化方法 |
CN108062446A (zh) * | 2017-12-19 | 2018-05-22 | 杭州力控科技有限公司 | 电工实训实验台模拟仿真方法及系统 |
CN109165781A (zh) * | 2018-08-15 | 2019-01-08 | 山东鲁能软件技术有限公司 | 计算电力系统单线图连接线路径的方法、装置及终端设备 |
CN110569578A (zh) * | 2019-08-26 | 2019-12-13 | 奇瑞汽车股份有限公司 | 一种线束图导线路径快速计算方法 |
CN110943373A (zh) * | 2019-11-25 | 2020-03-31 | 珠海格力电器股份有限公司 | 电控箱的走线布置方法、装置及计算机可读存储介质 |
CN110941940A (zh) * | 2019-12-04 | 2020-03-31 | 杭州广立微电子有限公司 | 一种基于碰撞检测的3d绕线方法、存储设备和系统 |
CN111582274A (zh) * | 2020-05-11 | 2020-08-25 | 南京航空航天大学 | 一种基于标识物的导线布线虚拟引导方法 |
CN112766574A (zh) * | 2021-01-20 | 2021-05-07 | 西安微电子技术研究所 | 一种整机内部布线路径优化方法 |
CN113435123A (zh) * | 2021-07-05 | 2021-09-24 | 江苏核电有限公司 | 基于3d技术的变电站屏柜二次回路三维仿真培训方法 |
CN116011386A (zh) * | 2023-01-31 | 2023-04-25 | 本源科仪(成都)科技有限公司 | 版图自动布线方法、装置、存储介质及电子设备 |
CN117391032A (zh) * | 2023-11-01 | 2024-01-12 | 浙江阶数律法科技有限公司 | 电路拓扑图生成方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963827A (zh) * | 2006-12-08 | 2007-05-16 | 清华大学 | 基于多步长迷宫算法的模拟集成电路自动布线方法 |
CN101174278A (zh) * | 2006-11-03 | 2008-05-07 | 北京中电华大电子设计有限责任公司 | 交互版图工具中的最短路径实时查找算法 |
US7577958B1 (en) * | 1999-12-09 | 2009-08-18 | Nortel Networks Limited | Expediting an operation in a computer system |
CN101989310A (zh) * | 2009-08-07 | 2011-03-23 | 鸿富锦精密工业(深圳)有限公司 | 电路板布线设计的自动化系统及方法 |
-
2011
- 2011-09-16 CN CN2011102765979A patent/CN102346795B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7577958B1 (en) * | 1999-12-09 | 2009-08-18 | Nortel Networks Limited | Expediting an operation in a computer system |
CN101174278A (zh) * | 2006-11-03 | 2008-05-07 | 北京中电华大电子设计有限责任公司 | 交互版图工具中的最短路径实时查找算法 |
CN1963827A (zh) * | 2006-12-08 | 2007-05-16 | 清华大学 | 基于多步长迷宫算法的模拟集成电路自动布线方法 |
CN101989310A (zh) * | 2009-08-07 | 2011-03-23 | 鸿富锦精密工业(深圳)有限公司 | 电路板布线设计的自动化系统及方法 |
Non-Patent Citations (1)
Title |
---|
周文广: "基于Dijkstra的自动布线算法的优化及其应用研究", 《中国优秀硕士论文电子期刊网》 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI503683B (zh) * | 2013-09-25 | 2015-10-11 | Delta Electronics Inc | 用於繪/製圖之連線方法 |
US9342906B2 (en) | 2013-09-25 | 2016-05-17 | Delta Electronics, Inc. | Connecting method for drawing |
CN104699868A (zh) * | 2013-12-04 | 2015-06-10 | 上海华虹宏力半导体制造有限公司 | 一种版图增量式布线的方法 |
CN104699868B (zh) * | 2013-12-04 | 2017-10-24 | 上海华虹宏力半导体制造有限公司 | 一种版图增量式布线的方法 |
CN103778277B (zh) * | 2013-12-31 | 2017-01-11 | 浙江浙大中控信息技术有限公司 | 一种污水处理仿真软件连线绘图优化方法 |
CN103778277A (zh) * | 2013-12-31 | 2014-05-07 | 浙江浙大中控信息技术有限公司 | 一种污水处理仿真软件连线绘图优化方法 |
CN105911450A (zh) * | 2016-03-22 | 2016-08-31 | 重庆大学 | 飞针测试机开路测试路径优化方法 |
CN107220448B (zh) * | 2017-06-06 | 2020-05-12 | 北京华大九天软件有限公司 | 一种导线路径实时计算与检查方法及引擎 |
CN107220448A (zh) * | 2017-06-06 | 2017-09-29 | 北京华大九天软件有限公司 | 一种导线路径实时计算与检查方法及引擎 |
CN107944106A (zh) * | 2017-11-14 | 2018-04-20 | 天津百利越象模具制造有限责任公司 | 一种基于pdms软件的管线布局优化方法 |
CN107808061B (zh) * | 2017-11-20 | 2021-01-19 | 北京华大九天软件有限公司 | 一种支持正交与斜向走线的双向跨障碍布线方法 |
CN107808061A (zh) * | 2017-11-20 | 2018-03-16 | 北京华大九天软件有限公司 | 一种支持正交与斜向走线的双向跨障碍布线方法 |
CN108062446A (zh) * | 2017-12-19 | 2018-05-22 | 杭州力控科技有限公司 | 电工实训实验台模拟仿真方法及系统 |
CN109165781A (zh) * | 2018-08-15 | 2019-01-08 | 山东鲁能软件技术有限公司 | 计算电力系统单线图连接线路径的方法、装置及终端设备 |
CN109165781B (zh) * | 2018-08-15 | 2020-11-27 | 山东鲁能软件技术有限公司 | 计算电力系统单线图连接线路径的方法、装置及终端设备 |
CN110569578B (zh) * | 2019-08-26 | 2021-03-30 | 奇瑞汽车股份有限公司 | 一种线束图导线路径快速计算方法 |
CN110569578A (zh) * | 2019-08-26 | 2019-12-13 | 奇瑞汽车股份有限公司 | 一种线束图导线路径快速计算方法 |
CN110943373A (zh) * | 2019-11-25 | 2020-03-31 | 珠海格力电器股份有限公司 | 电控箱的走线布置方法、装置及计算机可读存储介质 |
CN110941940A (zh) * | 2019-12-04 | 2020-03-31 | 杭州广立微电子有限公司 | 一种基于碰撞检测的3d绕线方法、存储设备和系统 |
CN110941940B (zh) * | 2019-12-04 | 2023-06-13 | 杭州广立微电子股份有限公司 | 一种基于碰撞检测的3d绕线方法、存储设备和系统 |
CN111582274A (zh) * | 2020-05-11 | 2020-08-25 | 南京航空航天大学 | 一种基于标识物的导线布线虚拟引导方法 |
CN111582274B (zh) * | 2020-05-11 | 2021-05-18 | 南京航空航天大学 | 一种基于标识物的导线布线虚拟引导方法 |
CN112766574A (zh) * | 2021-01-20 | 2021-05-07 | 西安微电子技术研究所 | 一种整机内部布线路径优化方法 |
CN112766574B (zh) * | 2021-01-20 | 2023-06-09 | 西安微电子技术研究所 | 一种整机内部布线路径优化方法 |
CN113435123A (zh) * | 2021-07-05 | 2021-09-24 | 江苏核电有限公司 | 基于3d技术的变电站屏柜二次回路三维仿真培训方法 |
CN116011386A (zh) * | 2023-01-31 | 2023-04-25 | 本源科仪(成都)科技有限公司 | 版图自动布线方法、装置、存储介质及电子设备 |
CN117391032A (zh) * | 2023-11-01 | 2024-01-12 | 浙江阶数律法科技有限公司 | 电路拓扑图生成方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102346795B (zh) | 2012-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102346795B (zh) | 电工电子类虚拟实验快速自动布线方法 | |
Zhou et al. | A comparative study of improved GA and PSO in solving multiple traveling salesmen problem | |
US7624367B2 (en) | Method and system for routing | |
US6446239B1 (en) | Method and apparatus for optimizing electronic design | |
CN101702655B (zh) | 网络拓扑图的布局方法和系统 | |
CN108665117B (zh) | 一种室内空间最短路径的计算方法、装置、终端设备以及存储介质 | |
CN111080786B (zh) | 基于bim的室内地图模型构建方法及装置 | |
CN101916317B (zh) | 基于无网格模型的集成电路模块到模块的布线方法 | |
Tang et al. | A survey on steiner tree construction and global routing for vlsi design | |
Barnett et al. | Coordinated crowd simulation with topological scene analysis | |
CN115859899A (zh) | 一种多驱动能力的集成电路标准单元版图迁移的方法 | |
CN110909961A (zh) | 基于bim的室内路径查询方法及装置 | |
Goh et al. | Consumer electronics product manufacturing time reduction and optimization using AI-based PCB and VLSI circuit designing | |
CN112332306A (zh) | 一种电缆自动敷设方法及存储介质 | |
JP3389875B2 (ja) | 自動部品配置システム並びに自動部品配置プログラムを記録した記録媒体 | |
CN116362194A (zh) | 布线资源预分配方法、装置、计算设备及存储介质 | |
CN116050689A (zh) | 一种广域空间铁路线路智能搜索方法、系统、终端及介质 | |
CN105138711A (zh) | 一种图元索引、检测方法及装置 | |
CN106294916A (zh) | 一种电缆网电路图的自动布图方法 | |
Takai et al. | A cellular automaton model of particle motions and its applications | |
Li et al. | FanoutNet: a neuralized PCB fanout automation method using deep reinforcement learning | |
CN112817316A (zh) | 一种多机器人路径规划方法及装置 | |
Miller et al. | Embedding-based placement of processing element networks on FPGAs for physical model simulation | |
CN114255306A (zh) | 模型处理方法、模型处理装置、电子设备及可读存储介质 | |
Bayraktar et al. | Fuzzy Layout Planner: A simple layout planning tool for early stages of design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |