CN117242451A - 电路设计中强连通分量的并行和可扩展计算 - Google Patents

电路设计中强连通分量的并行和可扩展计算 Download PDF

Info

Publication number
CN117242451A
CN117242451A CN202280031486.8A CN202280031486A CN117242451A CN 117242451 A CN117242451 A CN 117242451A CN 202280031486 A CN202280031486 A CN 202280031486A CN 117242451 A CN117242451 A CN 117242451A
Authority
CN
China
Prior art keywords
vertices
vertex
sccs
candidate
connected subgraph
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.)
Pending
Application number
CN202280031486.8A
Other languages
English (en)
Inventor
O·库德特
F·迪吕
F·佩纳卢
P·德尔佩奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Synopsys Inc
Original Assignee
Synopsys Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US17/748,987 external-priority patent/US20220391569A1/en
Application filed by Synopsys Inc filed Critical Synopsys Inc
Priority claimed from PCT/US2022/030865 external-priority patent/WO2022256212A1/en
Publication of CN117242451A publication Critical patent/CN117242451A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

一种系统,其标识电路设计的强连通分量。该系统接收被表示为包括顶点集合和边集合的图形的电路设计。系统将顶点集合中的每个顶点标记为空。系统实行多个线程,其中每个线程并发执行以下步骤。线程从具有空状态的顶点集合中选择顶点。线程从所选择的顶点开始执行深度优先搜索。一旦从顶点开始的深度优先搜索完成,线程就将该顶点标记为已处理。深度优先搜索跳过被标记为已处理的顶点。该线程基于由深度优先搜索遍历的节点而确定候选SCC。一旦确定了候选SCC集合,系统就消除候选SCC中的一些候选SCC,并且将剩余的候选SCC存储为图形的SCC。

Description

电路设计中强连通分量的并行和可扩展计算
相关申请的交叉引用
本申请要求2021年6月2日提交的美国专利申请序列第63/196,076号和2022年5月19日提交的美国专利申请序列第17/748,987号的权益,其内容通过引用整体并入本文。
技术领域
本公开总体上涉及电子电路的设计,并且更具体而言,涉及标识表示为图形的电路设计中的强连通分量。
背景技术
电路设计的电子设计自动化包括各种类型的分析。电路设计被表示为网表以用于某些类型的分析,诸如用于静态时序分析。电路设计的网表表示可以包括可能引发针对正确性和复杂性的多个问题的环路。例如,网表中的环路会使得诸如逻辑优化、静态时序分析、仿真或形式验证之类的处理变得复杂化。因此,在电路设计的网表表示中标识环路以使得这些部分能够被不同地分析是重要的。通常被分析的电路设计非常大,例如是包括数十亿个门的超大规模集成(VLSI)电路,并且难以使用单个处理器进行处理。一些已知的用于标识电路设计中的环路的技术仅适用于在单个处理器上实行。
发明内容
一种系统,标识电路设计的强连通分量(SCC)。该系统接收被表示为包括顶点集合和边集合的图形的电路设计。系统通过将每个顶点标记为空来初始化图形。系统实行多个线程,每个线程并发执行以下步骤。每个线程选择一个具有空状态的顶点,并且从所选择的顶点开始执行深度优先搜索。一旦从顶点开始的深度优先搜索完成,线程就将该顶点标记为已处理。如果线程在深度优先搜索期间遇到标记为已处理的顶点,则线程跳过该顶点。每个线程基于深度优先搜索而确定候选SCC。一旦确定了候选SCC集合,系统就将候选SCC中的一些候选SCC作为不完整SCC进行消除,并且将剩余的候选SCC存储为针对电路设计计算得到的SCC。
附图说明
通过下文给出的详细描述以及本公开的实施例的附图,可更全面地理解本公开。附图用于提供对本公开的实施例的知识和理解,并且不将本公开的范围限制于这些具体实施例。此外,附图不一定是按比例绘制的。
图1(FIG.1)图示了根据实施例的用于标识电路设计中的SCC的过程。
图2为图示根据实施例的用于标识电路设计的SCCS的电路设计分析系统的系统架构的框图。
图3描绘了根据实施例的使用并行实行的多个线程来标识SCC的整个过程的流程图。
图4描绘了根据实施例的由每个线程实行的用于标识SCC的过程的流程图。
图5描绘了根据实施例的用于消除不完整SCC的过程的流程图。
图6A至6F示出了根据实施例的使用重叠线程执行的处理的示例。
图7描绘了根据本公开的一些实施例的在集成电路的设计和制造期间使用的各种过程的流程图。
图8描绘了本公开的实施例可在其中操作的示例计算机系统的图。
具体实施方式
根据实施例的系统,将电路设计表示为有向图形,并且通过标识强连通分量(SCC)来标识电路设计中的环路。系统还可以分析和处理环路。该系统使用可在多个处理器上运行的并行技术来确定图形中的SCC。系统启动可并行运行的多个线程。每个线程执行图形的深度优先搜索以标识候选SCC。深度优先搜索包括通过从选定的顶点开始遍历图形,并且沿着图形的每个分支尽可能远地前进。因为所有线程均并行开始实行,所以线程中的一些线程确定是其他SCC的子集的候选SCC。系统将这些SCC标识为不完整SCC并将其消除。系统返回剩余的SCC。
用于标识SCC的典型技术通过一次标识一个强连通分量来连续地处理输入电路设计。这使得包括数十亿个门的大型电路设计的处理成本非常高。并行SCC的某些方法需要对顶点的两个方向的边进行即时访问,以执行向前和向后遍历。这需要额外的存储器。一种称为Trajan算法的计算SCC的方法不需要即时访问顶点边的两个方向,但该方法是固有地连续的。与之相反,所公开的技术可在多个进程上并行实行。
本文所公开的技术可用于确定SCC的各种EDA过程,例如,电路划分、逻辑优化、静态时序分析、仿真、形式验证或模型检查。所公开的技术可被编译器用于模拟,使得系统可在不改变电路行为的情况下处理SCC并以安全的方式中断环路)。本文所公开的技术也可用于与电路设计无关的其他应用程序,例如在社交网络系统中。在社交网络系统中,作为朋友或分享共同爱好的一群人一般是强连通的。本文所公开的用于确定SCC的过程可用于标识这类群组,并且为社交网络系统中的朋友或他们可能喜欢的资源(例如,诸如视频的内容、流媒体内容、在线商店中的产品/服务等)做出推荐。
图1图示了根据实施例的用于标识电路设计中的SCC的过程。电路设计分析系统110接收输入电路设计115,并且标识输入电路设计中的SCC 125A、125B、125C。电路设计分析系统110的架构在图2中详细示出,并且结合图2进行描述。电路设计分析系统110在本文中也被称为系统。
系统的实施例实行用于SCC的并行计算的过程。该系统一次生成多个线程来探索输入图形,因此与典型系统相比,能够利用更高程度的并行性。由于多个线程开始并行处理图形,因此多个线程可能处理同一SCC。例如,如果一个线程从一个顶点开始处理SCC,而另一个线程从另一个顶点开始处理同一SCC,则两个线程均在处理同一SCC。
一旦线程确定了SCC的顶点,该线程将该SCC的顶点标记为已处理(PROCESSED)。如果线程在执行深度优先搜索时遇到标记为已处理的顶点V1,则该线程跳过顶点V1,并且可确定更小的SCC S1,该更小的SCC S1是更大SCC S2的包括顶点V1的合适的子集。这允许多个线程并行处理SCC。SCC S1被确定为不完整SCC。系统从确定的SCC集合中标识并滤除不完整SCC,并且返回经过滤的SCC集合。因此,通过使用多个处理器,该系统能够比其他技术更快地确定强连通分量。例如,所公开的技术被实验测量为通过使用20个核心的机器,将在大型网表上花费一个小时或更多时间的SCC计算减少到几分钟。
图2是图示根据实施例的用于标识电路设计的SCC的电路设计分析系统的系统架构的框图。电路设计分析系统110包括初始化部件210、线程实行部件220、深度优先搜索(DFS)部件230和过滤部件240。其他实施例可包括比本文所指出的更多或更少的部件。此外,在不脱离本公开的范围的情况下,可组合部件,使得在本文中被描述为由特定部件执行的步骤可由另一部件执行。电路设计分析系统110的部件由一个或多个处理设备(也称为计算机处理器),例如图8所示的处理设备实施。
初始化部件210对数据结构进行初始化。例如,初始化部件210将电路设计的图形表示的每个顶点初始化为空值。初始化部件210还可以初始化队列数据结构,该队列数据结构用于存储经初始化的顶点以供处理。
线程实行部件220创建多个线程,以用于并行执行SCC的计算。由线程实行部件220创建的线程并发运行。每个线程实行步骤来确定候选SCC。
DFS部件230执行从给定图形中确定候选SCC的步骤。DFS部件230的指令由每个线程并行实行。DFS部件230的指令被实行以确定表示候选SCC分量的强连通子图(SCS)集合。根据实施例,DFS部件230通过从根节点开始(在图形的情况下选择某个任意节点作为根节点)以及在回溯之前尽可能远地沿着每个分支探索来执行DFS。根据实施例,DFS部件230使用堆栈数据结构来存储节点,并且当堆栈为空时,DFS过程完成。对于DFS过程的递归实施方式,调用堆栈存储DFS期间所遍历的路径。
过滤部件240从候选SCC集合中消除不完整SCC,以使得仅有效的SCC被保留。过滤部件240确定SCS是否是另一SCC的子集(例如,严格子集)。如果过滤部件240标识出SCS是另一个SCC的子集,则过滤部件将该SCS标记为不完整SCC,并且将其从由系统返回的最终SCC集合中消除。
网表表示电路。网表由单元(cell)和网(net)组成。单元具有输入和输出端口。网是端口集合。网将其输出端口(通常一个网只有一个输出端口)连接到其输入端口。当且仅当(iff)存在将单元c1的输出端口连接到单元c2的输入端口的网时,单元c1在单元c2的扇入中(相应地,c2在c1的扇出中)。
网表可被表示为有向图形(V,E),其中V为单元集合,并且E由边(v1,v2)组成,其中v1为输出端口,v2为输入端口,并且{v1,v2}属于网。实际上,计算网表中的SCC是通过在由网表导出的有向图形中找到非平凡SCC(即,大小大于1的SCC)来执行的。
该系统生成输入的有向图形表示,例如电路设计的网表表示,并且使用本文所公开的技术对其进行处理。有向图形G被表示为顶点V和边E的一对集合(V,E)。边E的集合是表示为V×V的顶点叉乘的子集。G的子图是图形G’=(V’,E’),使得V’被包括在V中,并且E’被包括在(V’×V’)和E中。当且仅当(v1,v2)是边时,顶点v2是顶点v1的后继。备选地,v2在v1的扇出中,并且v1在v2的扇入中。iff(当且仅当)存在边的序列(vi,v{i+1}),0<=i<=n,使得v0=v1且v{n+1}=v2时,顶点v2可从顶点v1到达。这个边的序列被称为从v1到v2的路径。
(分别)被称为TFI(v)(以及TFO(v))的顶点v的传递扇入(以及传递扇出),(分别)是从顶点v开始的扇入关系(以及扇出)的传递闭包。因此,TFI(v)(以及TFO(v))(分别)是仅使用扇入关系(以及扇出关系)可从顶点v到达的所有顶点的集合。
环路是从顶点到其自身的路径。自环路是具有单个边(v,v)的环路。当且仅当图形不含有任何环路时,图形是无环的。
如果存在从v1到v2的路径和从v2到v1的路径,则两个顶点v1和v2可被视为强连通。如果一个图形(或子图)的任意两个顶点之间有一条路径,则可认为它是强连通的。强连通子图称为SCS。强连通是一种等价关系(即对称、自反和传递),并且其等价类的导出的子图称为强连通分量(SCC)。等价地,有向图形G的SCC是使得在不违反其强连通性质的情况下,不能将G中的任何附加边或顶点包括在SCS中的最大的SCS。因此,每个环路都必须被完全地包括在SCC中,并且SCC中的任何路径均可扩展到该SCC内部的环路。
存在具有线性时间复杂性的用于标识SCC的技术,即,其可在渐近等于C*(|V|+|E|)的时间内实行,其中C为常数,|V|为顶点的数目,并且|E|为边的数目。
图3至5描绘了图示根据各种实施例的用于标识SCC的过程的各种流程图。这些步骤被描述为由系统,例如电路设计分析系统110的部件实行。这些步骤可按不同于各个流程图中所示的顺序来实行。
图3描绘了根据实施例的使用并行实行的多个线程来标识SCC的整个过程的流程图。系统接收310表示为图形的电路设计。该过程在多个核心(即,处理设备)上实行。
系统将图形的每个顶点初始化320为空。如果系统已经探索了TFI(v),并且(通过一个或多个线程)已经确定了TFI(v)中的所有SCC,则系统将顶点v标记为已处理。这意指顶点v所属的SCC已经被标识,包括仅由v构成的平凡SCC的情况。因此,顶点的状态要么为空(VOID),要么为已处理。
该系统将顶点添加330到队列结构中。系统启动340多个线程以并行实行用于确定350A、350B、……、350N SCC分量的步骤,如图4所示。每个线程执行用于确定350候选SCC的步骤。由每个线程实行的用于标识候选SCC的过程被称为SCC发现。SCC发现过程计算非平凡的强连通子图(SCS),即具有不止一个节点的SCS。线程的并行实行确定了候选SCC集合。系统将候选SCC中的被标识为不完整SCC的一些候选SCC进行消除360。如果SCS是SCC的子集(例如,严格子集),则该SCS被标识为不完整SCC。该过程保证所有SCC被发现。线程生成表示所有候选SCC的SCS。候选SCC中的一些候选SCC是实际的SCC,并且一些SCC可为不完整SCC。
除了顶点和扇入信息(均为只读),顶点状态(可写入)是线程间唯一的共享数据。该系统以原子方式读取和写入顶点状态,即,每当多个线程试图在同一顶点上写入状态时,只有一个成功,并且一旦该状态被写入,该状态立即可用于被其他线程读取。
图4描绘了根据实施例的由每个线程实行的用于标识SCC的过程的流程图。当队列不为空时,每个线程实行步骤410、420、430和440。线程从队列中移除410顶点v0,并且检查420顶点是否具有状态空(VOID)。如果线程找不到任何处于空状态的顶点,则系统确定所有顶点均处于已处理状态,并且线程终止。否则,线程继续在v0上实行DFS。根据各种实施例的系统实行Tarjan的SCC计算过程的并行实施方式。相应地,每个线程将经修改的Tarjan的DFS应用于SCC计算。
该系统追踪v.dfsNum,即DFS期间顶点v的DFS索引(也被表示为发现时间)。DFS索引只被分配给顶点v一次,并且其值不变。因此,系统使用DFS索引来唯一地指代顶点v。系统从某个未被索引的顶点执行DFS,并且迭代该过程,直到所有顶点均接收到DFS索引。当系统执行DFS和索引时,系统将v.lowlink维持为从v执行DFS时观察到的最小DFS编号(包括v.dfsNum)。从顶点v执行的DFS被包括在TFI(v)中,但是可能不会与完全的TFI(v)相遇,因为DFS索引仅被分配一次。任何具有等于v.lowlink的v.dfsNum的顶点均定义SCC。系统使用多线程来执行该计算。
每个线程初始化430用作线程本地容器的结构,包括图dfs_map、图lowlink_map和队列path_q。图dfs_map是存储图形的节点的DFS编号值的数据结构,并且图lowlink_map存储图形的节点的lowlink值。队列path_q是用于存储在DFS遍历期间到节点的路径的队列数据结构。该线程使用结构dfs_map、lowlink_map和path_q来注释顶点,而不会干扰其他线程。该系统(1)在图dfs_map中存储如本文所描述的值v.dfsNum,(2)在图lowlink_map中存储如本文所描述的v.lowlink的值,以及(3)在队列path_q中存储遍历期间遍历的顶点的路径。该线程使用图dfs_map和图lowlink_map以及队列path_q从顶点v0执行440DFS。如果在DFS期间,线程遇到先前已经处于已处理状态中的顶点v,则线程干脆地跳过该顶点v。这是因为,保证没有从v的传递扇入(TFI)到v0的路径,如果有,则意味着v0在v的TFI中并且因此v0处于已处理状态,但这是矛盾的。
假设当前线程被称为线程t1。每当线程t1遇到已处理的顶点时,t1跳过v的TFI访问。无论顶点被标记为由线程t1或另一线程t2已处理,线程t1均跳过已处理的顶点。这仍然保证v的TFI中的所有SCC已经被线程t1或另一个线程t2确定。如果线程t1跳过被另一个线程t2标记为已处理的顶点,则该过程可生成SCC,该SCC是t2找到的SCC的严格子集。一旦标识了所有候选SCC,系统就实行图5中所示的过程来消除不完整SCC,即严格地被包括在另一个SCC中的SCC。
图5描绘了根据一个实施例的用于消除不完整SCC的过程的流程图。系统收集510由图3至4的过程发现的候选SCC。系统按照候选SCC大小递减的顺序对它们进行排序520。系统将经排序的SCC放入530列表数据结构中,该列表数据结构允许添加和移除元素。
当列表不为空时,系统重复步骤540、550、560、570和580。系统按排序顺序访问候选SCC。因此,系统从列表中获取540SCC。系统遍历SCC以将从列表中获取的SCC的顶点标记550为已发现(DISCOVERED)。系统确定560在遍历SCC时遇到的顶点是否已经被标记为已发现。如果系统确定560遇到的顶点已经被标记为已发现,则系统确定该SCC不完整并丢弃580SCC。这是因为系统确定SCC是包含它的完整SCC的严格子集,并且先前已经被看到过。如果系统在遍历SCC时没有遇到任何已经被标记为已发现的顶点,则系统确定SCC是完整的,并且保留570该SCC。
不完整SCC由线程重叠产生,因此是非确定性的。它们不会影响最终结果的正确性,因为它们被滤除了。
因为顶点v可仅由一个线程标记为已处理,并且其他线程对该顶点的后续发现将跳过访问v的TFI,所以系统在访问所有顶点所需的墙钟时间方面获得净收益。此外,所公开的技术具有包括仅使用扇入信息的属性,即,仅需要对边的一个方向的常数时间的访问。
在上述描述中,用“扇出”代替“扇入”,用“TFO”代替“TFI”,产生仅使用扇出信息的等效过程。系统使用线程执行并行实行,而不使用任何互斥或任何复杂的线程同步。系统利用原子读取检查顶点是否已被处理,并且利用原子写入来更新顶点的状态。随着线程数目的增加,这有助于提高可扩展性。这也允许线程重叠,即,如果顶点具有空状态,则允许多个线程访问同一顶点,这可能生成不完整SCC。因此,该过程避免了强制的全局同步,全局同步不是可扩展的解决方案。
总的来说,该系统以并行方式计算有向图形上的SCC,其仅需要对边的一个方向的常数时间的访问。该系统使用对扇入的常数时间的访问来并行计算网表的SCC。该系统还可使用对扇出的常数时间的访问来并行计算SCC。线程可重叠对顶点的访问,从而允许配置随着核心数目的增加而扩展。线程对顶点的访问的重叠导致生成不完整SCC,并且这些不完整SCC被系统滤除。
图6A至6F示出了根据实施例的使用重叠线程执行的处理的示例。
图6A示出了由3个顶点v1、v2、v3和两个线程t1和t2组成的简单图形。顶点的状态被示出为白色(表示顶点的空状态)和灰色或阴影(表示顶点的已处理状态)。线程t1从v1开始其SCC发现,线程t2从v2开始其SCC发现。对于这一示例,系统使用扇出方向,即,系统在DFS期间遵循箭头的方向。
在图6B中,两个线程均从各自的起始顶点开始执行DFS。线程t1具有路径v1 v2v3;线程t2具有路径v2。在图6C中,线程t1到达已经在其路径上的v1。同时,线程t2继续其DFS并具有路径v2 v3。
在图6D中,线程t1随着针对其TFO已经被探索的顶点而展开针对该顶点的路径,开始更新顶点的低链接(lowlink),并且递增地增长以v1为根的SCC。在该过程期间,t1将从该路径被展开的顶点标记为已处理,因为它们的TFO已被访问。在该图中,t1开始用{v1}构建SCC,它将v1标记为已处理,并且仍在展开其路径。与此同时,线程t2继续其DFS,但将v1视为已处理,因此忽略它。它最终到达v2,这是它已经在其路径上看到的。
在图6E中,线程t1继续展开其路径、更新低链接、并且使用与低链接值(在这种情况下,v1的DFS编号,即1)匹配的顶点增长SCC。SCC增长为{v1,v3},并且v3被标记为已处理。线程t2开始展开其路径,并且增长SCC{v2}。请注意,t2将v2标记为已处理,因为从它的角度来看,它是已处理的。这不会影响t1找到完全的SCC,因为它包括展开路径并检查t1的本地低链接值,而不是顶点的状态。
在图6F中,线程t1完成展开其路径,以生成SCC{v1,v3,v2}。线程t2完成展开其路径以生成{v2,v3}。后处理将丢弃由线程t2确定的后一SCS,因为它被包括在前者中,即SCS{v2,v3}是SCC{v1,v3,v2}的子集。该示例图示了使用所公开的过程的计算,并且不旨在以任何方式进行限制。所公开的技术适用于任何图形。
所公开的技术可应用于电路电子设计期间的各种步骤,例如,静态时序分析、逻辑优化、电路划分等。
图7图示了在诸如集成电路的制造品的设计、验证和制造期间,用于转换和验证表示集成电路的设计数据和指令所使用的过程700的示例集合。这些过程中的每一个均可被构造为多个模块或操作,或者作为多个模块或操作被启用。术语‘EDA’代表术语‘电子设计自动化’。这些过程从利用由设计者提供的信息创建产品构思710开始,使用EDA过程712该信息被转换,以创建制造品。当设计被最终确定时,设计被流片(tape-out)734,这是集成电路的原图(例如,几何图案),当被发送到制造设施时,其用于制造掩模集,掩模集然后被用于制造集成电路。在流片之后,制造半导体裸片736,并且执行封装和组装过程738,以产生成品集成电路740。
电路或电子结构的规格的范围可从低级晶体管材料布局到高级描述语言。使用硬件描述语言(‘HDL’),诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera,可使用高级表示来设计电路和系统。HDL描述可被转换成逻辑级寄存器传输级(‘RTL’)描述、门级描述、布局级描述或掩模级描述。作为更具体的描述的每个较低的表示级别将更多有用的细节添加到设计描述中,例如,包括描述的模块的更多细节。作为更具体的描述的较低级别的表示可由计算机生成、从设计库导出、或者由另一个设计自动化过程创建。用于指定更详细描述的较低级表示语言的规格语言的一个示例是SPICE,它用于具有许多模拟部件的电路的详细描述。每一级表示的描述能够被该层的对应工具(例如,形式验证工具)使用。设计过程可使用图7所示的序列。所描述的过程由EDA产品(或工具)启用。
在系统设计714期间,指定了要制造的集成电路的功能。该设计可针对诸如功耗、性能、面积(物理和/或代码行)和成本降低等期望的特性进行优化。在这一阶段,可将设计划分为不同类型的模块或部件。
在逻辑设计和功能验证716期间,以一种或多种描述语言指定电路中的模块或部件,并且针对功能准确性来检查规格。例如,电路的部件可以被验证为生成与所设计的电路或系统的规格的要求相匹配的输出。功能验证可使用仿真器和其他程序,诸如测试平台生成器、静态HDL检查器和形式验证器。在一些实施例中,被称为‘模拟器’或‘原型系统’的特殊部件系统被用于加速功能验证。
在综合和可测性设计718期间,HDL代码被转换为网表。在一些实施例中,网表可为图形结构,其中图形结构的边表示电路的部件,并且其中图形结构的节点表示部件如何互连。HDL代码和网表均是分层次的制品,EDA产品可使用它们来验证集成电路被制造后能够根据指定的设计执行。可针对目标半导体制造技术来优化网表。此外,可对完成的集成电路进行测试,以验证集成电路满足规格的要求。
在网表验证720期间,检查网表是否符合时序约束以及是否与HDL代码相符。在设计规划722期间,针对时序和顶层布线,构建和分析集成电路的总体平面图。
在布局或物理实现724期间,发生物理布置(定位电路部件,诸如晶体管或电容器)和布线(由多个导体的连接电路部件),并且可执行从库中选择单元以启用特定逻辑功能。如本文所用,术语‘单元’可指定提供布尔逻辑功能(例如,与(AND)、或(OR)、非(NOT)、异或(XOR))或存储功能(诸如触发器或锁存器)的一组晶体管、其他部件和互连件。如本文所用,电路‘块’可指两个或更多个单元。单元和电路块均可被称为模块或部件,作为物理结构被启用,并且在仿真中被启用。为选定的单元(基于‘标准单元’)指定参数,诸如大小,并且使其在数据库中可访问,以供EDA产品使用。
在分析和提取726期间,在布局层面验证电路功能,这允许对布局设计进行细化。在物理验证728期间,检查布局设计以确保制造约束是正确的,制造约束诸如是DRC约束、电气约束、光刻约束,并且确保电路系统功能匹配HDL设计规格。在分辨率增强730期间,布局的几何形状被转换以改进电路设计的制造方式。
在流片期间,创建用于(在适当情况下在光刻增强被应用之后)生产光刻掩模的数据。在掩模数据准备732期间,‘流片’数据用于产生光刻掩模,该光刻掩模用于产生成品集成电路。
计算机系统的存储子系统(诸如图8的计算机系统800)可用于存储本文所描述的EDA产品中的一些或全部所使用的程序和数据结构,以及存储用于开发库的单元和存储用于使用库的物理和逻辑设计的产品。
图8图示了计算机系统800的示例机器,其中可实行一组指令,用于使机器执行本文所描述的方法学中的任何一种或多种。在替代实施方式中,机器可连接(例如,联网)到LAN、内联网、外联网和/或互联网中的其他机器。该机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等式(或分布式)网络环境中作为对等机器操作,或者在云计算基础设施或环境中作为服务器或客户端机器操作。
机器可为个人计算机(PC)、平板计算机、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥,或者能够实行一组指令(连续的或以其他方式)的任何机器,这些指令指定了该机器要采取的行动。此外,虽然图示了单个机器,但是术语“机器”也应被理解为包括单独或联合实行一组(或多组)指令以执行本文所论述的方法学中的任何一种或多种的任何机器的收集。
示例计算机系统800包括处理设备802、主存储器804(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)的动态随机存取存储器(DRAM)、静态存储器806(例如,闪存、静态随机存取存储器(SRAM)等),以及数据存储设备818,它们经由总线830彼此通信。
处理设备802表示一个或多个处理器,诸如微处理器、中央处理单元或类似项。更具体地,处理设备可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或者实施其他指令集的处理器,或者实施指令集的组合的处理器。处理设备802也可为一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似项。处理设备802可被配置为实行用于执行本文所描述的操作和步骤的指令826。
计算机系统800可另外包括通过网络820进行通信的网络接口设备808。计算机系统800还可包括视频显示单元810(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备812(例如,键盘)、光标控制设备814(例如,鼠标)、图形处理单元822、信号生成设备816(例如,扬声器)、图形处理单元822、视频处理单元828和音频处理单元832。
数据存储设备818可包括机器可读存储介质824(也称为非暂态计算机可读介质),其上存储有一组或多组指令826或体现本文所描述的方法学中的任何一种或多种或功能的软件。在由计算机系统800实行期间,指令826也可完全或至少部分地驻留在主存储器804和/或处理设备802内,主存储器804和处理设备802也构成机器可读存储介质。
在一些实施方式中,指令826包括实施与本公开相对应的功能性的指令。虽然机器可读存储介质824在示例实施方式中被示为单个介质,但是术语“机器可读存储介质”应被理解为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应被理解为包括能够存储或编码由机器实行的一组指令并使机器和处理设备802执行本公开的方法学中的任何一种或多种的任何介质。因此,术语“机器可读存储介质”应包括但不限于固态存储器、光学介质和磁性介质。
根据计算机存储器内数据位操作的算法和符号表示,呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地向本领域的其他技术人员传达其工作实质的方式。算法可为引起期望结果的一系列操作。这些操作需要对物理量进行物理操作。这些量可采取能够被存储、组合、比较和以其他方式操纵的电信号或磁信号的形式。这类信号可被称为比特、值、元素、符号、字符、术语、数字或类似项。
然而,应记住,这些中的所有和类似术语均与适当的物理量相关联,且仅是应用于这些量的方便标签。除非特别陈述,否则从本公开中显而易见的是,应理解,在整个描述中,某些术语是指计算机系统或类似的电子计算设备的动作和过程,其操纵并将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据转换成类似地表示为计算机系统存储器或寄存器或其他这类信息存储设备内的物理量的其他数据。
本公开还涉及一种用于执行本文所描述的操作的装置。该装置可为预期目的而特别构造,或者它可包括由存储在计算机中的计算机程序选择性激活或重新配置的计算机。这类计算机程序可存储在计算机可读存储介质中,诸如但不限于任何类型的磁盘,包括软盘、光盘、CD-ROM和磁-光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或者适于存储电子指令的任何类型的介质,每个均耦合到计算机系统总线。
本文所呈现的算法和显示器并非固有地与任何特定的计算机或其他装置相关。各种其他系统可与根据本文中的教导的程序一起使用,或者可证明构造更专用的装置来执行该方法是方便的。此外,本公开没有参考任何特定的编程语言进行描述。应理解,可使用多种编程语言来实施本文所描述的本公开的教导。
本公开可作为计算机程序产品或软件提供,其可包括其上存储有指令的机器可读介质,这些指令可用于对计算机系统(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等。
在前述公开内容中,已参照其具体示例实施方式对公开内容的实施方式进行了描述。显而易见的是,在不脱离如以下权利要求书中所阐述的本公开的实施方式的更广泛的精神和范围的情况下,可对其进行各种修改。在本公开以单数形式提及一些元素的情况下,在附图中可描绘一个以上的元素,并且相同的元素用相同的数字标记。因此,本公开和附图应被视为说明性意义而非限制性意义。

Claims (20)

1.一种用于并行确定电路设计的强连通分量(SCC)的方法,所述方法包括:
接收被表示为图形的电路设计,所述图形包括顶点集合和边集合;
对于所述顶点集合中的每个顶点,由处理器将所述顶点的状态指定为空;
由并发实行的多个线程中的每个线程执行,包括:
确定候选SCC集合,
从所述状态为空的所述顶点集合中选择顶点,
从所选择的所述顶点开始执行深度优先搜索,
一旦从顶点开始的所述深度优先搜索完成,将所述顶点标记为已处理,其中所述深度优先搜索跳过先前被标记为已处理的顶点,以及
基于由所述深度优先搜索遍历的顶点确定候选SCC;以及
从所述候选SCC集合中消除一个或多个候选SCC,并且将剩余的候选SCC存储为所述图形的SCC。
2.根据权利要求1所述的方法,其中消除一个或多个候选SCC包括:
将作为另一强连通子图的子集的强连通子图标记为不完整SCC;以及
从所述一个或多个候选SCC中移除所述不完整SCC。
3.根据权利要求2所述的方法,其中将强连通分量标记为不完整包括:
按照大小递减的顺序将所述候选SCC排序为排序列表;以及
对于按照所述排序列表的所述顺序的每个强连通子图:
将所述强连通子图的所述顶点标识为已发现;以及
响应于包括被标识为已发现的顶点的强连通子图,将所述强连通子图标记为不完整。
4.根据权利要求3所述的方法,其中将强连通分量标记为不完整包括:
对于按照所述排序列表的所述顺序的每个强连通子图:
响应于不包括被标识为已发现的任何顶点的强连通子图,保留所述强连通子图作为SCC。
5.根据权利要求1所述的方法,其中将顶点标记为已处理是使用原子写入操作来执行的。
6.根据权利要求1所述的方法,其中两个或更多个线程处理相同的所述强连通分量的顶点。
7.一种包括存储的指令的非暂态计算机可读介质,所述存储的指令在由一个或多个计算机处理器实行时,使所述一个或多个计算机处理器:
接收被表示为图形的电路设计,所述图形包括顶点集合和边集合;
对于所述顶点集合中的每个顶点,将所述顶点的状态指定为空;
由并发实行的多个线程中的每个线程执行以下项以确定候选SCC集合:
从状态为空的所述顶点集合中选择顶点;
从所选择的所述顶点开始执行深度优先搜索;以及
基于由所述深度优先搜索遍历的顶点确定候选SCC;以及从所述候选SCC集合中消除一个或多个候选SCC,并且将剩余的候选SCC存储为所述图形的SCC。
8.根据权利要求7所述的非暂态计算机可读介质,其中用于由并发实行的多个线程中的每个线程执行所述项的指令使所述一个或多个计算机处理器:
一旦从顶点开始的所述深度优先搜索已经完成,将所述顶点标记为已处理,其中所述深度优先搜索跳过被标记为已处理的顶点。
9.根据权利要求7所述的非暂态计算机可读介质,其中用于消除一个或多个候选SCC的指令使所述一个或多个计算机处理器:
将作为另一强连通子图的子集的强连通子图标记为不完整SCC;以及
从所述一个或多个候选SCC中移除所述不完整SCC。
10.根据权利要求9所述的非暂态计算机可读介质,其中用于将强连通分量标记为不完整的指令使所述一个或多个计算机处理器:
按照大小递减的顺序将所述候选SCC排序为排序列表;以及
对于按照所述排序列表的所述顺序的每个强连通子图:
将所述强连通子图的所述顶点标识为已发现;以及
响应于包括被标识为已发现的顶点的强连通子图,将所述强连通子图标记为不完整。
11.根据权利要求10所述的非暂态计算机可读介质,其中用于将强连通分量标记为不完整的指令使所述一个或多个计算机处理器:
对于按照所述排序列表的所述顺序的每个强连通子图:
响应于不包括被标识为已发现的任何顶点的强连通子图,保留所述强连通子图作为SCC。
12.根据权利要求7所述的非暂态计算机可读介质,其中将顶点标记为已处理是使用原子写入操作来执行的。
13.根据权利要求7所述的非暂态计算机可读介质,其中两个或更多个线程处理相同的所述强连通分量的顶点。
14.一种系统,包括:
一个或多个计算机处理器;以及
包括存储的指令的非暂态计算机可读介质,所述存储的指令在由所述一个或多个计算机处理器实行时,使所述一个或多个计算机处理器:
接收包括顶点集合和边集合的图形的表示;
对于所述顶点集合中的每个顶点,将所述顶点的状态指定为空;
由并发实行的多个线程中的每个线程执行以下项以确定候选SCC集合:
从状态为空的所述顶点集合中选择顶点;
从所选择的所述顶点开始执行深度优先搜索;以及
基于由所述深度优先搜索遍历的顶点确定候选SCC;以及从所述候选SCC集合中消除一个或多个候选SCC,并且将剩余的候选SCC存储为所述图形的SCC。
15.根据权利要求14所述的计算机系统,其中用于由并发实行的多个线程中的每个线程执行所述项的指令使所述一个或多个计算机处理器:
一旦从顶点开始的所述深度优先搜索已经完成,将所述顶点标记为已处理,其中所述深度优先搜索跳过被标记为已处理的顶点。
16.根据权利要求14所述的计算机系统,其中用于消除一个或多个候选SCC的指令使所述一个或多个计算机处理器:
将作为另一强连通子图的子集的强连通子图标记为不完整SCC;以及
从所述一个或多个候选SCC中移除所述不完整SCC。
17.根据权利要求16所述的计算机系统,其中用于将强连通分量标记为不完整的指令使所述一个或多个计算机处理器:
按照大小递减的顺序将所述候选SCC排序为排序列表;以及
对于按照所述排序列表的所述顺序的每个强连通子图:
将所述强连通子图的所述顶点标识为已发现;以及
响应于包括被标识为已发现的顶点的强连通子图,将所述强连通子图标记为不完整。
18.根据权利要求17所述的计算机系统,其中用于将强连通分量标记为不完整的指令使所述一个或多个计算机处理器:
对于按照所述排序列表的所述顺序的每个强连通子图:
响应于不包括被标识为已发现的任何顶点的强连通子图,保留所述强连通子图作为SCC。
19.根据权利要求14所述的计算机系统,其中将顶点标记为已处理是使用原子写入操作来执行的。
20.根据权利要求14所述的计算机系统,其中两个或更多个线程处理相同的所述强连通分量的顶点。
CN202280031486.8A 2021-06-02 2022-05-25 电路设计中强连通分量的并行和可扩展计算 Pending CN117242451A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/196,076 2021-06-02
US17/748,987 2022-05-19
US17/748,987 US20220391569A1 (en) 2021-06-02 2022-05-19 Parallel and scalable computation of strongly connected components in a circuit design
PCT/US2022/030865 WO2022256212A1 (en) 2021-06-02 2022-05-25 Parallel and scalable computation of strongly connected components in a circuit design

Publications (1)

Publication Number Publication Date
CN117242451A true CN117242451A (zh) 2023-12-15

Family

ID=89086674

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280031486.8A Pending CN117242451A (zh) 2021-06-02 2022-05-25 电路设计中强连通分量的并行和可扩展计算

Country Status (1)

Country Link
CN (1) CN117242451A (zh)

Similar Documents

Publication Publication Date Title
US11256845B2 (en) Machine-learning driven prediction in integrated circuit design
US20210049315A1 (en) Methods and systems to perform automated integrated fan-out wafer level package routing
US11994979B2 (en) Smart regression test selection for software development
US11853680B2 (en) Incremental routing based pin assignment
US11347917B2 (en) Determining and verifying metastability in clock domain crossings
US11694016B2 (en) Fast topology bus router for interconnect planning
US11836425B2 (en) Engineering change orders with consideration of adversely affected constraints
CN116976249A (zh) 用于增量映射优化的基于可满足性的再替换
US20230004698A1 (en) Dividing a chip design flow into sub-steps using machine learning
US20210390244A1 (en) System and Method for Synchronizing Net Text Across Hierarchical Levels
CN115587560A (zh) 用于分布式引擎的运行时和存储器高效的属性查询处理
CN117242451A (zh) 电路设计中强连通分量的并行和可扩展计算
US20220391569A1 (en) Parallel and scalable computation of strongly connected components in a circuit design
US20230126888A1 (en) Computation of weakly connected components in a parallel, scalable and deterministic manner
EP4327230A1 (en) Parallel and scalable computation of strongly connected components in a circuit design
US20230083003A1 (en) Optical path tracing in an optical circuit design
US20230214574A1 (en) Extended regular expression matching in a directed acyclic graph by using assertion simulation
US11416661B2 (en) Automatic derivation of integrated circuit cell mapping rules in an engineering change order flow
US20230252208A1 (en) Transforming a logical netlist into a hierarchical parasitic netlist
US11816409B1 (en) Strongly connected component (SCC) graph representation for interactive analysis of overlapping loops in emulation and prototyping
US11537775B1 (en) Timing and placement co-optimization for engineering change order (ECO) cells
US20230315967A1 (en) Color graph reduction on a line of connected structures
US20220284161A1 (en) Automated design hierarchy identification and simplified reduced model generation for static verification of circuit designs
US20220382955A1 (en) Constraint file-based novel framework for net-based checking technique
EP4352647A1 (en) Deterministic netlistic transformations in a multi-processor parallel computing system

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