基于离散优化的数字集成电路布局方法及终端设备与流程

文档序号:18320502发布日期:2019-08-03 10:24阅读:282来源:国知局
基于离散优化的数字集成电路布局方法及终端设备与流程

本发明涉及数字集成电路技术领域,特别涉及一种基于离散优化的数字集成电路布局方法及终端设备。



背景技术:

数字集成电路(integratedcircuit,ic),也称为芯片,是一种基于半导体技术的微型电子器件。目前数字集成电路普遍采用基于标准单元(standardcell)的设计方式。标准单元是包含一定功能的简单电路模块,如触发器、门电路、加法器、缓冲器、寄存器、ram存储单元等。如图1所示,在布局中标准单元的高度一般设计成相同值,因此行高相同,宽度因为功能复杂度不同而不同,复杂度越高,需要的晶体管数量越多,宽度也越大。数字集成电路设计过程中,根据功能端口的位置,相应的标准单元聚集放置于端口附近,以便于连线。同时,标准单元之间存在内部连线,布局的结果直接影响这些连线的布通率。因此,随着应用需求和芯片集成度的提高,复杂功能的数字集成电路由数以万计,甚至数以千万计的标准单元构成,使得标准单元的布局是超大规模数字集成电路设计的关键问题。



技术实现要素:

鉴于现有技术的不足,本发明旨在提供一种基于离散优化的数字集成电路布局方法及终端设备。

本发明所采用的技术方案如下:

一种基于离散优化的数字集成电路布局方法,所述数字集成电路包括一基板,所述基板包括复数个标准单元,所述方法包括:

预先随机生成预设数量的标准单元位置离散编码的第一布局,并对各第一布局进行调整以得到去除布局冲突的各第二布局;

获取各第二布局的第一总连线长度,并根据所述第一总连线长度采用离散进化算法对各第二布局进行优化以得到各第三布局;

采用贪婪算法对各第三布局进行局部优化以得到第四布局,并分别计算各第四布局的第二总连线长度;

根据计算得到的所有第二总连线长度在所有第四布局中选取最优布局,并将根据所述最优布局将标准单元布局于基板上。

所述基于离散优化的数字集成电路布局方法,其中,所述预先随机生成预设数量的标准单元位置离散编码的第一布局,并对各第一布局进行调整以得到去除布局冲突的各第二布局具体包括:

预先随机生成预设数量的标准单元位置离散编码的第一布局;

对第一布局中任意两个标准单元ci≠cj,判断ci和cj是否满足当xi=xj时,yi=yj,其中,xi,xj为第一布局中标准单元的列位置,yi,yj为第一布局中标准单元的行位置;

当满足时,将第yi行中位于第xj列的标准单元右移一列,并重复判断过程直至第一布局中不包含布局冲突以得到第二布局。

所述基于离散优化的数字集成电路布局方法,其中,所述预先随机生成预设数量的标准单元位置离散编码的第一布局具体包括:

将标准单元的布局编码为预设数量n的2m维的向量pi,其中,m为标准单元的数量,i=1,2,...,n;

将所述向量pi逆向编号以得到标准单元的位置集合,并根据所述位置集合确定所述第一布局。

所述基于离散优化的数字集成电路布局方法,其中,所述将所述向量pi逆向编号以得到标准单元的位置集合,并根据所述位置集合确定所述第一布局具体包括:

取pi中前m个值与后m个值以形成子矢量pi={px|py},其中px与py中的数值一一对应;

对py中的数值进行排序以形成行位置矢量y,将px中数值满足行位置相等的数值归入同一子矢量pxy;

对每个pxy中的数值进行排序以形成列位置子矢量xy,并将所有xy合并为列位置矢量x,以得到所述第一布局。

所述基于离散优化的数字集成电路布局方法,其中,所述获取各第二布局的第一总连线长度,并根据所述第一总连线长度采用离散进化算法对各第二布局进行优化以得到各第三布局具体包括:

获取预设的连接线集合,并根据所述连接线集合计算各第二布局的第一总连接线长度;

根据所述第一总连接线长度确定第二布局的适应度函数值;

基于所述适应度函数值采用离散进化算法对各第二布局进行优化以得到各第三布局。

所述基于离散优化的数字集成电路布局方法,其中,所述采用贪婪算法对各第三布局进行局部优化以得到第四布局,并分别计算各第四布局的第二总连线长度具体包括:

对于第三布局中的任意标准单元ci(xi,yi),根据预设规则计算ci的高行单元联通度dupper(ci)和低行单元联通度dlower(ci);

当dupper(ci)>dlower(ci)时,则计算将ci上移一行后第三布局的第三总连线长度,若第三总连线长度小于第二总连线长度,则将ci上移一行并重复计算高行单元联通度dupper(ci)和低行单元联通度dlower(ci),否则计算高列单元联通度dright(ci)和低列单元联通度dleft(ci);

当dupper(ci)<dlower(ci),则计算将ci下移一行后第三布局的第三总连线长度,若第三总连线长度小于第二总连线长度,则将ci下移一行并重复计算高行单元联通度dupper(ci)和低行单元联通度dlower(ci),否则计算高列单元联通度dright(ci)和低列单元联通度dleft(ci);

当dright(ci)>dleft(ci)时,计算将ci交换至右一列后第三布局的第三总连线长度,若第三总连线长度小于第二总连线长度,则将ci与其右一列的标准单元交换位置并重复计算高列单元联通度dright(ci)和低列单元联通度dleft(ci),否则转到下一个标准单元直至所有标准单搜索完毕。

当dright(ci)<dleft(ci),计算将ci交换至左一列后第三布局的第三总连线长度,若第三总连线长度小于第二总连线长度,则将ci与其左一列的标准单元交换位置并重复计算高列单元联通度dright(ci)和低列单元联通度dleft(ci),否则转到下一个标准单元直至所有标准单搜索完毕以得到第四布局,并计算各第四布局的第二总连线长度。

所述基于离散优化的数字集成电路布局方法,其中,所述根据计算得到的所有第二总连线长度在所有第四布局中选取最优布局,并将根据所述最优布局将标准单元布局于基板上具体包括:

获取所述第四布局对应的迭代次数,并将所述迭代次数与预设迭代次数进行比较;

当所述迭代次数等于所述预设迭代次数时,根据计算得到的所有第二总连线长度在所有第四布局中选取最优布局,并将根据所述最优布局将标准单元布局于基板。

所述基于离散优化的数字集成电路布局方法,其中,所述根据计算得到的所有第二总连线长度在所有第四布局中选取最优布局,并将根据所述最优布局将标准单元布局于基板上还包括:当所述迭代次数小于所述预设迭代次数时,将所述第四布局作为第一布局,并返回至第一布局进行调整的步骤直至迭代次数达到预设迭代次数。

一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的基于离散优化的数字集成电路布局方法中的步骤。

一种终端设备,其包括:处理器、存储器及通信总线;所述存储器上存储有可被所述处理器执行的计算机可读程序;

所述通信总线实现处理器和存储器之间的连接通信;

所述处理器执行所述计算机可读程序时实现如上任一所述的基于离散优化的数字集成电路布局方法中的步骤。

有益效果:与现有技术相比,本发明提供了一种基于离散优化的数字集成电路布局方法及终端设备,所述方法包括:预先随机生成预设数量的标准单元位置离散编码的第一布局,并对各第一布局进行调整以得到去除布局冲突的各第二布局;获取各第二布局的第一总连线长度,并根据所述第一总连线长度采用离散进化算法对各第二布局进行优化以得到各第三布局;采用贪婪算法对各第三布局进行局部优化以得到第四布局,并分别计算各第四布局的第二总连线长度;根据计算得到的所有第二总连线长度在所有第四布局中选取最优布局,并将根据所述最优布局将标准单元布局于基板上。本发明通过对标准单元位置进行离散编码,并使用离散进化算法对布局进行优化有效提升了优化布局的性能,并简化了布局问题的复杂度。

附图说明

图1为数字集成电路标准单元布局示例图。

图2为本发明提供的基于离散优化的数字集成电路布局方法的流程图。

图3为本发明提供的基于离散优化的数字集成电路布局方法中逆向编码为布局位置的流程图示意图。

图4为本发明提供的基于离散优化的数字集成电路布局方法中贪婪算法对行比较的流程图示意图。

图5为本发明提供的基于离散优化的数字集成电路布局方法中贪婪算法对列比较的流程图示意图。

图6为本发明提供的一种应用自启动的控制系统较佳实施例的结构原理图。

具体实施方式

本发明提供一种基于离散优化的数字集成电路布局方法及终端设备,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

下面结合附图,通过对实施例的描述,对发明内容作进一步说明。

本实施例提供了一种基于离散优化的数字集成电路布局方法,如图2所示,所述方法包括:

s10、预先随机生成预设数量的标准单元位置离散编码的第一布局,并对各第一布局进行调整以得到去除布局冲突的各第二布局。

具体地,所述数字集成电路包括基板,所述基板的面积为s=h×w,h为基板的高度,w为基板的宽度。所述基板上布置复数个标准单元,所述标准单元的集合记为c={c1,c2,...,cm},所述标准单元的数量为m个,所述数字集成电路包含的连接线集合记为e={e1,e2,...,ep},所述连接线的数量为p条。其中,所述连接线集合中的每天连接线连接两个标准单元,或者两个一个标准单元与其对应的接口。

进一步,在确定数字集成电路配置的标准单元和连接线后,随机为所述数字集成电路生成预设数量的第一布局,其中,所述第一布局中的各标准单元的位置采用离散编码。也就是说,所述第一布局中的各标准单元在所述第一布局中的位置为一个二维坐标,分别为所述标准单元在所述第一布局所处的行位置和列位置,其中,各标准单元对应的行位置是采用离散编码,各标准单元对应的列位置也是采用离散编码。

在本实施例中,所述预先随机生成预设数量的标准单元位置离散编码的第一布局,并对各第一布局进行调整以得到去除布局冲突的各第二布局具体包括:

s21、预先随机生成预设数量的标准单元位置离散编码的第一布局;

s22、对第一布局中任意两个标准单元ci≠cj,判断ci和cj是否满足当xi=xj时,yi=yj,其中,xi,xj为第一布局中标准单元的列位置,yi,yj为第一布局中标准单元的行位置;

s23、当满足时,将第yi行中位于第xj列的标准单元右移一列,并重复判断过程直至第一布局中不包含布局冲突以得到第二布局。

具体地,所述第一布局中的标准单元位置离散编码可以是先随机生成一个2m维的向量,在对所述2m维的向量进行逆向编码获取。相应的,所述预先随机生成预设数量的标准单元位置离散编码的第一布局具体包括:

将标准单元的布局编码为预设数量n的2m维的向量pi,其中,m为标准单元的数量,i=1,2,...,n;

将所述向量pi逆向编号以得到标准单元的位置集合,并根据所述位置集合确定所述第一布局。

具体地,所述所述2m维的向量pi可以表示为pi={rx1,rx2,....,rxm,ry1,ry2,...,rym},所述向量pi的值为随机生成服从均匀分布的正整数,按照所方式随机生成预设数量n各向量pi,即得到数字集成电路布局的进化种群ps={p1,p2,...,pn}。在获取到向量pi,可以通过对向量pi进行逆向编号,之后根据所述逆向编码确定标准单元的位置集合。相应的,如图3所示,所述将所述向量pi逆向编号以得到标准单元的位置集合,并根据所述位置集合确定所述第一布局具体包括:

取pi中前m个值与后m个值以形成子矢量pi={px|py},其中px与py中的数值一一对应;

对py中的数值进行排序以形成行位置矢量y,将px中数值满足行位置相等的数值归入同一子矢量pxy

对每个pxy中的数值进行排序以形成列位置子矢量xy,并将所有xy合并为列位置矢量x,以得到所述第一布局。

具体地,对于ps中的任一pi,提取pi中前m个值和后m个值,将所述前m个值作为px={rx1,rx2,....,rxm},后m个值作为py={ry1,ry2,...,rym},这样所述px和py形成子矢量pi={px|py},其中,px与py中的数值按照在排列顺序一一对应,用于编码m个标准单元的布局位置。在获取到pi={px|py}后,对py中的数值进行排序以形成行位置矢量y:y={yi=rank(ryi),ryi∈py,特别有:当ryi=ryj时,rank(ryi)=rank(ryj)。

进一步,在获取到行位置矢量后,对于任意rxi,rxj∈px,若其具有相同行数yi=yj,则将所述rxi,rxj归入同一子矢量pxy={rxi,rxj,....},即pxy中的各元素的行数相等,依次类推可以得到若干个pxy,pxy的数量为y不同行数的行数。在获取到pxy后,对pxy中的数值进行排序形成列位置子矢量xy,xy={xi=rank(rxi),rxi∈pxy},特别有,当rxi=rxj,yi=yj时,rank(rxi)=rank(rxj)。最后,将全部xy合并为列位置矢量x,这样得到pi的位置集合{x,y},从而根据所述位置集合{x,y}得到第一布局,其中,所述第一布局中各标准单元不包含缝隙。

s20、获取各第二布局的第一总连线长度,并根据所述第一总连线长度采用离散进化算法对各第二布局进行优化以得到各第三布局。

具体地,所述第一总连线长度指的是第二布局各连接线的总长度,在获取第一总连线长度时,可以采用半周长法计算第二布局包含的p条连接线中各连接线的长度,在根据跟连接线的长度计算第一总连线长度,在获取到第一总连线长度后,以所述第一总连线长度作为适应度函数值,并基于所述适应度函数值采用离散进化算法优化各第二布局,其中,所述离散进化算法可以为带约束的离散差分进化(discretedifferentialevolution,dde)与离散粒子群优化算法(discreteparticleswarmoptimization,dpso)等,所述离散进化算法优化的约束条件可以为:

max(y)×hcell≤hand

其中,hcell为标准单元的统一高度,wx,y为在第y∈y行中第x个标准单元的宽度,y表示m各标准单元的行位置。

示例性地,所述获取各第二布局的第一总连线长度,并根据所述第一总连线长度采用离散进化算法对各第二布局进行优化以得到各第三布局具体包括:

s21、获取预设的连接线集合,并根据所述连接线集合计算各第二布局的第一总连接线长度;

s22、根据所述第一总连接线长度确定第二布局的适应度函数值;

s23、基于所述适应度函数值采用离散进化算法对各第二布局进行优化以得到各第三布局。

具体地,所述总连接线长度作为适应度函数值,即适应度函数值可以表示为:

fitness(pi)=twl({x,y}i)

其中,所述其中,ei表示第二布局中各连接线的长度。

s30、采用贪婪算法对各第三布局进行局部优化以得到第四布局,并分别计算各第四布局的第二总连线长度。

具体地,在获取到第三布局后,可以对以总连接线长最小有目标,采用贪婪算法对第三布局进行调整,以得到总连接线长最小的第四布局。其中,如图4和5所示,所述采用贪婪算法对各第三布局进行局部优化以得到第四布局,并分别计算各第四布局的第二总连线长度具体包括:

对于第三布局中的任意标准单元ci(xi,yi),根据预设规则计算ci的高行单元联通度dupper(ci)和低行单元联通度dlower(ci);

当dupper(ci)>dlower(ci)时,则计算将ci上移一行后第三布局的第三总连线长度,若第三总连线长度小于第二总连线长度,则将ci上移一行并重复计算高行单元联通度dupper(ci)和低行单元联通度dlower(ci),否则计算高列单元联通度dright(ci)和低列单元联通度dleft(ci);

当dupper(ci)<dlower(ci),则计算将ci下移一行后第三布局的第三总连线长度,若第三总连线长度小于第二总连线长度,则将ci下移一行并重复计算高行单元联通度dupper(ci)和低行单元联通度dlower(ci),否则计算高列单元联通度dright(ci)和低列单元联通度dleft(ci);

当dright(ci)>dleft(ci)时,计算将ci交换至右一列后第三布局的第三总连线长度,若第三总连线长度小于第二总连线长度,则将ci与其右一列的标准单元交换位置并重复计算高列单元联通度dright(ci)和低列单元联通度dleft(ci),否则转到下一个标准单元直至所有标准单搜索完毕。

当dright(ci)<dleft(ci),计算将ci交换至左一列后第三布局的第三总连线长度,若第三总连线长度小于第二总连线长度,则将ci与其左一列的标准单元交换位置并重复计算高列单元联通度dright(ci)和低列单元联通度dleft(ci),否则转到下一个标准单元直至所有标准单搜索完毕以得到第四布局,并计算各第四布局的第二总连线长度。

具体地,任意在第三布局中的位置为{xi,yj}的标准单元ci(xi,yi),所述标准单元的高行单元联通度为:

所述标准单元的述低行单元联通度为:

其中,ek,i为标准单元ck与ci连接线长度

任意在第三布局中的位置为{xi,yj}的标准单元ci(xi,yi),所述标准单元的高列单元联通度为:

所述标准单元的低列单元联通度为:

其中,ek,i为标准单元ck与ci连接线长度。

s40、根据计算得到的所有第二总连线长度在所有第四布局中选取最优布局,并将根据所述最优布局将标准单元布局于基板上。

具体地,在获取到第四布局后,计算所有第四布局的第二总连线长度,并选取第二总连线长度小的第四布局作为最优布局,这样得到数字集成电路的布局。但是,在实际应用中,为了提高数字集成电路布局的准确性,在获取到所有第四布局后,可以将第四布局作为第一布局重复优化过程,以得到更加优化的第四布局。相应的,所述根据计算得到的所有第二总连线长度在所有第四布局中选取最优布局,并将根据所述最优布局将标准单元布局于基板上具体包括:

获取所述第四布局对应的迭代次数,并将所述迭代次数与预设迭代次数进行比较;

当所述迭代次数等于所述预设迭代次数时,根据计算得到的所有第二总连线长度在所有第四布局中选取最优布局,并将根据所述最优布局将标准单元布局于基板。

当所述迭代次数小于所述预设迭代次数时,将所述第四布局作为第一布局,并返回至第一布局进行调整的步骤直至迭代次数达到预设迭代次数。

具体地,所述迭代次数为预先设置,例如,所述迭代次数为10等。

基于上述基于离散优化的数字集成电路布局方法,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的基于离散优化的数字集成电路布局方法中的步骤。

基于上述基于离散优化的数字集成电路布局方法,本发明还提供了一种终端设备,如图6所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(communicationsinterface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的方法。

此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。

存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器20通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。

存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。

此外,上述存储介质以及终端设备中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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