专利名称:集成电路版图验证并行处理解决方案的利记博彩app
技术领域:
本发明是一种适用于集成电路版图验证工具中的并行处理方案,所属的技术领域是集成电路计算机辅助设计领域,尤其是涉及集成电路版图的设计规则检查(DRC)和版图与原理图的一致性检查(LVS)领域。
背景技术:
近30年来,集成电路技术一直按照“摩尔定律”向前发展。芯片的特征尺寸越来越小,单个芯片的集成度也越来越高。随着芯片规模的扩大,在集成电路设计的各个阶段所需验证的设计规则也在不断增多。其中集成电路版图的设计规则检查(DRC)以及集成电路版图与原理图的一致性检查(LVS)变得越来越重要,它们对于消除错误、降低设计成本和减少设计失败的风险具有重要作用。在超大规模集成电路设计中,版图规模急剧膨胀,如何 在有效时间内完成设计方案的验证工作成为各大EDA厂商急需解决的问题。并行处理包括分布式处理和多线程两种关键技术。分布式处理研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。多线程是处理对象粒度比分布式更小的并行处理方式。分布式处理每个处理单位的数据处理对象是一个进程,而多线程的处理对象是一个线程。每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。线程和进程的区别在于,多个进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。线程的运行中需要使用计算机的内存资源和CPU。无论进程调度还是线程调度,都可以用统一的生产者-消费者模型描述。在这个模型中,有I个(或多个)生产者每隔一段时间就生产出一件产品,放入缓冲区中,有I个(或多个)消费者每隔一段时间就从缓冲区取出一件产品消费。缓冲区的大小是有限的,如果生产者发现缓冲区已满,只能暂停生产,直到消费者继续消费一个产品使缓冲区不满才能继续生产。如果消费者发现缓冲区已空,也只能等待生产者生产一个产品。简单的生产者-消费者模型如图I所示。进程调度的输入是命令图。命令图是一组命令的集合,命令之间有依赖关系,即一条命令的结果可能会是另外一条命令的输入。线程调度的输入是单元(Cell)拓扑关系图,这是一种树形图,最顶层单元是根,而最低层是叶子节点,从最顶层单元到最低层单元是一种调用关系。单元是集成电路设计的基本逻辑单位,单元之间可以相互调用,一个单元内部是一些来源于不同物理层(Layer)的图形和其他单元实例(Instance)的集合。
发明内容
本发明针对甚大规模集成电路版图验证过程中所面临的运行速度过慢,运行时间过长,导致版图验证最终不可解的问题,提出了一种基于分布式和多线程技术的并行处理解决方案。在实际工程应用中,此方案能够极大加速版图验证工具的运行速度,提高可验证版图规模。本发明的主要技术方案包括以下两个模型I.命令调度 Manager-Worker 模型。在Manager-Worker 模型中,Manager 是生产者,Worker 是消费者。Manager 负责生产出每条命令,由Worker执行,Worker执行完毕后将结果反馈给Manager,Manager获得 结果后生产出新的命令,直到所有命令都执行完毕。因此,Manger的工作方式包括了以下几个步骤(I)编译命令文件,生成命令调度图。命令调度图是一种拓扑有向图,其中的节点表示命令,弧表示数据依赖关系。(2)读入⑶S文件,生成单元调用拓扑关系图。⑶S是集成电路路版图的一种标准文件格式。(3)生成待处理命令。待处理命令即命令图中入度为0的节点。(4)调度待处理命令。将命令发向一个空闲的Worker。如果没有Worker空闲,则Manager等待。Manager和Worker之间的通信使用Socket。Worker和Worker之间不进行任何通信。(5)接收命令结果。Manager在进行调度的同时要接收Worker命令结果反馈,当有结果反馈时,Manager要计算新的入度为0的命令节点。(6)结束。当所有命名都执行完毕,Manager向所有Worker发送结束标志,所有Worker退出。然后Manager退出。Worker的工作方式包含以下几个工作步骤(I)接收Manager的命令分配。Worker上的数据除了单元拓扑关系图外,所有其他数据都是局部的,Manager会将命令和输入数据一起打包发向Worker进程。(2)执彳丁具体命令。如果是退出命令,Worker退出,否则计算命令结果。在执彳丁命令期间,Worker不再接受新的任务。(3)命令执行完毕,将结果返回给Manager。2.单兀调度 Worker-Slave 模型。在Worker-Slave模型中,Worker是生产者,Slave是消费者。Worker负责生产出每个可执行单元,由Slave执行,Slave执行完毕后将结果反馈给Worker,Worker获得结果后根据单元调用关系图后生产出新的命令,直到所有单元都执行完毕。Worker的工作方式可以用以下几个步骤来描述(I)接收Mananger进程的指令,如果是退出指令,生成与Slave数量相同的退出指令,放入TaskPool(任务池)中,然后Worker线程退出。否则计算入度为0的单元节点,所有该类节点放入TaskPool中。(2)从ResultsPool (结果池)中获取Slave线程计算结果,然后产生新Task (任务)放入TaskPool中。
Slave线程的工作方式如下(I)遍历TaskPool,如果不为空,获得一个任务,如果该任务是退出指令,Slave线程退出,否则开始执行。(2)任务执行完毕后,将结果放入ResultsPool中,继续第(I)步。在Worker-Slave模型中,TaskPool和ResultsPool是两个临界资源,多线程对临界的访问必须加锁,同一时间只能允许几个线程访问临界资源,否则会产生错误结果或者内存错误。TaskPool 的锁命名为 TaskLock,ResultsPool 的锁命名为 ResultsLock。Worker将Task放入TaskPool的工作步骤可以如下来描述 (I) Lock (TaskLock);(2)将 Task 放入 TaskPool ;(3) Unlock (TaskLock);同理,Worker从ResultsPool 获取结果,以及 Slave 访问 TaskPool 和 ResultsPool的工作方式与以上步骤相同。
图I生产者-消费者模型;图2Manager_Worker模型工作流程图;图3Worker_Slave模型工作流程图;图4示例命令拓扑关系图。图5示例单元调用拓扑关系图。
具体实施例方式无论基于命令图的Manager-Worker进程模型,还是基于单元拓扑关系图的Worker-Slave线程模型,都要解决执行单位(一个命令或一个单元)之间的依赖关系。以进程调度(以命令为单位)为例,一条命令单元可以处理的必要条件是该命令所需要的输入数据是原始物理层数据,或者是中间层数据,并且中间层的数据已经产生。示例命令序列如下,命令图如图4所示,其中0_ND,0_N0DRC, 0_MEMID和0_NWEL是原始层,ND, NTAP,NWEL_1和NWEL是中间层。ND = 0_ND NOT INSIDE 0_N0DRCNTAP = ND NOT INTERACT 0_MEMIDNWEL_1 = 0_NWEL NOT INSIDE 0_N0DRCNWEL = NWEL_1 NOT CUT 0_MEMIDNW. a4N-Well extension of N+diffusion is 0. 15umENC NTAP NWEL < 0. 15 ABUT SINGULAR REGION}示例版图有5个单元,TOP调用A,B和C三个单元,A和C又调用了 D单元。单元拓扑关系图如图5所75。在该方案中Manager只能有I个,假设有2个Worker (Master),每个Worker有2个Slave。则可能的执行流程为
(I)初始时刻,Manager首先需要编译命令文件(Rule File)生成命令图。然后读入⑶S生成单元拓扑调用关系图。(2)编译后可知,入度为零的节点是2个INSIDE命令节点。Manager分别将这两个命令(INSIDE)以及输入数据(0_ND,0_N0DRC 和 0_NWEL)发向 Workerl 和 Worker2。然后Manager阻塞,等待结果反馈。(3) Worker I接收到数据后。计算入度为0的节点只有T0P,这时Workerl将TOP放入TaskPool中,并打算从ResultsPool中取出一个Cell,但该ResultsPool为空,因此Workerl被阻塞。(4) Slavel从TaskPool中取出TOP任务,并开始执行任务。(5)Slave2打算从TaskPool中取出一个任务,但队列为空,Slave2阻塞。 (6) Slavel完成TOP任务,将TOP放入ResultsPool中,这时阻塞Workerl被唤醒。Slavel 访问 TaskPool,发现 TaskPool 为空,Slavel 也被阻塞。(7) Worker I处理TOP单元的结果,将TOP调用的A、B、C三个Cell的入度分别减1,由于减I后它们的入度都为0,所以可将它们依次放入TaskPool,Workerl阻塞。(8)Slave2和Slavel分别从TaskPool中获得了任务A和B,解除阻塞状态,开始执行。(9)假设Slave2先完成,将A的结果放入ResultsPool中。然后获得了 C任务继续执行。(IO)Workerl从ResultsPool中获得了 A任务的结果,将D的入度减1,但D的入度为I,不能放入TaskPool中。Workerl阻塞。(11)假设Slavel和Slave2同时完成。并将B和C结果放入ResultsPool中。两个Slave都阻塞。(12) Worker I 从 ResutlPool 中取出 B 和 C 的结果。并将 D 放入 ResutlPool 中。Workerl 阻塞。(13) Slavel获得D任务,完成后将D结果放入ResultsPool中。Slavel阻塞。(14) Workerl获得D结果,发现整条命令都已经执行完毕。然后将INSIDE命令的结果反馈给Manager。(15) Worker2的工作方式与Workerl的工作方式((3) _ (14)步)相同。假设Worker2刚好也已经完成,将结果返回给Manager。(16)Manager 获得了 Workerl 和 Worker2 的结果,将 INTERACT 和 CUT 命令的入度减1,这时这两个节点的入度都为0,将这两条命令分别发向Workerl和Worker2。(17)Workerl和Work2接收到命令后,继续执行(3)-(14)步的工作。产生命令结果反馈Manager。(18)Manager接收到INTERACT和CUT命令的结果,将ENC命令发向Workerl执行。(19)Workerl完成命令后将结果返回Manager。(20)Mangager接收到结果后,发现所有命令都已经完成,分别向Workerl和Worker2发送退出命令。然后Manager进程退出。(21)两个Worker接收到退出指令后,将所有Slave线程终止,然后两个Worker进程退出。整个处理过程完毕。
权利要求
1.一种甚大规模集成电路版图验证并行处理方案,其技术特征在于包含以下两个模型①Manager-Worker模型。Manager是生产者,Worker是消费者。Manager负责生产出每条命令,由Worker执行,Worker执行完毕后将结果反馈给Manager,Manager获得结果后生产出新的命令,直到所有命令都执行完毕。②Worker-Slave模型。在Worker-Slave模型中,Worker是生产者,Slave是消费者。Worker负责生产出每个可执行单元,由Slave执行,Slave执行完毕后将结果反馈给Worker,Worker获得结果后根据单元调用关系图后生产出新的命令,直到所有单元都执行完毕。
2.根据权利要求I所述的并行处理方案,其特征在于①Manager-Worker模型是进程级的并行,而Worker-Slave模型是线程级的并行。②Manager-Worker模型的处理对象是命令,Worker-Slave模型的处理对象是集成电路单元。
3.根据权利要求I所述的并行处理方案,其技术特征包含以下两个模型的4个工作流程(1)Manager-Worker模型。
Manager进程工作流程 ①编译命令文件,生成命令调度图。
②读入GDS文件,生成单元调用拓扑关系图。
③生成待处理命令。
④调度待处理命令。
⑤接收命令结果。
⑥执行结束,向Worker进程发送退出指令。
Worker进程工作流程 ①接收Manager的命令分配。
②执行具体命令。
③命令执行完毕,将结果返回给Manager。(2)Worker-Slave 模型。
Worker线程工作流程 ①根据Manager分配的命令,生成待处理单元放入TaskPool。
②从ResultsPool中获取Slave线程计算结果,然后产生新任务放入TaskPool中。
Slave线程工作流程 ①遍历TaskPool,如果不为空,获得一个任务,如果该任务是退出指令,Slave线程退出,否则开始执行。
②任务执行完毕后,将结果放入ResultsPool中,继续第(I)步。
全文摘要
本发明是一种适用于集成电路版图验证工具中的并行处理方案,所属的技术领域是集成电路计算机辅助设计领域,尤其是涉及集成电路版图的设计规则检查(DRC)和版图与原理图的一致性检查(LVS)领域。本发明创造性地提出了基于命令调度图的多进程(Manager-Worker模型)和基于单元调用关系的多线程(Worker-Slave模型)并行处理方法,并将这两种方法相结合用于解决甚大规模集成电路版图验证过程中所面临的运行时间过长,验证效率低,进而导致版图无法验证的问题。实际应用中表明,该并行处理方案能够在用户可接受的时间内解决超大规模版图验证问题。
文档编号G06F9/52GK102855339SQ20111018013
公开日2013年1月2日 申请日期2011年6月29日 优先权日2011年6月29日
发明者宋德强, 王国庆, 王鹏 申请人:北京华大九天软件有限公司