买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于FPGA和CPU异构计算的随机行走寄生电容参数提取方法_复旦大学_201910216147.7 

申请/专利权人:复旦大学

申请日:2019-03-21

公开(公告)日:2024-03-19

公开(公告)号:CN111797584B

主分类号:G06F30/392

分类号:G06F30/392;G06F15/78

优先权:

专利状态码:有效-授权

法律状态:2024.03.19#授权;2021.01.08#实质审查的生效;2020.10.20#公开

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

主权项: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的表面向外平移拓展得到,拓展的距离可取与相邻导体距离的12左右;最终寄生电容参数的结果与高斯面的大小无关;步骤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:针对第kk=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条路径,共执行NpathNstart*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的面积,nr是高斯面Gi在初始点r处的外法向;mk是第k条路径最后触及的导体的编号,若该路径在CPU中的运行1000步仍未触及任何导体,则视为该条路径走向了无穷远处,且mk记为-1。

全文数据:

权利要求:

百度查询: 复旦大学 基于FPGA和CPU异构计算的随机行走寄生电容参数提取方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。