具有保密功能的集成电路仿真多线程管理并行方法及装置与流程

文档序号:25543462发布日期:2021-06-18 20:40阅读:来源:国知局

技术特征:

1.一种具有保密功能的集成电路仿真多线程管理并行方法,其特征在于,包括以下步骤:在客户端读取所有需要仿真的集成电路模型,将需要云平台进行计算的集成电路模型信息、计算条件提取出来,形成并行粗颗粒发送到云平台;

在云平台创建管理进程,通过管理进程读取客户端发送的所有需要仿真的并行粗颗粒,定义对象存储所述集成电路模型对应的并行粗颗粒的计算条件、计算状态,以及管理进程与计算进程的消息内容存储;

管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;所述互斥体为防止多个线程同时对同一对象进行操作的机制,其状态包括:互斥体等待状态:表示此时处于堵塞状态,线程只能等待;互斥体空闲状态:表示此时线程可进入工作;

计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒;

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

将云平台的最终计算结果传送到客户端,由客户端对最终计算结果进行显示。

2.根据权利要求1所述的具有保密功能的集成电路仿真多线程管理并行方法,其特征在于,所述将需要云平台进行计算的集成电路模型信息、计算条件提取出来,形成并行粗颗粒,具体包括:

在客户端将所有读取的集成电路模型的信息转化为实际计算的输入参数,删去所有与集成电路电磁仿真无关但对用户来说需要保密的信息,包括:集成电路模型中版图名称、元器件名称、功能、集成电路模型所用材料的名称,以及集成电路的外部电路名称;

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

所述计算颗粒的加权cpu时间的计算公式为:

式中:表示为第i个计算颗粒的加权cpu时间,表示为第i个计算颗粒单次计算的cpu时间,表示为第i个计算颗粒执行的计算任务数;

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

其中,t表示为整个计算过程的总cpu时间,m表示为整个计算程序被划分的计算颗粒数。

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

针对所有的集成电路模型对应的并行粗颗粒,定义对象m,所述对象m包含以下字段:

集成电路模型对应的并行粗颗粒存储字段,记为data,该字段存储集成电路模型与电磁仿真计算相关的所有信息,包括定义集成电路模型的层坐标信息、集成电路各层的版图坐标信息、集成电路各层的介质参数信息、集成电路各层的连接关系以及集成电路的外部电路提取出来的电路模型;

集成电路模型对应的并行粗颗粒类型存储字段,记为type,该字段存储所述集成电路模型的仿真类型和集成电路模型的规模;所述集成电路模型的仿真类型包括:多层pcb版图模型、ic封装模型、多层尺度更小的芯片设计模型,以及多个集成电路模型的联合仿真;所述集成电路模型的规模包括:层数在4层以下的小规模集成电路模型、层数在4层以上20层以下的中等规模集成电路模型以及层数在20层以上的大规模集成电路模型;

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

集成电路模型对应的并行粗颗粒计算条件存储字段,记为net,该字段存储不同集成电路模型的计算参数,包括:集成电路的直流压降分析和集成电路的电热耦合分析的端口参数、集成电路电源完整性分析参数、集成电路信号完整性分析参数、集成电路电源完整性与信号完整性优化参数、集成电路的电磁干扰和电磁兼容分析的仿真频率参数与仿真端口参数、集成电路的等效电路参数提取的端口参数与端口电压参数;

集成电路模型对应的并行粗颗粒计算状态存储字段,记为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泛指存储介质中的内存区。

4.根据权利要求3所述的具有保密功能的集成电路仿真多线程管理并行方法,其特征在于,所述管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理,包括:

步骤1.1,在云平台建立一个管理进程mk,若建立成功,进入步骤1.2,若建立失败,进入步骤1.7;

步骤1.2,定义并建立互斥体mutexdata和mutexexit,设置mutexwork=互斥体空闲,设置mutexexit=互斥体等待,定义对象m[data][type][path][net][state][message];将集成电路模型对应的并行粗颗粒存入对象m的[data];将归类集成电路模型对应的并行粗颗粒的类型存入对象m的[type];将所述集成电路模型对应的并行粗颗粒对应的生产网格剖分文件路径存入对象m的[path]中;将集成电路模型对应的并行粗颗粒的计算条件存入对象m中的[net];初始化对象m的state=c0_m0;初始化对象m的message为空;初始化进程号ki=1;

步骤1.3:管理进程mk建立第ki个计算进程,如果第ki个计算进程建立失败,暂停预定时间,进入步骤1.3;如果第ki个计算进程建立成功,将第ki个计算进程置于挂起状态;,如果ki=允许创建的最大进程数,进入步骤1.4,否则进入步骤1.3;ki为自然数;

步骤1.4:如果mutexexit=互斥体空闲,管理进程mk进入步骤1.7;否则管理进程mk进入http网络服务应答状态,查询所有计算进程的工作状态及进程池中的计算进程数,如果进程池中的计算进程数小于允许创建的最大计算进程数,进入步骤1.3,否则激活所有挂起状态的计算进程进入就绪状态并进入步骤1.5;

步骤1.5:如果管理进程mk收到任意计算进程kj发送的其元素的字段message=inquire,进入步骤1.6;否则直接进入步骤1.4;1≤j≤允许创建的最大进程数;

步骤1.6:管理进程mk建立一个线程tj进行应答工作,进入步骤1.4;

步骤1.7:删除互斥体mutexwork和mutexexit,向所有计算进程发送p_nn指令,关闭所有计算进程,销毁管理进程mk建立的所有线程,结束管理进程mk;

所述步骤1.6包括:

步骤1.6.1,线程tj就绪进入指令分析阶段,若指令为message=inquire,进入步骤1.6.3;若指令为message=update,进入步骤1.6.2;

步骤1.6.2,若互斥体mutexwork=互斥体等待,线程tj进入等待状态;若互斥体mutexwork=互斥体空闲,线程tj设置互斥体mutexwork=互斥体等待,线程tj更新数据区元素mi,线程tj设置互斥体mutexwork=互斥体空闲,线程tj自我销毁;

步骤1.6.3,若互斥体mutexwork=互斥体等待,线程tj进入等待状态;若互斥体mutexwork=互斥体空闲,线程tj设置互斥体mutexwork=互斥体等待,线程tj查询对象m的数据区,若对象m的所有元素的state=c_m,说明对象m的数据区所有计算任务都计算完毕,线程tj设置互斥体mutexwork=互斥体空闲,设置互斥体mutexexit=互斥体空闲,线程tj销毁;否则线程tj进入步骤1.6.4;

步骤1.6.4,如果对象m的某个元素mi的state=c0_m0,更新该元素mi的state=c0_m1,管理进程mk回复计算进程kj的指令为该元素mi的字段message=p_y;

如果对象m的某个元素mi的state=c0_m,更新该元素mi的state=c1_m,管理进程mk回复计算进程kj的指令为该元素mi的字段message=p_n;

如果对象m的某个元素mi的state=c1_m或state=c_m,查询标记指向对象m的字段net的下一个元素,继续查询属于同一集成电路模型的并行粗颗粒,如果已遍历对象m的字段net的所有元素,则进入步骤1.6.3,否则进入步骤1.6.4;

如果对象m的某个元素mi的state=c0_m1,查询标记指向对象m的字段data的下一个元素,继续查询下一个集成电路模型的并行粗颗粒,如果已遍历对象m的字段data的所有元素,进入步骤1.6.3,否则进入步骤1.6.4。

5.根据权利要求3所述的具有保密功能的集成电路仿真多线程管理并行方法,其特征在于,所述计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒,包括:

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

步骤2.2:如果计算进程ki超过预定时间没收到管理进程mk返回的消息,进入步骤2.4;

如果计算进程ki收到的指令为该元素的字段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,进入步骤2.4;

如果计算进程ki收到的指令为元素mi的字段message=p_y,进入步骤2.3;

步骤2.3:计算进程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;

步骤2.4:中断预定时间,进入步骤2.1。

6.一种具有保密功能的集成电路仿真多线程管理并行装置,其特征在于,包括:

第一模块,用于在客户端读取所有需要仿真的集成电路模型,将需要云平台进行计算的集成电路模型信息、计算条件提取出来,形成并行粗颗粒发送到云平台;

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

第三模块,用于在云平台创建管理进程,通过管理进程读取客户端发送的所有需要仿真的并行粗颗粒,定义对象存储所述集成电路模型对应的并行粗颗粒的计算条件、计算状态,以及管理进程与计算进程的消息内容存储;

第四模块,用于管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;所述互斥体为防止多个线程同时对同一对象进行操作的机制,其状态包括:互斥体等待状态:表示此时处于堵塞状态,线程只能等待;互斥体空闲状态:表示此时线程可进入工作;

第五模块,用于计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒;

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

第七模块,用于将云平台的最终计算结果传送到客户端,由客户端对最终计算结果进行显示。

7.根据权利要求6所述的具有保密功能的集成电路仿真多线程管理并行装置,其特征在于,所述将需要云平台进行计算的集成电路模型信息、计算条件提取出来,形成并行粗颗粒,具体包括:

在客户端将所有读取的集成电路模型的信息转化为实际计算的输入参数,删去所有与集成电路电磁仿真无关但对用户来说需要保密的信息,包括:集成电路模型中版图名称、元器件名称、功能、集成电路模型所用材料的名称,以及集成电路的外部电路名称;

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

所述计算颗粒的加权cpu时间的计算公式为:

式中:表示为第i个计算颗粒的加权cpu时间,表示为第i个计算颗粒单次计算的cpu时间,表示为第i个计算颗粒执行的计算任务数;

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

其中,t表示为整个计算过程的总cpu时间,m表示为整个计算程序被划分的计算颗粒数。

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

针对所有的集成电路模型对应的并行粗颗粒,定义对象m,所述对象m包含以下字段:

集成电路模型对应的并行粗颗粒存储字段,记为data,该字段存储集成电路模型与电磁仿真计算相关的所有信息,包括定义集成电路模型的层坐标信息、集成电路各层的版图坐标信息、集成电路各层的介质参数信息、集成电路各层的连接关系以及集成电路的外部电路提取出来的电路模型;

集成电路模型对应的并行粗颗粒类型存储字段,记为type,该字段存储所述集成电路模型的仿真类型和集成电路模型的规模;所述集成电路模型的仿真类型包括:多层pcb版图模型、ic封装模型、多层尺度更小的芯片设计模型,以及多个集成电路模型的联合仿真;所述集成电路模型的规模包括:层数在4层以下的小规模集成电路模型、层数在4层以上20层以下的中等规模集成电路模型以及层数在20层以上的大规模集成电路模型;

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

集成电路模型对应的并行粗颗粒计算条件存储字段,记为net,该字段存储不同集成电路模型的计算参数,包括:集成电路的直流压降分析和集成电路的电热耦合分析的端口参数、集成电路电源完整性分析参数、集成电路信号完整性分析参数、集成电路电源完整性与信号完整性优化参数、集成电路的电磁干扰和电磁兼容分析的仿真频率参数与仿真端口参数、集成电路的等效电路参数提取的端口参数与端口电压参数;

集成电路模型对应的并行粗颗粒计算状态存储字段,记为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泛指存储介质中的内存区。

9.根据权利要求8所述的具有保密功能的集成电路仿真多线程管理并行装置,其特征在于,所述管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理,包括:

第一单元:用于在云平台建立一个管理进程mk,如果建立成功,进入第二单元;如果建立失败,进入第七单元;

第二单元:用于定义并建立互斥体mutexwork和mutexexit,设置mutexwork=互斥体空闲,设置mutexexit=互斥体等待,定义对象m[data][type][path][net][state][message];将集成电路模型对应的并行粗颗粒存入对象m的[data];将归类集成电路模型对应的并行粗颗粒的类型存入对象m的[type];将所述集成电路模型对应的并行粗颗粒对应的生产网格剖分文件路径存入对象m的[path]中;将集成电路模型对应的并行粗颗粒的计算条件存入对象m中的[net];初始化对象m的state=c0_m0;初始化对象m的message为空;初始化进程号ki=1;

第三单元:用于管理进程mk建立第ki个计算进程,如果第ki个计算进程建立失败,暂停预定时间,第三单元;如果第ki个计算进程建立成功,将第ki个计算进程置于挂起状态;,如果ki=允许创建的最大进程数,进入第四单元,否则进入第三单元;ki为自然数;

第四单元:用于在mutexexit=互斥体空闲时,管理进程mk进入第七单元;否则管理进程mk进入http网络服务应答状态,查询所有计算进程的工作状态及进程池中的计算进程数,如果进程池中的计算进程数小于允许创建的最大计算进程数,进入第三单元,否则激活所有挂起状态的计算进程进入就绪状态并进入第五单元;

第五单元:用于在管理进程mk收到任意计算进程kj发送的其元素的字段message=inquire时,进入第六单元;否则直接进入第四单元;1≤j≤允许创建的最大进程数;

第六单元:用于管理进程mk建立一个线程tj进行应答工作,进入第四单元;

第七单元:用于删除互斥体mutexwork和mutexexit,向所有计算进程发送p_nn指令,关闭所有计算进程,销毁管理进程mk建立的所有线程,结束管理进程mk;

所述第六单元包括:

第一子单元,用于在线程tj就绪进入指令分析阶段后,若指令为message=inquire,进入第三子单元;若指令为message=update,进入第二子单元;

第二子单元,用于在互斥体mutexwork=互斥体等待时,线程tj进入等待状态;若互斥体mutexwork=互斥体空闲,线程tj设置互斥体mutexwork=互斥体等待,线程tj更新数据区元素mi,线程tj设置互斥体mutexwork=互斥体空闲,线程tj自我销毁;

第三子单元,用于在互斥体mutexwork=互斥体等待时,线程tj进入等待状态;若互斥体mutexwork=互斥体空闲,线程tj设置互斥体mutexwork=互斥体等待,线程tj查询对象m的数据区,若对象m的所有元素的state=c_m,说明对象m的数据区所有计算任务都计算完毕,线程tj设置互斥体mutexwork=互斥体空闲,设置互斥体mutexexit=互斥体空闲,线程tj销毁;否则线程tj进入第四子单元;

第四子单元,用于对象m的某个元素mi的state=c0_m0时,更新该元素mi的state=c0_m1,管理进程mk回复计算进程kj的指令为该元素mi的字段message=p_y;

如果对象m的某个元素mi的state=c0_m,更新该元素mi的state=c1_m,管理进程mk回复计算进程kj的指令为该元素mi的字段message=p_n;

如果对象m的某个元素mi的state=c1_m或state=c_m,查询标记指向对象m的字段net的下一个元素,继续查询属于同一集成电路模型的并行粗颗粒,如果已遍历对象m的字段net的所有元素,则进入第三子单元,否则进入第四子单元;

如果对象m的某个元素mi的state=c0_m1,查询标记指向对象m的字段data的下一个元素,继续查询下一个集成电路模型的并行粗颗粒,如果已遍历对象m的字段data的所有元素,进入第三子单元,否则进入第四子单元。

10.根据权利要求8所述的具有保密功能的集成电路仿真多线程管理并行装置,其特征在于,所述计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒,包括:

第一计算单元:用于计算进程ki发送该元素的字段message=inquire到管理进程mk;

第二计算单元:用于计算进程ki超过预定时间没收到管理进程mk返回的消息,进入第四计算单元;

如果计算进程ki收到的指令为该元素的字段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,进入第四计算单元;

如果计算进程ki收到的指令为元素mi的字段message=p_y,进入第三计算单元;

第三计算单元:用于计算进程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;

第四计算单元:用于中断预定时间,进入第一计算单元。


技术总结
本发明提供一种具有保密功能的集成电路仿真多线程管理并行方法及装置,包括:将整个集成电路云平台电磁仿真分为两部分:云计算平台和客户端;客户端将需要计算的集成电路模型信息、计算条件提取出来,形成并行粗颗粒发送到云平台;云平台建立管理进程,管理进程创建互斥体和线程,线程依据工作互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;计算进程与管理进程创建的线程实现查询和应答的通信,完成分发的计算粗颗粒。本发明只将客户端提取的并行粗颗粒发送到云平台,而不是将整个集成电路模型的所有信息发送到云平台,从而避免了将集成电路模型通过互联网泄露出去;采用互斥体和线程对计算粗颗粒进行分发并管理,提高并行计算效率。

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