CN112989746B - 一种多线程管理的集成电路仿真粗颗粒并行方法及装置 - Google Patents
一种多线程管理的集成电路仿真粗颗粒并行方法及装置 Download PDFInfo
- Publication number
- CN112989746B CN112989746B CN202110459195.6A CN202110459195A CN112989746B CN 112989746 B CN112989746 B CN 112989746B CN 202110459195 A CN202110459195 A CN 202110459195A CN 112989746 B CN112989746 B CN 112989746B
- Authority
- CN
- China
- Prior art keywords
- integrated circuit
- calculation
- mutex
- state
- thread
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/06—Structured ASICs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Architecture (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明提供了一种多线程管理的集成电路电磁仿真粗颗粒并行方法及装置,包括:基于所有待仿真的集成电路模型,确定出计算粗颗粒;创建管理进程,管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒。本发明基于互斥体实现多线程的管理进程对多个计算进程实现高效无冲突的管理,确保处理同一集成电路模型的不同进程使用相同的网格进行电磁仿真,解决了常规并行计算因为同一集成电路模型采用不同网格带来的随机误差导致响应曲线出现抖动的问题,提高集成电路仿真并行计算效率。
Description
技术领域
本发明涉及集成电路仿真技术领域,特别涉及一种多线程管理的集成电路仿真粗颗粒并行方法及装置。
背景技术
基于云计算平台的超大规模并行计算是未来多用户、多任务、以及多模型大规模仿真模拟的趋势。在云计算平台下,需要不同用户在不同时段通过网络提交不同模型的多个计算任务,这些计算任务形成计算队列,最终按顺序分配在千核、以及万核以上的集群上运行,对于如何减少计算节点的等待时间、高效率的运行用户提交的计算任务,从而减少计算任务在队列中的等待时间不仅是提交计算任务的用户最为关心的问题,而且是建设云计算平台需要解决的最为核心的问题。针对多层超大规模集成电路的仿真,也可基于云计算平台来实现。不同用户通过云计算平台提交不同的集成电路模型,提出不同的仿真需求,如集成电路的直流压降分析、集成电路的电热耦合分析、集成电路的电磁干扰和电磁兼容分析、以及集成电路的等效电路参数提取等,这些计算模型和计算任务,也将形成计算队列被分配在集群上进行并行计算。而如何更快而不失精准的获得每个集成电路模型、每个计算任务的计算结果是集成电路设计和优化提出的最大需求,也是超大规模集成电路仿真所追求的最终目标。
在千核、万核以上的集群上对多模型、多计算任务的集成电路问题进行仿真时,最直接、最基本的提高仿真效率的方法是并行计算。其基本思路是将所有计算任务分割成小的、独立的计算任务,然后将这些计算任务分配到不同的CPU核上进行计算,最终,将不同CPU核的计算结果进行收集,形成不同计算模型、以及不同计算任务的计算结果。在并行计算中,将计算任务进行分割的分割方法、以及分割顺序等因素将直接影响并行计算的计算效率,理想的计算任务分割方法将使得所有模型、所有计算任务的计算速度提高N倍,这里的N为所用集群的CPU核数。然而,由于计算过程中有些计算的顺序性、非独立性、以及不可分割性等,将导致计算任务的实际分割和计算过程中不可避免的出现不同进程的等待和不同进程之间大量通信等现象,这些现象将导致最终的计算速度不能提高N倍,甚至远远低于N倍。
因此,本发明提供一种多线程管理的集成电路仿真粗颗粒并行方法及装置,为一种高效的并行计算方法,其计算效率逼近理想计算效率。
发明内容
(一)发明目的
为克服上述现有技术存在的至少一种缺陷,本发明提供了一种多线程管理的集成电路仿真粗颗粒并行方法及装置,为一种高效的并行计算方法,其计算效率逼近理想计算效率。
(二)技术方案
作为本发明的第一方面,本发明公开了一种多线程管理的集成电路仿真粗颗粒并行方法,包括:
基于所有待仿真的集成电路模型,确定出计算粗颗粒;
创建管理进程,通过管理进程读取所有需要仿真的集成电路模型,定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储;
管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;所述互斥体为防止多个线程同时对同一对象进行操作的机制,其状态包括:互斥体等待状态:此时处于堵塞状态,线程只能等待;互斥体空闲状态:此时线程可进入工作;
计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒;
当所有并行粗颗粒的计算任务都完成时,管理进程收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
一种可能的实施方式中,所述定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储包括:
针对所有的集成电路模型,定义对象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泛指存储介质中的内存区;
一种可能的实施方式中,所述管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理,包括:
步骤1.1:建立一个管理进程MK,如果建立成功,进入步骤1.2;如果建立失败,进入步骤1.7;
步骤1.2:定义并建立互斥体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;
步骤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。
一种可能的实施方式中,所述计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒,包括:
步骤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。
作为本发明的第二方面,本发明公开了一种多线程管理的集成电路仿真粗颗粒并行装置,包括:
第一模块,用于基于所有待仿真的集成电路模型,确定出计算粗颗粒;
第二模块,用于创建管理进程,通过管理进程读取所有需要仿真的集成电路模型,定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储;
第三模块,用于管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;所述互斥体为防止多个线程同时对同一对象进行操作的机制,其状态包括:互斥体等待状态:表示此时处于堵塞状态,线程只能等待;互斥体空闲状态:表示此时线程可进入工作;
第四模块,用于计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒;
第五模块,用于当所有并行粗颗粒的计算任务都完成时,管理进程收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
一种可能的实施方式中,所述定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储包括:
针对所有的集成电路模型,定义对象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泛指存储介质中的内存区;
一种可能的实施方式中,所述管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理,包括:
第一单元:用于建立一个管理进程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的所有元素,进入第三子单元,否则进入第四子单元。
一种可能的实施方式中,所述计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒,包括:
第一计算单元:用于计算进程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;
第四计算单元:用于中断预定时间,进入第一计算单元。
(三)有益效果
本发明提供的一种多线程管理的集成电路仿真粗颗粒并行方法及装置,基于所有待仿真的集成电路模型,确定出计算粗颗粒;创建管理进程,管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒。本发明基于互斥体实现多线程的管理进程对多个计算进程实现高效无冲突的管理,确保处理同一集成电路模型的不同进程使用相同的网格进行电磁仿真,解决了常规并行计算因为同一集成电路模型采用不同网格带来的随机误差导致响应曲线出现抖动的问题,提高集成电路仿真并行计算效率。本发明管理进程通过多线程实现多计算任务与多计算进程的管理,而计算进程的实现方式不变;通过多线程实现数以万计的计算任务对数百、数千个计算进程进行快速分发和管理。
附图说明
以下参考附图描述的实施例是示例性的,旨在用于解释和说明本发明,而不能理解为对本发明的保护范围的限制。
图1是本发明提供的一种多线程管理的集成电路仿真粗颗粒并行方法的流程图。
图2是本发明提供的一种多线程管理的集成电路仿真粗颗粒并行方法的管理进程工作流程图。
图3是本发明提供的一种多线程管理的集成电路仿真粗颗粒并行方法的管理进程创建的线程应答流程图。
图4是本发明提供的一种多线程管理的集成电路仿真粗颗粒并行方法的计算进程工作流程图。
图5是本发明提供的一种多线程管理的集成电路仿真粗颗粒并行装置的结构示意图。
具体实施方式
为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。
需要说明的是:在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本发明一部分实施例,而不是全部的实施例,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,均仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明保护范围的限制。
下面参考图1详细描述本发明提供的一种多线程管理的集成电路仿真粗颗粒并行方法的第一实施例。如图1所示,本实施例提供的多线程管理的集成电路仿真粗颗粒并行方法主要包括有:
粗颗粒并行计算是一种高效的并行计算方法,由于其分割计算任务时仅对占绝对多的CPU计算时间的计算任务进行粗颗粒的分割,分割次数少,尽可能的减少了不同进程的通信时间;其次,结合计算任务随机动态分配的粗颗粒并行则进一步减少了不同进程的等待时间,因为不同计算任务所用的CPU时间不同,传统并行计算方法固定的给每个计算进程分配相同多的计算模型或计算任务,导致最终部分或大部分计算进程处于等待状态,直到最慢的进程计算完所有分配的计算任务。而计算任务随机动态分配的并行计算策略则并不固定事先给每个计算进程分配相同多的计算模型或计算任务,而是事先将计算任务随机打乱,并且按照先申请先分配的动态分配策略对各进程分配计算任务,同时,每个进程计算完成一个计算任务,即按照事先约定的格式将计算结果写入临时文件,无需等待立即申请分配下一个计算任务。这种计算任务随机动态分配的并行计算策略最大程度的避免了进程之间的通信和等待,最后进程等待时间最多为一个最基本的计算任务的时间,从而保证了并行计算效率最接近理想状态。
在超大规模集成电路仿真中还存在这样一个问题,在超大规模集成电路计算模型不变的情况下,在研究集成电路的频率响应和电压-电流响应曲线等问题时,不同的网格剖分会对计算场域带来不同的离散;即使每次生成的网格剖分是合理、高质量的,在完全相同的集成电路模型和条件下,由于生成的网格剖分不同,计算的结果也会有细微的差异,这些细微的结果差异本应作为计算误差不予考虑,但却对集成电路的频率响应曲线和电压-电流响应曲线有很大影响。从集成电路的电磁响应原理来说,其响应曲线应该是分段光滑的,其不光滑位置为集成电路的谐振点,但如果不光滑位置在计算集成电路的频率响应曲线和电压-电流响应曲线时,每个计算点采用了不同的网格剖分,则将导致计算出的响应曲线出现抖动,这些抖动正是由于不同网格带来的随机误差造成的。在对复杂的多尺度结构的超大规模集成电路进行网格剖分时,不可避免的采用非结构网格进行剖分,由于被剖分的集成电路版图模型具有非常强的多尺度结构,网格剖分的顺序、以及网格剖分过程中新节点插入产生的误差等都足以改变复杂的多尺度结构的超大规模集成电路剖分的网格,因此,通过不同时间以及不同计算进程对同一个集成电路模型剖分出的网格都是不一样的。为了避免不同网格剖分对集成电路的频率响应曲线和电压-电流响应曲线等曲线带来的抖动,本发明提出的一种分级粗颗粒并行计算策略,其基本思想是:将云计算平台带来的计算任务队列分为不同的计算任务级别,凡是集成电路模型不同的计算任务,作为第一并行级别;带有相同集成电路模型的计算任务,作为第二并行级别,第二并行计算级别包含了同一个集成电路模型的所有计算任务;采用某种控制策略,在基本不降低基于计算任务随机动态分配的并行计算策略的粗颗粒并行的计算效率的情况下,确保第二并行级别的所有计算任务都采用相同的计算网格,从而确保集成电路的频率响应曲线和电压-电流响应曲线等曲线的分段光滑特性。
基于所有待仿真的集成电路模型,确定出计算粗颗粒;
创建管理进程,通过管理进程读取所有需要仿真的集成电路模型,定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储;
管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;所述互斥体为防止多个线程同时对同一对象进行操作的机制,其状态包括:建立互斥体、互斥体等待、删除互斥对象和互斥体空闲。互斥体等待状态:表示此时处于堵塞状态,线程只能等待;互斥体空闲状态:表示此时线程可进入工作;
互斥体适用于进程同步和多线程同步;
互斥体只能唯一建立,只能删除互斥体后才能重新建立。
本申请的互斥体类似文件的只读,如果存在一个只读文件,那么新建或写入这个文件都会失败。基于文件进行的粗颗粒并行,其隐含的将判断计算任务是否可以进行交于“文件管理器”判定,通过判断文件是否存在或者只读等方式确定计算任务是否已经被其他进程占用,这种方法在计算任务达到数万或者数十万个的时候导致“文件管理器”任务很重,可能出现死机的问题。采用互斥体管理,不再需要文件标识,则避免了这一问题。
计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒;
当所有并行粗颗粒的计算任务都完成时,管理进程收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
其中,所述定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储包括:
针对所有的集成电路模型,定义对象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泛指存储介质中的内存区,可以是连续的,也可以是非连续的,可以是远程数据库记录也可以是一个字符串,也可能是常用的json,xml,ini文件;
其中,所述管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理,包括:
步骤1.1:在云平台建立一个管理进程MK,如果建立成功,进入步骤1.2;如果建立失败,进入步骤1.7;
步骤1.2:定义并建立互斥体MutexWork和MutexExit,设置MutexWork=互斥体空闲,设置MutexExit=互斥体等待,定义对象M[Data][Type][Path][Net][State][Message],定义对象M的元素Mi为与并行粗颗粒对应的对象M字段Data、Type、Path、Net的具体实例;将集成电路模型存入对象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。
其中,所述计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒,包括:
步骤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。
本发明基于所有待仿真的集成电路模型,确定出计算粗颗粒;创建管理进程,管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒。本发明基于互斥体实现多线程的管理进程对多个计算进程实现高效无冲突的管理,确保处理同一集成电路模型的不同进程使用相同的网格进行电磁仿真,解决了常规并行计算因为同一集成电路模型采用不同网格带来的随机误差导致响应曲线出现抖动的问题,提高集成电路仿真并行计算效率。本发明管理进程通过多线程实现多计算任务与多计算进程的管理,而计算进程的实现方式不变;通过多线程实现数以万计的计算任务对数百、数千个计算进程进行快速分发和管理。
下面参考图2详细描述本发明提供的一种多线程管理的集成电路仿真粗颗粒并行装置的第一实施例。如图2所示,本实施例提供的一种多线程管理的集成电路仿真粗颗粒并行装置主要包括有:第一模块、第二模块、第三模块、第四模块和第五模块。
粗颗粒并行计算是一种高效的并行计算方法,由于其分割计算任务时仅对占绝对多的CPU计算时间的计算任务进行粗颗粒的分割,分割次数少,尽可能的减少了不同进程的通信时间;其次,结合计算任务随机动态分配的粗颗粒并行则进一步减少了不同进程的等待时间,因为不同计算任务所用的CPU时间不同,传统并行计算方法固定的给每个计算进程分配相同多的计算模型或计算任务,导致最终部分或大部分计算进程处于等待状态,直到最慢的进程计算完所有分配的计算任务。而计算任务随机动态分配的并行计算策略则并不固定事先给每个计算进程分配相同多的计算模型或计算任务,而是事先将计算任务随机打乱,并且按照先申请先分配的动态分配策略对各进程分配计算任务,同时,每个进程计算完成一个计算任务,即按照事先约定的格式将计算结果写入临时文件,无需等待立即申请分配下一个计算任务。这种计算任务随机动态分配的并行计算策略最大程度的避免了进程之间的通信和等待,最后进程等待时间最多为一个最基本的计算任务的时间,从而保证了并行计算效率最接近理想状态。
在超大规模集成电路仿真中还存在这样一个问题,在超大规模集成电路计算模型不变的情况下,在研究集成电路的频率响应和电压-电流响应曲线等问题时,不同的网格剖分会对计算场域带来不同的离散;即使每次生成的网格剖分是合理、高质量的,在完全相同的集成电路模型和条件下,由于生成的网格剖分不同,计算的结果也会有细微的差异,这些细微的结果差异本应作为计算误差不予考虑,但却对集成电路的频率响应曲线和电压-电流响应曲线有很大影响。从集成电路的电磁响应原理来说,其响应曲线应该是分段光滑的,其不光滑位置为集成电路的谐振点,但如果不光滑位置在计算集成电路的频率响应曲线和电压-电流响应曲线时,每个计算点采用了不同的网格剖分,则将导致计算出的响应曲线出现抖动,这些抖动正是由于不同网格带来的随机误差造成的。在对复杂的多尺度结构的超大规模集成电路进行网格剖分时,不可避免的采用非结构网格进行剖分,由于被剖分的集成电路版图模型具有非常强的多尺度结构,网格剖分的顺序、以及网格剖分过程中新节点插入产生的误差等都足以改变复杂的多尺度结构的超大规模集成电路剖分的网格,因此,通过不同时间以及不同计算进程对同一个集成电路模型剖分出的网格都是不一样的。为了避免不同网格剖分对集成电路的频率响应曲线和电压-电流响应曲线等曲线带来的抖动,本发明提出的一种分级粗颗粒并行计算策略,其基本思想是:将云计算平台带来的计算任务队列分为不同的计算任务级别,凡是集成电路模型不同的计算任务,作为第一并行级别;带有相同集成电路模型的计算任务,作为第二并行级别,第二并行计算级别包含了同一个集成电路模型的所有计算任务;采用某种控制策略,在基本不降低基于计算任务随机动态分配的并行计算策略的粗颗粒并行的计算效率的情况下,确保第二并行级别的所有计算任务都采用相同的计算网格,从而确保集成电路的频率响应曲线和电压-电流响应曲线等曲线的分段光滑特性。
第一模块,用于基于所有待仿真的集成电路模型,确定出计算粗颗粒;
第二模块,用于创建管理进程,通过管理进程读取所有需要仿真的集成电路模型,定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储;
第三模块,用于管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;所述互斥体为防止多个线程同时对同一对象进行操作的机制,其状态包括:建立互斥体、互斥体等待、删除互斥对象和互斥体空闲。
互斥体等待状态:表示此时处于堵塞状态,线程只能等待;互斥体空闲状态:表示此时线程可进入工作;
互斥体适用于进程同步和多线程同步;
互斥体只能唯一建立,只能删除互斥体后才能重新建立。
本申请的互斥体类似文件的只读,如果存在一个只读文件,那么新建或写入这个文件都会失败。基于文件进行的粗颗粒并行,其隐含的将判断计算任务是否可以进行交于“文件管理器”判定,通过判断文件是否存在或者只读等方式确定计算任务是否已经被其他进程占用,这种方法在计算任务达到数万或者数十万个的时候导致“文件管理器”任务很重,可能出现死机的问题。采用互斥体管理,不再需要文件标识,则避免了这一问题。
第四模块,用于计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒;
第五模块,用于当所有并行粗颗粒的计算任务都完成时,管理进程收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
其中,所述定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储包括:
针对所有的集成电路模型,定义对象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泛指存储介质中的内存区,可以是连续的,也可以是非连续的,可以是远程数据库记录也可以是一个字符串,也可能是常用的json,xml,ini文件;
其中,所述管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理,包括:
第一单元:用于在云平台建立一个管理进程MK,如果建立成功,进入第二单元;如果建立失败,进入第七单元;
第二单元:用于定义并建立互斥体MutexWork和MutexExit,设置MutexWork=互斥体空闲,设置MutexExit=互斥体等待,定义对象M[Data][Type][Path][Net][State][Message],定义对象M的元素Mi为与并行粗颗粒对应的对象M字段Data、Type、Path、Net的具体实例;将集成电路模型存入对象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的所有元素,进入第三子单元,否则进入第四子单元。
其中,所述计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒,包括:
第一计算单元:用于计算进程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;
第四计算单元:用于中断预定时间,进入第一计算单元。
本发明基于所有待仿真的集成电路模型,确定出计算粗颗粒;创建管理进程,管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒。本发明基于互斥体实现多线程的管理进程对多个计算进程实现高效无冲突的管理,确保处理同一集成电路模型的不同进程使用相同的网格进行电磁仿真,解决了常规并行计算因为同一集成电路模型采用不同网格带来的随机误差导致响应曲线出现抖动的问题,提高集成电路仿真并行计算效率。本发明管理进程通过多线程实现多计算任务与多计算进程的管理,而计算进程的实现方式不变;通过多线程实现数以万计的计算任务对数百、数千个计算进程进行快速分发和管理。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种多线程管理的集成电路仿真粗颗粒并行方法,其特征在于,包括以下步骤:
基于所有待仿真的集成电路模型,确定出计算粗颗粒;
创建管理进程,通过管理进程读取所有需要仿真的集成电路模型,定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储;
管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;所述互斥体为防止多个线程同时对同一对象进行操作的机制,其状态包括:互斥体等待状态:表示此时处于堵塞状态,线程只能等待;互斥体空闲状态:表示此时线程可进入工作;其中,所述管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理,包括:步骤1.1:建立一个管理进程MK,如果建立成功,进入步骤1.2;如果建立失败,进入步骤1.7;步骤1.2:定义并建立互斥体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;步骤1.3:管理进程MK建立第Ki个计算进程,如果第Ki个计算进程建立失败,暂停预定时间,进入步骤1.3;如果第Ki个计算进程建立成功,将第Ki个计算进程置于挂起状态; Ki=Ki+1,如果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;
计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒;
当所有并行粗颗粒的计算任务都完成时,管理进程收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
2.根据权利要求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泛指存储介质中的内存区。
3.根据权利要求1所述的多线程管理的集成电路仿真粗颗粒并行方法,其特征在于,所述步骤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。
4.根据权利要求2所述的多线程管理的集成电路仿真粗颗粒并行方法,其特征在于,所述计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒,包括:
步骤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。
5.一种多线程管理的集成电路仿真粗颗粒并行装置,其特征在于,包括:
第一模块,用于基于所有待仿真的集成电路模型,确定出计算粗颗粒;
第二模块,用于创建管理进程,通过管理进程读取所有需要仿真的集成电路模型,定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储;
第三模块,用于管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理;所述互斥体为防止多个线程同时对同一对象进行操作的机制,其状态包括:互斥体等待状态:表示此时处于堵塞状态,线程只能等待;互斥体空闲状态:表示此时线程可进入工作;其中,所述管理进程创建互斥体和线程,线程依据互斥体的状态创建计算进程,对计算粗颗粒进行分发并管理,包括:第一单元:用于建立一个管理进程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+1,如果Ki=允许创建的最大进程数,进入第四单元,否则进入第三单元;Ki为自然数;第四单元:用于在MutexExit=互斥体空闲时,管理进程MK进入第七单元;否则管理进程MK进入HTTP网络服务应答状态,查询所有计算进程的工作状态及进程池中的计算进程数,如果进程池中的计算进程数小于允许创建的最大计算进程数,进入第三单元,否则激活所有挂起状态的计算进程进入就绪状态并进入第五单元;第五单元:用于在管理进程MK收到任意计算进程Kj发的其元素的字段Message=Inquire时,进入第六单元;否则直接进入第四单元;1≤j≤允许创建的最大进程数;第六单元:用于管理进程MK建立一个线程tj进行应答工作,进入第四单元;第七单元:用于删除互斥体MutexWork和MutexExit,向所有计算进程发送P_NN指令,关闭所有计算进程,销毁管理进程MK建立的所有线程,结束管理进程MK;
第四模块,用于计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒;
第五模块,用于当所有并行粗颗粒的计算任务都完成时,管理进程收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
6.根据权利要求5所述的多线程管理的集成电路仿真粗颗粒并行装置,其特征在于,所述定义对象存储所述集成电路模型信息、所述集成电路模型的计算条件、所述集成电路模型的计算状态,以及管理进程与计算进程的消息内容存储包括:
针对所有的集成电路模型,定义对象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泛指存储介质中的内存区。
7.根据权利要求5所述的多线程管理的集成电路仿真粗颗粒并行装置,其特征在于,所述第六单元包括:
第一子单元,用于在线程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的所有元素,进入第三子单元,否则进入第四子单元。
8.根据权利要求6所述的多线程管理的集成电路仿真粗颗粒并行装置,其特征在于,所述计算进程发送查询指令,管理进程创建线程对查询指令进行查询并应答,计算进程依据线程的应答进行响应,完成分发的计算粗颗粒,包括:
第一计算单元:用于计算进程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;
第四计算单元:用于中断预定时间,进入第一计算单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110459195.6A CN112989746B (zh) | 2021-04-27 | 2021-04-27 | 一种多线程管理的集成电路仿真粗颗粒并行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110459195.6A CN112989746B (zh) | 2021-04-27 | 2021-04-27 | 一种多线程管理的集成电路仿真粗颗粒并行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112989746A CN112989746A (zh) | 2021-06-18 |
CN112989746B true CN112989746B (zh) | 2021-08-20 |
Family
ID=76341644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110459195.6A Active CN112989746B (zh) | 2021-04-27 | 2021-04-27 | 一种多线程管理的集成电路仿真粗颗粒并行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112989746B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116522854B (zh) * | 2023-07-05 | 2023-09-01 | 北京智芯仿真科技有限公司 | 多供电系统的集成电路仿真模型生成与计算方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287625A (zh) * | 2020-12-21 | 2021-01-29 | 北京智芯仿真科技有限公司 | 一种系统级集成电路直流压降的并行分析方法及系统 |
CN112307709A (zh) * | 2020-12-21 | 2021-02-02 | 北京智芯仿真科技有限公司 | 系统级集成电路直流压降的端口等效并行分析方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10719644B2 (en) * | 2017-06-30 | 2020-07-21 | Synopsys, Inc. | Method and framework to dynamically split a testbench into concurrent simulatable multi-processes and attachment to parallel processes of an accelerated platform |
-
2021
- 2021-04-27 CN CN202110459195.6A patent/CN112989746B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287625A (zh) * | 2020-12-21 | 2021-01-29 | 北京智芯仿真科技有限公司 | 一种系统级集成电路直流压降的并行分析方法及系统 |
CN112307709A (zh) * | 2020-12-21 | 2021-02-02 | 北京智芯仿真科技有限公司 | 系统级集成电路直流压降的端口等效并行分析方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112989746A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109141446A (zh) | 用于获得地图的方法、装置、设备和计算机可读存储介质 | |
CN106951926B (zh) | 一种混合架构的深度学习方法及装置 | |
CN104731642B (zh) | 用于高度并行作业的回填调度方法和系统 | |
CN108564164B (zh) | 一种基于spark平台的并行化深度学习方法 | |
CN102255930B (zh) | 用于提供虚拟世界的场景数据的方法和系统 | |
CN104885123A (zh) | 按需的几何图形和加速结构形成 | |
CN110368694A (zh) | 游戏场景的数据处理方法、装置、设备及可读存储介质 | |
CN107564077B (zh) | 一种绘制道路网的方法及装置 | |
CN111708641A (zh) | 一种内存管理方法、装置、设备及计算机可读存储介质 | |
CN112419498B (zh) | 一种海量倾斜摄影数据的调度渲染方法 | |
CN110457033A (zh) | 用于在gpu上生成动态踪迹数据的装置和方法 | |
CN112989746B (zh) | 一种多线程管理的集成电路仿真粗颗粒并行方法及装置 | |
CN114169748A (zh) | 多机器人任务分配方法、系统、设备及可读存储介质 | |
US8768680B2 (en) | Simulator of multi-core system employing reconfigurable processor cores and method of simulating multi-core system employing reconfigurable processor cores | |
CN112988403B (zh) | 具有保密功能的集成电路仿真多线程管理并行方法及装置 | |
CN114219276A (zh) | 一种仓储物流的仿真方法、装置、设备及存储介质 | |
US20150081263A1 (en) | Production simulation apparatus and production simulation method | |
CN109799977B (zh) | 指令程序开发调度数据的方法及系统 | |
US20180239323A1 (en) | Method for Operating an Engineering System for an Industrial Process Automation System, and Control Program | |
CN106844024B (zh) | 一种自学习运行时间预测模型的gpu/cpu调度方法及系统 | |
CN116483546A (zh) | 分布式训练任务调度方法、装置、设备及存储介质 | |
CN114186315A (zh) | 生成建筑简模的方法、装置、计算机设备和可读存储介质 | |
CN104599318B (zh) | 一种植物三维模型网格无缝融合的方法及系统 | |
CN113435571A (zh) | 实现多任务并行的深度网络训练方法和系统 | |
JP2008299641A (ja) | 連立一次方程式の並列求解方法およびノード順序付け方法 |
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 |