一种快速单磁通量子RSFQ电路的布线方法和装置与流程

文档序号:22879225发布日期:2020-11-10 17:36阅读:244来源:国知局
一种快速单磁通量子RSFQ电路的布线方法和装置与流程

本文涉及集成电路的自动设计技术,尤指一种快速单磁通量子rsfq电路的布线方法和装置。



背景技术:

基于约瑟夫森结的超导数字快速单磁通量子(rapidsinglefluxquantum,rsfq)电路有着广阔的发展前景,具有工作频率高、功耗低、散热容易等优势,有望实现未来大规模、高性能和低功耗的计算机系统。但现有的自动版图设计工具多针对特定的电路设计方案开发,难以广泛应用,导致很多电路版图仍由手工完成,大大影响了rsfq电路设计效率,限制了超导电路的进一步发展。

布线是版图设计中的重要环节,传输线的选择将直接影响rsfq电路布线算法的设计。rsfq电路中的传输线包括约瑟夫森传输线(josephsontransmissionline,jtl)和无缘传输线(passivetransmissionline,ptl)两种,前者是一种包含约瑟夫森结的有源器件,具有面积大、延迟高的特点,适用于短距离互连;后者为无源传输线,与cmos电路中的金属传输线十分类似,具有长距离互连延迟低、布线灵活等特点,但其附加电路带来了额外的面积和延迟开销,使得ptl不适于短距离互连。

由于与cmos电路布线问题十分类似,得益于成熟的cmos布线工具,ptl自动布线得到了较快发展。与之相比,jtl布线依靠jtl单元的放置实现,与传统的金属线有较大区别,这导致jtl的自动布线发展较慢,自动化程度较低。但jtl广泛应用于小规模rsfq电路以及大规模rsfq电路中的短距离互连,使得jtl自动布线成为一个不可忽视的问题。



技术实现要素:

本申请实施例提供了一种快速单磁通量子rsfq电路的布线方法和装置,能够实现rsfq电路的jtl自动布线,提高rsfq电路的设计效率。

本申请实施例提供了一种快速单磁通量子rsfq电路的布线方法,可以包括:

读入待布线的快速单磁通量子rsfq电路的门级网表、布局信息和单元库信息,并依据所述门级网表、布局信息解析所述rsfq电路的逻辑单元位置和线网连接关系;所述单元库信息包括:逻辑单元信息、约瑟夫森传输线jtl单元的信息;

根据所述逻辑单元位置和线网连接关系进行虚拟布线;

使用所述jtl单元替换所述虚拟布线后获得的虚拟导线,并根据时序分析结果调整jtl单元以进行时序优化。

在本申请的示例性实施例中,所述方法还可以包括:在进行虚拟布线时,使用两个虚拟布线层完成线网连接,所述两个虚拟布线层分别用于水平和垂直方向布线;

和/或,

所述根据所述逻辑单元位置和线网连接关系进行虚拟布线可以包括:对于rsfq电路的每个布线区域分别执行以下操作:

当相邻线网主干之间以及线网主干与逻辑门列之间设置的间隔xspace小于或等于预设数值时,采用预设的左边算法均匀分配线网主干;所述线网主干为线网的垂直部分;

对当前布线区域内的全部线网根据线长进行排序,并将全部线网按照从短到长的顺序依次压入布线队列中;

从所述布线队列中依次取线网,使用预设的迷宫布线算法进行布线。

在本申请的示例性实施例中,所述预设的左边算法为改进的左边算法;所述采用预设的左边算法均匀分配线网主干可以包括:

获取待当前布线区域内全部待分配线网,并根据每条线网各端点的纵坐标确定每条线网主干的最大y坐标ymax以及最小y坐标ymin,进而确定每条线网主干的纵坐标范围[ymin,ymax];

依据所述纵坐标范围将每条导线映射到y轴上获取相应的线网主干;

将获得的线网主干依据每个线网主干的最小y坐标ymin的大小在x坐标方向依次进行排序,其中,ymin越小,对应的x坐标越小,在ymin相同时依据线网主干长度进行排序,主干长度越短,对应的x坐标越小;在y坐标方向上,每个线网主干的最小y坐标ymin和最大y坐标ymax均对应到相应的坐标值处;

遍历排序后的每条线网主干,当一条线网主干的最大y坐标ymax以及最小y坐标ymin与当前布线区域内的另外一条线网主干的最大y坐标ymax和最小y坐标ymin所确定的y坐标线段完全不同,使得该线网主干与所述另外一条线网主干的y坐标不重叠时,将该线网主干与所述另外一条线网主干移动到两者中对应的x坐标较小的一列上;

线网主干分配完毕后,以单位长度将当前布线区域划分为均匀网格,并在相邻的每列线网主干之间添加间隔xspace,初始间隔xspace为单位长度。

在本申请的示例性实施例中,所述预设的迷宫布线算法为用于连接多端线网并在扩展和回溯阶段加入形状约束的改进的迷宫布线算法;

所述改进的迷宫布线算法可以包括:

确定迷宫扩展的起点和终点之后,把起点坐标加入构造的有序链表openlist中;

取出所述有序链表openlist中的第一个元素作为当前要扩展的网格点current;基于所述当前要扩展的网格点current循环扩展出新的网格点,并将扩展出的新的网格点加入所述有序链表openlist中;

当扩展过程中发现终点时,回溯并根据形状约束确定起点和终点之间的路径是否合法,并根据确定结果对起点和终点之间的路径进行处理;

如果直至所述有序链表openlist为空仍未发现终点,则确定扩展失败,并确定线网布线失败;

对于多端线网,当线网中每个端点均连接成功时,确定线网布线成功;当线网中任意一个端点连接失败时,确定线网布线失败。

在本申请的示例性实施例中,所述基于所述当前要扩展的网格点current循环扩展出新的网格点可以包括:

考察所有与所述当前要扩展的网格点current相邻的网格点;如果可以从所述当前要扩展的网格点current扩展到该网格点,且该网格点未被占用,且此次扩展不会发生预设方向的扩展,则可以将该网格点作为从所述当前要扩展的网格点current扩展出来的新网格点;

计算所述扩展出来的新网格点的扩展代价,以根据所述扩展代价确定是否将扩展出的新的网格点加入所述有序链表openlist中。

在本申请的示例性实施例中,所述回溯并根据形状约束确定起点和终点之间的路径是否合法,并根据确定结果对起点和终点之间的路径进行处理可以包括:

从终点开始,根据搜索确定的父网格点方向进行逆向搜索,直至得到终点到起点之间的最短路径;其中,当存在多个父网格点时,分别根据每一个父网格点方向进行逆向搜索,得到当前起点和终点之间的多个最短路径;

依次检查每条最短路径是否与已布线的线网之间存在形状违规现象,当不存在形状违规现象时,确定当前最短路径为合法路径,并得到此次迷宫扩展的结果;当前所有最短路径均存在形状违规现象时,确定此次迷宫扩展失败,将所有违反形状的边设置为不可用,清除所有布线标记进行下一次扩展;其中,所述形状违规现象是指不满足形状约束。

在本申请的示例性实施例中,所述使用所述jtl单元替换所述虚拟布线后获得的虚拟导线可以包括:

识别虚拟布线的形状;将线网交叉处的虚拟导线替换为jtl交叉单元,并使用所述jtl单元替换所述线网连接中除所述线网交叉处以外的虚拟导线。

在本申请的示例性实施例中,所述使用所述jtl单元替换所述线网连接中的虚拟导线可以包括:

在完成jtl单元替换之后,使用预设的延迟计算工具分析时序;

根据时序分析结果调整jtl单元;其中,在延迟大于或等于预设阈值的路径上放置延迟小于所述预设阈值的jtl单元,在延迟小于预设阈值的路径上放置延迟大于或等于所述预设阈值的jtl单元,使得所有路径的延迟差值保持在预设范围内,以实现时序优化。

在本申请的示例性实施例中,在根据所述逻辑单元位置和线网连接关系进行虚拟布线之前,所述方法还可以包括:

根据所述门级网表、布局信息解析所述rsfq电路的逻辑门列信息,根据所述逻辑门列信息确定所述rsfq电路的每个布线区域,将所述rsfq电路中的时钟线网拆分为与所述rsfq电路的每个布线区域匹配的子时钟线网,并将每个子时钟线网分配到相应的布线区域对应的线网子集中。

本申请实施例提供了一种快速单磁通量子rsfq电路的布线装置,可以包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现如上述任意一项所述的快速单磁通量子rsfq电路的布线方法。

本申请实施例可以包括:读入待布线的快速单磁通量子rsfq电路的门级网表、布局信息和单元库信息,并依据所述门级网表、布局信息解析所述rsfq电路的逻辑单元位置和线网连接关系;所述单元库信息包括:逻辑单元信息、约瑟夫森传输线jtl单元信息;根据所述逻辑单元位置和线网连接关系进行虚拟布线;使用所述jtl单元替换所述虚拟布线后获得的虚拟导线,并根据时序分析结果调整jtl单元以进行时序优化。通过该实施例方案,实现了rsfq电路的jtl自动布线,提高了rsfq电路的设计效率。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。

附图说明

附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。

图1为本申请实施例的rsfq电路的布线方法流程图;

图2为本申请实施例的rsfq电路版图示意图;

图3(a)为本申请实施例的原始jtl单元的基本单元示意图;

图3(b)为本申请实施例的原始jtl单元的交叉单元示意图;

图3(c)为本申请实施例的原始jtl单元的分路器单元示意图;

图3(d)为本申请实施例的原始jtl单元的合路器单元示意图;

图4为本申请实施例的部分逻辑单元示意图;

图5为本申请实施例的部分违规布线形状示意图;

图6(a)为本申请实施例的时钟线网拆分时的从时钟引脚拆分的示意图;

图6(b)为本申请实施例的时钟线网拆分时的从列内空白网格拆分的示意图;

图7(a)为本申请实施例的待分配线网主干的布线区域示意图;

图7(b)为本申请实施例的线网主干初始分配结果示意图;

图7(c)为本申请实施例的线网主干优化分配结果示意图;

图7(d)为本申请实施例的线网划分添加xspace的示意图;

图8为本申请实施例的迷宫扩展阶段加入的形状约束示意图;

图9(a)为本申请实施例的虚拟布线结果示意图;

图9(b)为本申请实施例的原始jtl单元替换虚拟导线后的示意图;

图9(c)为本申请实施例的调整jtl单元优化时序后的示意图;

图10为本申请实施例的快速单磁通量子rsfq电路的布线装置示意图。

具体实施方式

本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。

本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。

此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。

本申请实施例提供了一种快速单磁通量子rsfq电路的布线方法,如图1所示,可以包括步骤s101-s103:

s101、读入待布线的快速单磁通量子rsfq电路的门级网表、布局信息和单元库信息,并依据所述门级网表、布局信息解析所述rsfq电路的逻辑单元位置和线网连接关系;所述单元库信息包括:逻辑单元信息、约瑟夫森传输线jtl单元信息;

s102、根据所述逻辑单元位置和线网连接关系进行虚拟布线;

s103、使用所述jtl单元替换所述虚拟布线后获得的虚拟导线,并根据时序分析结果调整jtl单元以进行时序优化。

在本申请的示例性实施例中,本申请实施例所涉及的rsfq电路版图如图2所示,电路采用多级流水线结构,具有相同逻辑级别的逻辑单元被放入同一逻辑门列,相邻逻辑门列之间的矩形区域用于jtl布线,时钟线网横跨多个布线区域,除时钟线网以外的其余线网只处于一个布线区域内。

在本申请的示例性实施例中,为了实现尽可能小的版图面积,本申请实施例使用最小面积的单元库设计,如图3(a)-图3(d)所示,为原始的jtl单元的示意图,图4为部分逻辑单元示意图,其中,图3(a)所示的基本单元、图3(b)所示的交叉单元,图3(c)所示的分路器单元、图3(d)所示的合路器单元。这导致本申请实施例所使用jtl单元宽度无法统一,产生了全新的几何形状约束。

在本申请的示例性实施例中,如图3(a)所示,jtl的基本单元宽度为单位长度,但是jtl的交叉单元和合路器单元只能以2x2单位长度的尺寸实现,这将导致大量布线形状无法实现(部分违规形状如图5所示),给jtl自动布线带来了较大挑战,目前还没有工具能够实现带形状约束的jtl自动布线。

在本申请的示例性实施例中,为了实现rsfq电路的自动布线,本申请实施例提出了一种考虑jtl几何形状约束的自动布线方法。该jtl布线方法可分为两步,第一步为虚拟布线,使用两个虚拟布线层完成线网连接,通过线网主干的均匀分配和改进的迷宫布线算法解决了jtl形状约束,为jtl单元放置寻找合法路径;第二步使用jtl单元替换虚拟导线,并进行时序优化,从而实现了jtl自动布线。该实施例方法保证所得到的布线结果满足jtl形状约束,可以由c++语言设计和实现,可以在linux平台上运行,并可通过skill接口集成到cadence设计环境中。

在本申请的示例性实施例中,以电路门级网表、rsfq电路布局信息、单元库信息为输入,然后对待布线rsfq电路实施自动布线。由于jtl布线由jtl单元的组合放置实现,十分不灵活,本申请实施例使用了上述的两步布线法来完成jtl布线:第一步为虚拟布线,可以使用虚拟导线完成线网连接,为jtl单元寻找满足形状约束的放置路径,可以使用两个虚拟布线层,分别用于水平方向布线和垂直方向布线;第二步使用jtl单元替换虚拟导线,并根据时序分析结果调整jtl单元以进行时序优化。

在本申请的示例性实施例中,本申请实施例中jtl布线方法的程序实现可以包含如下步骤:准备工作、虚拟布线、jtl单元替换;下面将分别进行介绍:

1、准备工作

1.1、布局信息及单元库信息读入

在本申请的示例性实施例中,本申请实施例的自动布线程序可以读入以配置文件形式提供的单元库信息,所述单元库信息可以包括:逻辑单元的信息和约瑟夫森传输线jtl单元的信息;可以将逻辑单元信息保存在instlibmap中,将jtl单元信息保存在jtllibmap中,索引可以均为单元名称。

在本申请的示例性实施例中,本申请实施例的自动布线程序读入待布线rsfq(超导快单磁通量子)电路的门级网表,可以解析rsfq电路的线网连接关系,并保存至netlist中;

在本申请的示例性实施例中,本申请实施例的自动布线程序读入待布线rsfq(超导快单磁通量子)电路的布局信息,可以解析各逻辑门列信息,即逻辑门列逻辑级别和所包含的逻辑单元信息,并按逻辑级别依次保存至collist中,可以记为总的逻辑门列数为n。

在本申请的示例性实施例中,所述待布线电路的门级网表描述线网连接关系;所述单元库信息包括逻辑单元及jtl单元信息;所述布局信息为各逻辑门列信息,电路采用流水线结构。

在本申请的示例性实施例中,所述逻辑单元列表中的每个列表元素为一个逻辑单元,可以包括名称、类型、宽度、长度、引脚列表、逻辑级别、位置等信息;所述jtl单元列表中每个列表元素为一个jtl单元,可以包括名称、类型、宽度、长度、输入输出引脚位置;所述线网列表中的每个列表元素为一条线网,可以包括线网的名称、端点数量、源端点列表、宿端点、逻辑级别等信息;所述逻辑门列列表中的每个列表元素可以为一个逻辑门列,包括逻辑门列的逻辑级别、所包含的逻辑单元等。

1.2、时钟线网拆分与线网分配

在本申请的示例性实施例中,在根据所述逻辑单元位置和线网连接关系进行虚拟布线之前,所述方法还可以包括:

根据所述门级网表、布局信息解析所述rsfq电路的逻辑门列信息,根据所述逻辑门列信息确定所述rsfq电路的每个布线区域,将所述rsfq电路中的时钟线网拆分为与所述rsfq电路的每个布线区域匹配的子时钟线网,并将每个子时钟线网分配到相应的布线区域对应的线网子集中。

在本申请的示例性实施例中,为适应电路的流水线结构,本申请实施例可以对每个jtl布线区域(或简称布线区域)依次进行布线,因此首先将时钟线网拆分为与每个布线区域匹配的子时钟线网,然后将子时钟线网分配到每个布线区域对应的线网子集中。

在本申请的示例性实施例中,可以从逻辑门列内最居中的时钟引脚处进行时钟线网拆分,将其引入下一逻辑门列;如果逻辑门列内无时钟引脚,则从最居中的空白网格处进行时钟线网拆分,将其引入下一逻辑门列。

在本申请的示例性实施例中,首先进行时钟线网拆分:可以遍历collist,依次取出当前第i(i为正整数,i小于或等于n)个逻辑门列collist[i]及下一个逻辑门列collist[i+1],生成这两个逻辑门列之间的布线区域所对应的子时钟线网,具体过程可以包括如下步骤(1)-(3):

(1)在逻辑门列collist[i]中生成子时钟线网的源点si;

(a)、如图6(a)所示,如果逻辑门列collist[i]内存在逻辑单元的时钟引脚,则将该逻辑门列collist[i]内最居中的时钟引脚作为子时钟线网源点;

(b)、如图6(b)所示,如果逻辑门列collist[i]内没有时钟引脚,则将该逻辑门列collist[i]内最居中的空白网格作为子时钟线网源点,并将此空白网格添加到前一布线区域子时钟线网的漏点;

(2)在逻辑门列collist[i+1]中找到子时钟线网的漏点,及该逻辑门列collist[i+1]内各逻辑单元的时钟引脚{ti,1,…ti,k};

(3)由子时钟线网的源点si和逻辑门列collist[i+1]内各逻辑单元的时钟引脚{ti,1,…ti,k}组成该布线区域内的子时钟线网clki,将该子时钟线网clki加入netlist。

在本申请的示例性实施例中,每个子时钟线网生成并分配完毕后,可以将拆分前的时钟线网clknet从netlist中删除。然后遍历netlist中每一个线网元素,将这些线网元素分配至所属布线区域对应的线网子集:n1,n2,…nn-1内,n-1为布线区域总数。可以初始化n1,n2,…nn-1为空集,然后遍历每一个线网元素:

(1)取出netlist中当前线网元素,记为currentnet;

(2)识别currentnet的源点,如果该引脚属于逻辑门列collist[i],则将currentnet加入线网子集ni。

在本申请的示例性实施例中,可以遍历所有逻辑线网(包括拆分后的子时钟线网),将其分配至所属布线区域对应的线网子集中。

2、虚拟布线

2.1虚拟布线总体流程

在本申请的示例性实施例中,所述方法还可以包括:在进行虚拟布线时,使用两个虚拟布线层完成线网连接,所述两个虚拟布线层分别用于水平和垂直方向布线。

在本申请的示例性实施例中,所述根据所述逻辑单元位置和线网连接关系进行虚拟布线可以包括:对于rsfq电路的每个布线区域分别执行以下操作:

当相邻线网主干之间以及线网主干与逻辑门列之间设置的间隔xspace小于或等于预设数值时,采用预设的左边算法均匀分配线网主干;所述线网主干为线网的垂直部分;

对当前布线区域内的全部线网根据长短进行排序,并将全部线网按照从短到长的顺序依次压入布线队列中;

从所述布线队列中依次取线,使用预设的迷宫布线算法进行布线。

在本申请的示例性实施例中,本申请实施例可以对每个布线区域依次进行虚拟布线。对于每一个布线区域可以记为pi,设布线区域pi所对应的线网子集为ni,可以重复以下虚拟布线流程(1)-(7):

(1)设置拆线次数上限threshold=5*|ni|,|ni|为本布线区域内线网总数;设置拆线计数值rip_num=0;设置初始xspace=1;

(2)当xspace<=3时,使用改进的左边算法均匀分配线网主干;当xspace>3时,跳转至步骤(7);

(3)对ni进行排序,短线网优先,依次压入布线队列q;

(4)当布线队列q中的线网数量q.size()不为0时,即q.size()!=0时,可以将布线队列q中的队首线网q.front()赋给线网neti,即取队首线网neti=q.front();

(5)使用改进的迷宫布线算法对队首线网neti进行布线;

(a)如果neti布线成功,则q.pop(neti),跳转至步骤(4);

(b)如果neti布线失败,则拆除neti矩形框内占用网格最多的一条已布成功线网,记作netj,,同时q.push(neti),rip_num++;

(b.1)如果rip_num>=threshold,则布线失败,跳转至步骤(6);

(b.2)如果rip_num<threshold,跳转至步骤(5);

(6)如果q.size()==0,跳转至步骤(7);如果q.size()!=0,xspace++,rip_num=0,清除所有布线标记,跳转至步骤(2);

(7)本布线区域布线结束。

2.2使用改进的左边算法均匀分配线网主干

在本申请的示例性实施例中,所述预设的左边算法可以为改进的左边算法;所述采用预设的左边算法均匀分配线网主干可以包括:

获取待当前布线区域内全部待分配线网,并根据每条线网各端点的纵坐标确定每条线网主干的最大y坐标ymax以及最小y坐标ymin,进而确定每条线网主干的纵坐标范围[ymin,ymax];

依据所述纵坐标范围将每条导线映射到y轴上获取相应的线网主干;

将获得的线网主干依据每个线网主干的最小y坐标ymin的大小在x坐标方向依次进行排序,其中,ymin越小,对应的x坐标越小,在ymin相同时依据线网主干长度进行排序,主干长度越短,对应的x坐标越小;在y坐标方向上,每个线网主干的最小y坐标ymin和最大y坐标ymax均对应到相应的坐标值处;

遍历排序后的每条线网主干,当一条线网主干的最大y坐标ymax以及最小y坐标ymin与当前布线区域内的另外一条线网主干的最大y坐标ymax和最小y坐标ymin所确定的y坐标线段完全不同,使得该线网主干与所述另外一条线网主干的y坐标不重叠时,将该线网主干与所述另外一条线网主干移动到两者中对应的x坐标较小的一列上;

线网主干分配完毕后,以单位长度将当前布线区域划分为均匀网格,并在相邻的每列线网主干之间添加间隔xspace,初始间隔xspace为单位长度。

在本申请的示例性实施例中,进行虚拟布线时,首先使用改进的左边算法分配线网主干(即线网的垂直部分),不仅用于确定布线区域宽度,还能使得线网均匀分布,起到避免形状违规和线网拥塞的效果。

在本申请的示例性实施例中,为避免线网主干紧密相邻造成形状违规,对传统左边算法进行微小的改进:在相邻线网主干之间、线网主干与逻辑门列之间设置一定间隔xspace。

在本申请的示例性实施例中,对于如图7(a)所示待分配布线区域,改进的左边算法流程包括下述的(1)-(3):

(1)、如图7(b)所示,根据每列线网主干的最小y坐标点对所有线网主干进行排序,使其从左边起每列只有一条线网主干。

(2)、如图7(c)所示,从左到右遍历每列线网主干,对于每条线网主干,如果有可用空间(不与另一条线网主干重叠),尝试将其移动到最左边的布线列上。

(3)、如图7(d)所示,以单位长度对布线区域划分均匀网格,并在相邻线网布线列间添加间隔,初始宽度为xspace=1。

2.3使用改进的迷宫布线算法完成线网连接

在本申请的示例性实施例中,所述预设的迷宫布线算法为用于连接多端线网并在扩展和回溯阶段加入形状约束的改进的迷宫布线算法。

在本申请的示例性实施例中,迷宫布线算法用于搜寻源漏之间的最短路径,可分为扩展、回溯两个阶段。本申请实施例对迷宫布线算法进行了改进,用于连接多端线网,并在扩展、回溯阶段加入形状约束,用来寻找满足形状约束的合法路径。

2.3.1改进的迷宫布线算法的主体流程

在本申请的示例性实施例中,所述改进的迷宫布线算法可以包括:

确定迷宫扩展的起点和终点后,把起点坐标加入构造的有序链表openlist中;

取出所述有序链表openlist中的第一个元素作为当前要扩展的网格点current;基于所述当前要扩展的网格点current循环扩展出新的网格点,并将扩展出的新的网格点加入所述有序链表openlist中;

当扩展过程中发现终点时,回溯并根据形状约束确定起点和终点之间的路径是否合法,并根据确定结果对起点和终点之间的路径进行处理;

如果直至所述有序链表openlist为空仍未发现终点,则确定扩展失败,并确定线网布线失败;

对于多端线网,当线网中每个端点均连接成功时,确定线网布线成功;当线网中任意一个端点连接失败时,确定线网布线失败。

在本申请的示例性实施例中,对于待布多端线网,随机选择一个源点(或称源端)作为迷宫扩展的起点,并将距离最近的漏点(或称漏端)设置为终点,使用迷宫布线连接起点和终点。然后按照距离的升序依次连接其他端点,如果待连接端点为漏端,则将该线网所有已布线网格作为起点;反之将该线网所有已布线网格作为终点。

在本申请的示例性实施例中,对于确定的起点及终点,构造一个有序的链表,叫做openlist。把起点坐标加入openlist中,之后进入循环,循环终止的条件是openlist中没有元素,或者openlist中的第一个元素为终点坐标,探索到终点时回溯并确定是否存在合法路径,如果不存在合法路径则开始新的扩展。具体操作步骤可以包括下述的(1)-(4):

(1)确定迷宫扩展的起点及终点,把起点坐标加入openlist中;

(a)如果该线网没有已布网格,则随机选择一个源点作为迷宫扩展的起点,并将距离最近的漏点设置为终点;

(b)如果该线网有已布网格,则连接距离最近的未连接端点;

(b.1)如果待连接端点为漏点,则将所有已布网格设为起点,将待连接端点设为终点;

(b.2)如果待连接端点为源点,则将所有已布网格设为终点,将待连接端点设为起点;

(2)取出openlist中的第一个元素作为当前要扩展的网格点,记作current;依次取出openlist中的其他元素,循环扩展出新的网格点加入openlist中,保证openlist有序,即扩展代价小的网格点排在前面。

(3)当扩展过程中发现终点,回溯并确定合法路径;如果直至openlist为空仍未发现终点,则扩展失败,该线网布线失败;

(a)如果存在一条满足形状约束的合法路径,则该路径确定为已布网格,跳转至步骤(1);

(b)如果所有路径均存在形状约束,则将存在形状约束的边设置为不可用,保持起点和终点不变,清除扩展标记,重新开始扩展,跳转至步骤(2);

(4)如果线网每个端点均连接成功,则该线网布线成功;否则布线失败。

2.3.2每一步扩展过程

在本申请的示例性实施例中,所述基于所述当前要扩展的网格点current循环扩展出新的网格点可以包括:

考察所有与所述当前要扩展的网格点current相邻的网格点;如果可以从所述当前要扩展的网格点current扩展到该网格点,且该网格点未被占用,且此次扩展不会发生预设方向的扩展,则可以将该网格点作为从所述当前要扩展的网格点current扩展出来的新网格点;

计算所述扩展出来的新网格点的扩展代价,以根据所述扩展代价确定是否将扩展出的新的网格点加入所述有序链表openlist中。

在本申请的示例性实施例中,详细的扩展过程可以包括:

(1)确定扩展网格点

考察所有与current相邻的网格点,如果可以从current扩展到该网格点,且该网格点未被占用,且此次扩展不会发生如图8所示方向的扩展,那么该点是从current扩展出来的新网格点,记作expoint,并且将current点作为expoint的父网格点。

(2)计算扩展代价

计算expoint的扩展代价,包括以下任意一种或多种:

costg:从起点到网格点的布线代价;

costn:该网格点的拥塞代价,如果该网格点与已布线网格相邻,则costn=1.5,如果该网格点与单元引脚相邻,则costn=4;否则costn=1;

costf:计算costg和costh之和。

(3)把扩展出的网格点添加到openlist中;

(a)如果expoint不在openlist中,且状态不是inclose,则记录该扩展方向,把expoint插入openlist中,并保持openlist有序,将expoint对应网格点的状态标记为inopen;

(b)如果expoint在openlist中,即状态为inopen,则比较此时expoint的扩展代价和已有的扩展代价:

(b.1)如果expoint的costf比已有的costf小,则记录该扩展方向,将openlist中的对应网格点删除,并将expoint插入openlist中,并保持openlist有序,expoint对应的网格点状态仍为inopen;

(b.2)如果expoint的costf与已有的costf相同,则查看该网格点是否从同一个方向扩展过。如果没有从同一个方向扩展过,则记录该扩展方向,将openlist中的对应网格点删除,并将expoint插入openlist中,并保持openlist有序,expoint对应的网格点状态仍为inopen。

(b.3)如果expoint的costf比已有的costf大,则直接舍去;

(c)如果expoint对应的网格点的状态是inclose,则比较此时expoint的扩展代价和已有的扩展代价:

(c.1)如果expoint的costf比已有的costf小,则将openlist中的对应网格点删除,并将expoint插入openlist中,并保持openlist有序,expoint对应的网格点状态仍为inopen;

(c.2)如果expoint的costf与已有的costf相同,则查看该网格点是否从同一个方向扩展过。如果没有从同一个方向扩展过,则记录该扩展方向,将openlist中的对应网格点删除,并将expoint插入openlist中,并保持openlist有序,expoint对应的网格点状态仍为inopen;

(c.3)如果expoint的costf比已有的costf大,则直接舍去。

2.3.3回溯并确定合法路径

在本申请的示例性实施例中,所述回溯并根据形状约束确定起点和终点之间的路径是否合法,并根据确定结果对起点和终点之间的路径进行处理可以包括:

从终点开始,根据搜索确定的父网格点方向进行逆向搜索,直至得到终点到起点之间的最短路径;其中,当存在多个父网格点时,分别根据每一个父网格点方向进行逆向搜索,得到当前起点和终点之间的多个最短路径;

依次检查每条最短路径是否与已布线的线网之间存在形状违规现象,当不存在形状违规现象时,确定当前最短路径为合法路径,并得到此次迷宫扩展的结果;当前所有最短路径均存在形状违规现象时,确定此次迷宫扩展失败,将所有违反形状的边设置为不可用,清除所有布线标记进行下一次扩展;其中,所述形状违规现象是指不满足形状约束。

在本申请的示例性实施例中,从终点开始,根据搜索确定的父网格点方向,进行逆向搜索直至起点得到最短路径。如果存在多个父网格点,则分别进行逆向搜索,得到当前的多个最短路径。依次检查每条最短路径是否与已布线网之间存在形状违规,如果不存在形状违规,则得到此次迷宫扩展的结果。如果当前所有最短路径均与已布线网存在形状违规,则此次迷宫扩展失败,将本次扩展发现的网格点清除。即,检测所述多个最短路径是否满足形状约束;如果存在一条满足形状约束的最短路径,则确定该路径为已布线段;如果最短路径均不满足形状约束,则将所有违反形状的边(该边是指构成违规形状的边)设置为不可用,清除所有布线标记重新开始扩展。

3jtl单元替换

在本申请的示例性实施例中,本阶段使用jtl单元替换虚拟导线,并进行时序优化,从而完成最终的jtl布线。

在本申请的示例性实施例中,所述使用所述jtl单元(即原始jtl单元)替换所述虚拟布线后获得的虚拟导线可以包括:

识别虚拟布线的形状;将线网交叉处的虚拟导线替换为jtl交叉单元,并使用所述jtl单元(即原始jtl单元)替换所述线网连接中除所述线网交叉处以外的虚拟导线。

3.1原始jtl单元替换

在本申请的示例性实施例中,如图9(a)所示,由虚拟布线算法完成的布线结果已经满足jtl单元形状约束,可以使用原始jtl单元直接替换虚拟导线。程序识别虚拟布线形状,首先将线网交叉处的虚拟导线替换交叉单元,然后使用原始jtl单元完成其余虚拟导线替换,替换结果如图9(b)所示。

在本申请的示例性实施例中,原始jtl单元指的是组成基本布线形状所必需的jtl单元。

3.2时序优化

在本申请的示例性实施例中,所述使用所述jtl单元替换所述线网连接中的虚拟导线可以包括:

在完成jtl单元替换之后,使用预设的延迟计算工具分析时序;

根据时序分析结果调整jtl单元;其中,在延迟大于或等于预设阈值的路径上放置延迟小于所述预设阈值的jtl单元,在延迟小于预设阈值的路径上放置延迟大于或等于所述预设阈值的jtl单元,使得所有路径的延迟差值保持在预设范围内,以实现时序优化。

在本申请的示例性实施例中,由于直接替换结果很难保证时序最优,而本申请实施例所使用的jtl单元具有多种形状、长度选择,延迟有所不同。所以,可以通过调整jtl单元使得同一布线区域内各路径延迟尽量接近,从而进行时序优化。

在本申请的示例性实施例中,在完成原始jtl单元替换之后,首先使用延迟计算工具精确分析时序。然后根据时序分析结果调整jtl单元,在具有较大延迟的路径上放置具有较小延迟的jtl单元,在具有较小延迟的路径上放置具有较大延迟的jtl单元,使得所有路径延迟尽量相当(保证调整后的最大路径延迟不超过调整前最大路径延迟的120%),从而达到时序优化的效果,优化结果如图9(c)所示。在完成时序优化后,输出最终布线结果。

本申请实施例提供了一种快速单磁通量子rsfq电路的布线装置1,如图10所示,可以包括处理器11和计算机可读存储介质12,所述计算机可读存储介质12中存储有指令,当所述指令被所述处理器11执行时,实现如上述任意一项所述的快速单磁通量子rsfq电路的布线方法。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

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