逻辑电路布局布线方法、图形化显示方法及其系统与流程

文档序号:16755377发布日期:2019-01-29 17:18阅读:671来源:国知局
逻辑电路布局布线方法、图形化显示方法及其系统与流程

本申请涉及可编程逻辑阵列,特别涉及一种逻辑电路布局布线方法、图形化显示方法及其系统。



背景技术:

可编程序逻辑阵列(programmablelogicarray,简称pla),是可编程逻辑器件的一种,它是与/或阵列均可编程的、包含有记忆元件的大规模集成电路,它能实现任意逻辑函数的组合电路以及实现时序电路。

随着可编程序逻辑阵列比如fpga电路设计的复杂度的提升,设计者们越来越关注高层次的设计方法。为了提高在设计过程中的交互性,逻辑电路(schematic)图的使用是至关重要的。传统上,设计者们根据eda工具的反馈结果手动绘制逻辑电路图,这将导致大量时间和精力的浪费,特别是电路规模较大的情况下容易导致错误。虽然目前现有的eda软件也实现了逻辑电路图的绘制,但随着用户设计的电路越来越复杂,使用的fpga资源越来越多,逻辑电路自然就越来越复杂,现有的逻辑电路图绘制工具占用很多内存导致所用的系统卡顿,而且所绘制的逻辑电路连线复杂不方便查阅。



技术实现要素:

本申请的目的在于提供一种逻辑电路布局布线方法、图形化显示方法及其系统。在绘制复杂逻辑电路时,通过对电路进行合理布局布线,使逻辑电路图分布均匀,减少了连线交点数目,同时也改善了现有绘图工具因布局布线不合理而占系统内存,最终导致系统卡顿的问题。

为了解决上述问题,本申请公开了一种逻辑电路的布局布线方法,包括以下步骤:

将实例模型化后视为数学上的点,采用有向无环图生成算法添加该点的连接关系,并按照预设列分布规则进行逻辑电路的逻辑列分布,采用启发式算法并基于中值排序规则进行该电路的逻辑行分布,最后根据该连接关系,将该实例放置在行列布局形成的网格内,完成自动布局;

遵循预设的走线规则以通道的形式进行自动布线;

在设定逻辑电路的尺寸关系后,结合自动布局布线结果,确定该逻辑电路中每个实例的坐标,根据该每个实例的物理尺寸进行二次布线。

在一个优选例中,该预设的走线规则同时包括:在走线不重叠的情况下,占用同一轨道;同一管脚出发的走线,占用同一轨道;轨道应临近离引脚近的该通道的边;其中该轨道是指的该实例间的走线路径。

在一个优选例中,该采用有向无环图生成算法添加该点的连接关系包括:将该电路视为一个有向图,该点间的连接关系是m对n,内部允许出现环状的连接,把该点通过综合调整放置在该行列布局中的某一个点上,其中m和n为自然数。

在一个优选例中,该预设列分布规则包括:该实例的输入为0的放置在第一列,输出为0的放置在最后一列,从第二列开始,如果剩余的实例与上一列有直连关系则放置在本列,以此类推完成列分配;

该中值排序规则包括:计算前一列的实例与该实例的连接关系,选择纵坐标中间的一个实例作为该实例的纵坐标;

该行列布局最后根据该实例的连接关系将该实例安放在该行列布局形成的网格内,确定该行列位置,使该实例位置集中,均匀对称,连接关系紧密,或有功能依赖的该实例位置靠近。

本申请还公开了一种逻辑电路图形化显示方法,包括以下步骤:

通过eda工具生成或创建网表数据,然后对该网表数据进行解析;

采用前文描述的布局布线方法进行布局布线;

根据该实例类型调用元器件图形库,设计合理的图形化方法将逻辑电路绘制到设备屏幕上。

在一个优选例中,该网表数据库包括:用户行为级描述,寄存器传输级优化,门级优化以及该布局布线之中任何一步的网表数据,该网表数据包括该电路的输入输出端口,端口位宽和线网连接关系;

该网络数据解析包括以下子步骤:

将该电路转化为程序可识别的数学模型,并建立数据结构存放该电路连接关系和该电路信息;

遍历实例信息库中所有的实例,获取该实例信息,并把该实例信息存放在内存中;其中该实例信息包括该实例名称,该实例输入输出接口,该实例类型和该实例底层逻辑电路。

本申请还公开了一种逻辑电路图形化显示系统,包括网表数据库模块,网表解析模块,布局布线模块,图形显示模块,元器件库模块;

该网表数据库模块通eda工具生成或创建网表数据;该网表解析模块用于对该网表数据进行解析;该布局布线模块用于处理前文描述的布局布线方法;该元器件库模块用于实例类型调用已经制作好的元器件图形库;该图形显示模块用于将逻辑电路绘制到设备屏幕上。

在一个优选例中,该网表数据包括:用户行为级描述,寄存器传输级优化,门级优化以及该布局布线之中任何一步的网表数据,该网表数据包括该电路的输入输出端口,端口位宽和线网连接关系;

该网表解析模块包括网表解析子模块和实例信息获取子模块,该网表解析子模块用于将所述电路转化为程序可识别的数学模型,并建立合适的数据结构,存放所述电路连接关系和所述电路信息;该实例信息获取子模块用于遍历实例信息库中所有的实例,获取所述实例的名称、输入输出接口、所述实例类型以及所述实例是否有底层逻辑电路,把所述实例信息存放在内存中。本申请还公开了一种逻辑电路图形化显示设备,包括:

存储器,用于存储计算机可执行指令;以及,

处理器,用于在执行该计算机可执行指令时实现如前文描述的方法中的步骤。

本申请还公开了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。

本申请实施方式中,针对逻辑电路的图形化显示,研发了电路实例的行列布局布线算法。

对于较复杂逻辑电路,现有的逻辑电路图绘制工具因图形布局较杂乱,且布线时形成的线网不清晰且连线交点较多造成占用很多系统内存,导致所用的系统卡顿。

本申请的电路实例的行列布局布线算法有效的优化了电路布局布线方法,根据有向无环图生成算法和预设的列分布规则进行逻辑列分配,同时采用启发式算法并基于中值排序规则进行逻辑行分配,所述逻辑列分布和逻辑行分布实现了逻辑电路的自动行列布局;然后遵循预设的走线规则以通道的形式进行自动布线;最后再根据元件的实际大小合理分配元件物理坐标,进行二次布线;最终得到的布局布线图形元件集中,排列紧凑,输入输出符合电路习惯,避免了不必要的连线交点,减少了所述交点的数目。

而且,越复杂的逻辑电路,本申请的优点表现的越明显,效果越突出。

本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征a+b+c,在另一个例子中公开了特征a+b+d+e,而特征c和d是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征e技术上可以与特征c相组合,则,a+b+c+d的方案因技术不可行而应当不被视为已经记载,而a+b+c+e的方案应当视为已经被记载。

附图说明

图1是根据本申请第二实施方式的逻辑电路图形化显示方法流程示意图

图2是根据本申请第一实施方式中预设的列分布的一个实施例的流程示意图

图3是根据本申请中模块、实例、网、独立端口和从属端口之间的关系示意图

图4是根据本申请第一实施方式中通道和轨道的一个实施例示意图

图5是根据本申请第一实施方式中预设的轨道分配规则的一个实施例示意图

图6根据本申请第二实施方式中a、b、c步骤处理过程的一个实施例示意图

图7根据本申请第二实施方式中a、b、c步骤处理过程的一个实施例示意图

图8根据本申请第三实施方式的逻辑电路图形化显示系统示意图

图9是根据本申请第一实施方式进行逻辑电路的行列布局布线后形成的中间图形局部示意图

具体实施方式

在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

部分概念的说明:

1.可编程逻辑阵列(programablelogicarray,简称:pla):是一种可程式化的装置,可用来实现组合逻辑电路。

2.逻辑电路(schematic):是一种离散信号的传递和处理,以二进制为原理、实现数字信号逻辑运算和操作的电路。

3.fpga(field-programmablegatearray):即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

4.eda是电子设计自动化(electronicsdesignautomation)的缩写:eda技术就是以计算机为工具,设计者在eda软件平台上,用硬件描述语言verilog/vhdl完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。eda技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

5.逻辑行/列:是指本发明中自动布局中定义的理论的行/列,是在不考虑实例尺寸的情况下的行/列,是相对物理上的行/列来说的。

6.物理行/列:是指本发明中自动布局中定义的实际上的行/列,是在考虑实例实际尺寸的情况下的行/列,与最终的逻辑电路图上的行是一致的。

7.module:模块(module)是verilog最基本的概念,是v设计中的基本单元,每个v设计的系统中都由若干module组成。模块在语言形式上是以关键词module开始,以关键词endmodule结束的一段程序。模块的实际意义是代表硬件电路上的逻辑实体。每个模块都实现特定的功能。模块的描述方式有行为建模和结构建模之分。模块之间是并行运行的。模块是分层的,高层模块通过调用、连接低层模块的实例来实现复杂的功能。各模块连接完成整个系统需要一个顶层模块(top-module)。

8.downmodule:是底层的模块。

9.模块(module),实例(instance),网(nets),独立端口(ports)和从属端口(pins)之间的关系如图3所示。

10.有向无环图(directacyclicgraph,简称dag):指的是一个无回路的有向图,按照数学上的定义,dag是一个没有有向循环的、有限的有向图。具体来说,它由有限个顶点(本申请同一称作“点”)和有向边组成,每条有向边都从一个顶点指向另一个顶点;从任意一个顶点出发都不能通过这些有向边回到原来的顶点。

11.启发式算法:是相对于最优化算法提出的,是一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决问题的一个可行解,该可行解与最优解的偏离程度一般不能被预计。

12.缓存和窗口化作图的方法:是指本发明中在计算实例位置、布局布线等数据是时候把数据保存在计算机的内存中,能够是及时高效的进行绘制图形。窗口化作图是指根据图形比例仅绘制可视窗口范围内的图形,不可视范围的图形不予绘制,目的是为了达到及时高效的客户体验。

13.二次布线:是指在第一次逻辑布线的基础上程序根据行、列上每个实例的物理尺寸去除由实例高度不一致导致的空间空隙使得元件更加集中,排列更加紧凑,同时避免交叉走线,走线弯绕以及迂回连线。

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。

本申请的第一实施方式涉及一种逻辑电路的布局布线方法,其流程如图1所示,该方法包括以下步骤:

a:将实例模型化后视为数学上的点,采用有向无环图生成算法添加该点的连接关系,并按照预设列分布规则进行逻辑电路的逻辑列分布,采用启发式算法并基于中值排序规则进行该电路的逻辑行分布,最后根据该连接关系,将该实例放置在行列布局形成的网格内,完成自动布局;

b:遵循预设的走线规则以通道的形式进行自动布线;

c:在设定逻辑电路的尺寸关系后,结合自动布局布线结果,确定该逻辑电路中每个实例的坐标,根据每个实例的物理尺寸进行二次布线。

可选地,本申请中采用有向无环图生成算法添加点的连接关系具体为:将整个电路视为一个有向图(注:因为把实例模型化后视为数学上的点,此时不考虑管脚信息),点与点之间的连接关系可以是m对n(m、n为自然数),内部可以出现环状的连接,最后把这些点通过综合调整放置在该行列布局中的各个点上,完成了点的分布,同时初步形成了逻辑电路行列布局的网格。

可选地,本申请中预设的列分布规则是根据实例的输入(此处称为入度)输出(此处称为出度)来确定其所在前后列的位置。

本申请中预设的列分布规则的一个优选实施例如图2所示,该列分布规则对应的是逻辑列,具体步骤如下:

1)首先确定输入为0的放置在第一列,输出为0的放置在最后一列;

2)将始列中的实例所指向的所有实例均定于下一列,即第二列;

3)将新生列中的实例所指向的实例均定于新生列的下一列,即第三列;

4)以此类推,所有实例均完成逻辑列定位。

可选地,本申请的中值排序规则为:计算前一列的实例与该实例的连接关系,选择纵坐标中间的一个实例的纵坐标作为该实例的纵坐标。

具体的,本申请基于此中值排序规则进行逻辑行分配,从而优化连线交点数目。与运算量过大的全排列,中值排序运算量更小,速度更快。

可选的,本申请在中值排序的基础上,还可以进行以下优化:1)小范围交换实例位置;2)计算交换前后交点数来确定是否交换,例如,如果交换前电路的交点数多于交换后电路的交点数,则进行交换。

可选地,该逻辑行列布局最后根据该实例的连接关系将该实例安放在该行列布局形成的网格内,确定该行列位置,使该实例位置集中,均匀对称,连接关系紧密,或有功能依赖的该实例位置靠近。

可选地,本申请根据电路的规模来设计布线策略,将实例之间的连线在行列布局形成的通道内分布,通道分为垂直通道和水平通道。

需要了解的是本申请中行列布局形成的通道与所述行列布局形成的网格是相对应。

图4是本申请通道和轨道一个实施例的示意图。

可选的,本申请中预设的走线规则是可以通过设置改变的。

图5为本申请预设的走线规则的一个实施例示意图,此规则具体包括(注:此处为同时包括)但不限于:1.在走线不重叠的情况下,占用同一轨道,如图5(a);2.同一管脚出发的走线,占用同一轨道,如图5(b);3.轨道应临近离引脚近的该通道的边,如图5(c);其中该轨道是指的该实例间的走线路径。

可选地,本申请逻辑电路图形生成的处理对象是模块类,支持顶层与底层电路的同时绘制,这样就可以分层显示,能够进行整个逻辑电路和局部逻辑电路的查看。

需要了解的是,本申请中独立端口在实例信息库或者元器件图形库中存在形式和实例是相同的,所以本申请中将实例和独立端口统称为实例。

图9是根据本申请第一实施方式进行逻辑电路的行列布局布线后形成的中间图形局部示意图。

本申请第二实施方式涉及一种逻辑电路图形化显示方法,其流程如图1所示,该方法包括以下步骤:

d:通过eda工具生成或创建网表数据,然后对该网表数据库进行解析;

e:采用本申请第一实施方式涉及的布局布线方法进行自动布局布线;

f:根据该实例类型调用元器件图形库,设计合理的图形化方法将逻辑电路绘制到设备屏幕上。

可选地,网表数据包括:用户行为级描述,寄存器传输级优化,门级优化以及该布局布线之中任何一步的网表数据,该网表数据包括该电路的输入输出端口,端口位宽和线网连接关系;

可选地,上述步骤d由三个子步骤构成,分别为a.通过eda工具生成或创建网表数据库;b.将该电路转化为程序可识别的数学模型,并建立数据结构存放该电路连接关系和该电路信息;c.遍历实例信息库中所有的实例,获取该实例信息,并把该实例信息存放在内存中;其中该实例信息包括该实例名称,该实例输入输出接口,该实例类型和该实例底层逻辑电路。

上述a、b、c三个子步骤的系统处理过程是多种多样的,可选地,如图6所示是系统处理过程的一个实施例,系统依次进行步骤c、步骤a、步骤b,其中步骤b和步骤c也可以同步并行进行;可选地,如图7所示是系统处理过程的一个实施例,系统依次进行步骤a、步骤b、步骤c,其中步骤b和步骤c也可以同步并行进行。

需要了解的是,独立端口在实例库或者元器件图形库中存在形式和实例是相同的,所以本申请中将实例和独立端口统称为实例。

本申请第三实施方法涉及一种逻辑电路图形化显示系统,如图8所示,包括网表数据库模块,网表解析模块,布局布线模块,元器件库模块和图形显示模块;

网表数据库模块通过eda工具生成或创建的网表数据;网表解析模块用于对该网表数据进行解析;布局布线模块用于实施本申请第一实施方式涉及的布局布线方法;元器件库模块用于实例类型调用已经制作好的元器件图形;图形显示模块用于将逻辑电路绘制到设备屏幕上。

可选地,网表数据库模块的网表数据包括:用户行为级描述,寄存器传输级优化,门级优化以及该布局布线之中任何一步的网表数据,该网表数据包括该电路的输入输出端口,端口位宽和线网连接关系。

可选地,如图8所示,网表解析模块包括网表解析子模块和实时信息获取子模块;所网表解析子模块用于将该电路转化为程序可识别的数学模型,并建立合适的数据结构,存放该电路连接关系和该电路信息;该实例信息获取子模块用于遍历实例信息库中所有的实例,获取该实例的名称、输入输出接口、该实例类型以及该实例是否有底层逻辑电路,把该实例信息存放在内存中。

可选地,如图8所示,布局布线模块包括自动布局子模块、自动布线子模块和二次布线子模块,自动布局子模块用于将实例模型化后视为数学上的点,采用有向无环图生成算法添加该点的连接关系,并按照预设的列分布规则进行逻辑电路的逻辑列分布,采用启发式算法并基于中值排序规则进行该电路的逻辑行分布,最后根据该连接关系,将该实例放置在行列布局形成的网格内,完成自动布局;自动布线子模块用于遵循预设的走线规则以通道的形式进行自动布线;二次布线子模块用于在设定逻辑电路的尺寸关系后,结合自动布局布线结果,确定该逻辑电路中每个实例的坐标,根据每个实例的物理尺寸进行二次布线,同时并采用缓存和窗口化作图的方法,实现大版图逻辑电路拖动查看时的快速响应。

可选地,本申请中采用有向无环图生成算法添加点的连接关系具体为:将整个电路视为一个有向图(注:因为把实例模型化后视为数学上的点,此时不考虑管脚信息),点与点之间的连接关系可以是m对n(m、n为自然数),内部可以出现环状的连接,最后把这些点通过综合调整放置在该行列布局中的各个点上,完成了点的分布,同时初步形成了逻辑电路行列布局的网格。

可选地,本申请中预设的列分布规则是根据实例的输入(此处称为入度)输出(此处称为出度)来确定其所在前后列的位置。

本申请中预设的列分布规则的一个优选实施例如图2所示,具体步骤如下:

1)首先确定输入为0的放置在第一列,输出为0的放置在最后一列;

2)将始列中的实例所指向的所有实例均定于下一列,即第二列;

3)将新生列中的实例所指向的实例均定于新生列的下一列,即第三列;

4)以此类推,所有实例均完成列定位。

可选地,本申请的中值排序规则为:计算前一列的实例与该实例的连接关系,选择纵坐标中间的一个实例的纵坐标作为该实例的纵坐标。

具体的,本申请基于此中值排序规则进行逻辑行分配,从而优化连线交点数目;与运算量过大的全排列,中值排序运算量更小,速度更快。

可选的,本申请在中值排序的基础上,还可以进行以下优化:1)小范围交换实例位置;2)计算交换前后交点数来确定是否交换,例如,如果交换前电路的交点数多于交换后电路的交点数,则进行交换。

可选地,该行列布局最后根据该实例的连接关系将该实例安放在该行列布局形成的网格内,确定该行列位置,使该实例位置集中,均匀对称,连接关系紧密,或有功能依赖的该实例位置靠近。

可选地,本申请根据电路的规模来设计布线策略,将实例之间的连线在行列布局形成的通道内分布,通道分为垂直通道和水平通道。

需要了解的是本申请中行列布局形成的通道与所述行列布局形成的网格是相对应关系。

图4是本申请通道和轨道一个实施例的示意图。

可选的,本申请中预设的走线规则是可以通过设置改变的。

图5为本申请预设的走线规则的一个实施例示意图,此规则具体包括(注:此处为同时包括)但不限于:1.在走线不重叠的情况下,占用同一轨道,如图5(a);2.同一管脚出发的走线,占用该同一轨道,如图5(b);3.该轨道应临近离引脚近的该通道的边,如图5(c);其中该轨道是指的该实例间的走线路径。

需要了解的是,本申请中独立端口在实例库或者元器件图形库中存在形式和实例是相同的,所以本申请中将实例和独立端口统称为实例。

可选地,本申请逻辑电路图形生成的处理对象是模块类,支持顶层与底层电路的同时绘制,这样就可以分层显示,能够进行整个逻辑电路和局部逻辑电路的查看。

需要说明的是,本领域技术人员应当理解,上述逻辑电路图形化显示系统的实施方式中所示的各模块的实现功能可参照前述一种逻辑电路图形化显示系统的相关描述而理解。上述逻辑电路图形化显示设备的实施方式中所示的各模块的功能可通过运行于处理器上的程序(可执行指令)而实现,也可通过具体的逻辑电路而实现。本发明实施例上述逻辑电路图形化显示系统如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,readonlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。

相应地,本发明实施例还提供一种计算机存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本发明的各方法实施方式。

此外,本发明实施例还提供一种逻辑电路图形化显示设备,其中包括用于存储计算机可执行指令的存储器,以及,处理器;该处理器用于在执行该存储器中的计算机可执行指令时实现上述各方法实施方式中的步骤。

需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。

在本申请提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,在阅读了本申请的上述公开内容之后,本领域技术人员可以对本申请作各种改动或修改,这些等价形式同样落于本申请所要求保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1