基于gpu的集成电路电容参数提取系统及方法

文档序号:6400179阅读:398来源:国知局
专利名称:基于gpu的集成电路电容参数提取系统及方法
技术领域
本发明涉及VLSI (Very Large Scale Integrated circuits,超大规模集成电路)物理设计领域,特别是关于集成电路互连电容参数的提取与电路时延分析。
背景技术
集成电路的设计流程中首先要提出功能描述,然后经过逻辑设计、版图设计得到描述半导体工艺尺寸、结构的版图,最后进行版图验证,即通过计算机软件模拟来验证上述设计是否满足要求。若满足要求,则进行下一步的生产制造。否则,若不满足要求,则返回逻辑设计、版图设计进行必要的修正。在版图验证中,一个重要的环节是“互连寄生参数提取”。随着集成电路制造技术的发展,电路规模不断增大、特征尺寸不断缩小,当今很多芯片已含有几千万乃至上亿个器件。然而,集成电路中互连线的寄生效应造成互连线对电路延时的影响已超过了器件对电路延时的影响。因此,需要对互连线的电容、电阻等参数进行准确的计算,以保证电路模拟与验证的正确有效性。为了提高计算精度,互连线之间的电容参数提取需要使用三维提取方法,即利用三维场求解器进行求解。场求解器的计算往往耗时较多,对其算法的优化与加速研究意义很大。在集成电路电容参数提取的场求解器方法中,随机行走电容提取算法是一种比较流行的方法。申请人在第十七届国际会议Asia and South Pacific Design AutomationConference 2012 发表的论文“Fast Floating Random Walk Algorithm for CapacitanceExtraction with Numerical Characterization of Green’s Function,,中,公开了一种集成电路多层介质工艺随机行走电容提取方法。该方法在给定集成电路多层介质工艺的条件下(即导体周围为多层介质),预计算随机行走算法中需要的信息(如多层介质层转移区域的转移概率分布以及相应权值分布数据)并应用于随机行走算法中,从而在多层介质情况下进行电容参数提取时能进行跨介质层的跳转操作。然而,所述论文中提取电容参数的方法仍然耗时较多,因此,其效率有待提高。

发明内容
鉴于以上内容,有必要提供一种基于GPU的集成电路电容参数提取系统与方法,能够快速计算集成电路中主导体与每个环境导体之间的电容参数。一种基于GPU的集成电路电容参数提取系统,运行于计算设备中,该计算设备包括存储设备、CPU及GPU,所述存储设备存储集成电路版图、预先建立的格林函数库及权值向量,该系统包括:初始化模块,用于(a)设置目标精度q、GPU线程数threadNum、GPU线程块的数目blockNum及总目标路径数pathGoal,其中blockNum是threadNum的约数;(b)从所述存储设备中读取集成电路版图、格林函数库及权值向量;(c)在CPU的内存及GPU的全局存储器中分配电容参数提取所需的存储空间并初始化变量;(d)在所述集成电路版图中建立一个包围主导体的高斯面,高斯面内仅包含主导体并且不与任何环境导体相交;及(e)根据GPU线程数threadNum、GPU线程块的数目blockNum及总目标路径数pathGoal,计算每个GPU线程块的最小目标路径数blockWalkMin与每个GPU线程的最大目标路径数threadWalkMax ;随机行走开始模块,用于(f)并行地运行threadNum个GPU线程,每个GPU线程根据建立的高斯面及读取的格林函数库生成threadWalkMax个行走起始点,根据读取的权值向量查找行走起始点对应的权值,并将行走起始点的坐标及行走起始点对应的权值存储到GPU的全局存储器中;随机行走跳转模块,用于(g)并行地运行blockNum个GPU线程块,GPU线程块中的每个GPU线程不断地从GPU的全局存储器中读取行走起始点进行随机行走,直到GPU线程执行了 threadWalkMax次行走,或者整个GPU线程块执行了 blockWalkMin次行走,每次行走从一个行走起始点开始,直到击中某一导体,将每次行走击中导体的编号存储到GPU的全局存储器中,当所有GPU线程块都执行了 blockWalkMin次行走,本模块结束;随机行走统计模块,用于(h)并行地运行threadNum个GPU线程,从GPU的全局存储器中读取随机行走跳转模块存储的击中导体的编号及相应的行走起始点对应的权值,根据读取的击中导体的编号及相应的行走起始点对应的权值计算主导体与每个环境导体的累计电容值及累计电容平方和,并将计算的主导体与每个环境导体的累计电容值及累计电容平方和存储到GPU的全局存储器中;及控制模块,用于(i)将GPU的全局存储器中存储的主导体与每个环境导体的累计电容值及累计电容平方和复制到CPU的内存中;及(j)根据CPU的内存中存储的主导体与每个环境导体的累计电容值及累计电容平方和计算主导体的自电容的相对误差relError,若relError小于等于目标精度q,则计算主导体与每个环境导体之间的耦合电容及主导体的自电容,否则,若relError大于目标精度q,则更新总目标路径数pathGoal,更新后的总目标路径数即达到目标精度还需行走的路径数。—种基于GPU的集成电路电容参数提取方法,应用于计算设备中,该计算设备包括存储设备、CPU及GPU,所述存储设备存储集成电路版图、预先建立的格林函数库及权值向量,该方法包括:(a)设置目标精度q、GPU线程数threadNum及总目标路径数pathGoal,其中blockNum是threadNum的约数;(b)从所述存储设备中读取集成电路版图、格林函数库及权值向量;(c)在CPU的内存及GPU的全局存储器中分配电容参数提取所需的存储空间并初始化变量;(d)在所述集成电路版图中建立一个包围主导体的高斯面,高斯面内仅包含主导体并且不与任何环境导体相交;(e)根据GPU线程数threadNum、GPU线程块的数目blockNum及总目标路径数pathGoal,计算每个GPU线程块的最小目标路径数blockWalkMin与GPU线程的最大目标路径数threadWalkMax ; (f)并行地运行threadNum个GPU线程,每个GPU线程根据建立的高斯面及读取的格林函数库生成threadWalkMax个行走起始点,根据读取的权值向量查找行走起始点对应的权值,并将行走起始点的坐标及行走起始点对应的权值存储到GPU的全局存储器中;(g)并行地运行blockNum个GPU线程块,GPU线程块中的每个GPU线程不断地从GPU的全局存储器中读取行走起始点进行随机行走,每次行走从一个行走起始点开始,直到击中某一导体,将每次行走击中导体的编号存储到GPU的全局存储器中,直到GPU线程执行了 threadWalkMax次行走,或者整个GPU线程块执行了 blockWalkMin次行走,当所有GPU线程块都执行了 blockWalkMin次行走,本步骤结束;(h)并行地运行threadNum个GPU线程,从GPU的全局存储器中读取步骤(g)中存储的击中导体的编号及相应的行走起始点对应的权值,根据读取的击中导体的编号及相应的行走起始点对应的权值计算主导体与每个环境导体的累计电容值及累计电容平方和,并将计算的主导体与每个环境导体的累计电容值及累计电容平方和存储到GPU的全局存储器中;(i)将GPU的全局存储器中存储的主导体与每个环境导体的累计电容值及累计电容平方和复制到CPU的内存中;(j)根据CPU的内存中存储的主导体与每个环境导体的累计电容值及累计电容平方和计算主导体的自电容的相对误差relError,若relError小于等于目标精度q,则计算主导体与每个环境导体之间的耦合电容及主导体的自电容,否则,若relError大于目标精度q,则更新总目标路径数pathGoal,然后返回步骤(e),更新后的总目标路径数即达到目标精度还需行走的路径数。本发明利用GPlKGraphic Processing Unit,图形处理器)的并行处理能力来加快随机行走电容提取算法的计算速度。目前,GPU已成为具有众多计算核心的通用计算设备,GTO采用单指令多数据(SMD)的并行计算方式。使用GPU进行并行计算时,多个线程被组织成线程块(thread block),整个线程块中的线程按SMD方式并行执行。而且,在并行计算资源调度中,GPU线程块是基本单元。本发明将随机行走算法分成三个不同的模块,不同的模块之间通过在GPU全局存储器上的存储空间进行数据交换。通过模块分割,本发明能够有效减少GPU上不同线程的指令分歧,从而有效提高并行计算效率。此外,本发明通过整体迭代与估算剩余的随机行走路径数目,能根据所设目标精度自动确定所需的随机行走路径数,达到了加快收敛过程、减少总计算时间的效果。


图1是本发明基于GPU的集成电路电容参数提取系统较佳实施例的运行环境示意图。图2是集成电路的导体分布示意图。图3是本发明基于GPU的集成电路电容参数提取方法的示意图。图4是图1中基于GPU的集成电路电容参数提取系统的功能模块图。图5是本发明基于GPU的集成电路电容参数提取方法较佳实施例的流程图。图6是图5中步骤S506的细化流程图。图7是图5中步骤S507的细化流程图。图8是图5中步骤S508的细化流程图。图9是图5中步骤S510的细化流程图。主要元件符号说明
权利要求
1.一种基于GPU的集成电路电容参数提取系统,运行于计算设备中,该计算设备包括存储设备、CPU及GPU,所述存储设备存储集成电路版图、预先建立的格林函数库及权值向量,其特征在于,该系统包括: 初始化模块,用于(a)设置目标精度q、GPU线程数threadNum、GPU线程块的数目blockNum及总目标路径数pathGoal,其中blockNum是threadNum的约数;(b)从所述存储设备中读取集成电路版图、格林函数库及权值向量;(c)在CPU的内存及GPU的全局存储器中分配电容参数提取所需的存储空间并初始化变量;(d)在所述集成电路版图中建立一个包围主导体的高斯面,高斯面内仅包含主导体并且不与任何环境导体相交;及(e)根据GPU线程数threadNum、GPU线程块的数目blockNum及总目标路径数pathGoal,计算每个GPU线程块的最小目标路径数blockWalkMin与每个GPU线程的最大目标路径数threadWalkMax ;随机行走开始模块,用于(f)并行地运行threadNum个GPU线程,每个GPU线程根据建立的高斯面及读取的格林函数库生成threadWalkMax个行走起始点,根据读取的权值向量查找行走起始点对应的权值,并将行走起始点的坐标及行走起始点对应的权值存储到GPU的全局存储器中; 随机行走跳转模块,用于(g)并行地运行blockNum个GPU线程块,GPU线程块中的每个GPU线程不断地从GPU的全局存储器中读取行走起始点进行随机行走,直到GPU线程执行了 threadWalkMax次行走,或者整个GPU线程块执行了 blockWalkMin次行走,每次行走从一个行走起始点开始,直到击中某一导体,将每次行走击中导体的编号存储到GPU的全局存储器中,当所有GPU线程块都执行了 blockWalkMin次行走,本模块结束; 随机行走统计模块,用于(h)并行地运行threadNum个GPU线程,从GPU的全局存储器中读取随机行走跳转模块存储的击中导体的编号及相应的行走起始点对应的权值,根据读取的击中导体的编号及相 应的行走起始点对应的权值计算主导体与每个环境导体的累计电容值及累计电容平方和,并将计算的主导体与每个环境导体的累计电容值及累计电容平方和存储到GPU的全局存储器中;及 控制模块,用于(i)将GPU的全局存储器中存储的主导体与每个环境导体的累计电容值及累计电容平方和复制到CPU的内存中;及(j)根据CPU的内存中存储的主导体与每个环境导体的累计电容值及累计电容平方和计算主导体的自电容的相对误差relError,若relError小于等于目标精度q,则计算主导体与每个环境导体之间的耦合电容及主导体的自电容,否则,若relError大于目标精度q,则更新总目标路径数pathGoal,更新后的总目标路径数即达到目标精度还需行走的路径数。
2.如权利要求1所述的基于GPU的集成电路电容参数提取系统,其特征在于,所述(f)中每个行走起始点的生成包括步骤: (Π)从建立的高斯面上随机选取一个点,以选取的点为中心,构造一个极大的不包含任何导体的立方体转移区域;及 (f2)在转移区域的表面,根据读取的格林函数库,选取一个点作为行走起始点。
3.如权利要求1所述的基于GPU的集成电路电容参数提取系统,其特征在于,所述(e)中GPU线程块的最小目标路径数blockWalkMin与GPU线程的最大目标路径数threadWalkMax根据以下公式计算:
4.如权利要求1所述的基于GPU的集成电路电容参数提取系统,其特征在于,所述总目标路径数pathGoal根据以下公式更新:
5.一种基于GPU的集成电路电容参数提取方法,应用于计算设备中,该计算设备包括存储设备、CPU及GPU,所述存储设备存储集成电路版图、预先建立的格林函数库及权值向量,其特征在于,该方法包括: (a)设置目标精度q、GPU线程数threadNum及总目标路径数pathGoal,其中blockNum是threadNum的约数; (b)从所述存储设备中读取集成电路版图、格林函数库及权值向量; (c)在CPU的内存及GPU的全局存储器中分配电容参数提取所需的存储空间并初始化变量; (d)在所述集成电路版图中建立一个包围主导体的高斯面,高斯面内仅包含主导体并且不与任何环境导体相交; (e)根据GPU线程数threadNum、GPU线程块的数目blockNum及总目标路径数pathGoal,计算每个GPU线程块的最小目标路径数blockWalkMin与GPU线程的最大目标路径数 threadWalkMax ; (f)并行地运行threadNum个GPU线程,每个GPU线程根据建立的高斯面及读取的格林函数库生成threadWalkMax个行走起始点,根据读取的权值向量查找行走起始点对应的权值,并将行走起始点的坐标及行走起始点对应的权值存储到GPU的全局存储器中; (g)并行地运行blockNum个GPU线程块,GPU线程块中的每个GPU线程不断地从GPU的全局存储器中读取行走起始点进行随机行走,每次行走从一个行走起始点开始,直到击中某一导体,将每次行走击中导体的编号存储到GPU的全局存储器中,直到GPU线程执行了threadWalkMax次行走,或者整个GPU线程块执行了 blockWalkMin次行走,当所有GPU线程块都执行了 blockWalkMin次行走,本步骤结束; (h)并行地运行threadNum个GPU线程,从GPU的全局存储器中读取步骤(g)中存储的击中导体的编号及相应的行走起始点对应的权值,根据读取的击中导体的编号及相应的行走起始点对应的权值计算主导体与每个环境导体的累计电容值及累计电容平方和,并将计算的主导体与每个环境导体的累计电容值及累计电容平方和存储到GPU的全局存储器中; (i)将GPU的全局存储器中存储的主导体与每个环境导体的累计电容值及累计电容平方和复制到CPU的内存中;(j)根据CPU的内存中存储的主导体与每个环境导体的累计电容值及累计电容平方和计算主导体的自电容的相对误差relError,若relError小于等于目标精度q,则计算主导体与每个环境导体之间的耦合电容及主导体的自电容,否则,若relError大于目标精度q,则更新总目标路径数pathGoal,然后返回步骤(e),更新后的总目标路径数即达到目标精度还需行走的路径数。
6.如权利要求5所述的基于GPU的集成电路电容参数提取方法,其特征在于,所述GPU线程块的最小目标路径数blockWalkMin与GPU线程的最大目标路径数threadWalkMax根据以下公式计算:
7.如权利要求5所述的基于GPU的集成电路电容参数提取方法,其特征在于,步骤(f)中每个行走起始点的生成包括步骤: (Π)从建立的高斯面上随机选取一个点,以选取的点为中心,构造一个极大的不包含任何导体的立方体转移区 域;及 (f2)在转移区域的表面,根据读取的格林函数库,选取一个点作为行走起始点。
8.如权利要求5所述的基于GPU的集成电路电容参数提取方法,其特征在于,步骤(g)中每次行走包括步骤: (gl)从GPU的全局存储器中读取一个行走起始点作为当前行走点; (g2)以当前行走点为中心,构造一个极大的不包含导体的立方体转移区域; (g3)根据读取的格林函数库,在当前行走点的转移区域的表面随机选取一个点作为下一个行走点; (g4)判断下一个行走点是否击中导体,若未击中导体,则跳转到步骤(g2);及(g5)否则,若下一个行走点击中导体,将本次行走击中导体的编号存储到GPU的全局存储器中。
9.如权利要求5所述的基于GPU的集成电路电容参数提取方法,其特征在于,所述步骤(j)包括: (jl)计算累计已行走的路径数pathNum ; (J2)根据CPU的内存中存储的主导体与每个环境导体的累计电容值及累计电容平方和计算主导体和每个环境导体之间的耦合电容的误差; (J3)根据主导体与每个环境导体的累计电容值及主导体和每个环境导体之间的耦合电容的误差计算主导体的自电容的相对误差relError ; (J4)判断主导体的自电容的相对误差relError是否小于等于目标精度q ; (j5)若relError小于等于目标精度q,则计算主导体与每个环境导体之间的耦合电容及主导体的自电容,并输出主导体和每个环境导体之间的耦合电容的误差、主导体的自电容的相对误差relError、主导体与每个环境导体之间的耦合电容及主导体的自电容;及(j6)若relError大于目标精度q,根据当前累计已行走的路径数pathNum及主导体的自电容的相对误差relError更新总目标路径数pathGoal。
10.如权利要求5所述的基于GPU的集成电路电容参数提取方法,其特征在于,所述总目标路径数pathGoal根据以下公式更新:
全文摘要
一种基于GPU的集成电路电容参数提取系统及方法,该系统包括随机行走开始模块、随机行走跳转模块及随机行走统计模块。各模块在GPU的全局存储器上进行数据交换。每个模块并行运行多个GPU线程。随机行走开始模块中,每个GPU线程生成指定数量的行走起始点并获得行走起始点对应的权值。随机行走跳转模块中,每个GPU线程进行指定次数随机行走,获得每次行走击中导体的编号。随机行走统计模块中,每个GPU线程读取指定数量的击中导体的编号及相应的行走起始点对应的权值用以计算累计电容值及累计电容平方和。若主导体自电容的相对误差未达到目标精度,则估算还需行走的路径数。本发明能够实现集成电路电容参数的快速提取。
文档编号G06F17/50GK103198177SQ20131007617
公开日2013年7月10日 申请日期2013年3月11日 优先权日2013年3月11日
发明者喻文健, 翟匡亚, 庄昊 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1