CN112818627A - 电路设计、测试和/或制造的更有效/有用的电子结构 - Google Patents
电路设计、测试和/或制造的更有效/有用的电子结构 Download PDFInfo
- Publication number
- CN112818627A CN112818627A CN201911042661.XA CN201911042661A CN112818627A CN 112818627 A CN112818627 A CN 112818627A CN 201911042661 A CN201911042661 A CN 201911042661A CN 112818627 A CN112818627 A CN 112818627A
- Authority
- CN
- China
- Prior art keywords
- modules
- anchor
- dut
- logic
- design
- 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
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/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
- 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
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
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
电路设计、测试和/或制造的更有效/有用的电子结构。一种用于集成电路(IC)物理验证的图案匹配的新技术,该技术将锚点分为一组类别,并使用这些类别在目标布局中过滤锚点,从而实现完全准确的热点检测。
Description
技术领域
本公开总体涉及电子设计自动化领域。
背景技术
集成电路验证器(ICV)图案匹配(pattern match)用于在布局验证中从错误报告中查找工艺热点或放弃良好图案。在图案匹配中,图案锚点用于定位一个图案。在当前技术中,角用于确保准确性。现有的ICV方法匹配每个角,因此效率低下。没有一个好的方法来选择具有最佳性能的最小所需锚点集。结果导致图案匹配检查耗时数天,并且在包括N14和更低尺寸的先进技术节点中消耗大于1T的内存来进行全芯片验证。
发明内容
权利要求表示对在本公开中发现的创新、实施例和/或示例的一个或多个的简要描述。
本发明内容并未试图完全表示任何特定的创新、实施例或示例,因其可以在商业中使用。另外,本发明内容不旨在表示创新、实施例或示例的必要元件或者限制本公开的主题的范围。
在本公开中发现的创新、实施例和/或示例不是包括所有的,而是描述主题的基本意义。因此,本发明内容的一个用途是作为稍后呈现的详细描述的序言。
在主要的客户案例中,我们的智能锚定建议可以有效地将运行时间减少到约1/2.8-1/7.6,将内存减少到约1-1/55。在这种新方法中,通过使用试探法来选择角的子集,以过滤锚点,这将提高效率,因为其比现有的ICV方法匹配更少的锚点。而且保证了准确性。
这种新的智能锚定方法,首先基于对最近的IC技术节点的研究,将锚点分为9种类型;然后根据图案库为每种类型定义锚点参数;最后,定义一种启发式方法,同时考虑锚点层、锚点类型、参数和目标布局特征,以决定为确保准确性和最佳性能而需要的最小锚点集。在14nm及以下的情况下,该功能显示运行时间优化了至少3倍;并减少了内存使用量。在大规模的情形中,其将内存使用量从2T减少到36G。最重要的是,由于采用了智能锚定方法,ICV图案匹配在7nm及以下的SRAM检查中显示出非常好的性能。
附图说明
以下具体实施方式、附图、附加的额外的图和所附权利要求表示所要求保护的发明的创新、实施例和/或示例的性质和优点。所有附图仅出于说明的目的表示所要求保护的发明的创新、实施例和/或示例,并且不限制所要求保护的发明的范围。这些图不一定按比例绘制,并且是公开的一部分。
在附图中,类似的组件或特征可以具有相同或相似的标签形式的参考标记(诸如字母数字符号,例如参考数字),并且可以表示类似或等同的功能。此外,相同类型的各种组件可以通过在参考标签后用短划线和在相似组件中进行区分的第二标签来区分。如果在说明书中仅使用第一参考标签,则该描述适用于具有相同第一参考标签的类似组件中的任何一个,而与第二参考标签无关。附图的简要说明如下。
图1描绘了在目标布局上与图案库中的图案进行图案匹配的总流程。
图2描绘了在目标布局上与图案库中的图案进行图案匹配的示例。
图3描绘了如何将每个锚点候选与图案库进行比较。
图4描绘了通常流程与智能锚定流程的比较。
图5定义了9种类型的IC锚点节点。
图6将PM_ANGLE类型应用于图3中的示例,以将候选锚点的数量从8(PM_ALL)减少到2(PM_ANGLE)。
图7描绘了具有8个顶点的示例。
图8描绘了根据本公开的实施例的集成电路的设计和制造中的各种操作的流程图。
图9A、9B和9C描绘了适于与本技术的实施例一起使用的计算机***、以及该技术的电路设计和电路实施例的简化框图。
图10描绘了仿真***的框图。
图11汇总了基于图案库中的图案为每种类型的锚点定义锚点参数。
图12列出了主要客户案例的测试结果。
在这样的各种附图中,与公认的工程实践一致的附图标记可以被省略;然而,本领域普通技术人员将理解,当在作为整体的说明和描述这样的各种附图的随附公开的上下文中查看时,所示出的组件是容易理解的。
具体实施方式
附图和以下详细描述仅通过说明的方式表示创新、实施例和/或示例,各种特征、结构或特性在单个实施例中一起描述以使本公开更流畅。将容易认识到并且可以在商业中使用由这些示例性的创新、实施例和/或示例所公开的任何要素、过程、机器、***、制造品或组成物的变型,而不背离所要求保护的原理。附图和具体实施方式还可以隐含地或明确地表示本文描述的示例性实施例的子集的优点和改进。
在附图和具体实施方式中,可以描述许多具体细节以使实现示例性创新、实施例和/或示例中的一个或多个。为了不模糊以下具体实施方式中的示例性创新、实施例和/或示例的呈现,本领域中已知的一些处理步骤或操作可以被组合在一起以用于呈现和说明的目的,并且可能未被详细描述。然而,本领域技术人员将认识到,这些示例性创新、实施例和/或示例可以没有这些具体细节或以其等同物而在商业中使用。在其他情况下,没有详细描述公知的处理和设备,以免不必要地模糊这些示例性创新、实施例和/或示例的方面。在其他情况下,本领域中已知的一些处理步骤或操作可能根本没有描述。而是,以下描述集中于各个示例性创新、实施例和/或示例的区别特征或要素。此外,尽管本描述可以以单数形式提及结构的一些组件,但是在整个附图中可以描绘多于一个组件,并且相同的组件用相同的数字来标记。
定义:
a.“目标布局中图案数据库(PDB)图案匹配”:
1)假设PDB图案的宽度和高度分别为w和h。
2)如选择一个起点,并发现目标布局中(所有图层的)所有顶点和边在矩形区域(x,y,x+w,y+h)中的坐标与PDB中的坐标一致,则在(x,y,x+w,y+h)中存在PDB图案的匹配。
b.“锚点:锚点类型和锚点层”:
1)坐标比较的起点可以是目标布局上的任何点。但很明显,我们不会遍历目标布局中的所有网格点。
2)可以选择一些特定特征上的点。这种特征被称为“锚点”。
3)例如,顶点就是这样的特征。如果在每个PDB图案上都存在顶点,则可以将顶点用作锚点。然后可以将锚点类型设置为PM_ALL。
4)在上面的例子中,如果具有数量大于1的图案层(比如2层图案层)怎么办?如果在每个PDB图案中在第一图案层上具有顶点,则可以使用第一图案层作为锚定层。
c.“PDB图案中的锚点提取”:
1)还是上面的例子中,由于我们设定[PM_ALL+第一pattern_layer],对于每一个PDB图案,在第一pattern_layer中的所有顶点(实际上除了一些特殊的)被称为锚点候选。
2)可以在所有候选中选择1个顶点,并将其位置用作“比较起点”(原点:(0,0))。
3)因此,该顶点是该PDB图案的锚点。
4)因此,1个PDB图案只有1个锚点,虽然它可能有许多顶点或多边形可以选择为锚点。
d.“目标布局中的锚点生成”:
1)由于设定[PM_ALL+第一pattern_layer],必须提取目标布局的第一pattern_ layer上的所有顶点,并将其作为锚点。
2)对于目标布局上的每个锚点,可以检查其周围的几何形状是否是“PDB图案匹配”
许多制造商在14nm及以下中使用ICV图案匹配来检查工艺热点,寻找好的模板并将相反的状况(reverse)报告为错误。有时也用于对7nm及以下的SRAM检查。为了进行图案匹配,必须首先定义图案模板,并将其捕获在名为pattern_learn()的图案库中。然后,将针对图案库中的图案在目标布局上进行图案匹配。此总体流程如图1所示。
图2示出了在目标布局上与图案库中的图案进行图案匹配的示例。
图3示出了如何将每个锚点候选与图案库进行比较。
图案匹配流程中智能锚定流程的概述是:
a.智能锚定流程可确保正确匹配,这是因为:
1)无论是通常流程还是智能锚定流程,都会为每种库图案确定一个锚点;需要在匹配阶段使用相同的锚点以确保准确性。通常流程与智能锚定流程的比较如图4所示。
2)在通常流程中,角用于库图案的锚点;在匹配中,需要检查每个角是否匹配。
3)在智能锚定流程中,选择库图案的锚点的层/类型;在匹配中,只需要使用选定的图层/类型来确保匹配。
b.锚点类型的详细信息在第31段中进行了说明。
1)图6中的示例是一个使用PM_ANGLE来显示所选锚点类型如何提高性能的示例
c.锚点参数的详细信息在第32段和图11中进行了说明。
d.在第33段中详细说明了如何估计的所有有效设置的匹配运行时间以及如何选择估计的运行时间最少的设置。
1)在此,有效设置意味着所有库图案都可以通过该[anchor layer
+opt_type]锚定
基于对最近的IC技术节点的研究,将锚点归类为9种类型。这些类型在图5中定义。
a.这9种类型是:PM_ALL,PM_ANGLE,PM_SIZE,PM_ENCLOSE,PM_CONVEX,PM_LINE_END,PM_BBOX_SIZE,PM_X45,PM_X45_ANGLE
b.参考图3中的示例,如果应用PM_ANGLE类型,则将候选锚点的数量从8(PM_ALL)减少到2(PM_ANGLE)。如图6所示。
图11中汇总了基于图案库中的图案为每种类型的锚点定义锚点参数。
我们定义了一种启发式方法,用于考虑锚点层、类型、参数、图案库特征和目标布局特征,以确定精度和最佳性能所需的最小锚点集。
a.为PDB查找可能的锚点层、锚点类型,并获取相关的参数。
b.根据图案库的几何特征估计运行时间。
1)运行时间的估计将考虑:
A.锚点生成时间,
B.锚点候选的数量(或说密度),以及
C.每次匹配的平均匹配时间。
我们可以大致估计的出pattern_match()时间(对每个设计区域,仅针对与锚点的不同选择相关的时间)为:T=A+B*C。
2)显然,A、B和C不仅与库图案或锚点类型有关,而且与目标布局的特点有关。首先仅使用库图案的几何形状来估计A、B和C,然后在下一步中根据目标布局进行调整。
3)根据库图案的几何形状,当选择第i层作为锚点层时,将考虑图案面积、顶点数量、锚点候选数量、用于锚点生成的系数,匹配和裁剪以进行估计,并设置总运行时间(每个设计区域),并使用某些锚点优化类型,估计为:
T(type,i)=A+B*C
4)可以从[anchor layer+type]的每种组合的库信息中计算一些变量,而某些变量需要根据我们的内部案例以及客户案例进行调整。
c.根据目标层的几何特征调整运行时间。
1)对于锚点设置的每个有效选择,从目标pattern_layers中提取相应的信息(锚点密度/锚点层复杂度)。使用代价较小的操作来进行提取:
1.对于PM_ALL/ANGLE/VERTEX,锚点密度估计将仅基于相应的pattern_layer的层多边形计数和层梯形计数。
2.对于PM_SIZE/ENCLOSE/BBOX_SIZE/LNE_END,将锚点数量设置为满足类型和相应参数要求的多边形数。
3.对于PM_X45和PM_X45_ANGLE,对于每个多边形,如果其不是直角的,则估计其锚点数是梯形数量的2倍。
4.以上所有估计都是单元级操作;而且,根据层次结构的复杂度进行了调整,并根据实际设计调整了系数。
2)估计的锚点密度将设置为以前的值:
T(type,i)_final=T(type,i)*(目标锚点密度/库锚点密度)
d.最后,选择运行时间最少的最终锚层/类型。
作为附加示例,考虑图7所示的具有8个顶点(6个凸,2个凹)和锚点类型为PM_ANGLE(仅1个pattern_layer)的PDB图案。
仍然参考图7,回想一下,锚点是每个PDB图案中的“必备”特征,因此目标布局上的每个良好匹配都必须包含这样的特征。由此,如果在目标布局中提取所有这些“必须具备”的特征,并将它们用作坐标中心(原点)以用于比较,那么,如若可以正确地比较坐标,则不会错过良好的匹配。
然而,某些PDB图案除了锚点之外可能还具有更多的“必备”特征,并且并非目标布局中的每个锚点都是良好的匹配,但这并不意味着良好的匹配可以在没有锚点的情况下进行。
图12列出了主要客户案例的测试结果。
具体实施方式-技术支持
通用计算机说明
图9A、9B和9C是适于与本技术的实施例一起使用的计算机***以及该技术的电路设计和电路实施例的简化框图。
在图9A中,计算机***3110通常包括至少一个计算机或处理器3114,其经由总线子***3112与多个***设备通信。通常,计算机可以包括,或者处理器可以是以下中的任意者:微处理器、图形处理单元或数字信号处理器及其电子处理等同物,如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。术语“处理器”和“计算机”在下面进一步定义。这些***设备可以包括存储子***3124、用户界面输入设备3122、用户界面输出设备3120和网络接口子***3116,存储子***3124包括存储器子***3126和文件存储子***3128。输入和输出设备允许用户与计算机***3110的交互。
计算机***可以是服务器计算机、客户端计算机、工作站、大型机、个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、智能电话、网络设备、机架式“刀片”、信息亭(kiosk)、电视、游戏站、网络路由器、交换机或桥接器、或能够执行指定该机器要采取的动作的指令124(顺序的或以其他方式)的任何数据处理机器。
计算机***通常包括操作***,例如微软的Windows、太阳微***(SunMicrosystems)的Solaris、苹果电脑的MacOS、Linux或Unix。计算机***通常还可以包括基本输入/输出***(BIOS)和处理器固件。操作***、BIOS和固件由处理器使用来控制连接到处理器的子***和接口。与这些操作***兼容的典型处理器包括来自英特尔公司的Pentium和Itanium、来自Advanced Micro Devices的Opteron和Athlon、以及来自ARMHoldings的ARM处理器。
所要求保护的发明的创新、实施例和/或示例既不限于传统的计算机应用,也不限于运行它们的可编程装置。例如,所要求保护的创新、实施例和/或示例可以包括光学计算机、量子计算机、模拟计算机等。计算机***可以是多处理器或多核***,并且可以使用分布式或远程***或实现在分布式或远程***中。术语“处理器”在本文中以最宽泛的意义使用以包括单个处理器和多核或多处理器阵列,包括图形处理单元、数字信号处理器、数字处理器和这些设备的组合。此外,尽管可以仅示出单个计算机***或单个机器,但是这些术语的单数形式的使用也应表示单独或联合地执行指令124以执行本文讨论的指令组的任何一个或多个的计算机***或机器的任何集合。由于计算机和网络的不断变化的性质,对图9A中描绘的计算机***3110的描述仅旨在作为用于说明优选实施例的一个示例。计算机***3110的许多其他配置可能具有比图9A中描绘的计算机***更多或更少的组件。
网络接口子***3116提供到外部网络的接口,包括到通信网络3118的接口,并且经由通信网络3118耦合到其他计算机***或机器中的相应接口设备。通信网络3118可以包括许多互连的计算机***、机器和通信链路。这些通信链路可以是有线链路、光链路、无线链路或用于信息通信的任何其他设备。通信网络3118可以是任何合适的计算机网络,例如诸如因特网之类的广域网、和/或诸如以太网之类的局域网。通信网络可以是有线和/或无线的,并且通信网络可以使用加密和解密方法,诸如可以与虚拟私有网络一起使用的加密和解密方法。通信网络使用一个或多个通信接口,该接口可以从其他***接收数据并将数据发送到其他***。通信接口的实施例通常包括以太网卡、调制解调器(例如,电话、卫星、电缆或ISDN)、(异步)数字订户线(DSL)单元、火线接口、USB接口等。可以使用一个或多个通信协议,诸如HTTP、TCP/IP、RTP/RTSP、IPX和/或UDP。
用户界面输入设备3122可以包括字母数字键盘、小键盘、诸如鼠标、轨迹球、触摸板、触控笔或图形输入板之类的指示设备、扫描仪、结合到显示器中的触摸屏、诸如语音识别***或麦克风之类的音频输入设备、眼睛注视识别、脑波模式识别和其他类型的输入设备。这些设备可以通过有线或无线方式连接到计算机***。通常,术语“输入设备”的使用旨在包括将信息输入到计算机***3110中或输入到通信网络3118上的所有可能类型的设备和方式。用户界面输入设备通常允许用户选择出现在某些类型的用户界面输出设备、例如显示子***上的对象、图标、文本等等。
用户界面输出设备3120可以包括显示子***、打印机、传真机或诸如音频输出设备之类的非视觉显示。显示子***可以包括阴极射线管(CRT)、诸如液晶显示器(LCD)之类的平板设备、投影设备,或用于创建可视图像的诸如虚拟现实***的一些其他设备。显示子***还可以提供非视觉显示,诸如经由音频输出或触觉输出(例如,振动)设备。通常,术语“输出设备”的使用旨在包括将信息从计算机***3110输出到用户或另一个机器或计算机***的所有可能类型的设备和方式。
存储器子***3126通常包括多个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)3130(或其他易失性存储设备)和在其中存储固定的指令的只读存储器(ROM)3132。文件存储子***3128为程序和数据文件提供持久存储,并且可以包括硬盘驱动器、软盘驱动器以及相关联的可移动介质、CD-ROM驱动器、光盘驱动器、闪存或可移动介质盒。实现某些实施例的功能的数据库和模块可以由文件存储子***3128存储。
总线子***3112提供用于使计算机***3110的各种组件和子***彼此如所意图地进行通信的设备。尽管总线子***3112示意性地被示为单个总线,但总线子***的替代实施例可以使用多个总线。例如,基于RAM的主存储器可以使用直接存储器访问(DMA)***直接与文件存储***通信。
图9B描绘了存储器3140,比如与文件存储子***3128和/或与网络接口子***3116相关联的非暂时性计算机可读数据和信息存储介质,并且可以包括指定电路设计的数据结构。存储器3140可以是硬盘、软盘、CD-ROM、光学介质、可移动介质盒或以易失或非易失的形式对计算机可读数据进行存储的其他介质。从这样的存储器被读入计算机的软件可以在所选的时刻从有形形式被转换为通过介质(比如网络、连接器、电线或作为电脉冲的迹线(trace),或作为在电磁频谱中波长比红外光更长的电磁辐射的诸如空间或大气之类的介质)传播的传输信号。
图9C表示利用所描述的技术创建的集成电路3190,其包括例如从单元库中选择的一个或多个单元。
具体实施方式-技术支持
硬件/软件等同物
本文描述的创新、实施例和/或示例中的一些包括和/或使用处理器。如本文所使用的,术语“处理器”表示有形的数据和信息处理设备,该设备通常使用序列变换(也称为“操作”)来物理地变换数据和信息。数据和信息可以由电、磁、光或声信号物理地表示,该信号能够由处理器存储、存取、传输、组合、比较或以其他方式操纵。术语“处理器”可以表示单个处理器和多核***或多处理器阵列,包括图形处理单元、数字信号处理器、数字处理器或这些元件的组合。
处理器可以是电子的,例如包括数字逻辑电路(例如,二进制逻辑),或是模拟的(例如,运算放大器)。处理器也可以是非电子的,如在基于光学信号处理、DNA变换或量子力学的处理器中所见的、或者这些技术的组合,诸如光电处理器。对于以二进制形式构建的数据和信息,可以使用AND、OR和NOT逻辑运算(及其衍生物,如NAND、NOR和XOR运算)对数据和信息进行变换的任何处理器都可以使用布尔逻辑的任意功能对数据和信息进行变换。诸如模拟神经网络处理器之类的处理器也可以非数字地对数据和信息进行变换。没有科学证据表明任何这些处理器正在以与人脑的生物电结构相当的任何方式或形式对数据和信息进行处理、存储和检索。
一个或多个处理器还可以操作以支持“云计算”环境中或者作为“软件即服务”(SaaS)的相关操作的执行。例如,至少一些操作可以由分布式***或远程***处可用的一组处理器执行,这些处理器可经由通信网络(例如,因特网)和经由一个或多个软件接口(例如,应用程序接口(API))访问。
如本文所使用的,术语“模块”表示有形的数据和信息处理设备,其通常在大小和/或复杂性方面受到限制。例如,术语“模块”可以表示可以对数据和信息进行变换的一个或多个方法或过程。术语“模块”还可以表示以计算机程序的一个或多个方法和过程的组合。术语“模块”还可以表示数字逻辑设备的小型网络,其中逻辑设备的互连向网络提供了结构。包括以专用语言比如System C指定的模块的方法和过程可用于生成数字逻辑设备的网络的规范,这些数字逻辑设备对数据和信息进行处理,结果与从该方法和过程获得的完全相同。
模块可以永久配置(例如,硬连线以形成硬件)、临时配置(例如,用软件编程),或是两种配置的组合(例如,结构化ASIC)。例如,可以使用诸如算术逻辑单元(ALU)、可编程逻辑阵列(PLA)或只读存储器(ROM)(所有这些通常在制造期间进行配置)之类的专用集成电路(ASIC)来制造永久配置的模块。例如,可以使用现场可编程门阵列(FPGA——例如,由赛灵思公司(Xilink)或英特尔的阿尔特拉公司(Altera)销售的)、随机存取存储器(RAM)或微处理器来制造临时配置的模块。模块被配置为通常使用被应用于数据和信息的序列变换(也称为“操作”)处理数据和信息(或者在ROM和RAMS的情况下,通过使用输入信息作为存储输出数据和信息的存储器的地址来转换数据和信息),以执行本发明的创新、实施例和/或示例的各方面。
临时配置的模块不需要在任何一个时刻进行配置。例如,包括一个或多个模块的处理器可以具有在不同时间配置的模块。处理器可以在一个时刻包括一组的一个或多个模块,并且在一个不同的时刻包括不同组的一个或多个模块。以永久配置的形式、临时配置的形式或两种形式的组合来制造或实施模块的决策可以由成本、时间考虑、工程约束和/或特定设计目标来驱动。模块的处理的“实质”与其制造或实施的形式无关。
如本文所使用的,术语“算法”表示包括模块可以使用来变换数据和信息以实现结果的一系列或一组操作或指令的处理。模块可以包括一个或多个算法。如本文所使用的,术语“线程”指指令的序列,该指令可以包括整个处理或算法的指令的子集。可以将处理或算法划分为可以并行执行的多个线程。
如本文所使用的,术语“计算机”包括至少一个信息处理器,例如,通过添加存储器(例如,使用NOT-AND或NOT-OR运算的基于触发器的存储器),该信息处理器可以使用可以包括晶体管的电子门执行某些运算,诸如(但不限于)AND、OR和NOT逻辑运算。这种处理器据称是图灵完全的(Turing-complete)或计算上通用的。计算机,无论是否是数字计算机,通常包括许多模块。
如本文所使用的,术语“软件”或“程序”表示对在本说明书中描述的创新、实施例和示例中使用的处理器进行配置的一个或多个算法和数据结构。这样的可由软件配置的设备包括一个或多个计算机,例如,独立、客户端或服务器计算机、或一个或多个硬件模块、或一个或多个这样的计算机或模块的***。如本文所使用的,术语“软件应用”表示配置处理器以实现特定结果、例如执行字处理操作或加密一组数据的一组数据和指令。
如本文所使用的,术语“编程语言”表示用于指定包括软件的指令和数据集的语法和句法(syntax)。编程语言包括汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一个或多个更高级别语言(诸如传统的过程编程语言,例如“C”编程语言或类似的编程语言(诸如SystemC),或诸如Smalltalk、C++等的面向对象的编程语言,以及任何未来的等效编程语言)的任意组合编写的源代码或目标代码。
软件从数据和信息存储设备被输入、等同地读入计算机或计算机***的一个或多个存储器中。计算机通常具有读取被用于运输软件的存储介质的设备,或具有通过网络接收软件的接口设备。在通用计算机说明部分讨论此处理。
具体实施方式-技术支持
EDA***/工作流程说明
图8示出了利用计算机以及可能的特殊硬件辅助工具在诸如集成电路之类的使用软件工具的一件制造品的设计、验证和制造中执行的、以变换和验证代表集成电路的设计数据和指令的各种处理。这些处理从产品构思110的生成开始,信息由设计者提供,该信息在处理期间被变换以创建使用EDA软件工具112作为设计工具或验证工具的一件制造品(本文称为设计或设备),该EDA软件工具112在本文也可以被表示为EDA软件。当设计完成时,其可以被送交(taped-out)134,这通常是当集成电路的原图(例如,几何图案)被发送到制造设施以制造掩模组时,该掩模组随后被用于制造集成电路。在送交之后,制造136半导体管芯并且执行封装和组装处理138,这得到成品集成电路140,该集成电路140在本文中也可以表示为电路、器件、组件、芯片或SoC(片上***)。
制造品、例如电路或***以范围从低级晶体管布局到高级描述语言的各种级别的抽象而在商业中使用。大多数设计者使用硬件描述语言(HDL),如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera,从高级抽象开始设计他们的电路和***。高级HDL对开发者而言更容易理解,尤其是对于庞大的***来说,并且可以描述使用较低级别的抽象难以掌握的高度复杂的概念。如对开发人员有帮助,HDL描述可以转换为其他级别的抽象。例如,可以将高级描述转换为逻辑级寄存器传输级(RTL)描述、门级(GL)描述、布局级描述或掩码级描述。每个较低的抽象级别在设计描述中引入更多细节。较低级别的抽象可以由计算机自动生成、从设计库衍生或由另一设计自动化技术创建。较低级别的抽象的规范语言的示例是SPICE,很常用的基于模拟的电路的详细描述。
使用EDA软件工具112的设计处理包括处理114-132,其在下面描述。该设计流程描述仅用于说明目的,并不意图限制本公开。例如,实际的集成电路设计可能需要设计者以与本文所述的顺序不同的顺序执行设计操作。
在***设计114期间,设计者描述要制造的功能。设计者还可以执行假设分析计划(what-if planning)以优化功能并检查成本等。硬件-软件架构划分可以在此阶段进行。可以在此阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括:ModelArchitect、Saber、System Studio和Designware产品。
在逻辑设计和功能验证116期间,以一种或多种硬件描述语言或HDL指定电路中的模块,并且检查HDL中的设计的功能准确性,即,符合所设计的电路或***的规范的要求,以确保设计产生正确的输出。示例性HDL语言是Verilog、VHDL和SystemC。功能验证通常使用基于软件的模拟器和其他工具、如测试平台生成器、静态HDL检查工具和形式验证工具来完成。在某些情况下,使用称为“仿真器”或“原型***”的特殊硬件来加速功能验证。可以在该阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括:VCS、Vera、Designware、Magellan、Formality、ESP和Leda产品。还可从新思获得的可在此状态下使用的示例性仿真器和原型产品包括:Zebu.RTM和Protolink.RTM。(RTM=“注册商标”)。
在用于测试的合成和设计118期间,HDL代码被翻译为网表(netlist)。该网表可针对目标技术被优化。另外,可以设计和实施测试以检查成品集成电路。可以在此阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括:Design Compiler、Physical Compiler、Test Compiler、Power Compiler、FPGA Compiler、Tetramax和Designware产品。
在网表验证120期间,检查网表与定时约束的符合性以及与HDL代码的对应性。可以在此阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括:Formality、Primetime和VCS产品。
在设计规划122期间,构建集成电路的总体平面图并对于定时和顶级布线(route)进行分析。可以在此阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括:Astro和IC Compiler产品。
在布局实施124期间,物理布置(诸如晶体管或电容器之类的电路元件的定位)和布线(多个导体对布线的连接)发生,如可以选择库单元以执行特定逻辑功能。可以在此阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括:Astro和ICCompiler产品。
在分析和提取126期间,在布局级别验证电路功能,这允许改进布局设计。可以在该阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括:Astrorail、Primerail、Primetime和StarRC/XT产品。
在物理验证128期间,检查布局设计以确保对于诸如DRC约束、电约束、光刻约束和电路功能匹配HDL设计规范的制造约束的正确性。可以在该阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括Hercules产品。
在决议增强130期间,执行布局的几何操纵以改善设计的可制造性。可以在该阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括:Proteus产品。
在交付期间,创建数据以用来(如果适当,在应用光刻增强之后)生产光刻掩模。可以在交付期间使用的来自新思公司的示例EDA软件产品包括IC Compiler和CustomDesigner系列产品。
在掩模数据准备132期间,“交付”数据被用于生产光刻掩模,该光刻掩模用来生产成品集成电路。可以在该阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括CATS系列产品。
对于所有上述集成电路设计工具,来自其他EDA供应商、诸如Cadence、Siemens或其他公司实体的类似工具或来自大学的各种非商业工具、或开源存储库可用作替代方案。
可以在上述阶段的一个或多个期间使用本公开的实施例。具体地,本公开的一些实施例可以用在EDA软件112中。
存储子***优选地被用于存储提供本文描述的EDA工具中的一些或所有的功能的程序和数据结构,以及应用于库的单元开发以及使用库的物理和逻辑设计的工具。这些程序和数据结构通常由一个或多个处理器以本领域普通技术人员已知的方式执行。
具体实施方式-技术支持
仿真环境说明
诸如图8中描绘的元件112的EDA软件***通常包括仿真***116以验证电路设计的功能。图10描绘了典型的仿真***,其包括主机计算机***300(通常是EDA***的一部分)和仿真器***202(通常是一组可编程器件,例如现场可编程门阵列(FPGA))。主机***通常使用编译器210生成数据和信息,以配置仿真器对电路设计进行仿真。要被仿真的一个或多个电路设计被称为DUT(被测设计)。仿真器是模拟DUT的硬件***,例如,以使用仿真结果来验证DUT的功能。可用于本文公开的实施例的仿真***的一个示例是可从新思公司获得的ZeBu服务器。
主机***300包括一个或多个处理器。在主机***由多个处理器组成的实施例中,本文描述的由主机***执行的功能可以分布在多个处理器之间。
主机***300通常包括编译器210,其对以硬件描述语言编写的表示DUT的代码进行处理,产生用于配置仿真***202以模拟DUT的数据(通常是二进制)和信息。编译器210可以变换、改变、重新配置、添加新功能和/或控制DUT的定时。
主机***和仿真器使用由仿真连接所承载的信号来交换数据和信息。连接可以是一根或多根电缆,例如,具有与RS232或USB协议兼容的引脚配置的电缆。连接可以是有线通信介质或网络,比如局域网,或诸如因特网之类的广域网。该连接可以是无线通信介质或具有一个或多个接入点的网络,使用诸如Bluetooth.RTM或IEEE 802.11之类的无线协议。主机***和仿真器可以通过第三设备比如网络服务器交换数据和信息。
仿真器包括多个FPGA(或其他可编程器件),例如图2中的元件2041至204N。每个FPGA可以包括一个或多个FPGA接口,FPGA通过该接口连接到仿真器的其他FPGA(并且可能连接到其他仿真器硬件组件),以便这些FPGA交换信号。FPGA接口也可以称为输入/输出引脚或FPGA焊盘。虽然本文公开的一些实施例利用包括FPGA的仿真器,但是其他实施例可以包括其他类型的逻辑块来代替用于仿真DUT的FPGA,或者与用于仿真DUT的FPGA一起,例如定制FPGA、用于仿真或原型设计的专用ASIC、存储器和输入/输出设备。
可编程器件可以包括可编程逻辑块阵列和可重新配置的互连的层级,其允许可编程逻辑块根据HDL代码中的描述彼此连接。每个可编程逻辑块可以被配置为执行复杂的组合功能,或者仅仅是简单的逻辑门,比如AND和XOR逻辑块。
在许多FPGA中,逻辑块还包括存储器元件,其可以是简单的锁存器、触发器或更复杂的存储器块。取决于不同逻辑块之间的互连的长度,信号可能在不同时间到达逻辑块的输入端。
可编程处理器2041-204N可以放置在一个或多个硬件板2121到212M中。许多这样的板可以放置在硬件单元中,例如硬件单元2141。可以使用单元的背板或任何其他类型的连接来连接单元内的板。另外,多个硬件单元(例如,2141到214k)可以通过线缆或任何其他手段彼此连接以形成多单元***。通常,硬件仿真或原型***202可以使用单个板、具有多个板的单个单元或用多个单元来形成,而不脱离本公开的教导。
对于要仿真的DUT,仿真器从主机***接收包括DUT的描述的一个或多个bit文件。bit文件进一步指定具有跟踪和注入逻辑的由主机***创建的DUT的分区、分区到仿真器的FPGA的映射以及设计约束。基于bit文件,仿真器配置FPGA以执行DUT的功能。对于一些仿真器,仿真器的一个或多个FPGA已经具有内置到FPGA的硅中的跟踪和注入逻辑。对于这种类型的仿真器,FPGA不需要由主机***来配置以仿真跟踪和注入逻辑。
主机***110接收(例如,从用户或从数据存储接收)对要仿真的DUT的描述。在一个实施例中,DUT描述是以硬件描述语言(HDL),比如寄存器传输语言(RTL)。在另一个实施例中,DUT描述是以网表级文件、或网表级文件和HDL文件的混合。如果DUT描述的一部分或整个DUT描述以HDL的,则主机***合成DUT描述以基于DUT描述创建门级网表。主机***可以使用DUT的网表将DUT划分为多个分区,其中一些分区包括跟踪和注入逻辑。跟踪和注入逻辑跟踪经由FPGA接***换的接口信号。此外,跟踪和注入逻辑可用于将跟踪的接口信号注入FPGA的逻辑中。主机***将每个分区映射到仿真器的FPGA。对于一些仿真器,跟踪和注入逻辑仅被包含在一组FPGA的选择分区中。跟踪和注入逻辑可以内置到仿真器的一个或多个FPGA中。主机***可以合成多路复用器以映射到FPGA。跟踪和注入逻辑可以使用多路复用器将接口信号注入DUT逻辑中。
主机***创建描述DUT的每个分区以及分区到FPGA的映射的bit文件。对于并入了跟踪和注入逻辑的分区,bit文件还描述了逻辑的合并。bit文件还可以包括放置和布线信息以及设计约束。主机***存储bit文件并且还为DUT的组件存储描述哪些FPGA将仿真DUT的每个组件(每个组件被映射到哪些FPGA)的信息。
在请求时,主机***将bit文件发送到仿真器。主机***指示仿真器仿真DUT。在仿真DUT期间或仿真结束时,主机***通过仿真连接从仿真器接收仿真结果。仿真结果是仿真器基于DUT的仿真生成的数据和信息。仿真结果包括由每个FPGA的跟踪和注入逻辑所跟踪的接口信号(接口信号的状态)。主机***可以存储仿真结果,或者将它们发送到另一处理***。
在DUT的仿真之后,用户可以请求对DUT的组件进行调试。如果做出这样的请求,则用户可以提供仿真的时间段以进行调试。主机***基于存储的信息识别哪些FPGA被配置来仿真组件。主机***取回与时间段相关联的并由每个识别的FPGA的跟踪和注入逻辑所跟踪的所存储的接口信号。主机***指示仿真器一个接一个地、每次多个地或一起重新仿真所识别的FPGA。主机***将取回的接口信号发送到仿真器,以便在该时间段重新仿真该组件。每个识别的FPGA的跟踪和注入逻辑将从主机***接收的其各自的接口信号注入到被映射到FPGA的DUT的逻辑中。在多次重新仿真FPGA的情况下,结果可以被合并在一起以具有完整的调试视图。
在组件的重新仿真期间,主机***从仿真器接收由识别的FPGA的逻辑所跟踪的信号。主机***存储从仿真器接收的信号。在重新仿真期间跟踪的信号可以具有比在初始仿真期间更高的采样率。例如,在初始运行中,跟踪的信号可以包括每X毫秒保存的硬件状态。然而,在重新仿真中,跟踪的信号可以包括每Y毫秒保存的硬件状态,其中Y小于X。如果用户请求查看在重新仿真期间跟踪的信号的波形,则主机***可以取回存储的信号并显示信号图(生成信号的波形)。然后,用户可以例如请求重新仿真相同的组件但是在不同的时间段内或重新仿真另一组件。
主机***通常包括至少七个子***:设计合成器、映射模块、运行时间模块、结果模块、调试模块、波形模块和存储模块。这些子***中的每一个可以实现为硬件、软件、固件或其组合。这些组件一起配置仿真器,并监视仿真结果。
设计合成器将DUT的HDL转换为门级逻辑。对于要被仿真的DUT,设计合成器接收DUT的描述。如果DUT的描述完全或部分地以HDL(例如,RTL或其他级别的抽象),则设计合成器210合成DUT的HDL以创建门级网表,具有按照门级逻辑的DUT的描述。
映射模块对DUT进行划分并将分区映射到仿真器FPGA。映射模块使用DUT的网表将以门级的DUT划分为多个分区。对于每个分区,映射模块取回跟踪和注入逻辑的门级描述,并将逻辑合并到分区中。如上所述,包括在分区中的跟踪和注入逻辑被配置为对经由分区所映射到的FPGA的接口而交换的信号进行跟踪(跟踪接口信号)。跟踪和注入逻辑可以在分区之前被合并到DUT中。例如,跟踪和注入逻辑可以在合成DUT的HDL之前或之后由设计合成器合并。因此,跟踪和注入逻辑可能与分区不匹配,其可以是子集、超集或甚至不同于分区。
除了包括跟踪和注入逻辑之外,映射模块还可以在分区中包括附加跟踪逻辑,以便对未由跟踪和注入逻辑跟踪的某些DUT组件的状态进行跟踪(以跟踪除了由跟踪和注入逻辑所跟踪的接口信号之外的信号)。映射模块可以在分区之前在DUT中、或在分区之后在分区中包括该附加跟踪逻辑。在合成描述之前,设计合成器可以在DUT的HDL描述中包括该附加跟踪逻辑。
映射模块将DUT的每个分区映射到仿真器的FPGA。映射模块使用设计规则、设计约束(例如,定时或逻辑约束)和关于仿真器的信息来执行分区和映射。对于DUT的组件,映射模块将信息存储在存储模块中,该信息描述哪些FPGA将仿真每个组件。
基于分区和映射,映射模块生成一个或多个bit文件,其描述所创建的分区以及逻辑到仿真器的每个FPGA的映射。bit文件可以包括附加信息,比如DUT的约束、以及FPGA之间的连接和每个FPGA内的连接的布线信息。映射模块可以为DUT的每个分区生成bit文件,该bit文件可以存储在存储模块中。在用户请求时,映射模块将bit文件发送到仿真器,仿真器使用该bit文件来配置FPGA以仿真DUT。
如果仿真器包括含有跟踪和注入逻辑的专用ASIC,则映射模块可以生成特定配置,允许将它们连接到DUT,或者仅保存跟踪的/注入的信号是什么的信息以及信息被存储在专用ASIC上的何处。
运行时间模块控制在仿真器上执行的仿真。运行时间模块可以使仿真器启动或停止执行仿真。另外,运行时间模块可以向仿真器提供输入信号/数据。输入信号可以通过连接直接提供给仿真器,或者通过其他输入信号设备间接提供。例如,具有运行时间模块的主机***可以控制输入信号设备以向仿真器提供输入信号。输入信号设备可以例如是测试板(直接地或通过线缆),信号发生器、另一仿真器或其他主机***。
结果模块处理由仿真器生成的仿真结果。在仿真期间和/或在完成仿真之后,结果模块接收在仿真期间生成的来自仿真器的仿真结果。仿真结果包括在仿真期间跟踪的信号。具体而言,仿真结果包括由每个FPGA仿真的跟踪和注入逻辑所跟踪的接口信号。仿真结果还可以包括由DUT中包括的附加逻辑所跟踪的信号。每个跟踪的信号可以跨越多个仿真周期。跟踪的信号由多个硬件状态组成,并且每个硬件状态与仿真时间相关联。结果模块将所接收的跟踪的信号存储在存储模块中。对于每个所存储的信号,结果模块可以存储指示哪个FPGA生成了跟踪的信号的信息。
调试模块允许用户调试DUT组件。在仿真器已经仿真了DUT并且结果模块已经接收到在仿真期间由跟踪和注入逻辑所跟踪的接口信号之后,用户可以请求通过在特定时间段重新仿真DUT的组件来调试该组件。在调试组件的请求中,用户标识组件并指示要调试的仿真的时间段。用户的请求还可以包括采样率,该采样率指示跟踪信号的逻辑应该多频繁地保存硬件状态。
调试模块标识仿真器的一个或多个FPGA,其被配置为基于由映射模块在存储模块中存储的信息来仿真组件。对于每个标识的FPGA,调试模块从存储模块中取回在用户指示的时间段期间由FPGA的跟踪和注入逻辑所跟踪的接口信号(即,取回由跟踪和注入逻辑所跟踪的与该时间段相关联的硬件状态)。
调试模块将取回的接口信号发送到仿真器。调试模块指示调试模块运行所标识的FPGA,并且对于每个标识的FPGA的跟踪和注入逻辑,将其各自的跟踪的信号注入FPGA的逻辑中,以便在所请求的时间段重新仿真该组件。调试模块还可以将用户提供的采样率发送到仿真器,以便跟踪逻辑以适当的间隔跟踪硬件状态。
为了调试组件,仿真器只需运行已被映射了组件的FPGA。另外,组件的重新仿真不必从头开始,而是可以在用户期望的任何点开始。
对于标识的FPGA,调试模块可以向仿真器发送指令以使用所标识的FPGA的相同配置来加载多个仿真器FPGA。调试模块另外指示仿真器并行运行多个FPGA。来自该多个FPGA的每个FPGA利用不同的接口信号时间窗口运行,以便在更短的时间内生成更大的时间窗口。例如,对于标识的FPGA运行一定量的周期,其可能花费一个小时。然而,如果多个FPGA加载了所标识的FPGA的配置,并且每个FPGA都运行了周期的一个子集,那么FPGA共同运行所有周期可能只花费几分钟。
用户可以标识要重新仿真的DUT信号的层级或列表。为了实现这一点,调试模块确定仿真信号的层级或列表所需的FPGA,取回所需的接口信号并将取回的接口信号发送到仿真器用于重新仿真。因此,用户可以标识要调试/重新仿真的DUT的任何元件(例如,组件或信号)。
波形模块基于跟踪的信号生成波形。如果用户请求查看在仿真运行期间跟踪的信号的波形,则主机***从存储模块取回该信号。波形模块向用户显示信号的绘图。对于一个或多个信号,当从仿真器接收到信号时,波形模块可以自动生成信号的绘图。
具体实施方式-语义支持
表示语(signifier)“商业解决方案”仅表示以下段落中工程领域特定的(并因此是非优先的-参见比尔斯基(Bilski))电子结构、用于特定机器的处理、可制造电路(以及它们的丘奇-图灵等效物)或者在商业中对于解决技术问题有用的、即在科学应用的商业中的使用或在技术的商业中的使用的物质的组合物。
表示语“抽象”(当在本文公开的任何实施例的专利权利要求中被用于新的商业解决方案时,该商业解决方案是一种或多种自然法则的科学应用{参见班森(Benson)},并且解决了在商业中使用的技术的问题{参见迪尔(Diehr)},-或改进了现有的商业解决方案{参见迪尔(Diehr)})由(多个)发明人精确定义{参见MPEP 2111.01}如下:
a)新的商业解决方案如果不是新颖的,则其是“抽象”的(例如,其在相同的现有技术中是众所周知的{参见爱丽丝(Alice)}和/或等同的现有技术解决方案的使用在科学、工程或商业领域中长期普遍的{参见比尔斯基(Bilski)},并因此根据35U.S.C.102是不可授权,例如,因为“难以理解”{参见梅里亚姆-韦伯斯特(Merriam-Webster)对“抽象”的定义}该商业解决方案与等同的现有技术解决方案有何不同;或者
b)新的商业解决方案如果是显而易见的,则其是“抽象”的,即,如果现有技术包括至少一个类似的现有技术解决方案{参见KSR},或者现有技术包括可由本领域普通技术人员{“PHOSITA”,参见MPEP 2141-2144}组合{参见爱丽丝(Alice)}以等同于新的商业解决方案的至少两个项目,并因此根据35U.S.C.102是不可授权的,例如,因为“难以理解”该新的商业解决方案与现有技术的PHOSITA组合/应用有何不同;或者
c)如果因为在启用的描述中没有足够的指导,或者因为仅以未指定的组件、参数或者功能而描述了通用的实现方式{参见Mayo},而没有通过启用的描述进行公开,使得在不需要例如由PHOSITA执行的专用编程或者(参见Katz)或电路设计的情况下PHOSITA无法实例化新商业解决方案的有用实施例,则新的商业解决方案是“抽象”的,并因此根据35U.S.C.102是不可授权的,因为“难以理解”如何在商业中使用新商业解决方案的任何实施例。
具体实施方式-结论
以上具体实施方式单独地表示本文所述的各个特征、结构、功能或特性以及两个或更多这样的特征、结构、功能或特性的任何组合,达到根据本领域技术人员的知识,这些特征、结构、功能或特性或其组合是基于本说明书的整体的程度,无论这些特征、结构、功能或特性或其组合是否解决了本文公开的任何问题,并且对权利要求的范围没有限制。当要求保护的发明的实施例包括特定特征、结构、功能或特性时,结合其他实施例(无论是否明确描述)使用这些特征、结构、功能或特性在本领域技术人员的知识范围内,例如,作为另一特征、结构、功能或特性的替代。
鉴于以上的具体实施方式,对于本领域技术人员来说显而易见的是,在不背离本文所述的原理的情况下,可以在本文所述的创新、实施例和/或示例的范围内进行许多变型,比如要素的功能和布置。如对本领域技术人员显而易见的,实施例的一个或多个要素可以代替另一个实施例中的一个或多个要素。选取本文描述的实施例以表示本发明的原理及其有用的应用,从而使得本领域的其他技术人员能够理解各种实施例和变型如何适合于所表示的特定用途。
已经出于说明和描述的目的提供了所要求保护的发明的创新、实施例和/或示例的以上详细描述。并非旨在穷举也不是将所要求保护的发明限于所描述的精确形式,而是按照与本文公开的原理和特征一致的最宽范围。显然,本领域技术人员将认识到许多变型。在没有限制的情况下,在本专利申请中通过引用而描述、表示或并入的任何及所有等同物通过引用被明确地并入本文的创新、实施例和/或示例的描述中。另外,关于任何一个实施例在本文通过引用而描述、表示或并入的任何及所有变型也应被认为是关于所有其他实施例而教导的。任何这样的变型包括当前已知的变型以及将来的变型,例如本文中使用的任何元件包括提供相同功能的未来等效元件,而不管未来等效物的结构如何。
意图所要求保护的发明的范围由以下权利要求和等同物来限定和判断。以下权利要求在此并入具体实施方式中,每个权利要求自身作为单独的实施例。所公开的实施例可以被描述为具有相比权利要求中明确记载的更多的特征。
概要
本专利的独立权利要求表示实施例的简明描述。一种用于集成电路(IC)物理验证的图案匹配的新技术,该技术将锚点分为一组类别,并使用这些类别在目标布局中过滤锚点,从而实现完全准确的热点检测。摘要不旨在限制权利要求的范围。
版权声明
本专利文档的受让人不反对任何人对专利文件本身或专利申请进行传真复制,因其出现在美国专利商标局的文件中,但在其他方面保留受版权保护的作者的任何所包括的作品中的所有权利。
说明书-免责声明
在以下背景技术、发明内容和具体实施方式中,标题不应被解释为必然的限制。在以下背景技术、发明内容和具体实施方式中,对任何公开的引用或标识并不表示作为对于任何所要求保护或所描述的实施例的现有技术的相关性或状态。文本全部用斜体表示的段落表示多个新思(Synopsys)专利说明书共有的文字。
Claims (7)
1.一种用于电路设计、测试和/或制造的更有效/有用的电子结构,包括:具体实施方式中所指定的多个非抽象模块。
2.一种更有效/有用的电子电路,包括:具体实施方式中所指定的多个非抽象模块。
3.一种用于电路设计/测试和/或制造的更有效/更有用的方法,包括:详细说明中指定的多个非抽象模块,其中:
将热点图案数据库中的锚点归类为一组类别;
通过基于锚点参数过滤锚点来在设计布局中生成锚点;和
根据过滤的锚点,将热点图案数据库中的热点图案与设计布局进行匹配。
4.如权利要求1所述的电子结构,通过在一件制造品中实现所述电子结构而有用地应用于商业中,所述制造品包括一个或多个处理器,每个处理器包括用于转换信息的一个或多个模块或计算机,其中所述模块主要由制造商配置、至少部分地由用户配置、或由制造商和用户二者配置;以及能够实现所述电子结构的等效制造品。
5.如权利要求2所述的电子电路,通过在一件制造品中实现所述电子电路而有用地应用于商业中,所述制品包括一个或多个处理器,每个处理器包括用于转换信息的一个或多个模块或计算机,其中所述模块主要由制造商配置、至少部分地由用户配置、或由制造商和用户二者配置;以及能够实现所述电子电路的等效制造品。
6.如权利要求3所述的方法,通过在一件制造品中实现所述方法而有用地应用于商业中,所述制造品包括一个或多个处理器,每个处理器包括用于转换信息的一个或多个模块或计算机,其中所述模块主要由制造商配置、至少部分地由用户配置、或由制造商和用户二者配置;以及使能够实现该电子方法的等效制造品。
7.一种基本上如本文中参考附图所述或如附图所示的更有效/有用的结构、方法或电路。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911042661.XA CN112818627A (zh) | 2019-10-30 | 2019-10-30 | 电路设计、测试和/或制造的更有效/有用的电子结构 |
US17/085,727 US11487930B2 (en) | 2019-10-30 | 2020-10-30 | Pattern matching using anchors during integrated circuit verification |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911042661.XA CN112818627A (zh) | 2019-10-30 | 2019-10-30 | 电路设计、测试和/或制造的更有效/有用的电子结构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112818627A true CN112818627A (zh) | 2021-05-18 |
Family
ID=75688694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911042661.XA Pending CN112818627A (zh) | 2019-10-30 | 2019-10-30 | 电路设计、测试和/或制造的更有效/有用的电子结构 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11487930B2 (zh) |
CN (1) | CN112818627A (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7861196B2 (en) * | 2008-01-31 | 2010-12-28 | Cadence Design Systems, Inc. | System and method for multi-exposure pattern decomposition |
JP5282511B2 (ja) * | 2008-09-29 | 2013-09-04 | 富士通セミコンダクター株式会社 | 光近接効果補正パターンの検証方法及びその検証装置 |
US8718382B2 (en) * | 2012-01-31 | 2014-05-06 | Synopsys, Inc. | Scalable pattern matching between a pattern clip and a pattern library |
US9171126B1 (en) * | 2013-03-25 | 2015-10-27 | Synopsys, Inc. | Range pattern matching in mask data |
KR102525162B1 (ko) * | 2017-12-18 | 2023-04-24 | 삼성전자주식회사 | Opc 방법, 및 그 opc 방법을 이용한 마스크 제조방법 |
-
2019
- 2019-10-30 CN CN201911042661.XA patent/CN112818627A/zh active Pending
-
2020
- 2020-10-30 US US17/085,727 patent/US11487930B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210133383A1 (en) | 2021-05-06 |
US11487930B2 (en) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10949591B1 (en) | Hardware based state signature generation and check for test and debug of semiconductor circuit functionality | |
US10846455B2 (en) | Automatic definition and extraction of functional coverage metric for emulation-based verification | |
US10867091B1 (en) | Machine learning based power optimization using parallel training and localized data generation | |
US10949589B2 (en) | Method for compression of emulation time line in presence of dynamic re-programming of clocks | |
US11763053B2 (en) | Coherent observability and controllability of overlaid clock and data propagation in emulation and prototyping | |
US20220129611A1 (en) | Method to Compute Timing Yield and Yield Bottleneck using Correlated Sample Generation and Efficient Statistical Simulation | |
US10796048B1 (en) | Adding delay elements to enable mapping a time division multiplexing circuit on an FPGA of a hardware emulator | |
US10878153B1 (en) | Apparatuses and methods for accurate and efficient clock domain and reset domain verification with register transfer level memory inference | |
US11327790B1 (en) | Event-level parallel simulation using dynamic synchronization | |
US11275877B2 (en) | Hardware simulation systems and methods for reducing signal dumping time and size by fast dynamical partial aliasing of signals having similar waveform | |
US11636388B1 (en) | Machine learning-based algorithm to accurately predict detail-route DRVS for efficient design closure at advanced technology nodes | |
US10599800B2 (en) | Formal clock network analysis, visualization, verification and generation | |
US11475197B2 (en) | Hardware simulation systems and methods for identifying state-holding loops and oscillating loops | |
US11003819B1 (en) | Method to enable multiple users of embedded-software debug to share a single hardware resource | |
US11475293B1 (en) | Learning-based toggle estimation | |
US10515170B1 (en) | Deep insight for debug using internal equivalence visualization and counter-example for sequential equivalence checking | |
CN112818627A (zh) | 电路设计、测试和/或制造的更有效/有用的电子结构 | |
CN112883679A (zh) | 在多电压设计中加油站的自动生成 | |
US11402742B1 (en) | Undercut EUV absorber reflective contrast enhancement | |
US10579760B2 (en) | Force/release support in emulation and formal verification | |
US11176293B1 (en) | Method and system for emulation clock tree reduction | |
US10891410B1 (en) | User-defined rule engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210518 |