CN104182556B - 芯片的布局方法 - Google Patents
芯片的布局方法 Download PDFInfo
- Publication number
- CN104182556B CN104182556B CN201310192832.3A CN201310192832A CN104182556B CN 104182556 B CN104182556 B CN 104182556B CN 201310192832 A CN201310192832 A CN 201310192832A CN 104182556 B CN104182556 B CN 104182556B
- Authority
- CN
- China
- Prior art keywords
- logic
- clock signal
- macroblock
- chip
- unit
- 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.)
- Active
Links
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明涉及一种芯片的布局方法,该方法包括:获取逻辑单元时钟信号的总数M和种类L;在芯片的全局时钟信号个数N小于获取到的逻辑单元时钟信号的总数M时,根据逻辑单元时钟信号的种类L,对逻辑单元进行归类;根据每类逻辑单元的时钟信号,从L类逻辑单元中选取N类逻辑单元;将所述N个全局时钟信号分别作为所选取的N类逻辑单元的时钟信号;将其余的L‑N类逻辑单元分别构建为宏模块;将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号;根据所述宏模块,更新预设的网表;根据更新后的网表建立目标函数,计算出所述宏模块在芯片布局中的位置。本发明有效地保证了时钟安全问题,提高了芯片的处理性能。
Description
技术领域
本发明涉及布局算法,尤其涉及一种芯片的布局方法。
背景技术
目前,在现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)应用中,要求集成电路具有可编程或可配置的互连网络,逻辑门通过可配置的互连网络而彼此连接。作为独立芯片或系统中核心部分起作用的FPGA已经广泛被应用于大量微电子设备中。广义的FPGA的逻辑门的定义,不单指简单的与非门,也指具有可配置功能的组合逻辑与时序逻辑的逻辑单元或由多个逻辑单元互连而组成的逻辑块。
随着FPGA芯片规模的扩大,布局算法愈发显得关键和重要,主要面临两方面的挑战:如何应对大规模的布局电路和提高芯片性能。在芯片上全局时钟个数有限的情况下,如何保证在处理大规模电路寄存器具有很多时钟信号时不会出现时钟安全问题,成为保证芯片质量的关键。
目前工业界还没有提出很好的能够保证解决设计多时钟情况下时钟安全的方法。
发明内容
本发明的目的是提供一种在芯片上全局时钟个数有限的情况下,而大规模集成电路寄存器具有很多时钟信号时,解决时钟安全问题的芯片布局方法。
为实现上述目的,本发明提供了一种芯片布局的方法,该方法包括:
获取逻辑单元时钟信号的总数M和种类L;
在芯片的全局时钟信号个数N小于所述获取到的逻辑单元时钟信号的总数M时,根据所述逻辑单元时钟信号的种类L,对所述逻辑单元进行归类,每类逻辑单元具有相同的时钟信号;
根据每类逻辑单元的时钟信号,从L类逻辑单元中选取N类逻辑单元;将所述N个全局时钟信号分别作为所选取的N类逻辑单元的时钟信号;将其余的L-N类逻辑单元分别构建为宏模块;将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号;
根据所述宏模块,更新预设的网表;
根据更新后的网表建立目标函数,计算出所述宏模块在芯片布局中的位置。
在上述方法中,所述方法还包括:
在所述芯片的全局时钟信号个数N大于或等于所述获取到的所述逻辑单元时钟信号的总数M时,将所有逻辑单元直接构成所述芯片布局中的基本单位,采用全局时钟信号作为基本单位的时钟信号。
在上述方法中,所述根据所每类逻辑单元的时钟信号,从L类逻辑单元中选取N类逻辑单元包括:
按照每个种类时钟信号下的逻辑单元的个数,对每个种类时钟信号进行排序;依据排序结果,从L类逻辑单元中选取N类逻辑单元。
在上述方法中,所述根据所述构建的宏模块,更新预设的网表包括:
将预设的网表中组成宏模块的逻辑单元替换为宏模块,将所述基本单位和宏模块表示为节点;
根据所述节点之间的连接关系更新所述网表中每个逻辑单元各端口上的连线信息。
在上述方法中,所述根据更新后的网表建立目标函数,求解出所述宏模块在芯片布局中的位置之后还包括:
根据所述求得的宏模块在芯片布局中的位置和预设的宏模块的大小,依次确定宏模块中每个逻辑单元在芯片布局中的位置。
在上述方法中,所述方法还包括:
判断布局到芯片上的逻辑单元和宏模块之间是否有重叠,在有重叠的情况下,将所述宏模块或逻辑单元移动到重叠位置周围空闲的位置。
本发明通过将时钟信号下的逻辑单元个数较小的逻辑单元构建宏模块,有效地保证了时钟安全问题,从而提高了芯片性能;此外,因为本发明宏模块的构建,减少了时钟信号的占用量,因此可以应对大规模的布局电路。
附图说明
图1为本发明实施例的芯片布局方法的流程图;
图2为逻辑单元的基本组成结构图;
图3为一种网表的结构示意图;
图4为另一种网表的结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1为本发明实施例的芯片布局方法的流程图。如图1所示,本发明芯片的布局方法包括:
步骤101,将预设的用户电路进行综合以及库映射,得到基本单元。
在步骤101中,预设的用户电路是使用硬件描述语言编译而成的,将使用高层次的硬件描述语言(verilog)编译而成的用户电路综合成为低层次的门级电路;并将门级电路映射到基本单元中,基本单元可以包括三种基本形式:四输入的查找表和寄存器、单独四输入的查找表、单独的寄存器。查找表(LUT,Look-Up-Table)本质上就是一个随机存储器(RAM,Random Access Memory)。目前工业界FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。当用户通过原理图或硬件描述语言(HDL,HardwareDescription Language)描述了一个逻辑电路以后,开发软件PLD/FPGA会自动计算逻辑电路的所有可能的结果,并把结果提前写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
步骤102,将所述基本单元打包成逻辑单元。
打包处理的基本单位是查找表和寄存器,打包的目标主要是为了解决三个问题:第一,处理布局时的一些查找表级别的约束,例如:某两个查找表必须要放置在相邻的位置,某些特殊关系的查找表和寄存器不能放在一起,一般而言,约束越早处理,处理的难度相对越小;第二,打包时将一些小的逻辑单元组合成一个大的逻辑单元,减少了逻辑单元的数量级,这样可以大大减少后面全局布局时的求解规模,减少了布局时间;第三,可以提高芯片的面积使用效率,芯片上的可编辑可编程逻辑模块(PLB,Programmable Logic Block)和打包成的逻辑单元是相对应的,在打包时可以方便的控制每个逻辑单元的使用率,从而提高芯片面积的使用率。打包的过程主要分为两步:第一步,将查找表,寄存器,或者查找表和寄存器的组合组成基本单元;第二步,将基本单元组合成逻辑单元。
图2为逻辑单元的基本组成结构图,如图2所示,一个逻辑单元(LE,LogicElement)由4个基本的可编程逻辑元件(LP,Logic Parcel)、快速跳跃进位链输入(Carryskip in)、快速跳跃进位链输出(Carry skip out)及局部缓冲LBUF组成。每个LP中包括两个LUT4、1个LUT4C(带进位链的LUT4)和两个寄存器。1个LE中共计有12个LUT4和8个寄存器,LUT4和寄存器的比例为3:2,快速跳跃进位链输入和快速跳跃进位链输出用于实现快速跳跃进位链功能,LBUF用于产生逻辑单元中寄存器的控制信号时钟。
回到图1。步骤103,获取所述逻辑单元时钟信号的总数M和种类L。
在步骤103中,首先将各逻辑单元、每个逻辑单元的所有端口和以及每个逻辑单元的各个端口上的连线信息记录到预设的网表中,然后根据预设的网表,统计所有逻辑单元的个数,并通过分析各逻辑单元的时钟(clock)端口上连线的种类确定该逻辑单元对应的时钟信号的种类。
步骤104,在芯片的全局时钟信号个数N小于所述获取到的逻辑单元时钟信号的总数M时,根据所述逻辑单元时钟信号的种类L,对所述逻辑单元进行归类,每类逻辑单元具有相同的时钟信号。
在步骤104中,芯片的全局时钟信号个数是通过硬件固定的,是个确定值。具体地,用N表示芯片的全局时钟信号个数,用M表示获取到的逻辑单元时钟信号的个数。在芯片的全局时钟信号个数N小于所述获取到的逻辑单元时钟信号的总数M时,根据所述逻辑单元时钟信号的种类L,对所述逻辑单元进行归类,每类逻辑单元具有相同的时钟信号。按照每个种类时钟信号下的逻辑单元的个数,对每个种类时钟信号按照从大到小的顺序进行排序,将排序后的逻辑单元时钟信号表示为CLK1,CLK2,…,CLKm,用CLKi表示第i个种类时钟信号;依据排序结果,从L类逻辑单元中选取N类逻辑单元。将N个全局时钟信号分别作为所选取的N类逻辑单元的时钟信号。
如果芯片的全局时钟信号个数N大于或等于获取到的逻辑单元时钟信号的总数M时,将所有逻辑单元直接构成所述芯片布局中的基本单位,采用全局时钟信号作为基本单位的时钟信号。
步骤105,将其余的L-N类逻辑单元分别构建为宏模块,将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号。
具体地,依据步骤104的排序结果,对剩下的L-N类时钟信号下的逻辑单元分别构建L-N个宏模块,将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号。举例为,芯片上有16*32个数的PLB,整个PLB阵列可以划分为很多小区域,其中每2*8区域可以认为是一个小区域。每一个PLB小区域可以任意的选择4条信号线作为clock信号线,当宏模块布局到该PLB小区域时,可以选择其中1条信号线作为该宏模块的时钟信号。
步骤106,根据所述构建的宏模块,更新预设的网表。
预设的网表中包括用户设计的各逻辑单元、每个逻辑单元的所有端口和以及每个逻辑单元的各个端口上的连线信息,而在步骤105中对部分逻辑单元进行了宏模块的构建,因此需要根据构建的宏模块,更新预设的网表;即将预设的网表中组成宏模块的逻辑单元替换为宏模块,将所述基本单位和宏模块表示为节点;根据所述节点之间的连接关系更新所述网表中每个逻辑单元各端口上的连线信息。
步骤107,根据更新后的网表建立目标函数,求解出所述宏模块在芯片布局中的位置。图3为一种网表的结构示意图,图中网表中节点A分别与节点B、C和D连接。在将节点A、B、C和D布局到芯片上时,要求节点A和节点C之间的连线长度、节点A和节点B之间的连线长度、节点A和节点D之间的连线长度分别最小。以要求节点A和节点C之间的连线长度最小为例。图3中,把节点A和节点C之间的连线长度等效看成节点A和节点C两点组成的矩形框的半周长(HPWL),所以可以将连线长度的优化转化为节点A和节点C之间HPWL的优化。HPWL的增长趋势又和矩形边长的平方成正比,因此,又可以将HPWL的优化转化为矩形边长平方的优化。同理,节点A与节点B,节点A与节点D之间的连线长度也可按上述方式进行优化。最后,列出需要优化的最终的目标函数,如下公式所示:
其中,表示需要优化的目标函数,w1,w2和w3表示网表中的第一、二和三条连接线对应的权值,(xA,yA)表示第一、二和三条连接线的起始节点的坐标,(xB,yB)、(xC,yC)和(xD,yD)表示第一、二和三条连接线的终止节点的坐标。
在目标函数确定后,将对其中各节点坐标值进行求解。图4为另一种网表的结构示意图,该网表中包括节点A、B、C、D、E和F六个节点,连接关系如图所示;其中,C、D、E和F为网表中的固定节点,即为输入输出设备IO等,固定节点在芯片中的位置一般是固定的;A和B分别为需要布置到芯片中的逻辑单元或者宏模块;W为各条边上的权值,A-D和B-F之间的权值为2,其余为1。通常在布局时,X方向和Y方向分开考虑。首先考虑X方向。假设C和D的X坐标都为100,E和F的X坐标都为400,则根据公式1可列出如下目标函数:
对目标函数分别对XA和XB求偏导数,求得公式(3)和(4),如下所示:
构建矩阵方程为:
化简得:
求解矩阵方程得XA=120,XB=340。
同理,可求得节点A和节点B的纵坐标。
回到图1,步骤108,根据求得的宏模块在芯片布局中的位置和预设的宏模块的大小,依次确定宏模块中每个逻辑单元在芯片布局中的位置。
依照步骤107求得宏模块在芯片布局中的横纵坐标值,也就求得了宏模块在芯片布局中的位置,而宏模块的大小是预先设定的,可以为2*8个逻辑单元,也可以为4*4个逻辑单元,每个逻辑单元对应芯片中的一个PLB。具体地,如果求得某个宏模块在芯片中布局的位置为(1,2),那么如果宏模块的大小为2*8个逻辑单元时,在芯片上,位置(1,2)至(8,3)均设置为已被占用,且宏模块中总共包括16个逻辑单元,则各个逻辑单元在芯片布局中的位置依次为(1,2),(1,3),(2,2),(2,3),(3,2),(3,3),(4,2),(4,3),(5,2),(5,3),(6,2),(6,3),(7,2),(7,3),(8,2),(8,3)。
步骤109,判断布局到芯片上的逻辑单元和宏模块之间是否有重叠,在有重叠的情况下,将所述宏模块或逻辑单元移动到重叠位置周围空闲的位置。
具体地,在步骤107中求得宏模块A在芯片上的位置为(1,2),求得逻辑单元B在芯片中的位置为(4,2),则判定A和B重叠,以重叠位置为根节点,用广度优先搜索方法搜索重叠位置周围的空闲位置,如果位置(4,1)空闲,则将逻辑单元B移动至位置(4,1)。
综上,本发明在对芯片进行布局时,首先判断用户设计的逻辑单元的个数是否大于芯片的全局时钟个数,在大于的情况下,对逻辑单元按照时钟信号的种类进行归类,将归类处理后,包含逻辑单元个数较少的时钟信号下的逻辑单元构建宏模块,然后将芯片上的局部时钟信号作为宏模块的时钟信号,解决了在大规模布局电路中,全局时钟信号不够用的问题;然后采用全局布局算法,即综合考虑预设的网表中节点及节点之间的连接关系,构建目标函数,通过对目标函数求偏导数的方法求出各基本单元在芯片中的位置,从而确定了各基本单位在芯片中最优的位置;最后通过局部布局算法,对芯片上重叠的基本单位进行处理,合法化每一个基本的单位在芯片中的布局。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种芯片的布局方法,其特征在于,该方法包括:
获取逻辑单元时钟信号的总数M和种类L;
在芯片的全局时钟信号个数N小于所述获取到的逻辑单元时钟信号的总数M时,根据所述逻辑单元时钟信号的种类L,对所述逻辑单元进行归类,每类逻辑单元具有相同的时钟信号;
根据每类逻辑单元的时钟信号,从L类逻辑单元中选取N类逻辑单元;将所述N个全局时钟信号分别作为所选取的N类逻辑单元的时钟信号;将其余的L-N类逻辑单元分别构建为宏模块,将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号;
根据所述宏模块,更新预设的网表;
根据更新后的网表建立目标函数,计算出所述宏模块在芯片布局中的位置;
所述根据所述构建的宏模块,更新预设的网表包括:
将预设的网表中组成宏模块的逻辑单元替换为宏模块,将基本单位和宏模块表示为节点;
根据所述节点之间的连接关系更新所述网表中每个逻辑单元各端口上的连线信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述芯片的全局时钟信号个数N大于或等于所述获取到的所述逻辑单元时钟信号的总数M时,将所有逻辑单元直接构成所述芯片布局中的基本单位,采用全局时钟信号作为基本单位的时钟信号。
3.根据权利要求1所述的方法,其特征在于,所述根据所每类逻辑单元的时钟信号,从L类逻辑单元中选取N类逻辑单元包括:
按照每个种类时钟信号下的逻辑单元的个数,对每个种类时钟信号进行排序;依据排序结果,从L类逻辑单元中选取N类逻辑单元。
4.根据权利要求1所述的方法,其特征在于,所述根据更新后的网表建立目标函数,求解出所述宏模块在芯片布局中的位置之后还包括:
根据所述求得的宏模块在芯片布局中的位置和预设的宏模块的大小,依次确定宏模块中每个逻辑单元在芯片布局中的位置。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断布局到芯片上的逻辑单元和宏模块之间是否有重叠,在有重叠的情况下,将所述宏模块或逻辑单元移动到重叠位置周围空闲的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310192832.3A CN104182556B (zh) | 2013-05-22 | 2013-05-22 | 芯片的布局方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310192832.3A CN104182556B (zh) | 2013-05-22 | 2013-05-22 | 芯片的布局方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104182556A CN104182556A (zh) | 2014-12-03 |
CN104182556B true CN104182556B (zh) | 2018-01-05 |
Family
ID=51963594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310192832.3A Active CN104182556B (zh) | 2013-05-22 | 2013-05-22 | 芯片的布局方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104182556B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868431B (zh) * | 2015-01-22 | 2018-12-21 | 京微雅格(北京)科技有限公司 | 基于锚点的布线方法 |
CN106649899B (zh) * | 2015-10-29 | 2023-04-18 | 京微雅格(北京)科技有限公司 | 一种本地存储器布局方法 |
CN106649898B (zh) * | 2015-10-29 | 2019-12-13 | 京微雅格(北京)科技有限公司 | 一种加法器的打包布局方法 |
WO2017113058A1 (zh) * | 2015-12-28 | 2017-07-06 | 京微雅格(北京)科技有限公司 | 一种基于plb的fpga芯片布线方法 |
CN106934077B (zh) * | 2015-12-29 | 2020-06-16 | 京微雅格(北京)科技有限公司 | 一种精确的块进位链的时序分析方法 |
CN109086467B (zh) * | 2017-06-14 | 2023-05-02 | 上海复旦微电子集团股份有限公司 | 可编程逻辑器件的i/o单元布局方法及装置、介质及设备 |
CN113807043A (zh) * | 2021-09-17 | 2021-12-17 | 中国科学院上海微系统与信息技术研究所 | 时钟树综合和布局混合优化方法和装置、存储介质和终端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1280892C (zh) * | 2003-12-16 | 2006-10-18 | 复旦大学 | 可编程逻辑器件结构 |
US8381050B2 (en) * | 2009-11-25 | 2013-02-19 | International Business Machines Corporation | Method and apparatus for increased effectiveness of delay and transition fault testing |
-
2013
- 2013-05-22 CN CN201310192832.3A patent/CN104182556B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104182556A (zh) | 2014-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104182556B (zh) | 芯片的布局方法 | |
US7165230B2 (en) | Switch methodology for mask-programmable logic devices | |
US10979366B1 (en) | Optimization of multi-stage hierarchical networks for practical routing applications | |
CN103258066B (zh) | 逻辑簇的布局方法 | |
JP6250548B2 (ja) | 再構成可能な半導体装置の論理構成方法 | |
KR100274855B1 (ko) | 반도체 집적회로의 설계방법 및 자동설계장치 | |
CN114065694A (zh) | 一种fpga布线资源图压缩方法和全局布线模块 | |
Lin et al. | A fine-grain dynamically reconfigurable architecture aimed at reducing the FPGA-ASIC gaps | |
CN104572579B (zh) | 基于fpga解析型布局求解器的多选择区域动态划分方法 | |
JP2007520795A (ja) | テンプレートを利用したドメイン固有の再構成可能な論理 | |
CN106709119A (zh) | 一种fpga芯片布线方法 | |
CN107967372B (zh) | 一种fpga总体布局合法化方法 | |
Kutzschebauch et al. | Congestion aware layout driven logic synthesis | |
US20010049814A1 (en) | Automatic logic design supporting method and apparatus | |
Krasteva et al. | Reconfigurable networks on chip: DRNoC architecture | |
US20030039262A1 (en) | Hierarchical mux based integrated circuit interconnect architecture for scalability and automatic generation | |
US7707532B1 (en) | Techniques for grouping circuit elements into logic blocks | |
US6938232B2 (en) | Floorplanning apparatus deciding floor plan using logic seeds associated with hierarchical blocks | |
US7274215B2 (en) | Reconfigurable integrated circuits with scalable architecture including one or more adders | |
CN103259530B (zh) | 一种约束进位链的方法 | |
JP2001044284A (ja) | 半導体装置の設計方法 | |
CN112131813A (zh) | 基于端口交换技术的用于提升布线速度的fpga布线方法 | |
Ma et al. | General switch box modeling and optimization for FPGA routing architectures | |
CN109376384A (zh) | 一种fpga资源布局方法及装置 | |
US11405331B1 (en) | Optimization of multi-stage hierarchical networks for practical routing applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right |
Effective date of registration: 20180601 Granted publication date: 20180105 |
|
PP01 | Preservation of patent right | ||
PD01 | Discharge of preservation of patent |
Date of cancellation: 20210601 Granted publication date: 20180105 |
|
PD01 | Discharge of preservation of patent |