掌桥专利:专业的专利平台
掌桥专利
首页

集成电路布局布线方法、装置、集成电路芯片

文献发布时间:2024-04-18 19:58:26


集成电路布局布线方法、装置、集成电路芯片

技术领域

本申请涉及集成电路技术领域,特别是涉及一种集成电路布局布线方法、装置、集成电路芯片。

背景技术

在集成电路设计工具的物理实现流程中,通常是采用时序约束级联触发器之间的max delay(最大延迟)。

由于自动布局布线生成的版图中,依靠工具只获得了针对多触发器同步器延迟的约束,仍可能在满足max delay的约束下,出现距离过远、skew偏斜过大的情况,造成同步器存在时钟偏斜,集成电路中多个时钟同步效果不佳。

发明内容

基于此,有必要针对上述技术问题,提供一种能够实现同步器零时钟偏斜的集成电路布局布线方法、装置、集成电路芯片。

第一方面,本申请提供了一种集成电路布局布线方法,所述方法包括:

获取初始集成电路布局;所述初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局;所述触发器布局约束包括同一同步电路包含的至少两个触发器捆绑成组,所述同步电路中的触发器之间存在预设的位置约束关系;

从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树;所述违例用于表征相应的同步电路中所述至少两个触发器未处于同一子时钟树上;

按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局。

在其中一个实施例中,所述获取初始集成电路布局,包括:

按照触发器两两捆绑成组的方式,约束EDA工具在所述目标集成电路设计任务中的触发器布局行为,得到所述初始集成电路布局。

在其中一个实施例中,所述从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树,包括:

根据所述初始集成电路布局进行时钟树综合,得到所述初始集成电路布局对应的时钟树;

按照所述初始集成电路布局的触发器分组信息,从所述时钟树包含的子时钟树中,确定多个所述违例,以及各所述违例对应的子时钟树。

在其中一个实施例中,所述按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局,包括:

若检测到相邻的所述存在违例的子时钟树之间具有偶数个所述违例,交换所述违例对应的触发器挂载位置,以在相邻的所述存在违例的子时钟树之间成对消除所述违例;

若检测到相邻的所述存在违例的子时钟树之间具有奇数个所述违例,将扇出未超出最大扇出约束的子时钟树,作为目标子时钟树,将所述违例对应的触发器挂载至所述目标子时钟树。

在其中一个实施例中,所述按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局,包括:

针对所述存在违例的子时钟树上挂载的未分组触发器,若检测到处于不同子时钟树上的所述未分组触发器之间的距离小于预设距离阈值,将至少两个所述未分组触发器捆绑成组;

返回所述若检测到相邻的所述存在违例的子时钟树之间具有偶数个所述违例的步骤。

在其中一个实施例中,所述按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局,包括:

通过在相邻的所述存在违例的子时钟树之间进行违例修复后,针对所述存在违例的子时钟树的扇出超出最大扇出约束的情况,在所述存在违例的子时钟树中添加子时钟树分支;

将所述存在违例的子时钟树中预设数量的触发器,挂载至所述子时钟树分支。

第二方面,本申请还提供了一种集成电路布局布线装置,所述装置包括:

初始集成电路布局获取模块,用于获取初始集成电路布局;所述初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局;所述触发器布局约束包括同一同步电路包含的至少两个触发器捆绑成组,所述同步电路中的触发器之间存在预设的位置约束关系;

违例确定模块,用于从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树;所述违例用于表征相应的同步电路中所述至少两个触发器未处于同一子时钟树上;

目标集成电路布局得到模块,用于按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局。

第三方面,本申请还提供了一种集成电路芯片,包括如第一方面所述的集成电路布局布线方法的步骤布局的同步电路。

第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取初始集成电路布局;所述初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局;所述触发器布局约束包括同一同步电路包含的至少两个触发器捆绑成组,所述同步电路中的触发器之间存在预设的位置约束关系;

从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树;所述违例用于表征相应的同步电路中所述至少两个触发器未处于同一子时钟树上;

按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局。

第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取初始集成电路布局;所述初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局;所述触发器布局约束包括同一同步电路包含的至少两个触发器捆绑成组,所述同步电路中的触发器之间存在预设的位置约束关系;

从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树;所述违例用于表征相应的同步电路中所述至少两个触发器未处于同一子时钟树上;

按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局。

上述一种集成电路布局布线方法、装置、集成电路芯片,通过获取初始集成电路布局,该初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局,该触发器布局约束包括同一同步电路包含的至少两个触发器捆绑成组,该同步电路中的触发器之间存在预设的位置约束关系,然后从初始集成电路布局对应的时钟树中确定存在违例的子时钟树,该违例用于表征相应的同步电路中至少两个触发器未处于同一子时钟树上,进而按照预设的违例修复方式,调整各存在违例的子时钟树上挂载的触发器在初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局,实现了集成电路中同步器零时钟偏移,能够保证双触发器同步器或多触发器同步器的多个标准单元距离相近,且时钟连接到同一个时钟驱动以达到零偏移。

附图说明

图1为一个实施例中集成电路的示意图;

图2为一个实施例中集成电路布局布线方法的流程示意图;

图3为一个实施例中集成电路布局布线处理流程的示意图;

图4为另一个实施例中集成电路布局布线方法的流程示意图;

图5为一个实施例中集成电路布局布线装置的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在集成电路设计中,由于电路功能的设计需求,需要在一个电路中使用到多个时钟。异步时钟间信号直接传输,可能在信号跳变时违背接受时钟域的时序要求(建立时间约束,保持时间约束),容易产生亚稳态,导致接收端采样的数据不准确。亚稳态是指触发器的输出信号无法在某个规定时间段内达到一个稳定的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。

常见的同步器是使用两级寄存器,即使用寄存器打两拍的方式进行同步。同步器是通过采样一个异步信号,采样输出能够同步到本地或采样时钟的模块。此类两级寄存的同步器如图1所示。

当在跨时钟域中传输单比特数据时,可以先在源时钟域将被传输数据打一拍,然后再对目的时钟域打两拍,可以使得获得的数据在绝大多数情况下稳定。在实际电路中,亚稳态的情况较容易受到噪声、电压等外部因素影响,在经过一定时间后逐渐趋于稳定,打两拍可以看作是一个将信号延后两个周期的处理,目的是要使得处于亚稳态的信号有足够长的趋于稳定的时长。

此外,仍然有可能级联的第二个寄存器输出还会表现为非稳定状态,但双寄存同步器已经可以解决大部分这类亚稳态问题。在设计这种同步器的时候应当注意遵循以下原则:

1、级联的寄存器需要使用同一个采样时钟,时钟的延迟(latency)尽可能相同,偏斜(skew)尽可能的小;

2、发送端时钟域寄存器输出和接收端异步时钟域级联寄存器输入之间不能有任何其他组合逻辑。

3、同步器中级联的寄存器中除了最后一个寄存器外所有的寄存器只能有一个扇出,即其只能驱动下一级寄存器的输入。

在高速、超高速设计中,两级的MTBF可能还不够;或者针对重点信号,为了保险会采样三级或多级同步器。两级寄存器和三级寄存器的MTBF计算公式如下:

在集成电路的物理设计阶段,也需要对两级或多级同步器特别处理。实际中对双触发器同步器在物理设计上的要求是:距离上尽可能的近,时钟偏斜尽可能小,时钟树尽可能等长。这样就可以使得跨时钟域的平均失效时间尽可能的长。

在EDA工具的物理实现流程中,传统方法是只采用时序约束级联触发器之间的maxdelay。在自动布局布线生成的版图中,工具只获得了延迟的约束,并没有物理位置上的任何约束,且工具的布局操作对象是标准单元,并不会对多个触发器编组操作,仍可能在满足max delay的约束下,出现距离过远,skew过大的情况。传统方法也可以采用定制电路的方式,设计一个可以包含两级或多级触发器级联功能的同步电路标准单元,以满足上述的三个要求,但此方法需要的人力物力成本较大,耗时较长。

本申请可以在尽可能小的代价下,如PPA(Power Performance Area,性能、功耗、面积)、Runtime(运行时间,例如时钟树综合步骤的时间)等,保证双触发器同步器或多触发器同步器的多个标准单元距离相近,且时钟pin连接到同一个时钟驱动以达到0skew(偏斜)。

在一个实施例中,如图2所示,提供了一种集成电路布局布线方法,本实施例以该方法应用于终端进行举例说明。本实施例中,该方法包括以下步骤:

步骤201,获取初始集成电路布局;所述初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局;

其中,触发器布局约束可以包括同一同步电路包含的至少两个触发器捆绑成组,如采用将触发器两两捆绑成组的方式。集成电路中可以包含多个同步电路,每个同步电路可以包括头尾相连的至少两个触发器,如图1所示的电路图,双触发器同步器中触发器指的是图1中时钟2连接的两个方块(即触发器)。

作为一示例,同一同步电路中的触发器之间存在预设的位置约束关系,如同一同步电路中的触发器遵从输入的距离和相对位置的约束。

在实际应用中,在EDA(Electronic design automation,电子设计自动化)工具的布局阶段,可以按照触发器两两捆绑成组的方式(即预设的触发器布局约束),约束EDA工具在目标集成电路设计任务中的触发器布局行为,进而可以针对目标集成电路设计任务得到初始集成电路布局。

步骤202,从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树;

作为一示例,违例可以用于表征相应的同步电路中至少两个触发器未处于同一子时钟树上。

在得到初始集成电路布局后,可以根据该初始集成电路布局进行时钟树综合,得到初始集成电路布局对应的时钟树,进而可以按照初始集成电路布局的触发器分组信息,从时钟树包含的子时钟树中,确定多个违例,以及各违例对应的子时钟树,还可以得到各违例对应的子时钟树的扇出。

示例性地,可以在时钟树综合后,使用脚本和目标集成电路设计任务给定的同步器列表,确定触发器分组信息,进而可以基于该触发器分组信息检测得到多触发器处于不同子时钟树的违例,例如,可以查找出存在违例的触发器分组、违例涉及的子时钟树及其扇出。

步骤203,按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局。

在具体实现中,在检测到多触发器处于不同子时钟树的违例后,可以通过ECO(Engineering Change Order,工程改变命令)方式,基于设置命令修改时钟树,即按照预设的违例修复方式,调整各存在违例的子时钟树上挂载的触发器在初始集成电路布局中的连接关系,进而可以得到零时钟偏移的目标集成电路布局。

在一个可选实施例中,为了在保证时钟树的最大扇出(max fanout)不产生违例的同时,达成0skew的目标,可以采用的违例修复手段包括但不限于交换sinks,插入buffer等,进而可以基于修复结果完成剩余自动布局布线的流程。从而基于零时钟偏移的目标集成电路布局,可以使得runtime增加的时间较少,反相器或缓冲器增加较少,能够保证双触发器同步器或多触发器同步器的多个标准单元距离相近,且时钟pin连接到同一个时钟驱动以达到0skew(偏斜)。

上述集成电路布局布线方法中,通过获取初始集成电路布局,该初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局,该触发器布局约束包括同一同步电路包含的至少两个触发器捆绑成组,该同步电路中的触发器之间存在预设的位置约束关系,然后从初始集成电路布局对应的时钟树中确定存在违例的子时钟树,该违例用于表征相应的同步电路中至少两个触发器未处于同一子时钟树上,进而按照预设的违例修复方式,调整各存在违例的子时钟树上挂载的触发器在初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局,实现了集成电路中同步器零时钟偏移,能够保证双触发器同步器或多触发器同步器的多个标准单元距离相近,且时钟连接到同一个时钟驱动以达到零偏移。

在一个实施例中,所述获取初始集成电路布局,可以包括如下步骤:

按照触发器两两捆绑成组的方式,约束EDA工具在所述目标集成电路设计任务中的触发器布局行为,得到所述初始集成电路布局。

在实际应用中,以2级同步器为例,可以在EDA工具的布局阶段采用两两捆绑成组的方式,约束该EDA工具的自动布局行为,如图3所示,可以基于floor plan(布局规划)的设计确定目标集成电路设计任务,然后可以通过输入触发器绑成组的place(布局)约束得到预设的触发器布局约束,进而可以根据该触发器布局约束执行place步骤。

具体地,基于输入触发器绑成组的place约束,可以使EDA工具在布局过程中对触发器进行成组的移动,并且还可以遵从输入的距离和相对位置进行约束,从而可以在物理位置约束上达成类似定制电路的效果,能够避免在后续步骤中因多触发器的物理距离过远造成的问题,如ECO难度增加,重新移动触发器导致时序难以收敛等情况。

本实施例中,通过按照触发器两两捆绑成组的方式,约束EDA工具在目标集成电路设计任务中的触发器布局行为,得到初始集成电路布局,能够达到在物理位置约束上类似定制电路的效果,有效避免了在后续步骤中因多触发器的物理距离过远造成的问题。

在一个实施例中,所述从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树,可以包括如下步骤:

根据所述初始集成电路布局进行时钟树综合,得到所述初始集成电路布局对应的时钟树;按照所述初始集成电路布局的触发器分组信息,从所述时钟树包含的子时钟树中,确定多个所述违例,以及各所述违例对应的子时钟树。

在一示例中,针对时钟树综合流程,由于在时钟树产生前,时钟的扇出可以视为无限大,多个触发器可以视为连接到同一条时钟线上;在时钟树产生时,为了平衡各时钟端口的到达时间,可以在时钟从根节点到触发器的时钟端口之间插入多级反相器或缓冲器,在此阶段多个触发器并不会被视为整体,可能存在距离极其相近,但它们的时钟路径不一致,连接到不同的反相器或缓冲器上的情况,进而在时序分析时会存在skew(偏斜)。

在又一示例中,如图3所示,通过执行时钟树综合步骤可以得到初始集成电路布局对应的时钟树,进而在时钟树综合后,可以使用给定的同步器列表和脚本进行检测,以查找出同一同步电路中的触发器未处于相同的子时钟树上的情况,获得存在违例的触发器分组、违例涉及的子时钟树及其扇出。

本实施例中,通过根据初始集成电路布局进行时钟树综合,得到初始集成电路布局对应的时钟树,进而按照初始集成电路布局的触发器分组信息,从时钟树包含的子时钟树中,确定多个违例,以及各违例对应的子时钟树,为进一步修复时钟树中违例提供了数据支持。

在一个实施例中,所述按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局,可以包括如下步骤:

若检测到相邻的所述存在违例的子时钟树之间具有偶数个所述违例,交换所述违例对应的触发器挂载位置,以在相邻的所述存在违例的子时钟树之间成对消除所述违例;若检测到相邻的所述存在违例的子时钟树之间具有奇数个所述违例,将扇出未超出最大扇出约束的子时钟树,作为目标子时钟树,将所述违例对应的触发器挂载至所述目标子时钟树。

在实际应用中,如图3所示,可以判断相邻的不同子时钟树之间是否存在偶数个违例,若符合该判断条件,可以直接交换违例对应的触发器,以成对消除违例。

在一示例中,如图3所示,针对相邻的不同子时钟树之间存在奇数个违例的情况,可以判断违例中是否存在某一个子时钟树的扇出小于最大扇出约束,进而可以确定扇出小于最大扇出约束的子时钟树是符合判断条件的子时钟树,可以将成组的触发器单边挂载至符合的子时钟树;还可以经过多轮迭代处理获取更好的违例修复效果。

本实施例中,通过若检测到相邻的存在违例的子时钟树之间具有偶数个违例,交换违例对应的触发器挂载位置,以在相邻的存在违例的子时钟树之间成对消除述违例,若检测到相邻的存在违例的子时钟树之间具有奇数个违例,将扇出未超出最大扇出约束的子时钟树,作为目标子时钟树,将违例对应的触发器挂载至目标子时钟树,能够有效修复时钟树中违例,提升了集成电路布局布线效率。

在一个实施例中,所述按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局,可以包括如下步骤:

针对所述存在违例的子时钟树上挂载的未分组触发器,若检测到处于不同子时钟树上的所述未分组触发器之间的距离小于预设距离阈值,将至少两个所述未分组触发器捆绑成组;返回所述若检测到相邻的所述存在违例的子时钟树之间具有偶数个所述违例的步骤。

在实际应用中,如图3所示,可以通过遍历违例中两子时钟树之间普通触发器(即未分组触发器)的距离,若距离小于一定的数值(即预设距离阈值),可以将其捆绑成组,构建得到一个虚拟的触发器组,进而可以进行交换触发器的操作,如在检测到相邻的存在违例的子时钟树之间具有偶数个违例时,交换违例对应的触发器挂载位置,以进一步解决时钟树中违例。

本实施例中,通过针对存在违例的子时钟树上挂载的未分组触发器,若检测到处于不同子时钟树上的未分组触发器之间的距离小于预设距离阈值,将至少两个未分组触发器捆绑成组,返回若检测到相邻的存在违例的子时钟树之间具有偶数个违例的步骤,能够进一步有效消除时钟树中违例。

在一个实施例中,所述按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局,可以包括如下步骤:

通过在相邻的所述存在违例的子时钟树之间进行违例修复后,针对所述存在违例的子时钟树的扇出超出最大扇出约束的情况,在所述存在违例的子时钟树中添加子时钟树分支;将所述存在违例的子时钟树中预设数量的触发器,挂载至所述子时钟树分支。

在具体实现中,如图3所示,针对经过上述处理的剩余违例,可以随机挂载子时钟树,通过判断该子时钟树的扇出是否超出最大扇出约束,可以在超出最大扇出的情况下,添加off load buffer(空载缓冲器),即添加子时钟树分支,进而可以将超出最大扇出的违例挂载至该子时钟树分支。从而在通过上述修复方式处理后,可以修复时钟树中全部违例。

例如,子时钟树具有N个挂载触发器的位置(即最大扇出),当该子时钟树所挂载的触发器数量M大于N时,即时钟树的扇出超出最大扇出约束,可以采取多数投票算法(majority),从M个触发器中选取出部分触发器(如M-N个触发器,即预设数量的触发器),以将其挂载至添加的off load buffer。

本实施例中,通过在相邻的存在违例的子时钟树之间进行违例修复后,针对存在违例的子时钟树的扇出超出最大扇出约束的情况,在存在违例的子时钟树中添加子时钟树分支,进而将存在违例的子时钟树中预设数量的触发器,挂载至子时钟树分支,能够实现集成电路中同步器零时钟偏移。

为了使本领域技术人员能够更好地理解上述步骤,以下结合图3通过一个应用场景例子对本申请实施例加以示例性说明,但应当理解的是,本申请实施例并不限于此。

以一种实现同步器零时钟偏斜的方法为例,本方法可在尽可能小的代价下(PPA,run time等),保证双触发器同步器/多触发器同步器的多个标准单元距离相近,且时钟pin连接到同一个时钟驱动以达到0skew。

1、以2级同步器为例:在EDA工具的布局阶段,采用两两捆绑成组的方式,约束工具的自动布局行为。

控制工具在布局过程中对触发器进行成组的移动,并且还能遵从输入的距离和相对位置的约束,在物理位置约束上达成了类似定制电路的效果。能够避免在后续步骤中因多触发器的物理距离过远造成的,如ECO难度增加,重新移动触发器导致时序难以收敛等问题。

2、业界标准的时钟树综合流程。

在时钟树产生前,时钟的扇出可以视为无限大,多个触发器视为连接到同一条时钟线上。在时钟树产生时,为了平衡各时钟端口的到达时间,时钟从根节点到触发器的时钟端口之间插入了多级反相器/缓冲器。在此阶段,多个触发器并不会被视为整体。虽然距离极其相近,仍可能它们的时钟路径不一致,连接到不同的反相器/缓冲器上,进而在时序分析时存在skew。

3、在时钟树综合后,使用脚本和给定的同步器列表,检测到多触发器处于不同子树的违例后,通过ECO的方式,手动修改时钟树。保证时钟树的最大扇出(max fanout)不产生违例的同时,达成0skew的目标。手段包括但不限于:交换sinks、插入buffer等。

3.1判断不同的子时钟树之间是否存在偶数个违例,若符合,则直接交换违例的触发器,成对消除违例。

3.2判断违例中是否存在某一个子树的扇出小于最大扇出约束,符合则将成组的触发器挂载至符合的子树。(可以进行多轮迭代以获取更好效果)

3.3遍历违例中两子时钟树之间普通触发器的距离,若距离小于一定的数值,则捆绑成组,构建一个虚拟的触发器组,再进行类似3.1的交换触发器的操作,解决违例。

3.4剩余违例,随机挂载时钟树,判断扇出是否超出最大扇出约束,超出最大扇出的情形下,添加off load buffer。

4、完成剩余自动布局布线的流程。

对于一个子树多违例的情况,仅需进行奇偶性判断;对于多触发器同步器,在步骤3.4中采取多数投票算法(majority)。

基于上述步骤,可以达到技术效果:保证双触发器同步器/多触发器同步器的多个标准单元距离相近,且时钟pin连接到同一个时钟驱动以达到0skew;可以具有优点:runtime增加的时间较少,增加的反相器/缓冲器少。

在一个实施例中,如图4所示,提供了另一种集成电路布局布线方法的流程示意图。本实施例中,该方法包括以下步骤:

在步骤401中,按照触发器两两捆绑成组的方式,约束EDA工具在目标集成电路设计任务中的触发器布局行为,得到初始集成电路布局。在步骤402中,根据初始集成电路布局进行时钟树综合,得到初始集成电路布局对应的时钟树。在步骤403中,按照初始集成电路布局的触发器分组信息,从时钟树包含的子时钟树中,确定多个违例,以及各违例对应的子时钟树。在步骤404中,若检测到相邻的存在违例的子时钟树之间具有偶数个违例,交换违例对应的触发器挂载位置,以在相邻的存在违例的子时钟树之间成对消除违例。在步骤405中,若检测到相邻的存在违例的子时钟树之间具有奇数个违例,将扇出未超出最大扇出约束的子时钟树,作为目标子时钟树,将违例对应的触发器挂载至目标子时钟树。在步骤406中,针对存在违例的子时钟树上挂载的未分组触发器,若检测到处于不同子时钟树上的未分组触发器之间的距离小于预设距离阈值,将至少两个未分组触发器捆绑成组,返回若检测到相邻的存在违例的子时钟树之间具有偶数个违例的步骤。在步骤407中,通过在相邻的存在违例的子时钟树之间进行违例修复后,针对存在违例的子时钟树的扇出超出最大扇出约束的情况,在存在违例的子时钟树中添加子时钟树分支,将存在违例的子时钟树中预设数量的触发器,挂载至子时钟树分支。需要说明的是,上述步骤的具体限定可以参见上文对一种集成电路布局布线方法的具体限定,在此不再赘述。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的集成电路布局布线方法的集成电路布局布线装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个集成电路布局布线装置实施例中的具体限定可以参见上文中对于集成电路布局布线方法的限定,在此不再赘述。

在一个实施例中,如图5所示,提供了一种集成电路布局布线装置,包括:

初始集成电路布局获取模块501,用于获取初始集成电路布局;所述初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局;所述触发器布局约束包括同一同步电路包含的至少两个触发器捆绑成组,所述同步电路中的触发器之间存在预设的位置约束关系;

违例确定模块502,用于从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树;所述违例用于表征相应的同步电路中所述至少两个触发器未处于同一子时钟树上;

目标集成电路布局得到模块503,用于按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局。

在一个实施例中,所述初始集成电路布局获取模块501包括:

触发器约束子模块,用于按照触发器两两捆绑成组的方式,约束EDA工具在所述目标集成电路设计任务中的触发器布局行为,得到所述初始集成电路布局。

在一个实施例中,所述违例确定模块502包括:

时钟树综合子模块,用于根据所述初始集成电路布局进行时钟树综合,得到所述初始集成电路布局对应的时钟树;

违例得到子模块,用于按照所述初始集成电路布局的触发器分组信息,从所述时钟树包含的子时钟树中,确定多个所述违例,以及各所述违例对应的子时钟树。

在一个实施例中,所述目标集成电路布局得到模块503包括:

偶数违例调整子模块,用于若检测到相邻的所述存在违例的子时钟树之间具有偶数个所述违例,交换所述违例对应的触发器挂载位置,以在相邻的所述存在违例的子时钟树之间成对消除所述违例;

奇数违例调整子模块,用于若检测到相邻的所述存在违例的子时钟树之间具有奇数个所述违例,将扇出未超出最大扇出约束的子时钟树,作为目标子时钟树,将所述违例对应的触发器挂载至所述目标子时钟树。

在一个实施例中,所述目标集成电路布局得到模块503包括:

距离判断子模块,用于针对所述存在违例的子时钟树上挂载的未分组触发器,若检测到处于不同子时钟树上的所述未分组触发器之间的距离小于预设距离阈值,将至少两个所述未分组触发器捆绑成组;

返回处理子模块,用于返回所述若检测到相邻的所述存在违例的子时钟树之间具有偶数个所述违例的步骤。

在一个实施例中,所述目标集成电路布局得到模块503包括:

分支添加子模块,用于通过在相邻的所述存在违例的子时钟树之间进行违例修复后,针对所述存在违例的子时钟树的扇出超出最大扇出约束的情况,在所述存在违例的子时钟树中添加子时钟树分支;

分支挂载子模块,用于将所述存在违例的子时钟树中预设数量的触发器,挂载至所述子时钟树分支。

上述集成电路布局布线装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种集成电路芯片,包括如一种集成电路布局布线方法的步骤布局的同步电路。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取初始集成电路布局;所述初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局;所述触发器布局约束包括同一同步电路包含的至少两个触发器捆绑成组,所述同步电路中的触发器之间存在预设的位置约束关系;

从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树;所述违例用于表征相应的同步电路中所述至少两个触发器未处于同一子时钟树上;

按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局。

在一个实施例中,计算机程序被处理器执行时还实现上述其他实施例中的集成电路布局布线方法的步骤。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

获取初始集成电路布局;所述初始集成电路布局为在预设的触发器布局约束下生成的针对目标集成电路设计任务的集成电路布局;所述触发器布局约束包括同一同步电路包含的至少两个触发器捆绑成组,所述同步电路中的触发器之间存在预设的位置约束关系;

从所述初始集成电路布局对应的时钟树中确定存在违例的子时钟树;所述违例用于表征相应的同步电路中所述至少两个触发器未处于同一子时钟树上;

按照预设的违例修复方式,调整各所述存在违例的子时钟树上挂载的触发器在所述初始集成电路布局中的连接关系,得到零时钟偏移的目标集成电路布局。

在一个实施例中,计算机程序被处理器执行时还实现上述其他实施例中的集成电路布局布线方法的步骤。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

相关技术
  • 一种集成电路芯片测试分选装置及其工作方法
  • 集成电路中时钟树布局流程方法和时钟树偏差补偿装置
  • 用于集成电路板的定位装置和用于包括这种定位装置的集成电路板的检测装置
  • 一种集成电路的布局布线方法、布局布线工具及集成电路
  • 布局布线方法、装置、同步电路以及集成电路芯片
技术分类

06120116488374