基于管理进程的集成电路仿真粗颗粒并行方法及装置与流程

文档序号:25543465发布日期:2021-06-18 20:40

技术特征:

1.基于管理进程的集成电路仿真粗颗粒并行方法,其特征在于,包括:

将整个集成电路模型的电磁仿真分割成多个计算颗粒,获取各计算颗粒的加权cpu时间和总cpu时间,依据所述加权cpu时间和所述总cpu时间的占比确定出计算粗颗粒;所述计算颗粒为需要多次重复执行的计算单元;

建立管理进程,所述管理进程读取所有需要仿真的集成电路模型,定义对象存储所述集成电路模型的模型信息、计算条件、计算状态以及管理进程与计算进程的消息内容存储;

通过所述管理进程并行发起多个独立的计算进程,所述管理进程与各计算进程进行通信实现对计算进程的管理,各计算进程之间不进行任何通信;每个被发起的计算进程根据收到的管理进程的应答信息,执行完成分配的一个计算粗颗粒或结束该计算进程;

当所有并行粗颗粒的计算任务都完成时,所述管理进程收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。

2.根据权利要求1所述的基于管理进程的集成电路仿真粗颗粒并行方法,其特征在于,所述将整个集成电路模型的电磁仿真分割成多个计算颗粒,获取各计算颗粒的加权cpu时间和总cpu时间,依据所述加权cpu时间和所述总cpu时间的占比确定出计算粗颗粒,具体包括:

划分出整个集成电路模型的电磁仿真中多次重复执行的计算单元作为计算颗粒,将各计算颗粒的加权cpu时间按照从大到小的顺序排序并依次累加直到累加和超过90%的所述总cpu时间,将所述累加和之中的每个计算颗粒作为一个并行粗颗粒;

所述计算颗粒的加权cpu时间的计算公式为:tweight,i=ntask,i*ti式中:tweight,i为第i个计算颗粒的加权cpu时间,ti为第i个计算颗粒单次计算的cpu时间,ntask,i为第i个计算颗粒执行的计算任务数;

所述整个计算过程的总cpu时间的计算公式为:

其中,t为整个计算过程的总cpu时间,m为整个计算过程被划分的计算颗粒数,tweight,i为第i个计算颗粒的加权cpu时间。

3.根据权利要求1所述的基于管理进程的集成电路仿真粗颗粒并行方法,其特征在于,所述定义对象存储所述集成电路模型的模型信息、计算条件、计算状态以及管理进程与计算进程的消息内容存储,具体包括:

针对所有的集成电路模型,定义对象m,所述对象m包括集成电路模型存储字段、集成电路模型类型存储字段、集成电路模型文件路径存储字段及所述集成电路模型对应的剖分的网格数据文件路径存储字段、集成电路模型计算条件存储字段、集成电路模型计算状态存储字段和进程的消息内容存储字段;

所述集成电路模型存储字段记为data,该字段存储集成电路模型的所有信息,包括定义集成电路模型的层信息、集成电路各层的版图信息、集成电路各层的介质信息、集成电路各层的连接关系以及集成电路的外部电路;

所述集成电路模型类型存储字段记为type,该字段存储所述集成电路模型的仿真类型和集成电路模型的规模;所述集成电路模型的仿真类型包括:多层pcb版图模型、ic封装模型、多层厘米级至纳米级尺度范围的多尺度结构芯片设计模型,以及多个集成电路模型的联合仿真;所述集成电路模型的规模包括:层数在4层以下的小规模集成电路模型、层数在4层以上20层以下的中等规模集成电路模型以及层数在20层以上的大规模集成电路模型;

所述集成电路模型文件路径存储字段及所述集成电路模型对应的剖分的网格数据文件路径存储字段记为path;

所述集成电路模型计算条件存储字段记为net,该字段存储不同集成电路模型的计算参数,包括:集成电路的直流压降分析和集成电路的电热耦合分析的端口与端口初始温度信息、集成电路电源完整性分析初始条件与仿真频率信息、集成电路信号完整性分析初始条件与仿真频率信息、集成电路电源完整性与信号完整性优化指标与仿真频率信息、集成电路的电磁干扰和电磁兼容分析的仿真频率与仿真端口信息、集成电路的等效电路参数提取的待分析端口信息与集成电路的ibis模型提取的待分析端口信息;

所述集成电路模型计算状态存储字段记为state,该字段存储集成电路模型计算状态,包括以下5种计算状态:未计算且未生成网格,用c0_m0表示;未计算且正在生成网格,用c0_m1表示;未计算且生成网格完毕,用c0_m表示;正在计算且生成网格完毕,用c1_m表示;完成计算,用c_m表示;

所述进程的消息内容存储字段记为message,该字段存储管理进程与计算进程之间发送的消息,发送的消息包括:查询指令,用inquire表示;结果更新指令,用update表示;进入网格生成指令,用p_y表示;不生成网格而是直接读取网格进行计算指令,用p_n表示;关闭进程指令,用p_nn表示;

所述针对所有的集成电路模型定义的对象m用m[data][type][path][net][state][message]完整表示,所述对象m泛指存储介质中的内存区,对象m是连续的或者非连续的,或者是远程数据库记录或者是一个字符串,或者是json,xml,ini文件。

4.根据权利要求1所述的基于管理进程的集成电路仿真粗颗粒并行方法,其特征在于,所述通过管理进程并行发起多个独立的计算进程,所述管理进程与各计算进程进行通信实现对计算进程的管理,各计算进程之间不进行任何通信,具体包括:

s101:建立一个管理进程mk,如果建立成功,进入步骤s102,如果建立失败,进入步骤s109;

s102:定义对象m[data][type][path][net][state][message],定义对象m的元素mi为与并行粗颗粒对应的对象m字段data、type、path、net、state、message的具体实例;将集成电路模型存入对象m的[data];归类集成电路模型的类型,将其存入对象m的[type];将集成电路模型的路径以及所述集成电路模型对应的生产剖分的网格数据文件路径存入对象m的[path]中;将集成电路模型的计算条件存入对象m中的[net];初始化对象m的字段state=c0_m0;初始化对象m的message为空;初始化进程号ki=1;

s103:管理进程mk建立第ki个计算进程,如果第ki个计算进程建立失败,暂停时间tpause,进入步骤s103;如果第ki个计算进程建立成功,将第ki个计算进程置于挂起状态;ki=ki+1,如果ki=允许创建的最大计算进程数,进入步骤s104,否则进入步骤s103;

s104:管理进程mk进入http网络服务应答状态,查询所有计算进程的工作状态及进程池中的计算进程数,所述工作状态包括挂起、就绪、退出,如果进程池中的计算进程数小于允许创建的最大计算进程数,进入步骤s103,否则激活所有挂起状态的计算进程进入就绪状态并进入步骤s105;

s105:如果管理进程mk收到任意计算进程kj发的其元素的字段message=inquire,其中1≤kj≤允许创建的最大进程数,进入步骤s106;如果管理进程mk收到任意计算进程kn发的其元素的字段message=update,其中1≤kn≤允许创建的最大进程数,更新该计算进程发送的并行粗颗粒的对象m的计算状态state,进入步骤s104;否则直接进入步骤s104;

s106:管理进程mk查询对象m的所有元素的计算状态,如果对象m的所有元素的字段state=c_m,说明所有计算任务都计算完毕,进入步骤s109;否则进入步骤s107;

s107:如果对象m的某个元素mi的字段state=c0_m0,更新该元素mi的字段state=c0_m1,管理进程mk回复计算进程kj的指令为该元素mi的字段message=p_y,进入步骤s108;如果对象m的某个元素mi的字段state=c0_m,更新该元素mi的字段state=c1_m,管理进程mk回复计算进程kj的指令为该元素mi的字段message=p_n,进入步骤s108;如果对象m的某个元素mi的字段state=c1_m或state=c_m,查询标记指向对象m的字段net的下一个元素,继续查询属于同一集成电路模型的并行粗颗粒,如果已遍历对象m的字段net的所有元素,进入步骤s106,否则进入步骤s107;如果对象m的某个元素mi的字段state=c0_m1,查询标记指向对象m的字段data的下一个元素,继续查询下一个集成电路模型的并行粗颗粒,如果已遍历对象m的字段data的所有元素,进入步骤s106,否则进入步骤s107;

s108:进入步骤s104;

s109:向所有计算进程发送p_nn指令,关闭所有计算进程,结束管理进程mk。

5.根据权利要求1所述的基于管理进程的集成电路仿真粗颗粒并行方法,其特征在于,所述每个被发起的计算进程根据收到的管理进程的应答信息,执行完成分配的一个计算粗颗粒或结束该计算进程,具体包括:

s201:计算进程ki发送该元素的字段message=inquire到管理进程mk;

s202:如果计算进程ki超过时间ttimeout没收到mk返回的消息,进入步骤s204;如果计算进程ki收到的指令为元素mi的字段message=p_nn,该计算进程结束;如果计算进程ki收到的指令为元素mi的字段message=p_n,计算进程ki基于path字段定义的路径读取当前集成电路的剖分的网格数据文件,基于type字段定义的集成电路模型计算条件,进入计算模式,完成type字段定义的规定计算,计算完毕后更新m的元素mi的字段state=c_m,发送该元素的字段message=update到管理进程mk,将更新后的m的元素mi的字段state=c_m发送到管理进程mk,进入步骤s204;如果计算进程ki收到的指令为元素mi的字段message=p_y,进入步骤s203;

s203:计算进程ki针对当前集成电路模型进行网格剖分,如果成功剖分网格,将网格数存储在path字段定义的网格路径的位置,更新m的元素mi的字段state=c0_m,发送该元素的字段message=update到管理进程mk,将更新后的m的元素mi的字段state=c0_m发送到管理进程mk;如果网格剖分失败,更新m的元素mi的字段state=c0_m0,发送该元素的字段message=update到管理进程mk,将更新后的m的元素mi的字段state=c0_m0发送到管理进程mk;

步骤s204:中断时间tpause,进入步骤s201。

6.基于管理进程的集成电路仿真粗颗粒并行装置,其特征在于,包括:

计算颗粒划分模块,用于将整个集成电路模型的电磁仿真分割成多个计算颗粒,获取各计算颗粒的加权cpu时间和总cpu时间,依据所述加权cpu时间和所述总cpu时间的占比确定出计算粗颗粒;所述计算颗粒为需要多次重复执行的计算单元;

管理进程构建模块,用于建立管理进程,所述管理进程读取所有需要仿真的集成电路模型,定义对象存储所述集成电路模型的模型信息、计算条件、计算状态以及管理进程与计算进程的消息内容存储;

粗颗粒并行计算模块,用于通过所述管理进程并行发起多个独立的计算进程,所述管理进程与各计算进程进行通信实现对计算进程的管理,各计算进程之间不进行任何通信;每个被发起的计算进程根据收到的管理进程的应答信息,执行完成分配的一个计算粗颗粒或结束该计算进程;

计算结果收集与整理模块,用于当所有并行粗颗粒的计算任务都完成时,所述管理进程收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。

7.根据权利要求6所述的基于管理进程的集成电路仿真粗颗粒并行装置,其特征在于,所述将整个集成电路模型的电磁仿真分割成多个计算颗粒,获取各计算颗粒的加权cpu时间和总cpu时间,依据所述加权cpu时间和所述总cpu时间的占比确定出计算粗颗粒,具体包括:

划分出整个集成电路模型的电磁仿真中多次重复执行的计算单元作为计算颗粒,将各计算颗粒的加权cpu时间按照从大到小的顺序排序并依次累加直到累加和超过90%的所述总cpu时间,将所述累加和之中的每个计算颗粒作为一个并行粗颗粒;

所述计算颗粒的加权cpu时间的计算公式为:tweight,i=ntask,i*ti式中:tweight,i为第i个计算颗粒的加权cpu时间,ti为第i个计算颗粒单次计算的cpu时间,ntask,i为第i个计算颗粒执行的计算任务数;

所述整个计算过程的总cpu时间的计算公式为:

其中,t为整个计算过程的总cpu时间,m为整个计算过程被划分的计算颗粒数,tweight,i为第i个计算颗粒的加权cpu时间。

8.根据权利要求6所述的基于管理进程的集成电路仿真粗颗粒并行装置,其特征在于,所述定义对象存储所述集成电路模型的模型信息、计算条件、计算状态以及管理进程与计算进程的消息内容存储,具体包括:

针对所有的集成电路模型,定义对象m,所述对象m包括集成电路模型存储字段、集成电路模型类型存储字段、集成电路模型文件路径存储字段及所述集成电路模型对应的剖分的网格数据文件路径存储字段、集成电路模型计算条件存储字段、集成电路模型计算状态存储字段和进程的消息内容存储字段;

所述集成电路模型存储字段记为data,该字段存储集成电路模型的所有信息,包括定义集成电路模型的层信息、集成电路各层的版图信息、集成电路各层的介质信息、集成电路各层的连接关系以及集成电路的外部电路;

所述集成电路模型类型存储字段记为type,该字段存储所述集成电路模型的仿真类型和集成电路模型的规模;所述集成电路模型的仿真类型包括:多层pcb版图模型、ic封装模型、多层厘米级至纳米级尺度范围的多尺度结构芯片设计模型,以及多个集成电路模型的联合仿真;所述集成电路模型的规模包括:层数在4层以下的小规模集成电路模型、层数在4层以上20层以下的中等规模集成电路模型以及层数在20层以上的大规模集成电路模型;

所述集成电路模型文件路径存储字段及所述集成电路模型对应的剖分的网格数据文件路径存储字段记为path;

所述集成电路模型计算条件存储字段记为net,该字段存储不同集成电路模型的计算参数,包括:集成电路的直流压降分析和集成电路的电热耦合分析的端口与端口初始温度信息、集成电路电源完整性分析初始条件与仿真频率信息、集成电路信号完整性分析初始条件与仿真频率信息、集成电路电源完整性与信号完整性优化指标与仿真频率信息、集成电路的电磁干扰和电磁兼容分析的仿真频率与仿真端口信息、集成电路的等效电路参数提取的待分析端口信息与集成电路的ibis模型提取的待分析端口信息;

所述集成电路模型计算状态存储字段记为state,该字段存储集成电路模型计算状态,包括以下5种计算状态:未计算且未生成网格,用c0_m0表示;未计算且正在生成网格,用c0_m1表示;未计算且生成网格完毕,用c0_m表示;正在计算且生成网格完毕,用c1_m表示;完成计算,用c_m表示;

所述进程的消息内容存储字段记为message,该字段存储管理进程与计算进程之间发送的消息,发送的消息包括:查询指令,用inquire表示;结果更新指令,用update表示;进入网格生成指令,用p_y表示;不生成网格而是直接读取网格进行计算指令,用p_n表示;关闭进程指令,用p_nn表示;

所述针对所有的集成电路模型定义的对象m用m[data][type][path][net][state][message]完整表示,所述对象m泛指存储介质中的内存区,对象m是连续的或者非连续的,或者是远程数据库记录或者是一个字符串,或者是json,xml,ini文件。

9.根据权利要求6所述的基于管理进程的集成电路仿真粗颗粒并行装置,其特征在于,所述通过管理进程并行发起多个独立的计算进程,所述管理进程与各计算进程进行通信实现对计算进程的管理,各计算进程之间不进行任何通信,具体包括:

s101:建立一个管理进程mk,如果建立成功,进入步骤s102,如果建立失败,进入步骤s109;

s102:定义对象m[data][type][path][net][state][message],定义对象m的元素mi为与并行粗颗粒对应的对象m字段data、type、path、net、state、message的具体实例;将集成电路模型存入对象m的[data];归类集成电路模型的类型,将其存入对象m的[type];将集成电路模型的路径以及所述集成电路模型对应的生产剖分的网格数据文件路径存入对象m的[path]中;将集成电路模型的计算条件存入对象m中的[net];初始化对象m的字段state=c0_m0;初始化对象m的message为空;初始化进程号ki=1;

s103:管理进程mk建立第ki个计算进程,如果第ki个计算进程建立失败,暂停时间tpause,进入步骤s103;如果第ki个计算进程建立成功,将第ki个计算进程置于挂起状态;ki=ki+1,如果ki=允许创建的最大计算进程数,进入步骤s104,否则进入步骤s103;

s104:管理进程mk进入http网络服务应答状态,查询所有计算进程的工作状态及进程池中的计算进程数,所述工作状态包括挂起、就绪、退出,如果进程池中的计算进程数小于允许创建的最大计算进程数,进入步骤s103,否则激活所有挂起状态的计算进程进入就绪状态并进入步骤s105;

s105:如果管理进程mk收到任意计算进程kj发的其元素的字段message=inquire,其中1≤kj≤允许创建的最大进程数,进入步骤s106;如果管理进程mk收到任意计算进程kn发的其元素的字段message=update,其中1≤kn≤允许创建的最大进程数,更新该计算进程发送的并行粗颗粒的对象m的计算状态state,进入步骤s104;否则直接进入步骤s104;

s106:管理进程mk查询对象m的所有元素的计算状态,如果对象m的所有元素的字段state=c_m,说明所有计算任务都计算完毕,进入步骤s109;否则进入步骤s107;

s107:如果对象m的某个元素mi的字段state=c0_m0,更新该元素mi的字段state=c0_m1,管理进程mk回复计算进程kj的指令为该元素mi的字段message=p_y,进入步骤s108;如果对象m的某个元素mi的字段state=c0_m,更新该元素mi的字段state=c1_m,管理进程mk回复计算进程kj的指令为该元素mi的字段message=p_n,进入步骤s108;如果对象m的某个元素mi的字段state=c1_m或state=c_m,查询标记指向对象m的字段net的下一个元素,继续查询属于同一集成电路模型的并行粗颗粒,如果已遍历对象m的字段net的所有元素,进入步骤s106,否则进入步骤s107;如果对象m的某个元素mi的字段state=c0_m1,查询标记指向对象m的字段data的下一个元素,继续查询下一个集成电路模型的并行粗颗粒,如果已遍历对象m的字段data的所有元素,进入步骤s106,否则进入步骤s107;

s108:进入步骤s104;

s109:向所有计算进程发送p_nn指令,关闭所有计算进程,结束管理进程mk。

10.根据权利要求6所述的基于管理进程的集成电路仿真粗颗粒并行装置,其特征在于,所述每个被发起的计算进程根据收到的管理进程的应答信息,执行完成分配的一个计算粗颗粒或结束该计算进程,具体包括:

s201:计算进程ki发送该元素的字段message=inquire到管理进程mk;

s202:如果计算进程ki超过时间ttimeout没收到mk返回的消息,进入步骤s204;如果计算进程ki收到的指令为元素mi的字段message=p_nn,该计算进程结束;如果计算进程ki收到的指令为元素mi的字段message=p_n,计算进程ki基于path字段定义的路径读取当前集成电路的剖分的网格数据文件,基于type字段定义的集成电路模型计算条件,进入计算模式,完成type字段定义的规定计算,计算完毕后更新m的元素mi的字段state=c_m,发送该元素的字段message=update到管理进程mk,将更新后的m的元素mi的字段state=c_m发送到管理进程mk,进入步骤s204;如果计算进程ki收到的指令为元素mi的字段message=p_y,进入步骤s203;

s203:计算进程ki针对当前集成电路模型进行网格剖分,如果成功剖分网格,将网格数存储在path字段定义的网格路径的位置,更新m的元素mi的字段state=c0_m,发送该元素的字段message=update到管理进程mk,将更新后的m的元素mi的字段state=c0_m发送到管理进程mk;如果网格剖分失败,更新m的元素mi的字段state=c0_m0,发送该元素的字段message=update到管理进程mk,将更新后的m的元素mi的字段state=c0_m0发送到管理进程mk;

s204:中断时间tpause,进入步骤s201。


技术总结
本发明提供了基于管理进程的集成电路仿真粗颗粒并行方法及装置,包括:将整个集成电路模型的电磁仿真分割成多个计算颗粒,获取各计算颗粒的加权CPU时间和总CPU时间,依据所述加权CPU时间和所述总CPU时间的占比确定出计算粗颗粒;建立单个管理进程,通过所述管理进程并行发起多个独立的计算进程,每个计算进程执行一个计算粗颗粒;基于消息异步传递机制,实现各计算进程和管理进程独立异步建立通信,确保处理同一集成电路模型的不同进程使用相同的网格进行仿真计算,解决了常规并行计算因为同一集成电路模型采用不同网格带来的随机误差导致响应曲线出现抖动的问题;还能避免计算进程之间因为通信而带来的等待,提高集成电路仿真并行计算效率。

技术研发人员:唐章宏;邹军;汲亚飞;王芬;黄承清
受保护的技术使用者:北京智芯仿真科技有限公司
技术研发日:2021.04.27
技术公布日:2021.06.18
再多了解一些
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1