一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

处理注入到分层集成电路设计中的虚拟分区单元的系统和方法与流程

2023-03-03 07:52:02 来源:中国专利 TAG:


1.本公开总体上涉及物理验证系统。具体地,本公开涉及处理注入到分层集成电路设计中的虚拟分区单元的系统和方法。


背景技术:

2.物理验证通常是通过电子设计自动化(eda)软件工具来验证集成电路布局(ic布局)设计以确保正确的电气和逻辑功能以及可制造性的过程。物理验证涉及设计规则检查(drc)、布局与原理图(lvs)、天线检查以及电气规则检查(erc)。
3.产生ic布局的设计步骤是物理设计。为了管理超大规模集成(vlsi)电路的复杂性,已经实现了物理设计的分层方法。除了标准单元的放置之外,分层物理设计通常还基于逻辑和物理分层将设计分解成块。块本质上是其中放置有子单元的大单元。分层验证工具可以利用设计中的分层来有效地处理设计。模型数据可以表示用于实现与每个单元相关联的电路的布局几何。在分层验证中,模型数据可以表示用于分层结构中每个单元的未解决的几何数据,并且可以被发送到单元的母单元以进行解析。如果某些drc运行命令涉及与针对该单元不可用的其它几何数据的比较,则几何数据可能在一个子单元中无法被解决。因此,可以将未解决的几何数据发送到母单元以进行解析。在至少一些分层验证中,以这种分层方式自底向上处理设计中的所有单元。
4.然而,设计中的设计分层可能不足以满足设计者所期望的越来越大的设计和快速周转时间(tat)。用于较大设计的计算机资源已经通过用于快速tat的线程化和分布式处理而增长到成百上千个中央处理单元(cpu)。物理验证工具可以将虚拟单元注入到ic布局中的分区大单元以用于附加的分层结构,以降低存储器占用量并且改善具有线程化和分布式处理的可缩放性,从而可能实现更快的tat。


技术实现要素:

5.本公开一般涉及物理验证系统。具体地,本公开涉及处理注入到分层集成电路设计中的虚拟分区单元的系统和方法。
6.一种示例方法包括:将虚拟分区单元插入到集成电路的设计的布局的母单元中,其中母单元的子单元具有与虚拟分区单元重叠的第一部分和在虚拟分区单元之外的第二部分;由一个或多个处理器创建单元分层结构,单元分层结构具有子单元和从母单元下降的虚拟分区单元,其中子单元在单元分层结构中具有多个实例;以及基于分层结构在母单元上执行设计规则检查运行集。
7.一个示例装置包括存储器和耦合到该存储器的一个或多个处理器。存储器和一个或多个处理器可以被配置为:在集成电路设计的布局的母单元中插入虚拟分区单元,其中母单元的子单元具有与虚拟分区单元重叠的第一部分和在虚拟分区单元之外的第二部分;创建具有子单元和从母单元下降的虚拟分区单元的单元分层结构,其中子单元在单元分层
结构中具有多个实例;以及基于分层结构在母单元上执行设计规则检查运行集。
8.一个方面包括非瞬态计算机可读介质,该非瞬态计算机可读介质上存储有使设备进行以下操作的指令:在集成电路设计的布局的母单元中插入虚拟分区单元,母单元的子单元具有与虚拟分区单元重叠的第一部分和在虚拟分区单元之外的第二部分;创建具有子单元和从母单元下降的虚拟分区单元的单元分层结构,其中子单元在单元分层结构中具有多个实例;以及基于分层结构在母单元上执行设计规则检查运行集。
附图说明
9.从以下给出的详细描述和从本文描述的示例的附图将更全面地理解本公开。附图用于提供对本文所描述的示例的了解和理解,并且不将本发明的范围限于这些特定示例。此外,附图不必按比例绘制。
10.图1是根据本公开的示例实施例的用于物理验证分析的方法的流程图。
11.图2描绘根据本发明实例性实施例的包括集成电路设计中的子单元的母单元。
12.图3示出了根据本公开的示例实施例的对应于图2的分层树。
13.图4示出了根据本公开的示例实施例的在图2的母单元中插入虚拟分区单元。
14.图5示出了根据本公开的示例实施例的基于图4中的虚拟分区单元的插入的逻辑分层结构的创建。
15.图6示出了根据本公开的示例实施例的模型数据被发送到母单元并且由母单元处理的排除区域。
16.图7示出了根据本公开的示例实施例的将标识分配给图5的分层结构的简化部分内的网络的方面。
17.图8示出了根据本公开的示例实施例的将结果重切到虚拟分区单元的方面。
18.图9示出了在半导体裸片上的集成电路的设计、检验和制造期间使用以转换和检验设计数据和指令的一组实例处理,设计数据和指令表示其中可实施本文所描述的实例的集成电路。
19.图10描绘了本文所描述的示例可以在其中操作的示例计算机系统的示图。
具体实施方式
20.本文所描述的方面涉及对将在半导体裸片上制造的集成电路的设计的物理验证。本文描述的示例提供了一种系统和方法,用于相对于重叠的子单元(例如,同层级)来处理注入的虚拟分区单元(本文也称为虚拟剪切单元)。在一个示例中,本系统和方法包括随着封闭的子单元的增长而增长或增加虚拟分区单元的边界或范围,以及在发送到母单元以解析的模型数据上排除虚拟分区单元。在一个示例中,本系统和方法还包括与母单元及其虚拟分区单元两者一致的平网计算。本系统和方法可以有效地将大的母单元的工作负荷划分为其虚拟划分单元,并且可以使虚拟划分单元和母单元共同工作以传递降低的存储器占用面积和改进的可缩放性的益处。因此,一些示例可以在物理验证中实现更快的tat。
21.下文参照附图描述各种特征。应当注意,附图可以按比例绘制或可以不按比例绘制,并且在所有附图中,类似结构或功能的元件由类似的附图标记表示。应当注意的是,附图仅旨在便于特征的描述。它们不旨在作为对所要求保护的技术方案的详尽描述或作为对
所要求保护的技术方案的范围的限制。此外,所示示例不需要具有所示的所有方面或优点。结合特定示例描述的方面或优点不必限于该示例,并且可以在任何其他示例中实践,即使没有如此示出或者如果没有如此明确描述。此外,本文描述的方法可以以特定的操作顺序来被描述,但是根据其他示例的其他方法可以以具有更多或更少的操作的各种其他顺序(例如,包括各种操作的不同串行或并行执行)来实现。此外,如在本领域中所使用的,本文使用了各种术语,并且这些术语旨在包括本领域普通技术人员所理解的那些术语的全部含义。
22.图1是根据本公开的示例实施例的用于物理验证分析的方法50的流程图。下面在各个附图的上下文中描述方法50以说明各方面。这些附图仅作为示例提供,并且本领域普通技术人员将容易理解方法50在其他示例中的应用。
23.如下面进一步详细描述的,方法50可以由存储在非瞬态计算机可读介质上的一个或多个指令集来实现,该指令集可以是一个或多个软件模块。计算机系统的一个或多个处理器可以被配置为读取和执行一个或多个指令集,这使得一个或多个处理器以执行方法50的各种操作或步骤。下面提供进一步的细节。在一些示例中,方法50的一些操作或步骤可以被实现为作为一个或多个软件模块的一个或多个指令集,并且方法50的其他操作或步骤可以被实现为作为一个或多个其他软件模块的一个或多个其他指令集。在一些示例中,不同的软件模块可以被分布并且被存储在不同计算机系统上的不同非瞬态计算机可读介质上,用于由不同计算机系统的相应的一个或多个处理器执行。
24.在下面描述的各种附图的上下文中描述图1。这些图被描绘和描述以说明图1的各个方面。其他示例实现可以实现不同的设计、不同的分层结构或其他不同的方面。
25.在图1的52处,将在半导体裸片上制造的集成电路芯片的设计的电子表示被获得。电子表示可以是任何格式,诸如包括oasis文件或gds文件等。该设计包括单元的布局,其可以在逻辑上以这些单元的分层表示。单元可以表示设计中的各种功能和/或逻辑单元。单元可以是例如静态随机存取存储器(sram)单元、缓冲单元等的布局。这些单元指示相应的单元内的器件的布局和器件的连通性。单元可以是例如任何标准库单元和/或非标准(例如用户限定的)单元。设计的布局可以具有任意数目的单元类型的单元实例。例如,缓冲单元的相同类型的两个或更多个实例可以被包括在设计中,并且缓冲单元的相同类型的这些实例中的每个实例是用于分析的单独单元。任何数目的单元和任何分层可以被实现。例如,在设计中可以实现10到20级的分层。在子单元之间的重叠在设计中是不可避免的。任何数目的子单元可以与一个或多个其它子单元重叠,并且任何数目的子单元可以不与任何其它子单元重叠。
26.图2描绘根据本公开的示例实施例的包括集成电路的设计中的子单元的母单元100。母单元100包括集成电路设计(例如,集成电路的原始设计)中的子单元102、104、106、108、110和112。如图所示,子单元102、106、108和110的每个子单元不与任何其他子单元重叠,并且子单元104和112彼此重叠。图2中示出了图2的单元的单元边界或范围,并且为了清楚起见,省略了实际电路和物理设备布局。例如,针对单元110的边界由图2中示出的用于单元110的矩形的线边界示出。
27.最初,每个子单元102、104、106、108、110和112在分层结构的相同逻辑级上。逻辑上,每个子单元102、104、106、108、110和112是包括子单元102、104、106、108、110和112的母
单元100的直接后代(或子)。图3示出了根据本公开的示例实施例的与图2相对应的分层树。
28.在图1的54处,将虚拟分区单元插入或注入到集成电路的设计中。虚拟分区单元允许标识不同子单元之间的物理和/或连接关系,其中虚拟分区单元的处理可以降低存储器并且提高可扩展性。虚拟分区单元的插入不将附加设备、连接或其它特征插入到集成电路的设计中,而是在设计中插入指示虚拟分区单元的范围或边界的逻辑构造,以使能插入如下所述的分层的附加层级。虚拟分区单元的插入可以通过任何合适的技术。例如,虚拟分区单元可以以避开某些对象(也称为障碍)的方式被插入。障碍可以是当单元布局被划分时不能被划分成较小片的布局内的区域,这样做可能导致设计规则检查操作期间的性能损失。例如,单元布局中形状的密集区域可以被认为是当插入虚拟分区单元时可以避免的对象。用于插入虚拟分区单元的其它技术可以不涉及障碍的考虑。例如,虚拟分区单元的行可以作为划分布局的方式来被注入,以改善设计规则检查性能。在一些情况下,由于布局中其它单元的数量和位置,可以添加与一个或多个其它单元重叠或完全包含一个或多个其它单元的一个或多个虚拟分区单元。
29.每个虚拟分区单元在插入虚拟分区单元的母单元的分层结构内插入逻辑分层级别。被插入的虚拟分区单元包含的、或与被插入的虚拟分区单元在任何部分重叠的任何和每个单元成为该相应虚拟分区单元的子单元。像子单元一样,实际上,一个或多个虚拟分区单元与其它一个或多个子单元的重叠在设计中可能是不可避免的。
30.图4示出了在图2的母单元100中插入虚拟分区单元202、204。如图4所示,虚拟分区单元202包含子单元110并与子单元102、104的相应部分重叠。母单元100中的虚拟分区单元202、204的大小和位置仅是提供对本文描述的各方面的知识和理解的示例,而不将本公开的范围限于这些特定示例。虚拟分区单元204包含子单元112并且与子单元104的部分重叠(这与虚拟分区单元202重叠的部分不同)。
31.通过插入54的虚拟分区单元来创建逻辑分层。在分层结构中,具有与虚拟分区单元重叠的部分和虚拟分区单元之外的另一部分的子单元在分层结构中被复制,如图1的54-1所示。如54-2中所示,对在分层结构中被复制的复制子单元应用相同的标识(例如,相同的标识数字)。
32.在创建逻辑分层时,虚拟分区单元成为虚拟分区单元插入其中的母单元的直接后代或子。如果子单元具有在虚拟分区单元的边界或范围内的部分(例如,与虚拟分区单元重叠),则子单元是给定虚拟分区单元的直接后代或子。另外,如果子单元的任何部分都不在虚拟分区单元之外,则子单元作为母单元的直接后代被移除,并且因此,如果子单元完全被虚拟分区单元包含,则虚拟分区单元增加子单元和母单元之间的分层层级(使子单元成为孙单元)。如这些准则所指示的,如果子单元具有与虚拟分区单元重叠的部分和在虚拟分区单元之外但仍在其直接祖先或母单元中的部分,则复制该子单元,具有作为虚拟分区单元的直接后代或子的实例和作为直接祖先或母单元的直接后代或子的另一实例。换言之,其中子单元的第一实例可以在分层结构的第一层中,而子单元的第二实例可以在分层结构的第二层中,第二层在分层结构中低于第一层。
33.图5示出了基于图4中的虚拟分区单元202、204的插入来创建逻辑分层结构。如图4和5中所示,虚拟分区单元202、204成为母单元100的直接后代或子女。子单元102、104、110具有虚拟分区单元202内的相应部分,并且成为虚拟分区单元202的直接后代或子。子单元
104、112具有虚拟分区单元204内的相应部分,并且成为虚拟分区单元204的直接后代或子。子单元110、112分别被虚拟分区单元202、204完全包含,并且因此,子单元110、112从作为母单元100的直接后代被移除。在该示出的示例中,子单元102具有虚拟分区单元202内的一部分和母单元100内不在虚拟分区单元202内的一部分,并且因此,子单元102在分层结构中具有两个(复制的)实例302、304,其中一个实例302是母单元100的直接后代或子,而另一实例304是虚拟分区单元202的直接后代或子。类似地,子单元104具有虚拟分区单元202内的一部分、虚拟分区单元204内的一部分以及母单元100内不在虚拟分区单元202或虚拟分区单元204内的一部分,并且因此,子单元104具有分层结构中的三个(复制的)实例306、308、310,其中一个实例306是母单元100的直接后代或子,另一实例308是虚拟分区单元202的直接后代或子,而另一实例310是虚拟分区单元204的直接后代或子。
34.针对每个子单元,如54-2所示,分层结构内的相应的子单元的多个实例具有相同的标识。例如,参照图5,向子单元102的多个实例302、304提供对于母单元100内的其它单元唯一的相同标识,并且向子单元104的多个实例306、308、310提供对于母单元100内的其它单元唯一的相同标识。也可以为每个具有单个实例的其它子单元提供相应的唯一标识。
35.返回参考图1,在56处,对具有插入的虚拟分区单元的设计执行设计规则检查(drc)运行集。drc运行集可以是一组命令(也称为设计规则检查命令),其执行以检测设计对设计规则的违反。通过此执行,中间层可以从各种单元的布局被导出,并且每个子单元可以具有基于这些命令的执行而增长或收缩的边界或范围。针对每个虚拟分区单元,相应的虚拟分区单元可以基于完全在虚拟分区单元内或被虚拟分区单元包围的任何子单元而增长或收缩。在56-1处,随着虚拟分区单元所包含的原始子单元的大小被调整,虚拟分区单元的大小被调整。具有在虚拟分区单元的范围或边界内的一部分和在虚拟分区单元的范围或边界外的另一部分的任何子单元都不用于增长或收缩该虚拟分区单元。参照图4,虚拟分区单元202可以基于子单元110是否增长或收缩而增长或收缩,而不管子单元102、104是否增长或收缩。类似地,虚拟分区单元204可以基于子单元112是否增长或收缩而增长或收缩,而不管子单元104是否增长或收缩。
36.drc运行集的性能可以是分布式的、自下而上的过程。例如,可以针对分层结构中最低的单元执行drc运行集,随后是分层结构中的下一个最低单元,等等,直到针对母单元执行drc运行集。不具有子-母或其它后代/祖先关系的单元可以被独立地处理,这可以允许单元的并发处理。因此,可以同时处理不重叠的虚拟分区单元。换言之,虚拟分区单元202与虚拟分区单元204不重叠。由于虚拟分区单元中的一个虚拟分区单元(例如,虚拟分区单元202)的处理不依赖于虚拟分区单元中的另一个虚拟分区单元(例如,虚拟分区单元204)的处理的结果,所以可以同时处理不重叠的虚拟分区单元202、204。因此,虚拟分区单元202(包括单元104的区域404)可以与虚拟分区单元204(例如,包括单元104的区域406)同时被处理。
37.来自处理单元的结果可以被送至直接祖先单元,用于将这些结果并入祖先单元的处理中。换言之,一旦对子单元执行了drc运行集,则可以提供针对子单元的drc运行集的结果以针对母单元执行drc运行集。因此,针对母单元的几何数据可以基于针对子单元的drc运行集的结果来解析特定drc运行集命令。
38.针对与子单元重叠的任何虚拟分区单元,并且该子单元具有在该虚拟分区单元之
外的部分,在56-2处,在虚拟分区单元之外的子单元的部分的模型数据在虚拟分区单元的处理期间从虚拟分区单元被排除,并且在56-3处,所排除的模型数据被发送到直接祖先单元(例如母单元)用于在直接祖先单元的处理期间进行处理。这允许独立地处理虚拟分区单元,并且将处理虚拟分区单元的结果发送到虚拟分区单元的母单元,这可以导致对母单元的模型数据的减少,这可以进一步减少用于处理母单元的资源,诸如存储器。可以基于分层结构中的子单元的实例来确定子单元是否具有与虚拟分区单元重叠的部分以及是否具有虚拟分区单元之外的另一部分。满足该条件的子单元具有作为虚拟分区单元的后代的实例和分层结构中不是虚拟分区单元的后代的至少一个其它实例。
39.图6示出了模型数据被发送到母单元100并且由其处理的区域。区域402是子单元102与虚拟分区单元202重叠的区域,其中子单元102的剩余部分在虚拟分区单元202之外。区域404是子单元104与虚拟分区单元202重叠的区域,其中子单元104的剩余部分在虚拟分区单元202之外。区域406是子单元104与虚拟分区单元204重叠的区域,其中子单元104的剩余部分在虚拟分区单元204之外。子单元102的、与重叠区域402相对应的模型数据被排除在母单元100之外用于处理,并且与剩余的不重叠区域(排除区域402并且在虚拟分区单元202之外)相对应的子单元102的模型数据被排除在虚拟分区单元202的处理之外,并且可以被发送到母单元100以用于处理母单元100。子单元104的、与区域404相对应的模型数据被排除在母单元100之外用于处理,并且子单元104的、与区域406相对应的模型数据被排除在母单元100之外用于处理。子单元102、104的、与相应剩余区域(分别不包括区域404、406并且在虚拟分区单元202、204的之外)相对应的模型数据被排除在相应虚拟分区单元202、204的处理之外,并且可以被发送到母单元100以用于母单元100的处理。
40.返回参考图1,在58处,设计的连通性分析被执行。单元内的网络和单元之间的网络连通性被标识。然后为网络分配各自的标识(本文中也称为标识符)。每个单元分配给网络标识。母单元中的单元和所包括的不具有母单元之外的连接的子单元的网络在母单元中被给予唯一的平网标识(例如,标识数字)。通过偏移下一个子单元的子单元中的网络的数目来计算平网。
41.图7作为示例示出了将标识分配给图5的分层结构的简化部分内的网络的方面。母单元100中的网络被识别和分配,而子单元的第一实例中的网络使用累积偏移被识别和分配。尽管未示出,但是每个单元可以在单元内具有内部偏移,用于向网络分配数字标识符。
42.母单元100被示为具有m1个网络(例如,网络1到网络m1)。母单元100没有累积偏移或累积偏移为0。子单元102的第一实例302被示为具有m2个网络(例如,网络1到网络m2),其累积偏移为m1。因此,子单元102的第一实例302的网络被分配网络(m1 1)到网络(m1 m2)的数字标识符。子单元104的第一实例306被示为具有m3个网络(例如,网络1到网络m3),m3个网络具有(m1 m2)的累积偏移。因此,子单元104的第一实例306的网络被分配网络(m1 m2 1)到网络(m1 m2 m3)的数字标识符。子单元106的第一实例被示为具有m4个网络(例如,网络1到网络m4),其具有累积偏移(m1 m2 m3)。因此,子单元106的第一实例的网络被分配网络(m1 m2 m3 1)到网络(m1 m2 m3 m4)的数字标识符。这针对单元的相应第一实例继续,其可以被概括为如子单元110所示。子单元110的累积偏移是其中j是所分析的先前单元的数目,使得总和是所分析的先前单元的网络数目的累积。子单元110具有m
(j 1)
个网络,使得所
分配的数字标识符是网络到网络累积的偏移可以保持在查找表中,该查找表将每个累积的偏移与单元的对应的实例相关联。虽然虚拟分区单元202没有被示为包括网络,但是虚拟分区单元可以包括一个或多个网络。
43.子单元的后续实例,诸如从虚拟分区单元下降,可以指对应的子单元的第一实例。因此,给定子单元的每个实例可以在查找表中具有相同的累积偏移。如上所述,确定哪些实例是后续实例可以基于在54确定的分层结构中的子单元的多个实例的标识。
44.图7示出了具有m2个网络(如上所述)的子单元102的第二实例304,并且累积偏移是第一实例302的累积偏移(offset_302)。类似地,图7示出了具有m3个网络的子单元104的第二实例308(如上所述),并且累积偏移是第一实例306的累积偏移(offset_306)。因此,相同子单元的多个实例的相应网络的所分配的数字标识符在分层结构中的相同子单元的多个实例中是相同的。
45.用于从虚拟分区单元下降的子单元的平网的标识符可以在两次传递中被解析。平网可以被计算,并且可以在第一传递中跳过从虚拟分区单元下降的复制的子单元。在第二传递中,通过源自母单元的相同实例标识符获得复制的子单元的平网偏移,从而实现虚拟分区单元或母单元中的相同平网数字。下面的伪代码示出这些传递:
46.针对虚拟分区单元c的平网:
[0047][0048]
在非虚拟剪切单元之前用虚拟剪切单元对单元p的子单元排序。以这种方式将数字标识符分配给可以导致包含在母单元、子单元和虚拟分区单元中的连续网络数字。
[0049]
也可以确定单元之间的网络连通性。参考图7,示出了子单元102的网络1(例如,数字标识符网络(m1 m2 m3 1))到母单元100的网络2(例如,数字标识符网络2)之间的示例连接502。可以类似地确定不同单元的网络之间的其它连接。子单元与分层结构中的多个实例的连接可以与子单元的第一实例相关联,并且后续实例可以指代(例如)第一实例。
[0050]
在60处,在执行drc运行集之后,来自母单元的drc的结果被重新切割到虚拟分区单元。例如,参考图8,示出了由虚拟分区单元202包含的子单元数据602。如前所述,子单元102(例如,对应于子单元数据702)具有与虚拟分区单元202重叠的部分,并且具有虚拟分区单元202之外的部分。接近标志604将子单元数据602标志为与子单元数据702接近。在drc运行集中执行检查之后,母单元100中的结果被重新切割和/或重新划分到相对应的虚拟分区单元202和虚拟分区单元202范围。例如,用于解析母单元的drc运行集命令的几何数据可以接近与子单元数据602相关联的单元。因此,由于此邻近性,可以将子单元数据702的drc运行集的结果提供到(例如,重新切割或重新划分到)虚拟分区单元202以在针对子单元202执行drc运行集时使用。该结果可以被重新切割成任意数目的不重叠的虚拟分区单元。换言之,执行drc运行集可以涉及执行drc命令链。针对母单元执行的命令的结果的一部分可以被重切到虚拟分区单元。因此,针对虚拟分区单元执行子序列drc命令可以基于用于针对母单元执行的先前命令的结果的部分。
[0051]
通过执行上述操作,虚拟分区单元和母单元可以共同地完成针对母单元的检查,并且可以消耗大大减少的存储器。虚拟分区单元可以同时运行以提高可扩展性。
[0052]
54-60的操作可以被执行多次。例如,各种迭代可以实现不同的虚拟分区单元。可以针对将被执行的每个drc运行集命令重复54-60。如图1中62所示,确定是否还有drc运行集命令将被执行。如果是,则方法50循环到54,并且如果否,则方法可以结束或返回。在一些示例中,迭代可以省略58的连通性分析。
[0053]
从物理验证收集的信息,设计规则的任何违反和/或连通性的故障可以在设计中被解决和解析。可以基于任何已解析的设计执行迭代物理验证。随后可以分析该设计,诸如以下所描述。
[0054]
本领域普通技术人员将容易理解可以在上述过程中实现的各种数据结构。例如,可以限定母单元、虚拟分区单元和子单元的类。每个类可以指示任何逻辑递增和/或下降以指示逻辑分层结构。类的对象的每个实例可以包括指示布局中的边界或范围的数据,可以包括对应单元中的网络,或其他信息或数据。在不同的示例中可以使用不同的数据结构和/或经修改的数据结构。另外,本领域的普通技术人员将容易地理解对本文描述的示例的逻辑和/或数学表达式的各种修改。其它示例考虑了这种修改。
[0055]
图9说明在半导体裸片上的集成电路的设计、检验和制造期间使用以转换和检验表示集成电路的设计数据和指令的一组示例过程900。这些过程中的每个过程都可以被构造和被使能为多个模块或操作。术语“eda”表示电子设计自动化。在910处,这些过程开始于利用设计者提供的信息创建产品思想,在912处,信息被转换以创建使用一组eda过程的集成电路。当设计完成时,在934处将设计流片,这是当将针对集成电路的图形(例如,几何图案)发送到制造设施以制造掩模组时,掩模组接着被用于制造集成电路。在流片之后,在936处,在半导体裸片上制造集成电路,并且在938处,执行封装及组装过程以在940处产生成品集成电路(时常也被称为“芯片”或“集成电路芯片”)。
[0056]
用于电路或电子结构的规格范围可以从低级晶体管材料布局到高级描述语言。使用诸如vhdl、verilog、systemverilog、systemc、myhdl或openvera的硬件描述语言(hdl),高级表示可以被用于设计电路和系统。hdl描述可以被转换为逻辑级寄存器传输级(rtl)描述、门级描述、布局级描述或掩码级描述。作为更详细描述的每个较低表示级别将更有用的
细节添加到设计描述中,诸如例如包括该描述的模块的更多细节。更详细说明的较低级表示可以由计算机生成、从设计库导出、或由另一设计自动化过程创建。用于指定更详细说明的较低级表示语言的规范语言的示例是spice,其用于具有许多模拟组件的电路的详细说明。在每个表示级别上的描述使能由该层的对应的工具(例如,形式验证工具)使用。设计过程可以使用图9所示的顺序。所描述的过程可以由eda产品(或工具)来实现。
[0057]
在系统设计期间,在914处,指定待制造的集成电路的功能性。可以针对诸如功耗、性能、面积(物理和/或代码行)和成本降低等期望特性来优化设计。在此阶段处可以将设计划分为不同类型的模块或组件。
[0058]
在逻辑设计和功能验证期间,在916处,用一种或多种描述语言指定电路中的模块或组件,并且针对功能准确性检查规范。例如,可以验证电路的组件以生成与所设计的电路或系统的规范要求相匹配的输出。功能验证可以使用模拟器和其他程序,诸如testbench生成器、静态hdl检验器和正式验证器。在一些示例中,被称为仿真器或原型系统的组件的特定系统被用于加速功能验证。
[0059]
在合成和设计测试期间,在918处,hdl代码被转换为网表。在一些示例中,网表可以是图形结构,其中图形结构的边缘表示电路的组件,并且其中图形结构的节点表示组件如何被互连。hdl代码和网表两者都是可以由eda产品使用以验证集成电路在制造时按照指定的设计执行的分层制品。可以针对目标半导体制造技术优化网表。此外,可以测试成品集成电路以验证该集成电路满足规范的要求。
[0060]
在网表验证期间,在920处,检查网表是否符合定时约束以及是否符合hdl代码。在设计规划期间,在922处,用于集成电路的总体平面布置图针对时序和顶层路由被构造并且被分析。
[0061]
在布局或物理实现期间,在924处,发生物理放置(诸如晶体管或电容器的电路组件的定位)和路由(通过多个导体连接电路组件),并且可以执行从库中选择单元以使能特定逻辑功能。如本文中所使用,术语“单元”可以指定提供布尔逻辑功能(例如,and、or、not、xor)或存储功能(诸如,触发器或锁存器)的一组晶体管、其它组件及互连。如本文所使用,电路“块”可以指两个或更多个单元。单元和电路块两者都可以被称为模块或组件,并且被使能为物理结构和模拟两者。针对所选择的单元(基于标准单元)指定诸如大小的参数,并且使其可在数据库中访问以供eda产品使用。
[0062]
在分析和提取期间,在926处,在布局层级处验证电路功能,这允许改进布局设计。在物理验证期间,在928处,检查布局设计以确保制造约束是正确的,诸如设计规则检查(drc)约束、电约束、光刻约束,并且电路功能与hdl设计规格匹配。在928处的物理验证可以包括图1的用于物理验证分析的方法50。在分辨率增强期间,在930处,布局的几何形状被转换以改进如何制造电路设计。
[0063]
在流片期间,创建数据以用于(如果适当的话,在应用光刻增强之后)产生光刻掩模。在掩模数据准备期间,在932处,流片数据被使用以产生用于产生成品集成电路的光刻掩模。
[0064]
计算机系统(诸如图10的计算机系统1000)的存储子系统可以被用于存储由本文描述的一些或全部eda产品使用的程序和数据结构,以及用于开发针对库的单元和用于使用库的物理和逻辑设计的产品。
[0065]
图10示出了计算机系统1000的示例,在该计算机系统1000内可以执行一组指令,用于使计算机系统执行本文所讨论的任何一个或多个方法(包括图1的方法50和/或图9的方法928)。在一些实现中,计算机系统可以被连接(例如,被联网)到局域网(lan)、内联网、外联网和/或因特网中的其他机器或计算机系统。计算机系统可以在客户端-服务器网络环境中以服务器或客户端计算机系统的能力下操作,作为对等(或分布式)网络环境中的对等计算机系统,或者作为云计算基础设施或环境中的服务器或客户端计算机系统。
[0066]
计算机系统可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥、或能够执行指定要由该计算机系统采取的动作的一组指令(顺序的或其它的)的任何机器。此外,虽然示出了单个计算机系统,但是术语计算机系统还应当被理解为包括单独地或联合地执行一组(或多组)指令以执行本文中讨论的任何一个或多个方法的计算机系统的任何集合。
[0067]
示例计算机系统1000包括处理设备1002、主存储器1004(例如,只读存储器(rom)、闪存、诸如同步dram(sdram)的动态随机存取存储器(dram)、静态存储器1006(例如,闪存、静态随机存取存储器(sram)等)和数据存储设备1018,其经由总线1030彼此通信。主存储器1004包括非瞬态计算机可读介质或者是非瞬态计算机可读介质。主存储器1004(例如,非瞬态计算机可读介质)可以存储一组或多组指令1026,这些指令在由处理设备1002执行时使得处理设备1002执行本文所述的操作、步骤、方法和过程中的一些或全部,包括图1的方法50和/或图9的928。
[0068]
处理设备1002表示诸如微处理器、中央处理单元等的一个或多个处理器。更具体地,处理设备1002可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、实现其它指令集的处理器、或(多个)实现指令集组合的处理器或包括复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、实现其它指令集的处理器、或(多个)实现指令集组合的处理器。处理设备1002还可以是一个或多个专用处理设备,诸如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理设备1002可以被配置为执行指令1026,用于执行本文描述的操作、步骤、方法和过程中的一些或全部,包括图1的方法50和/或图9的928。
[0069]
计算机系统1000可以进一步包括网络接口设备1008,以通过网络1020进行通信。计算机系统1000还可以包括视频显示单元1010(例如,液晶显示器(lcd)或阴极射线管(crt))、字母数字输入设备1012(例如,键盘)、光标控制设备1014(例如,鼠标)、图形处理单元1022、信号生成设备1016(例如,扬声器)、图形处理单元1022、视频处理单元1028和音频处理单元1032。
[0070]
数据存储设备1018可以包括机器可读存储介质1024(例如,非瞬态计算机可读介质),在该介质上存储了一个或多个指令集1026或软件,实现本文描述的任何一个或多个方法或功能(包括图1的方法50和/或图9的方法928)。在计算机系统1000执行指令1026期间,指令1026也可以完全或至少部分地驻留在主存储器1004内和/或处理设备1002内,主存储器1004和处理设备1002还包括机器可读存储介质。
[0071]
在一些实现中,指令1026包括实现上述功能的指令。虽然机器可读存储介质1024在示例实现中示出为单个介质,但是术语“机器可读存储介质”应当被理解为包括存储一个
或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应当被理解为包括能够存储或编码用于由计算机系统执行的指令集并且使得计算机系统和处理设备1002执行上述方法中的任何一个或多个的任何介质。因此,术语“机器可读存储介质”应被理解为包括但不限于固态存储器,光学介质和磁性介质。
[0072]
先前详细描述的某些部分是根据对计算机存储器内的数据位的操作的算法和符号表示来呈现的。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域的其他技术人员的方式。算法可以是导致期望结果的操作序列。这些操作是需要对物理量进行物理操作。这些量可以采取能够被存储、组合、比较和以其他方式操纵的电或磁信号的形式。这种信号可以被称为位、值、元素、符号、字符、项、数字等。
[0073]
然而,应当记住,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便标记。除非特别声明,否则如从本公开显而易见的,应当理解,在整个说明书中,某些术语是指计算机系统或类似的电子计算设备的动作和过程,其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似地表示为计算机系统存储器或寄存器或其他这种信息存储设备内的物理量的其他数据。
[0074]
本公开还涉及一种用于执行本文的操作的装置。该装置可以针对预期目的而专门被构造,或者其可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这种计算机程序可以被存储在计算机可读存储介质中,诸如但不限于包括软盘、光盘、cd-rom和磁光盘的任何类型的盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡、或者适合于存储电子指令的任何类型的介质,每个被耦合到计算机系统总线。
[0075]
本文给出的算法和显示并不固有地涉及任何特定的计算机或其它装置。根据本文的教示,各种其它系统可以与程序一起被使用,或者可以证明构造更专用的装置来执行该方法是方便的。此外,不参考任何特定编程语言来描述本公开。将了解,可以使用多种编程语言来实施本文所描述的本发明的教示。
[0076]
本公开可以被提供为计算机程序产品或软件,其可以包括其上存储有指令的机器可读介质,指令可以被用于对计算机系统(或其他电子设备)编程以执行根据本公开的过程。机器可读介质包括用于由机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光存储介质、闪存设备等。
[0077]
在前述公开中,已经参考其特定示例实现描述了本公开的实现。显然,在不脱离如以下权利要求中阐述的本公开的更宽的实现范围的情况下,可以对其进行各种修改。在本公开以单数形式提及一些元件的情况下,可以在附图中描绘多于一个元件,并且相同的元件用相同的数字标记。因此,本公开和附图被认为是说明性的而不是限制性的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献