CN111797584B - 基于fpga和cpu异构计算的随机行走寄生电容参数提取方法 - Google Patents

基于fpga和cpu异构计算的随机行走寄生电容参数提取方法 Download PDF

Info

Publication number
CN111797584B
CN111797584B CN201910216147.7A CN201910216147A CN111797584B CN 111797584 B CN111797584 B CN 111797584B CN 201910216147 A CN201910216147 A CN 201910216147A CN 111797584 B CN111797584 B CN 111797584B
Authority
CN
China
Prior art keywords
conductor
fpga
path
cpu
point
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
Application number
CN201910216147.7A
Other languages
English (en)
Other versions
CN111797584A (zh
Inventor
曾璇
严昌浩
周海
周电
韦昕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fudan University
Original Assignee
Fudan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fudan University filed Critical Fudan University
Priority to CN201910216147.7A priority Critical patent/CN111797584B/zh
Publication of CN111797584A publication Critical patent/CN111797584A/zh
Application granted granted Critical
Publication of CN111797584B publication Critical patent/CN111797584B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明属于集成电路领域,具体涉及一种基于FPGA和CPU异构计算的随机行走寄生电容参数提取方法,包括,在CPU中读取GDS版图、生成高斯面、生成初始点、切分版图以及筛选分块后,针对每个含初始点的分块,在FPGA中运行随机行走算法;CPU中完成FPGA中超出分块边界或者未触及任何导体的路径,并计算最终寄生电容结果。本发明算法简单规整,不需要复杂的空间管理策略,仍具有较高的能效比,并且处理分块的FPGA位流在一次编译生成后,可针对不同GDS版图重复利用,实用性高。本发明尤其是提出适用于随机行走寄生电容参数提取的FPGA和CPU异构计算框架;并针对该框架提出了版图切分方法,以及提高FPGA代码并行效率的优化方法。

Description

基于FPGA和CPU异构计算的随机行走寄生电容参数提取方法
技术领域
本发明属于集成电路领域,涉及随机行走寄生电容参数提取方法,具体涉及一种基于FPGA(Field Programmable Gate Array,现场可编程门阵列)和CPU(CentralProcessing Unit,中央处理器)异构计算的随机行走(Random Walk)寄生电容参数提取方法。
背景技术
随着深亚微米超大规模集成电路(VLSI)的发展,金属线宽逐渐减小、芯片规模不断扩大,互连线的总长度和层数也逐渐增加,导致互连线寄生电容所引起的延时在总时延中所占的比重越来越大[1],如何快速准确地计算互连线寄生电容参数已成为国内外学术界和工业界的重要研究课题。
现有技术公开了早期电容寄生参数提取的数值计算方法是基于边界元法(Boundary Element Method,BEM)[2][3][4]和有限元法(Finite Element Method,FEM)[5][6]等确定性算法,其优点是速度快、计算结果精确,其缺点是计算量大且内存需求量巨大;它们属于一种全局性方法,即为了计算某个局部区域电容,必须进行全局离散,并求解完整、大规模的线性方程组,因此不适用于大规模集成电路互连寄生电容参数提取[7]。
基于蒙特卡罗法(Monte Carlo method)的随机行走算法与确定性算法相比,算法简单,无需进行面离散或体离散,且具有天然的并行性;同时内存需求量小,因此适用于大规模集成电路的互连线寄生电容参数提取。采用随机行走算法进行电容寄生参数提取的方法最早由R.B.Iverson在1992年提出[8],其基本思想是通过随机采样的方法逐渐逼近高斯定理积分表达式的精确值。根据跳转曲面的形状不同,随机行走算法可分为在球面进行跳转的WOS(Walking On Spheres)[9]和在立方面进行跳转的WOC(Walking On Cubes)[8]两类。在互连线寄生电容参数提取中,因为互连线导体块多为长方体,使用WOC能以更少的跳转步数触及导体表面,结束随机行走过程,因此WOC应用更为广泛[10][11][12][13],但是,在立方面上进行跳转时的权重函数由复杂的无穷级数表达[14],计算复杂,为了提高运算速度,高效的WOC需要对权重函数做复杂的预计算、存储和快速检索处理[11]。
随机行走电容参数提取是一种计算密集型算法,当电路规模较大时,将消耗大量的计算时间和能耗,但由于随机行走算法内在的高度并行性,使其适合于采用多核CPU、GPU(Graphics Processing Unit,图形处理器)、FPGA等架构进行并行计算,以获取更高能效,目前该算法已在多核CPU[10][11]及GPU[12][13]上实现,但还尚未有相关工作将其实现在FPGA上。
FPGA最初是作为ASIC(Application Specific Integrated Circuit,专用集成电路)验证工具而出现。近年来,由于其高度并行、硬件配置灵活等特点,被越来越多地运用到高能效的算法加速领域;与通用计算图形处理单元(GPGPU)相比,FPGA在单位能耗具有更好的表现。此外,在硬件描述语言(HDL)的基础上,高层次综合(HLS)的发展,显著提高了FPGA的开发效率,使得其具有更加广阔的运用前景;借助Xilinx公司的SDAccel开发工具[15],不仅能实现FPGA-CPU的异构计算,而且相比传统的RTL,开发周期也明显缩短;相关的研究工作已经显示采用SDAccel工具的FPGA设计在多个应用领域具有较好的能效,包括神经网络、N体模拟、频繁项集挖掘(Frequent Itemset Mining)、时域有限差分法等[16][17][18][19]。
研究显示,使用SDAccel工具在FPGA上实现随机行走算法的关键困难在于FPGA片上资源有限,其次SDAccel工具采用类C语言的编译指令(pragma)实现对综合和底层电路的控制,对综合出的电路的控制能力弱。
基于现有技术的现状,本申请的发明人拟提供基于FPGA-CPU异构计算的随机行走寄生电容参数提取算法,该算法结合FPGA和CPU各自的优势,FPGA位流在一次性编译生成后,针对不同版图可重复利用,具有良好的可拓展性;同时,该算法中应用多种针对随机行走算法的FPGA优化方法,能取得良好的能效比。
与本发明相关的现有技术有:
[1]Liu,Ruichen,Chien-Shing Pai,and Emilio Martinez."Interconnecttechnology trend for microelectronics."Solid-State Electronics 43.6(1999):1003-1009.
[2]K.Nabors and J.White,“Fastcap:A multipole accelerated 3-dcapacitance extraction program,”IEEE Trans.on CAD,vol.10,no.11,pp.1447–1459,1991.[3]W.Shi,J.Liu,N.Kakani,and T.Yu,“A fast hierarchical algorithm forthree-dimensional capacitance extraction,”IEEE Trans.on CAD,vol.21,no.3,pp.330–336,2002.
[4]W.Chai,D.Jiao,and C.-K.Koh,“A direct integral-equation solver oflinear complexity for large-scale 3d capacitance and impedance extraction,”inDAC.IEEE,2009,pp.752–757.
[5]N.Van der Meijs and A.J.van Genderen,“An efficient finite elementmethod for submicron ic capacitance extraction,”in DAC.ACM,1989,pp.678–681.
[6]G.Chen,H.Zhu,T.Cui,Z.Chen,X.Zeng,and W.Cai,“Parafemcap:a paralleladaptive finite-element method for 3-d vlsi interconnect capacitanceextraction,”IEEE Trans.on MTT,vol.60,no.2,pp.218–231,2012.
[7]Yan,Chanhao,Wei Cai,and Xuan Zeng."A parallel method for solvingLaplace equations with Dirichlet data using local boundary integral equationsand random walks."SIAM Journal on Scientific Computing 35.4(2013):B868-B889.
[8]Y.Le Coz and R.Iverson,“A stochastic algorithm for high speedcapacitance extraction in integrated circuits,”Solid-State Electronics,vol.35,no.7,pp.1005–1012,1992.
[9]Brambilla,Angelo,and Paolo Maffezzoni."A statistical algorithm for3D capacitance extraction."IEEE microwave and guided wave letters 10.8(2000):304-306.
[10]N.Sawhney,S.Batterywala,N.Shenoy,and R.Rudell,“Parallelizing astatistical capacitance extractor,”VDAT,pp.253–267,2004.
[11]W.Yu,H.Zhuang,C.Zhang,G.Hu,and Z.Liu,“Rwcap:A floating randomwalk solver for 3-d capacitance extraction of very-large-scale integrationinterconnects,”IEEE Trans.on CAD,vol.32,no.3,pp.353–366,2013.
[12]K.Zhai,W.Yu,and H.Zhuang,“Gpu-friendly floating random walkalgorithm for capacitance extraction of vlsi interconnects,”in DATE.EDAConsortium,2013,pp.1661–1666.
[13]N.D.Arora,S.Worley,and D.R.Ganpule,“Fieldrc,a gpu acceleratedinterconnect rc parasitic extractor for full-chip designs,”in EDSSC.IEEE,2015,pp.459–462.
[14]Iverson,Ralph B.,and Yannick L.Le Coz."Afloating random-walkalgorithm for extracting electrical capacitance."Mathematics and Computers inSimulation55.1-3(2001):59-66.
[15]L.Wirbel,“Xilinx sdaccel whitepaper,”2014.
[16]C.Zhang,Z.Fang,P.Zhou,P.Pan,and J.Cong,“Caffeine:towardsuniformed representation and acceleration for deep convolutional neuralnetworks,”in ICCAD.ACM,2016,p.12.
[17]E.Del Sozzo,L.Di Tucci,and M.D.Santambrogio,“Ahighly scalable andefficient parallel design of n-body simulation on fpga,”in IPDPSW.IEEE,2017,pp.241–246.
[18]V.Dang and K.Skadron,“Acceleration of frequent itemset mining onfpga using sdaccel and vivado hls,”in ASAP.IEEE,2017,pp.195–200.
[19]T.Kenter,J.F¨orstner,and C.Plessl,“Flexible fpga design for fdtdusing opencl,”in FPL.IEEE,2017,pp.1–7.
[20]Hsiao,Yu-Chung,and Luca Daniel."CAPLET:AHighly Parallelized FieldSolver for Capacitance Extraction Using Instantiable Basis Functions."IEEETransactions on Computer-Aided Design of Integrated Circuits and Systems 35.3(2016):458-470.
[21]L’ecuyer,Pierre."Tables of linear congruential generators ofdifferent sizes and good lattice structure."Mathematics of Computation of theAmerican Mathematical Society 68.225(1999):249-260.
[22]Lomont,Chris."Fast inverse square root."Tech-315nical Report 32(2003).
[23]Zhang,Chao,and Wenjian Yu."Efficient space management techniquesfor large-scale interconnect capacitance extraction with floating randomwalks."IEEE Transactions on Computer-Aided Design of Integrated Circuits andSystems 32.10(2013):1633-1637.。
发明内容
本发明的目的是基于现有技术的现状,提供一种基于FPGA-CPU异构计算的随机行走寄生电容参数提取算法,该算法结合FPGA和CPU各自的优势,FPGA位流在一次性编译生成后,针对不同版图可重复利用,具有良好的可拓展性;同时,该算法中应用多种针对随机行走算法的FPGA优化方法,能取得良好的能效比。
具体的,本发明的一种基于FPGA-CPU异构计算的随机行走寄生电容参数提取算法,包括其步骤:步骤1,在CPU中读取GDS版图、生成高斯面、生成初始点、切分版图以及筛选分块;步骤2,依次将所有包含初始点的分块的信息,从主机内存,经由全局内存,一次性写入FPGA片上内存;并针对每一个分块,在FPGA中运行随机行走算法;步骤3,CPU中完成FPGA中超出分块边界或者未触及任何导体的路径,并计算最终寄生电容结果。
本发明提出的基于FPGA和CPU异构计算的随机行走寄生电容参数提取方法的流程图如图1所示:
输入参数:
1.版图文件;
2.需要求解寄生电容的两个导体的序号i、j;
3.随机行走路径总数Npath、随机行走最大步数Nstep
输出结果:
导体i与导体j间的寄生互电容;若i=j,则为导体i的寄生自电容。
更具体的,本发明的提取算法中:
步骤1:在CPU中读取GDS版图、生成高斯面、生成初始点、切分版图以及筛选分块,包括,
步骤1.1:读取GDS版图并将其切割为长方体块
读取GDS版图,获取版图中每个导体的几何信息和位置信息后,利用文献[20]中的算法,将不规则的导体块切割成一系列长方体,最终,获得每个长方体自身长、宽、高的几何信息,每个长方体的左下角坐标的位置信息,以及该长方体所属导体编号;
步骤1.2:围绕导体i向外拓展作高斯面
由于需计算导体i的电容,围绕导体i作一个闭合的包络面G,称为导体i的高斯面;高斯面G内部包含且仅包含导体i,且高斯面不与任何导体相交、也不与任何导体表面接触;高斯面可通过将导体i的表面向外平移拓展得到,拓展的距离通常可取与相邻导体距离的1/2左右;如图2所示的高斯面Gi,是通过将导体i的外表面分别向外拓展d1和d2距离得到,理论上,最终寄生电容参数的结果与高斯面的大小无关;
步骤1.3:在高斯面上随机生成初始点
在高斯面G上,按面积均匀采样,随机选取Nstart个点,作为随机行走算法的初始点;
步骤1.4:将版图切分为M个分块
将芯片版图沿着平行于x、y、z坐标轴的方向,切分为M个分块;本发明中切分可均匀或非均匀切分;可沿着x、y、z轴中的一个、二个或三个方向轴切分,切分后,将所有导体的长方体块、生成的高斯面以及初始点分配至相应分块中。
本发明算法中,优选的关键环节是版图切分;考虑到FPGA片上资源有限,将整个版图信息全部写入FPGA是不现实的,所以将版图进行切分,以使得FPGA的硬件资源足够处理每个分块,随机行走算法将在FPGA中密集运行;如图3所示,将版图在两个维度上切分,但并不要求均匀切分,每个分块的大小可根据实际FPGA资源数进行调节;
步骤1.5:从切分得到的M个分块中,筛选出含有初始点的分块,共计M’个
依次检查步骤1.4中切分出的M个分块中是否包含有初始点,并筛选出含有初始点的分块,共有M’个。
本发明中,均匀介质中寄生电容参数提取随机行走算法的基本原理是,由电磁学原理可知,空间中任意一点r的电势可以表示为:
其中,S是围绕点r的闭合曲面,G(r,r1)为格林函数,可以将记为概率密度函数P(r,r1),这也称为表面格林函数;对于固定的点r,P(r,r1)代表了在闭合曲面S上任取一点r1的概率,因此,公式(1)可以写成:
φ(r)=∮SP(r,r1)φ(r1)ds1, (2)
公式(2)表明,如果在闭合曲面S上取样足够多的点,则这些取样点处电势φ(r1)的平均值,将无限逼近点r处电势φ(r)的真实值;
考虑φ(r1)同样是未知的,因此可以递归调用公式(2),直到某一个已知电势的点rk
其中,闭合曲面Si(i=1,2,…,k)是围绕点ri(i=1,2,…,k)的包络面,P(ri-1,ri)(i=2,3,…,k)是以点ri-1为固定点的表面格林函数;
将主导体电势置为1V,其它导体及无穷远处电势置为0V;根据公式(3)以及图2所示,随机行走的过程为:1)在第i次跳转时,以点ri-1为球心,作一个不含任何导体的最大半径的球面;2)在这个球面上以表面格林函数P(ri-1,ri)随机取出下一个跳转点ri,由于球面的表面格林函数即为球面基于面积的均匀分布,因此仅需要在球面上进行基于面积的随机采样选择下一个跳转点;3)重复前两个步骤,直到第k次时φ(ri)是已知的,也即点rk触及到了某一个导体的表面。这样,通过若干次随机行走,可以得到φ(r)的估计值;
得到空间中任意一点的电势后,根据高斯定理,均匀介质中,主导体i上所带电荷量Qi可以表示为:
其中,Gi是包围主导体i的高斯面,n(r)是高斯面Gi上点r处的外法向,ε0是真空介电常数,εr是介质的相对介电常数;将公式(2)代入公式(4)可得:
其中,是高斯面Gi的表面积,▽r是点r处的梯度算子,ω(r,r1)称为权重函数;公式(5)中有两个积分号,对于第一个积分号,在高斯面Gi上随机选取Nstart个初始点;对于第二个积分号,根据公式(3)所示的随机行走方式近似计算;
考虑到主导体电势为1V,其他导体的电势均为0V,因此所有触及导体j的路径的权重函数之和ω(r,r1),与路径总数Npath的比值,就是导体j与主导体i之间的寄生电容(若j=i,则为导体i的自电容),即:
其中,mk是第k条路径最后触及的导体的编号。
本发明中,以图2为例说明随机行走算法计算导体i与导体j之间的寄生电容的过程:包络面Gi是围绕主导体i的高斯面,高斯面Gi上的点r为初始点,以r为中心作出的不含任何导体的半径最大的球面为S1;然后,以表面格林函数P(r)所指示的概率分布,在球面S1上按照面积均匀采样任意选出一点r1,点r将跳转至点r1;按照相同的方式,点r1继续跳转至r2、r3等,直至导体j上的点rk。该条路径的权重函数为ω(r,r1),仅与点r和点r1的位置相关。与这条路径的生成方式类似,从高斯面Gi上的Nstart个初始点出发,一共运行Npath条随机行走路径,记录下路径最后触及的导体编号m以及路径的权重函数ω(r,r1),所有的随机行走路径运行完毕后,按照式(6),将触及导体j的路径的权重函数ω(r,r1)累加,再除以随机行走路径数Npath,即为导体i与导体j之间的寄生电容Cij
在随机行走算法中,大部分路径将在距离初始点较近的空间内,触及导体块并停止行走,因此算法具有局部性;在进行本发明提出的切分后,绝大部分的随机行走可在其初始点所在的FPGA当前分块内结束,并不需要用到其他分块的版图信息,有效保证了本发明算法的高效执行。
考虑到仍有少部分路径将随机行走至其他分块,本发明在切分预处理时,采用使相邻的分块间有部分重合的策略,以实现高效运行,如图4所示,本发明定义了三类边界:
·高斯面边界(GS boundary):高斯面边界即步骤1.4中版图切分边界,高斯面边界内的所有初始点,将用作当前分块的随机行走初始点,为了保证所有初始点不被遗漏或重复使用,相邻的高斯面边界应该没有任何重合或空隙。
·分块边界(Segment boundary):分块边界是由高斯面边界向外拓展得到,实际中,拓展距离可取高斯面边界各维度尺寸的5%左右,当某条路径超出了分块边界时,它的下一步跳转有可能会回到原先的分块,也可能不会,但由于此时FPGA中只写入了当前分块内的导体信息,所以无法对此进行判断;本发明中,这种情况称为“超出当前分块”,当某条路径超出当前分块时,在FPGA中的随机行走算法停止,并记录最终停止位置,后续将在CPU中完成随机行走过程。
·导体边界(Conductor boundary):导体边界是由分块边界向外拓展得到,一般拓展距离可取分块边界各维度尺寸的5%左右,导体边界内部的导体几何尺寸和左下角坐标将写入FPGA,当某条路径接近分块边界时,分块边界外侧、导体边界内侧的版图信息(如图4中导体p和导体q)将有助于防止随机行走错误跳转至分块外的其它导体内部。
定义上述三类边界后,本发明定义第m个分块的信息(m=1,2,…,M)包括该分块1)高斯面边界内部的所有初始点的坐标;2)分块边界的几何尺寸和左下角坐标;3)导体边界内所有长方体(包括与导体边界相交的长方体)的几何尺寸和左下角坐标,以及该长方体所属导体编号。
本发明中,步骤2:针对每个含初始点的分块,在FPGA中运行随机行走算法包括,
步骤2.1:针对第k(k=1,2,…,M’)个含有初始点的分块,将其分块信息,从主机内存,经由全局内存写入FPGA片上内存
主机内存(Host Memory)是指直接且仅与主机CPU相连接的存储区域,一般是主机的内存条;全局内存(Global Memory)是指同时与CPU和FPGA相连接的存储区域,一般是FPGA板卡上与FPGA芯片相连的内存条;全局内存可以被CPU和FPGA读写,容量相对较大,但是,对FPGA内核程序而言,读取全局内存数据所需的时间开销仍然巨大;
Xilinx公司的SDAccel工具提供的CPU-FPGA读写接口中,写入FPGA的数据缺省存储在全局内存中,为了减小FPGA中数据读取的延时,本发明在进行下一步计算之前,将分块信息全部写入了FPGA片上内存中;
步骤2.2:在FPGA中,从当前分块中的每个初始点出发,运行随机行走算法,
所述随机行走算法包含如下子步骤:
步骤2.2.1计算当前点的坐标与所有导体面的距离,其中距离的最小值即为最大跳转半径;
步骤2.2.2以当前点坐标为球心、以最大跳转半径为半径的球面上,按面积均匀随机得到采样点,并跳转至该点;
步骤2.2.3判断该点是否满足三种路径终止条件之一:1)触及任意导体面、2)超出当前分块、3)达到步数上限Nstep;若满足上述任意一种路径终止条件,则停止随机行走,否则重复前两步,即步骤2.2.1和步骤2.2.2;
对于每条路径,针对三种不同终止方式,需记录不同的路径终止信息:
1)如果在限定步数上限Nstep内,触及了属于导体j的任意长方体,则终止路径,且路径终止信息为导体编号j;
2)如果在限定步数上限Nstep内,超出了当前的分块边界,则终止路径,且路径终止信息为最后点的坐标,这条路径将在CPU中继续进行随机行走;
3)如果达到了步数上限Nstep时,仍然未触及任何导体,则终止路径,且路径终止信息为最后点的坐标,这条路径将在CPU中继续处理;
由于共有Nstart个初始点,且总共需运行Npath条路径,则从每个初始点出发需运行Npath/Nstart条路径,受限于FPGA布线资源,往往无法做到Npath/Nstart条路径同时并行执行,因此,本发明中从当前分块中的每个初始点出发,每组并行运行P条路径,一共执行Npath/(Nstart*P)组;
步骤2.3:处理所有Npath条路径后,将记录的路径终止信息一次性从FPGA片上内存,经由全局内存,输出到主机内存,
本发明中,步骤2.2对应于FPGA综合得到的内核程序,是本发明关于FPGA和CPU异构计算中在FPGA端的核心;下面介绍本发明内核程序中的实现细节,可以看到本发明实现上的简洁优势:
(1)计算最大跳转半径
在每一步跳转时,需要计算当前点的最大跳转半径,即当前点到周围所有导体的距离中的最小值,计算该最大跳转半径时,本发明采用最简单的方式:依次计算当前点与当前分块中所有长方体的距离,然后选出最小值;
当前点与某一长方体的距离的计算如图5所示,只需找到当前点到长方体上的最近点,这两点之间的距离即为当前点到长方体的距离,图6是最大跳转半径计算算法的伪代码;
以图5的二维导体为例说明点到长方体最近点坐标的计算方法,将长方体1的边线无限延长后,二维平面被划分为长方体1以及另外①~⑧八个区域,
·区域②中的点A到长方体1的最近点是Oa,点Oa的坐标为(xa,y1+H1),区域⑥中点到导体最近点坐标的计算与此相似;
·区域③中的点B到长方体1的最近点是Ob,Ob的坐标为(x1+L1,y1+H1),区域①、⑤、⑦中点到长方体最近点坐标的计算与此相似;
·区域④中的点C到长方体1的最近点是Oc,Oc的坐标为(x1+L1,yc),区域⑧中点到长方体最近点坐标的计算与此相似;
(2)伪随机数生成
本发明采用经典的线性同余法(Linear Congruential Generator,LCG)生成伪随机数[21],其计算公式为:
Xn+1=(a·Xn+c)mod m, (7)
其中,a、c、m都是常数,且m>0,0<a<m,0<=c<m,本发明中参数取值为a=16807,c=0,m=0x7FFFFFFF,随机种子0<=X0<m可以随机设置为固定的常数;
(3)快速平方根倒数算法
本发明中平方根的计算采用快速平方根倒数算法(Fast Inverse Square Root)[22],快速平方根倒数算法如图7所示;由于本发明对计算结果的精度要求不高(1%左右),因此采用效率更高的快速平方根倒数算法有助于提高算法运行速度;
(4)FPGA代码优化
为了最大化FPGA的并行效率,本发明对随机行走算法的循环顺序进行了调整,并运用了pipe、loop unrolling、loop pipeline、array partition等Xilinx公司SDAccel工具提供的代码优化技术,其中,
·Pipe(管道):由于随机数生成器的计算效率远高于随机行走算法,因此在本发明将伪随机数生成器内核(PRNG kernel)与随机行走算法内核(FRW kernel)分离,如图8所示,以实现伪随机数生成器的共享;PRNG kernel 使用线性同余法生成伪随机数后,通过一个先进先出(FIFO)结构的Pipe(管道)队列将随机数传入FRW kernel,该操作不仅节省了生成多个随机数生成器内核所需的FPGA硬件资源,而且由于随机数生成器产生的随机数放在队列中,直接供随机行走算法取用,也加快了随机行走算法的运行速度;
·Loop unrolling(循环展开)与pipeline(流水线):如图9所示,本发明使用__attribute__((xcl_pipeline_loop))将第3行的循环流水线化、第4行的循环进行展开,恰当的循环展开和流水线对于提高FPGA代码的并行性是至关重要的,在Xilinx公司的SDAccel编译器中,多重循环的最内层循环才可以循环展开,所以如图9第4行所示,本发明将可以循环展开的循环放到了最内层,此外,如图9第2行所示,使用__attribute__((xcl_pipeline_loop))在双重循环的外层,则编译器将会自动循环展开内层、流水外层;
·Array partition(数组切割):通常,在FPGA上分配一块较大的存储空间时,编译器将会使用双端口的块RAM(Block RAM,BRAM),仅允许两路同时访问;为了实现高并行度的读写,本发明使用__attribute__((xcl_array_partition))将通常使用的块RAM存储的空间切割成分散的RAM或寄存器,如下式所示:
int foo[N]_attribute_((xcl_array_partition(complete,1)))
数组完全切割后,数组中所有元素都可以并行访问;本发明的实施例中数组foo在使用数组切割后,实际将用N个寄存器实现,可以N个元素并行读写;
本发明中,步骤3:CPU中完成FPGA中超出分块边界或者未触及任何导体的路径,并计算最终电容结果,包括,
步骤3.1:在CPU中,继续完成超出当前分块边界或者未触及任何导体的路径,
将步骤2.3中未运行结束的路径,在CPU中继续处理结束,这些路径包括超出当前分块边界的点或者未触及任何导体的点两种情况,在CPU中,版图信息完整,可以处理所有路径;
与步骤2.2类似,1)从路径终止信息中记录下的每个坐标出发;2)计算当前点与所有导体的距离,其中的最小值即为最大跳转半径;3)在以当前坐标为球心、计算出的最大跳转半径为半径的球面上,按面积均匀随机采样得到一点,并跳转至该点;4)若跳转点触及了任意导体的表面,则记录下导体编号,并结束该路径;若跳转点未触及任意导体的表面,且该路径在CPU中的已运行步数小于1000步,则重复2)和3);若跳转点未触及任意导体的表面,且该路径在CPU中的已运行步数等于1000步,则视为该条路径走向了无穷远处,结束该路径;
实验数据表明,这部分路径个数占总路径的比例不超过0.4%,因此,本发明在CPU端也无需复杂的空间管理算法[23],实现代码简洁直观、高效;
步骤3.2:计算导体i与导体j间的互容;若i=j,则为导体i的自容,
根据以下公式计算电容:
其中,ω(r,r1)为权重函数,r是高斯面Gi上的初始点,r1是第一步跳转后的坐标,是高斯面Gi的面积,n(r)是高斯面Gi在初始点r处的外法向;mk是第k条路径最后触及的导体的编号,若该路径在CPU中的运行1000步仍未触及任何导体,则视为该条路径走向了无穷远处,且mk记为-1。
本发明提供了一种基于FPGA-CPU异构计算的随机行走寄生电容参数提取算法,该算法结合FPGA和CPU各自的优势,FPGA位流在一次性编译生成后,针对不同版图可重复利用,具有良好的可拓展性以及能取得良好的能效比。
本发明的优点在于:
1.在随机行走中,计算最大跳转半径的算法简单规整,不需要复杂的空间管理策略,仍具有较高的能效比;
2.版图的读取和切分在CPU端完成,可灵活处理各种规模和形状的版图;虽然FPGA代码的综合、实现及位流生成总时长可达10小时左右,但本发明中处理分块的FPGA位流在一次编译生成后,可针对不同GDS版图重复利用,实用性高;
3.本发明提出的FPGA和CPU异构计算算法具有良好的并行性。
附图说明
图1是本发明方法流程图;
图2是随机行走算法原理示意图;
图3是版图切分及FPGA和CPU异构计算框架示意图;
图4是本发明定义的三类边界示意图;
图5是计算最大跳转半径示意图;
图6是计算最大跳转半径算法的伪代码;
图7是快速平方根倒数算法代码;
图8为本发明使用Pipe传输PRNG和FRW两个kernel之间的数据;
图9是本发明FPGA中随机行走伪代码;
图10是版图测试算例(深色为主导体)。
具体实施方式
通过具体实例的实施过程,进一步描述本发明方法。
本发明的随机行走电容参数提取算法中,FPGA-CPU异构计算平台使用的是AWS(Amazon Web Services)EC2F1实例,其中CPU为Intel Xeon E5-2686主频2.3GHz的8核处理器,内存122GB,FPGA开发板配有Xilinx Virtex UltraScale+VU9P FPGA以及64GB板载内存,同时,FPGA开发工具为Xilinx公司SDAccel工具2017.1版本,使用32位浮点数。
实施算例1
本算例采用如图10所示的电路,与[11]、[12]中使用的算例类似。
本算例包括三层41个导体,其中M2层3个导体,M1和M3各有19个导体,在该算例中,将导体空间切分为4块,高斯面上取100个初始点,共运行1.02×105条路径,同时并行运行的随机行走计算核心数目为8;
如表1所示,该算例中,相对Intel Core i5-4570四核CPU计算速度的加速比为6.09x,计算能效的加速比为42.63x;
表1算例1测试结果
本发明中使用的随机行走算法是标准的WOS算法,而[11]、[12]中使用的是优化后的WOC算法,其需要进行复杂的预处理,表2对比了本发明与标准算法的CPU实现、优化算法的CPU实现[11]、优化算法的GPU实现[12]以及标准算法的GPU实现[12],结果表明,本发明相对于优化算法的CPU(8核)实现仍有5.2x的能效加速比。
表2本发明与已有CPU、GPU平台算法的能效对比
实施算例2
为使用更大规模的电路进行验证,本算例将图10所示的电路进行了扩充,即M1和M3层的导体数从每层19个扩充至每层800个,且将M2层的3个导体的长度相应拉大;在该算例中,将导体空间切分为20块,高斯面上取2522个初始点,共运行1.01×107条路径,且并行运行的随机行走算法内核数为8个;
如表3所示,该算例中,本发明相对Intel Core i5-4570四核CPU效率的加速比为4.92x,能效的加速比为37.58x。
表3算例2测试结果
/>

Claims (4)

1.一种基于FPGA和CPU异构计算的随机行走寄生电容参数提取方法,其特征是,其包括:按下述流程:
输入参数:
1)版图文件;
2)需要求解寄生电容的两个导体的序号i、j;
3)随机行走路径总数Npath、随机行走最大步数Nstep
输出结果:
导体i与导体j间的寄生互电容;若i=j,则为导体i的寄生自电容;
和,按下述步骤:
步骤1:在CPU中读取GDS版图、生成高斯面、生成初始点、切分版图以及筛选分块;
所述步骤1中,包括子步骤:
步骤1.1:读取GDS版图并将其切割为长方体块,
读取GDS版图,获取版图中每个导体的几何信息和位置信息;然后将不规则的导体块切割成一系列长方体;最终,获得每个长方体自身长、宽、高的几何信息,每个长方体的左下角坐标的位置信息,以及该长方体所属导体编号;
步骤1.2:围绕导体i向外拓展作高斯面,
由于需计算导体i的电容,围绕导体i作一个闭合的包络面G,称为导体i的高斯面;高斯面G内部包含且仅包含导体i,且高斯面不与任何导体相交、也不与任何导体表面接触;高斯面可通过将导体i的表面向外平移拓展得到,拓展的距离可取与相邻导体距离的1/2左右;最终寄生电容参数的结果与高斯面的大小无关;
步骤1.3:在高斯面上随机生成初始点,
在高斯面G上,按面积均匀采样,随机选取Nstart个点,作为随机行走算法的初始点;
步骤1.4:将版图切分为M个分块,
将芯片版图沿着平行于x、y、z坐标轴的方向,切分为M个分块;切分可均匀或非均匀切分,沿着x、y、z轴中的一个、二个或三个方向轴切分;切分后,将所有导体的长方体块、生成的高斯面以及初始点分配至相应分块中;
所述的版图切分使得FPGA的硬件资源足够处理每个分块,随机行走算法在FPGA中密集运行;每个分块的大小根据实际FPGA资源数进行调节;
步骤1.5:从切分得到的M个分块中,筛选出含有初始点的分块,共计M’个,
依次检查步骤1.4中切分出的M个分块中是否包含有初始点,并筛选出含有初始点的分块,共有M’个;
所述切分后,绝大部分的随机行走可在其初始点所在的FPGA当前分块内结束,不需要用到其他分块的版图信息;
步骤2:依次将所有包含初始点的分块的信息,从主机内存,经由全局内存,一次性写入FPGA片上内存;并针对每一个分块,在FPGA中运行随机行走算法;
所述步骤2中,包括子步骤:
步骤2.1:针对第k(k=1,2,…,M’)个含有初始点的分块,将其分块信息,从主机内存,经由全局内存写入FPGA片上内存,
为减小FPGA中数据读取的延时,在进行下一步计算之前,将分块信息全部写入了FPGA片上内存中;
步骤2.2:在FPGA中,从当前分块中的每个初始点出发,运行随机行走算法,包括子步骤:
步骤2.2.1计算当前点的坐标与所有导体面的距离,其中距离的最小值即为最大跳转半径;
步骤2.2.2以当前点坐标为球心、以最大跳转半径为半径的球面上,按面积均匀随机得到采样点,并跳转至该点;
步骤2.2.3判断该点是否满足三种路径终止条件之一:1)触及任意导体面、2)超出当前分块、3)达到步数上限Nstep;若满足上述任意一种路径终止条件,则停止随机行走,否则重复前两步,即步骤2.2.1和步骤2.2.2;
对于每条路径,针对三种不同终止方式,记录不同的路径终止信息:
(1)如果在限定步数上限Nstep内,触及了属于导体j的任意长方体,则终止路径,且路径终止信息为导体编号j;
(2)如果在限定步数上限Nstep内,超出了当前的分块边界,则终止路径,且路径终止信息为最后点的坐标,这条路径将在CPU中继续进行随机行走;
(3)如果达到了步数上限Nstep时,仍然未触及任何导体,则终止路径,且路径终止信息为最后点的坐标,这条路径将在CPU中继续处理;
以及:
从当前分块中的每个初始点出发,每组并行运行P条路径,共执行Npath/(Nstart*P)组;
步骤2.3:处理所有Npath条路径后,将记录的路径终止信息一次性从FPGA片上内存,经由全局内存,输出到主机内存;
步骤3:CPU中完成FPGA中超出分块边界或者未触及任何导体的路径,并计算最终寄生电容结果;
所述步骤3中,包括子步骤:
步骤3.1:在CPU中,继续完成超出当前分块边界或者未触及任何导体的路径,
将步骤2.3中未运行结束的路径,在CPU中继续处理结束;所述路径包括超出当前分块边界的点或者未触及任何导体的点;在CPU中,版图信息完整,可以处理所有路径;
与步骤2.2类同,1)从路径终止信息中记录下的每个坐标出发;2)计算当前点与所有导体的距离,其中的最小值即为最大跳转半径;3)在以当前坐标为球心、计算出的最大跳转半径为半径的球面上,按面积均匀随机采样得到一点,并跳转至该点;4)若跳转点触及了任意导体的表面,则记录下导体编号,并结束该路径;若跳转点未触及任意导体的表面,且该路径在CPU中的已运行步数小于1000步,则重复2)和3);若跳转点未触及任意导体的表面,且该路径在CPU中的已运行步数等于1000步,则视为该条路径走向了无穷远处,结束该路径;
步骤3.2:计算导体i与导体j间的互容;若i=j,则为导体i的自容;
根据以下公式计算电容:
其中,ω(r,r1)为权重函数,r是高斯面Gi上的初始点,r1是第一步跳转后的坐标,是高斯面Gi的面积,n(r)是高斯面Gi在初始点r处的外法向;mk是第k条路径最后触及的导体的编号,若该路径在CPU中的运行1000步仍未触及任何导体,则视为该条路径走向了无穷远处,且mk记为-1。
2.按权利要求1所述的基于FPGA和CPU异构计算的随机行走寄生电容参数提取方法,其特征是,所述步骤1中,还包括:定义下述三类边界:
·高斯面边界:高斯面边界即步骤1.4中版图切分边界;高斯面边界内的所有初始点,将用作当前分块的随机行走初始点;为了保证所有初始点不被遗漏或重复使用,相邻的高斯面边界没有任何重合或空隙;
·分块边界:分块边界是由高斯面边界向外拓展得到;其中,当某条路径超出当前分块时,在FPGA中的随机行走算法停止,并记录最终停止位置,后续将在CPU中完成随机行走过程;
·导体边界:导体边界是由分块边界向外拓展得到;其中,导体边界内部的导体几何尺寸和左下角坐标将写入FPGA;当某条路径接近分块边界时,分块边界外侧、导体边界内侧的版图信息有助于防止随机行走错误跳转至分块外的其它导体内部。
3.按权利要求2所述的基于FPGA和CPU异构计算的随机行走寄生电容参数提取方法,其特征是,所述步骤1中,还包括:
定义所述三类边界后,定义第m个分块的信息m=1,2,…,M包括该分块1)高斯面边界内部的所有初始点的坐标;2)分块边界的几何尺寸和左下角坐标;3)导体边界内以及与导体边界相交的所有长方体的几何尺寸和左下角坐标,以及该长方体所属导体编号。
4.按权利要求1所述的基于FPGA和CPU异构计算的随机行走寄生电容参数提取方法,其特征是,所述步骤2.2中,包括,
(1)计算最大跳转半径
在每一步跳转时,计算当前点的最大跳转半径,依次计算当前点的坐标与当前分块中所有长方体的距离,然后选出最小值;
当前坐标与某一长方体的距离的计算,只需找到当前坐标到长方体上的最近点,这两点之间的距离即为当前坐标到长方体的距离;
(2)伪随机数生成
采用线性同余法生成伪随机数;其计算公式为:
Xn+1=(a·Xn+c)mod m,(1)
其中,a、c、m是常数,且m>0,0<a<m,0<=c<m;参数取值为a=16807,c=0,m=0x7FFFFFFF;随机种子0<=X0<m随机设置为固定的常数;
(3)快速平方根倒数算法
采用快速平方根倒数算法提高算法运行速度;
(4)FPGA代码优化
运用pipe、loop unrolling、loop pipeline、array partition工具提供的代码优化技术对随机行走算法的循环顺序进行调整;
·Pipe管道:将伪随机数生成器内核PRNG kernel与随机行走算法内核FRW kernel分离,以实现伪随机数生成器的共享;PRNG kernel使用线性同余法生成伪随机数后,通过一个先进先出结构的Pipe队列将随机数传入FRW kernel;使节省生成多个随机数生成器内核所需的FPGA硬件资源,和加快随机行走算法的运行速度;
·Loop unrolling循环展开与pipeline流水线:
使用__attribute__((xcl_pipeline_loop))将双重循环中的外层循环流水线化、内层循环进行展开,使提高FPGA代码的并行性;将可以循环展开的循环放到了最内层并使用attribute__((xcl_pipeline_loop))在双重循环的外层,使编译器将自动循环展开内层、流水外层;
·Array partition数组切割:
使用__attribute__((xcl_array_partition))将通常使用的块RAM存储的空间切割成分散的RAM或寄存器,如下式所示,使实现高并行度的读写,
int foo[N]__attribute__((xcl_array_partition(complete,1)))
数组完全切割后,数组中所有元素可并行访问。
CN201910216147.7A 2019-03-21 2019-03-21 基于fpga和cpu异构计算的随机行走寄生电容参数提取方法 Active CN111797584B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910216147.7A CN111797584B (zh) 2019-03-21 2019-03-21 基于fpga和cpu异构计算的随机行走寄生电容参数提取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910216147.7A CN111797584B (zh) 2019-03-21 2019-03-21 基于fpga和cpu异构计算的随机行走寄生电容参数提取方法

Publications (2)

Publication Number Publication Date
CN111797584A CN111797584A (zh) 2020-10-20
CN111797584B true CN111797584B (zh) 2024-03-19

Family

ID=72804815

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910216147.7A Active CN111797584B (zh) 2019-03-21 2019-03-21 基于fpga和cpu异构计算的随机行走寄生电容参数提取方法

Country Status (1)

Country Link
CN (1) CN111797584B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114036892A (zh) * 2022-01-08 2022-02-11 青岛展诚科技有限公司 随机行走在电容抽取中单细粒度的并行处理方法和系统
CN114662445B (zh) * 2022-05-25 2022-09-06 杭州行芯科技有限公司 用于寄生电容提取的随机行走方法、装置和电子装置
CN116757146B (zh) * 2023-08-17 2023-10-27 北京超逸达科技有限公司 分布式随机行走寄生电容提取方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881562A (zh) * 2005-06-13 2006-12-20 北京中电华大电子设计有限责任公司 一种自动适应工艺特征尺寸的互连寄生电容提取方法
CN101506810A (zh) * 2005-10-24 2009-08-12 克立尔希普技术公司 集成电路的时序、噪声和功率分析
CN103198177A (zh) * 2013-03-11 2013-07-10 清华大学 基于gpu的集成电路电容参数提取系统及方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587691B2 (en) * 2005-11-29 2009-09-08 Synopsys, Inc. Method and apparatus for facilitating variation-aware parasitic extraction
US20100122223A1 (en) * 2008-11-09 2010-05-13 International Business Machines Corporation Techniques for Computing Capacitances in a Medium With Three-Dimensional Conformal Dielectrics
US10013522B2 (en) * 2015-05-22 2018-07-03 Helic, Inc. Method of extracting capacitances of arbitrarily oriented 3D interconnects

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881562A (zh) * 2005-06-13 2006-12-20 北京中电华大电子设计有限责任公司 一种自动适应工艺特征尺寸的互连寄生电容提取方法
CN101506810A (zh) * 2005-10-24 2009-08-12 克立尔希普技术公司 集成电路的时序、噪声和功率分析
CN103198177A (zh) * 2013-03-11 2013-07-10 清华大学 基于gpu的集成电路电容参数提取系统及方法

Also Published As

Publication number Publication date
CN111797584A (zh) 2020-10-20

Similar Documents

Publication Publication Date Title
Yu et al. RWCap: A floating random walk solver for 3-D capacitance extraction of very-large-scale integration interconnects
Lacasta et al. An optimized GPU implementation of a 2D free surface simulation model on unstructured meshes
CN111797584B (zh) 基于fpga和cpu异构计算的随机行走寄生电容参数提取方法
Yu et al. Advanced field-solver techniques for RC extraction of integrated circuits
Sampath et al. Large-scale solitary wave simulation with implicit incompressible SPH
Wyant et al. Computing performance benchmarks among cpu, gpu, and fpga
Sohrabizadeh et al. End-to-end optimization of deep learning applications
US11568098B2 (en) Designing convective cooling channels
Lin et al. Hp-gnn: Generating high throughput gnn training implementation on cpu-fpga heterogeneous platform
Zhai et al. GPU-friendly floating random walk algorithm for capacitance extraction of VLSI interconnects
Basalama et al. FlexCNN: An end-to-end framework for composing CNN accelerators on FPGA
Raghavan et al. A fast and scalable FPGA-based parallel processing architecture for K-means clustering for big data analysis
Valero-Lara et al. Accelerating solid-fluid interaction using lattice-boltzmann and immersed boundary coupled simulations on heterogeneous platforms
Shi et al. Sparse winograd convolutional neural networks on small-scale systolic arrays
Yu et al. Efficient 3-D extraction of interconnect capacitance considering floating metal fills with boundary element method
Wei et al. An efficient FPGA-based floating random walk solver for capacitance extraction using SDAccel
Yu et al. A robust Delaunay-AFT based parallel method for the generation of large-scale fully constrained meshes
Hussain et al. Implementation of a reverse time migration kernel using the hce high level synthesis tool
Wang et al. A parallel multipole accelerated 3-D capacitance simulator based on an improved model
Tomczak et al. Sparse geometries handling in lattice Boltzmann method implementation for graphic processors
Liu et al. A cache-efficient reordering method for unstructured meshes with applications to wall-resolved large-eddy simulations
Qin et al. A comparison of high-level design tools for soc-fpga on disparity map calculation example
Akkurt et al. An efficient edge based data structure for the compressible Reynolds‐averaged Navier–Stokes equations on hybrid unstructured meshes
Yu et al. Utilizing macromodels in floating random walk based capacitance extraction
Yu RWCap2: Advanced floating random walk solver for the capacitance extraction of VLSI interconnects

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant