《芯片的布局方法.pdf》由会员分享,可在线阅读,更多相关《芯片的布局方法.pdf(10页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104182556A43申请公布日20141203CN104182556A21申请号201310192832322申请日20130522G06F17/5020060171申请人京微雅格(北京)科技有限公司地址100083北京市海淀区学院路30号天工大厦B座20层72发明人虞健呙超蒋中华刘桂林刘明74专利代理机构北京亿腾知识产权代理事务所11309代理人陈霁54发明名称芯片的布局方法57摘要本发明涉及一种芯片的布局方法,该方法包括获取逻辑单元时钟信号的总数M和种类L;在芯片的全局时钟信号个数N小于获取到的逻辑单元时钟信号的总数M时,根据逻辑单元时钟信号的种类L,对逻辑单元进行归。
2、类;根据每类逻辑单元的时钟信号,从L类逻辑单元中选取N类逻辑单元;将所述N个全局时钟信号分别作为所选取的N类逻辑单元的时钟信号;将其余的LN类逻辑单元分别构建为宏模块;将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号;根据所述宏模块,更新预设的网表;根据更新后的网表建立目标函数,计算出所述宏模块在芯片布局中的位置。本发明有效地保证了时钟安全问题,提高了芯片的处理性能。51INTCL权利要求书1页说明书5页附图3页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书5页附图3页10申请公布号CN104182556ACN104182556A1/1页。
3、21一种芯片的布局方法,其特征在于,该方法包括获取逻辑单元时钟信号的总数M和种类L;在芯片的全局时钟信号个数N小于所述获取到的逻辑单元时钟信号的总数M时,根据所述逻辑单元时钟信号的种类L,对所述逻辑单元进行归类,每类逻辑单元具有相同的时钟信号;根据每类逻辑单元的时钟信号,从L类逻辑单元中选取N类逻辑单元;将所述N个全局时钟信号分别作为所选取的N类逻辑单元的时钟信号;将其余的LN类逻辑单元分别构建为宏模块,将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号;根据所述宏模块,更新预设的网表;根据更新后的网表建立目标函数,计算出所述宏模块在芯片布局中的位置。2根据权利。
4、要求1所述的方法,其特征在于,所述方法还包括在所述芯片的全局时钟信号个数N大于或等于所述获取到的所述逻辑单元时钟信号的总数M时,将所有逻辑单元直接构成所述芯片布局中的基本单位,采用全局时钟信号作为基本单位的时钟信号。3根据权利要求1所述的方法,其特征在于,所述根据所每类逻辑单元的时钟信号,从L类逻辑单元中选取N类逻辑单元包括按照每个种类时钟信号下的逻辑单元的个数,对每个种类时钟信号进行排序;依据排序结果,从L类逻辑单元中选取N类逻辑单元。4根据权利要求1所述的方法,其特征在于,所述根据所述构建的宏模块,更新预设的网表包括将预设的网表中组成宏模块的逻辑单元替换为宏模块,将所述基本单位和宏模块表示。
5、为节点;根据所述节点之间的连接关系更新所述网表中每个逻辑单元各端口上的连线信息。5根据权利要求1所述的方法,其特征在于,所述根据更新后的网表建立目标函数,求解出所述宏模块在芯片布局中的位置之后还包括根据所述求得的宏模块在芯片布局中的位置和预设的宏模块的大小,依次确定宏模块中每个逻辑单元在芯片布局中的位置。6根据权利要求1所述的方法,其特征在于,所述方法还包括判断布局到芯片上的逻辑单元和宏模块之间是否有重叠,在有重叠的情况下,将所述宏模块或逻辑单元移动到重叠位置周围空闲的位置。权利要求书CN104182556A1/5页3芯片的布局方法技术领域0001本发明涉及布局算法,尤其涉及一种芯片的布局方法。
6、。背景技术0002目前,在现场可编程逻辑门阵列FIELDPROGRAMMABLEGATEARRAY,FPGA应用中,要求集成电路具有可编程或可配置的互连网络,逻辑门通过可配置的互连网络而彼此连接。作为独立芯片或系统中核心部分起作用的FPGA已经广泛被应用于大量微电子设备中。广义的FPGA的逻辑门的定义,不单指简单的与非门,也指具有可配置功能的组合逻辑与时序逻辑的逻辑单元或由多个逻辑单元互连而组成的逻辑块。0003随着FPGA芯片规模的扩大,布局算法愈发显得关键和重要,主要面临两方面的挑战如何应对大规模的布局电路和提高芯片性能。在芯片上全局时钟个数有限的情况下,如何保证在处理大规模电路寄存器具有。
7、很多时钟信号时不会出现时钟安全问题,成为保证芯片质量的关键。0004目前工业界还没有提出很好的能够保证解决设计多时钟情况下时钟安全的方法。发明内容0005本发明的目的是提供一种在芯片上全局时钟个数有限的情况下,而大规模集成电路寄存器具有很多时钟信号时,解决时钟安全问题的芯片布局方法。0006为实现上述目的,本发明提供了一种芯片布局的方法,该方法包括0007获取逻辑单元时钟信号的总数M和种类L;0008在芯片的全局时钟信号个数N小于所述获取到的逻辑单元时钟信号的总数M时,根据所述逻辑单元时钟信号的种类L,对所述逻辑单元进行归类,每类逻辑单元具有相同的时钟信号;0009根据每类逻辑单元的时钟信号,。
8、从L类逻辑单元中选取N类逻辑单元;将所述N个全局时钟信号分别作为所选取的N类逻辑单元的时钟信号;将其余的LN类逻辑单元分别构建为宏模块;将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号;0010根据所述宏模块,更新预设的网表;0011根据更新后的网表建立目标函数,计算出所述宏模块在芯片布局中的位置。0012在上述方法中,所述方法还包括0013在所述芯片的全局时钟信号个数N大于或等于所述获取到的所述逻辑单元时钟信号的总数M时,将所有逻辑单元直接构成所述芯片布局中的基本单位,采用全局时钟信号作为基本单位的时钟信号。0014在上述方法中,所述根据所每类逻辑单元的时钟。
9、信号,从L类逻辑单元中选取N类逻辑单元包括0015按照每个种类时钟信号下的逻辑单元的个数,对每个种类时钟信号进行排序;依说明书CN104182556A2/5页4据排序结果,从L类逻辑单元中选取N类逻辑单元。0016在上述方法中,所述根据所述构建的宏模块,更新预设的网表包括0017将预设的网表中组成宏模块的逻辑单元替换为宏模块,将所述基本单位和宏模块表示为节点;0018根据所述节点之间的连接关系更新所述网表中每个逻辑单元各端口上的连线信息。0019在上述方法中,所述根据更新后的网表建立目标函数,求解出所述宏模块在芯片布局中的位置之后还包括0020根据所述求得的宏模块在芯片布局中的位置和预设的宏模。
10、块的大小,依次确定宏模块中每个逻辑单元在芯片布局中的位置。0021在上述方法中,所述方法还包括0022判断布局到芯片上的逻辑单元和宏模块之间是否有重叠,在有重叠的情况下,将所述宏模块或逻辑单元移动到重叠位置周围空闲的位置。0023本发明通过将时钟信号下的逻辑单元个数较小的逻辑单元构建宏模块,有效地保证了时钟安全问题,从而提高了芯片性能;此外,因为本发明宏模块的构建,减少了时钟信号的占用量,因此可以应对大规模的布局电路。附图说明0024图1为本发明实施例的芯片布局方法的流程图;0025图2为逻辑单元的基本组成结构图;0026图3为一种网表的结构示意图;0027图4为另一种网表的结构示意图。具体实。
11、施方式0028下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。0029图1为本发明实施例的芯片布局方法的流程图。如图1所示,本发明芯片的布局方法包括0030步骤101,将预设的用户电路进行综合以及库映射,得到基本单元。0031在步骤101中,预设的用户电路是使用硬件描述语言编译而成的,将使用高层次的硬件描述语言(VERILOG)编译而成的用户电路综合成为低层次的门级电路;并将门级电路映射到基本单元中,基本单元可以包括三种基本形式四输入的查找表和寄存器、单独四输入的查找表、单独的寄存器。查找表(LUT,LOOKUPTABLE本质上就是一个随机存储器(RAM,RANDOMACCESSM。
12、EMORY)。目前工业界FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16X1的RAM。当用户通过原理图或硬件描述语言(HDL,HARDWAREDESCRIPTIONLANGUAGE)描述了一个逻辑电路以后,开发软件PLD/FPGA会自动计算逻辑电路的所有可能的结果,并把结果提前写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。0032步骤102,将所述基本单元打包成逻辑单元。0033打包处理的基本单位是查找表和寄存器,打包的目标主要是为了解决三个问题说明书CN104182556A3/5页5第一,处理布局时的一。
13、些查找表级别的约束,例如某两个查找表必须要放置在相邻的位置,某些特殊关系的查找表和寄存器不能放在一起,一般而言,约束越早处理,处理的难度相对越小;第二,打包时将一些小的逻辑单元组合成一个大的逻辑单元,减少了逻辑单元的数量级,这样可以大大减少后面全局布局时的求解规模,减少了布局时间;第三,可以提高芯片的面积使用效率,芯片上的可编辑可编程逻辑模块(PLB,PROGRAMMABLELOGICBLOCK)和打包成的逻辑单元是相对应的,在打包时可以方便的控制每个逻辑单元的使用率,从而提高芯片面积的使用率。打包的过程主要分为两步第一步,将查找表,寄存器,或者查找表和寄存器的组合组成基本单元;第二步,将基本。
14、单元组合成逻辑单元。0034图2为逻辑单元的基本组成结构图,如图2所示,一个逻辑单元(LE,LOGICELEMENT)由4个基本的可编程逻辑元件(LP,LOGICPARCEL)、快速跳跃进位链输入(CARRYSKIPIN)、快速跳跃进位链输出(CARRYSKIPOUT)及局部缓冲LBUF组成。每个LP中包括两个LUT4、1个LUT4C(带进位链的LUT4)和两个寄存器。1个LE中共计有12个LUT4和8个寄存器,LUT4和寄存器的比例为32,快速跳跃进位链输入和快速跳跃进位链输出用于实现快速跳跃进位链功能,LBUF用于产生逻辑单元中寄存器的控制信号时钟。0035回到图1。步骤103,获取所述逻。
15、辑单元时钟信号的总数M和种类L。0036在步骤103中,首先将各逻辑单元、每个逻辑单元的所有端口和以及每个逻辑单元的各个端口上的连线信息记录到预设的网表中,然后根据预设的网表,统计所有逻辑单元的个数,并通过分析各逻辑单元的时钟(CLOCK)端口上连线的种类确定该逻辑单元对应的时钟信号的种类。0037步骤104,在芯片的全局时钟信号个数N小于所述获取到的逻辑单元时钟信号的总数M时,根据所述逻辑单元时钟信号的种类L,对所述逻辑单元进行归类,每类逻辑单元具有相同的时钟信号。0038在步骤104中,芯片的全局时钟信号个数是通过硬件固定的,是个确定值。具体地,用N表示芯片的全局时钟信号个数,用M表示获取。
16、到的逻辑单元时钟信号的个数。在芯片的全局时钟信号个数N小于所述获取到的逻辑单元时钟信号的总数M时,根据所述逻辑单元时钟信号的种类L,对所述逻辑单元进行归类,每类逻辑单元具有相同的时钟信号。按照每个种类时钟信号下的逻辑单元的个数,对每个种类时钟信号按照从大到小的顺序进行排序,将排序后的逻辑单元时钟信号表示为CLK1,CLK2,,CLKM,用CLKI表示第I个种类时钟信号;依据排序结果,从L类逻辑单元中选取N类逻辑单元。将N个全局时钟信号分别作为所选取的N类逻辑单元的时钟信号。0039如果芯片的全局时钟信号个数N大于或等于获取到的逻辑单元时钟信号的总数M时,将所有逻辑单元直接构成所述芯片布局中的基。
17、本单位,采用全局时钟信号作为基本单位的时钟信号。0040步骤105,将其余的LN类逻辑单元分别构建为宏模块,将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号。0041具体地,依据步骤104的排序结果,对剩下的LN类时钟信号下的逻辑单元分别构建LN个宏模块,将所述宏模块布局到芯片上时,选择所在区域的一个局部时钟信号作为所述宏模块的时钟信号。举例为,芯片上有1632个数的PLB,整个PLB阵列可以划分为很多小区域,其中每28区域可以认为是一个小区域。每一个PLB小区域可以任意的选择4说明书CN104182556A4/5页6条信号线作为CLOCK信号线,当宏模块布局。
18、到该PLB小区域时,可以选择其中1条信号线作为该宏模块的时钟信号。0042步骤106,根据所述构建的宏模块,更新预设的网表。0043预设的网表中包括用户设计的各逻辑单元、每个逻辑单元的所有端口和以及每个逻辑单元的各个端口上的连线信息,而在步骤105中对部分逻辑单元进行了宏模块的构建,因此需要根据构建的宏模块,更新预设的网表;即将预设的网表中组成宏模块的逻辑单元替换为宏模块,将所述基本单位和宏模块表示为节点;根据所述节点之间的连接关系更新所述网表中每个逻辑单元各端口上的连线信息。0044步骤107,根据更新后的网表建立目标函数,求解出所述宏模块在芯片布局中的位置。图3为一种网表的结构示意图,图中。
19、网表中节点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之间的连线长度也可按上述方式进行优化。最后,列出需要优化的最终的目标函数,如下公式。
20、所示0045其中,表示需要优化的目标函数,W1,W2和W3表示网表中的第一、二和三条连接线对应的权值,(XA,YA)表示第一、二和三条连接线的起始节点的坐标,(XB,YB)、(XC,YC)和(XD,YD)表示第一、二和三条连接线的终止节点的坐标。0046在目标函数确定后,将对其中各节点坐标值进行求解。图4为另一种网表的结构示意图,该网表中包括节点A、B、C、D、E和F六个节点,连接关系如图所示;其中,C、D、E和F为网表中的固定节点,即为输入输出设备IO等,固定节点在芯片中的位置一般是固定的;A和B分别为需要布置到芯片中的逻辑单元或者宏模块;W为各条边上的权值,AD和BF之间的权值为2,其余为。
21、1。通常在布局时,X方向和Y方向分开考虑。首先考虑X方向。假设C和D的X坐标都为100,E和F的X坐标都为400,则根据公式1可列出如下目标函数00470048对目标函数分别对XA和XB求偏导数,求得公式(3)和(4),如下所示00490050说明书CN104182556A5/5页70051构建矩阵方程为00520053化简得00540055求解矩阵方程得XA120,XB340。0056同理,可求得节点A和节点B的纵坐标。0057回到图1,步骤108,根据求得的宏模块在芯片布局中的位置和预设的宏模块的大小,依次确定宏模块中每个逻辑单元在芯片布局中的位置。0058依照步骤107求得宏模块在芯片布。
22、局中的横纵坐标值,也就求得了宏模块在芯片布局中的位置,而宏模块的大小是预先设定的,可以为28个逻辑单元,也可以为44个逻辑单元,每个逻辑单元对应芯片中的一个PLB。具体地,如果求得某个宏模块在芯片中布局的位置为(1,2),那么如果宏模块的大小为28个逻辑单元时,在芯片上,位置(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)。0059步骤109,。
23、判断布局到芯片上的逻辑单元和宏模块之间是否有重叠,在有重叠的情况下,将所述宏模块或逻辑单元移动到重叠位置周围空闲的位置。0060具体地,在步骤107中求得宏模块A在芯片上的位置为(1,2),求得逻辑单元B在芯片中的位置为(4,2),则判定A和B重叠,以重叠位置为根节点,用广度优先搜索方法搜索重叠位置周围的空闲位置,如果位置(4,1)空闲,则将逻辑单元B移动至位置(4,1)。0061综上,本发明在对芯片进行布局时,首先判断用户设计的逻辑单元的个数是否大于芯片的全局时钟个数,在大于的情况下,对逻辑单元按照时钟信号的种类进行归类,将归类处理后,包含逻辑单元个数较少的时钟信号下的逻辑单元构建宏模块,然。
24、后将芯片上的局部时钟信号作为宏模块的时钟信号,解决了在大规模布局电路中,全局时钟信号不够用的问题;然后采用全局布局算法,即综合考虑预设的网表中节点及节点之间的连接关系,构建目标函数,通过对目标函数求偏导数的方法求出各基本单元在芯片中的位置,从而确定了各基本单位在芯片中最优的位置;最后通过局部布局算法,对芯片上重叠的基本单位进行处理,合法化每一个基本的单位在芯片中的布局。0062以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN104182556A1/3页8图1说明书附图CN104182556A2/3页9图2说明书附图CN104182556A3/3页10图3图4说明书附图CN104182556A10。