在多电压设计中加油站的自动生成

文档序号:533458 发布日期:2021-06-01 浏览:9次 >En<

阅读说明:本技术 在多电压设计中加油站的自动生成 (Automatic generation of fueling stations in multi-voltage designs ) 是由 吴大经 宋宇 李文武 于 2019-11-13 设计创作,主要内容包括:提出了一种用于集成电路设计的自动生成“加油站”的最佳位置和尺寸的新颖方法。(A novel method for automatically generating the optimal location and size of a &#34;gas station&#34; for integrated circuit design is presented.)

在多电压设计中加油站的自动生成

技术领域

本公开总体设计集成电路设计。

背景技术

加油站的生成是多电压(MV)设计的平面规划的经典问题。MV设计通常被划分为多个电压区域。有些区域处于关闭状态,而另一些区域则保持常开状态。

图1示出了一个示例。中间有一个灰色的关闭区域,边界附近是一些绿色的常开区域。不可避免的是,许多网络(蓝色)穿过关闭区域从一个常开区域馈通(feed through)到另一个常开区域。

为了保持常开电源,一些用户为这些馈通网络插入了双轨缓冲器。但是,与单轨单元相比,双轨单元具有更大的放置区域,并且需要额外的电源和接地(PG)布线。因此,双轨单元将占用更多的放置和布线资源。

一些用户为这些馈通网络插入单轨缓冲器。为了使这些单元使用常开电源,用户需要定义加油站以使用常开电源。

发明内容

权利要求表示对在本公开中发现的创新、实施例和/或示例的一个或多个的简要描述。

本发明内容并未试图完全表示任何特定的创新、实施例或示例,因其可以在商业中使用。另外,本发明内容不旨在表示创新、实施例或示例的必要元件或者限制本公开的主题的范围。

步骤1:通过可驱动距离表征库缓冲器

·当缓冲器驱动相同缓冲器的负载时,其尺寸越大,能够驱动的距离就越长。通过可驱动的距离表征库缓冲器。

步骤2:以阵列形式放置加油站

·以阵列形式放置加油站。将步骤1中的距离用作相邻加油站的距离。

步骤3:使用动态编程算法确定布线

·为设计进行初始放置。找到最近的加油站作为馈通网络驱动器/负载引脚位置的起点/终点。使用动态编程算法来确定馈通网络的布线。

步骤4:执行后处理

·移除空的加油站。

在本公开中发现的创新、实施例和/或示例不是包括所有的,而是描述主题的基本意义。因此,本发明内容的一个用途是作为稍后呈现的详细描述的序言。

附图说明

以下

具体实施方式

、附图、附加的额外的图和所附权利要求表示所要求保护的发明的创新、实施例和/或示例的性质和优点。所有附图仅出于说明的目的表示所要求保护的发明的创新、实施例和/或示例,并且不限制所要求保护的发明的范围。这些图不一定按比例绘制,并且是公开的一部分。

在附图中,类似的组件或特征可以具有相同或相似的标签形式的参考标记(诸如字母数字符号,例如参考数字),并且可以表示类似或等同的功能。此外,相同类型的各种组件可以通过在参考标签后用短划线和在相似组件中进行区分的第二标签来区分。如果在说明书中仅使用第一参考标签,则该描述适用于具有相同第一参考标签的类似组件中的任何一个,而与第二参考标签无关。附图的简要说明如下。

图1描绘了馈通穿过关闭区域的网络。

图2描绘了加油站的阵列样式虚拟放置的示例。

图3描绘了一个示例,其中起点和终点加油站具有相同的水平或垂直坐标,并且布线是确定性的。

图4描绘了具有不同布线范围的两个馈通网络的示例。

图5描绘了为阻碍物水平扩大范围。

图6描绘了为阻碍物竖直扩大范围。

图7描绘了确定网络布线顺序的示例。

图8描绘了图7的橙色和红色网络的布线结果;布线确定性网络并更新加油站缓冲器数量。

图9描绘了图8中紫色网络的布线结果。

图10描绘了蓝色网络的布线结果。

图11描述了具有阻碍物的设计的布线范围。

图12描述了具有阻碍物的设计的布线结果。

图13描绘了图12的设计的后处理结果。

图14描绘了根据本公开的实施例的集成电路的设计和制造中的各种操作的流程图。

图15A、15B和15C描绘了适于与本技术的实施例一起使用的计算机系统、以及该技术的电路设计和电路实施例的简化框图。

图16描绘了仿真系统的框图。

图17示出一个例子中布线计算的详细信息。

在这样的各种附图中,与公认的工程实践一致的附图标记可以被省略;然而,本领域普通技术人员将理解,当在作为整体的说明和描述这样的各种附图的随附公开的上下文中查看时,所示出的组件是容易理解的。

具体实施方式

附图和以下详细描述仅通过说明的方式表示创新、实施例和/或示例,各种特征、结构或特性在单个实施例中一起描述以使本公开更流畅。将容易认识到并且可以在商业中使用由这些示例性的创新、实施例和/或示例所公开的任何要素、过程、机器、系统、制造品或组成物的变型,而不背离所要求保护的原理。附图和具体实施方式还可以隐含地或明确地表示本文描述的示例性实施例的子集的优点和改进。

在附图和具体实施方式中,可以描述许多具体细节以使实现示例性创新、实施例和/或示例中的一个或多个。为了不模糊以下具体实施方式中的示例性创新、实施例和/或示例的呈现,本领域中已知的一些处理步骤或操作可以被组合在一起以用于呈现和说明的目的,并且可能未被详细描述。然而,本领域技术人员将认识到,这些示例性创新、实施例和/或示例可以没有这些具体细节或以其等同物而在商业中使用。在其他情况下,没有详细描述公知的处理和设备,以免不必要地模糊这些示例性创新、实施例和/或示例的方面。在其他情况下,本领域中已知的一些处理步骤或操作可能根本没有描述。而是,以下描述集中于各个示例性创新、实施例和/或示例的区别特征或要素。此外,尽管本描述可以以单数形式提及结构的一些组件,但是在整个附图中可以描绘多于一个组件,并且相同的组件用相同的数字来标记。

3.1通过可驱动距离表征库缓冲器

当缓冲器驱动负载时,其尺寸越大,能够驱动的距离就越长。因此,通过可驱动的距离来表征库缓冲器单元。

3.2以阵列形式放置加油站

以阵列形式放置加油站。将步骤1中的距离用作相邻加油站的距离。选择阵列式是因为加油站需要在关闭区域始终保持供电。阵列形式的放置可以使PG带(PG strap)的创建更加容易。阵列形式的放置不仅可以用于矩形形状,还可以用于直线形状(rectilinearshape)。此外,阵列形式还可以处理具有阻碍物的形状。图2显示了阵列形式虚拟放置的示例,其中关闭区域是具有阻碍物的直线形状,绿色正方形形状是阵列形式的加油站。

3.3使用动态编程算法确定布线

对设计进行初始放置,以确定馈通网络的驱动器/负载引脚位置。找到最近的加油站作为每个馈通网络的起点/终点。

3.3.1确定布线范围

当起点和终点加油站具有相同的水平或垂直坐标时,布线是确定性的。图3示出了一个示例。橙色馈通网络是纯垂直布线。红色馈通网络是纯水平布线。

当起点和终点加油站具有不同的水平和垂直坐标时,拾取左下角和右上角的坐标以确定布线范围的矩形。图4显示了一个示例。紫色馈通网络在8个加油站{(3,1)(6,2)}范围内布线。蓝色的馈通网络在18个加油站{(1,2)(6,4)}的范围内布线。

一般而言,当阻碍物阻挡了原始布线范围时,扩大布线范围以使网络可布线。如果垂直方向受阻,则扩大左边界一列以检查网络是否可布线,同时扩大右边界一列以进行检查。

如果两者都是可布线的,则左右边界都扩大一列。

如果前者是可布线的,而后者是不可布线的,则扩大左边界一列。

如果后者是可布线的,而前者不是可布线的,则扩大右边界一列。

如果两者都不是可布线的,则继续扩大左边界和右边界一列,直到网络可布线。

类似地,如果水平方向被阻碍,则扩大上边界和下边界以使网络可布线。

图5显示了一个示例。橙色网络的原始布线范围是{(2,1)(2,5)}。阻碍物阻碍垂直方向。扩大左边界一列,网络是可布线的。新的布线范围是{(1,1)(2,5)}。

图6显示了另一个示例。蓝色网络的原始布线范围是{(1,2)(6,4)}。但是,阻碍物会阻碍水平方向。将上下边界都扩大一排,网络是可布线的。并且新的布线范围是{(1,1)(6,5)}。

3.3.2确定网络布线顺序

以上方法可以确定每个馈通网络的布线范围。下一步是确定网络布线顺序。首先拾取确定性布线网络。按照加油站的数量从最小到最大的顺序排序其余的网络。图7显示了一个示例。橙色和红色的网络具有确定性,先选择它们进行全局布线和缓冲。紫色网络布线范围为8个加油站,将其作为第三网络。蓝色网络布线范围为18个加油站,最后选择它。

3.3.3使用动态编程算法确定布线

对确定性布线网络首先进行布线和缓冲。并更新加油站的缓冲器数量。图8显示了图7中橙色和红色网络的布线结果。也对加油站更新缓冲器数量。例如,加油站(2,3)具有2个缓冲器。

为了对其他网络进行布线,根据加油站的起点和终点坐标确定布线方向。图9显示了图8中紫色网络的布线结果。

我们布线时的目标是使得线路所经过加油站具有最大的总缓冲器数量。而动态编程算法可以实现这一目标。以图9的蓝色网络为例,其中起点加油站为(1,2),终点加油站为(6,4)。在这里,布线方向是右上方。在进行蓝色网络布线之前,已经对橙色和红色网络进行布线,因此某些加油站已经具有1或2个缓冲器。使用动态编程从起点到终点加油站进行布线。对于每轮布线进行计算,在每个加油站上,我们保留具有最大总缓冲器数量的布线段解决方案。图17显示了布线计算的详细信息。

蓝色网络路线将通过8个加油站供油,结果如图10所示。在确定了蓝色网络路线后,也更新加油站的缓冲器数量。

因为不希望加油站的形状太大,所以当加油站的缓冲器数量达到最大值时,可以将加油站视为下一次网络布线的阻碍物。

该动态编程算法也适用于具有阻碍物的设计。图11显示了在{(2,2)(4,4)}处有阻碍物的设计。与图7中的设计相比,扩大了每个馈通网络的布线范围:

紫色网络的布线范围是{(3,1)(6,2)},具有6个加油站。

橙色网络的布线范围是{(1,1)(2,5)},具有7个加油站。

红色网络的布线范围是{(1,1)(6,5)},具有21个加油站。

蓝色网络的布线范围是{(1,1)(6,5)},具有21个加油站。

每个馈通网络的布线方向:

紫色网络的布线方向是左方和下方。

橙色网络的布线方向是上方、左方和右方。

红色网络的布线方向是右方、上方和下方。

蓝色网络的布线方向是右方、上方和下方。

布线顺序是紫色、橙色、红色和蓝色网络。通过使用动态编程,最终的布线结果如图12所示。

该算法具有以下优点:

·网络是按照从最小到最大的布线范围进行排序的。这意味着网络将从“更少的布线自由度”到“更多的布线自由度”进行布线。这可以提高所有馈通网络的整体质量。

·布线使得馈通网络所经过的加油站的最大总缓冲器数量,

因此其可以自动收集尽可能多的缓冲器

3.4执行后处理

如果加油站是空的,则将其移除。图13显示了图12的后处理结果。最初,从(1,1)到(6,5)有21个加油站。我们删除了7个空加油站(3,5),(4,5),(5,2),(5、3),(5,4),(5,5)和(6,5),最后的结果是留下了14个加油站。

具体实施方式-技术支持

通用计算机说明

图15A、15B和15C是适于与本技术的实施例一起使用的计算机系统以及该技术的电路设计和电路实施例的简化框图。

在图15A中,计算机系统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以执行本文讨论的指令组的任何一个或多个的计算机系统或机器的任何集合。由于计算机和网络的不断变化的性质,对图15A中描绘的计算机系统3110的描述仅旨在作为用于说明优选实施例的一个示例。计算机系统3110的许多其他配置可能具有比图15A中描绘的计算机系统更多或更少的组件。

网络接口子系统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)系统直接与文件存储系统通信。

图15B描绘了存储器3140,比如与文件存储子系统3128和/或与网络接口子系统3116相关联的非暂时性计算机可读数据和信息存储介质,并且可以包括指定电路设计的数据结构。存储器3140可以是硬盘、软盘、CD-ROM、光学介质、可移动介质盒或以易失或非易失的形式对计算机可读数据进行存储的其他介质。从这样的存储器被读入计算机的软件可以在所选的时刻从有形形式被转换为通过介质(比如网络、连接器、电线或作为电脉冲的迹线(trace),或作为在电磁频谱中波长比红外光更长的电磁辐射的诸如空间或大气之类的介质)传播的传输信号。

图15C表示利用所描述的技术创建的集成电路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系统/工作流程说明

图14示出了利用计算机以及可能的特殊硬件辅助工具在诸如集成电路之类的使用软件工具的一件制造品的设计、验证和制造中执行的、以变换和验证代表集成电路的设计数据和指令的各种处理。这些处理从产品构思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和Star RC/XT产品。

在物理验证128期间,检查布局设计以确保对于诸如DRC约束、电约束、光刻约束和电路功能匹配HDL设计规范的制造约束的正确性。可以在该阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括Hercules产品。

在决议增强130期间,执行布局的几何操纵以改善设计的可制造性。可以在该阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括:Proteus产品。

在交付期间,创建数据以用来(如果适当,在应用光刻增强之后)生产光刻掩模。可以在交付期间使用的来自新思公司的示例EDA软件产品包括IC Compiler和CustomDesigner系列产品。

在掩模数据准备132期间,“交付”数据被用于生产光刻掩模,该光刻掩模用来生产成品集成电路。可以在该阶段使用的来自加利福尼亚州山景城的新思公司的示例性EDA软件产品包括CATS系列产品。

对于所有上述集成电路设计工具,来自其他EDA供应商、诸如Cadence、Siemens或其他公司实体的类似工具或来自大学的各种非商业工具、或开源存储库可用作替代方案。

可以在上述阶段的一个或多个期间使用本公开的实施例。具体地,本公开的一些实施例可以用在EDA软件112中。

存储子系统优选地被用于存储提供本文描述的EDA工具中的一些或所有的功能的程序和数据结构,以及应用于库的单元开发以及使用库的物理和逻辑设计的工具。这些程序和数据结构通常由一个或多个处理器以本领域普通技术人员已知的方式执行。

具体实施方式-技术支持

仿真环境说明

诸如图14中描绘的元件112的EDA软件系统通常包括仿真系统116以验证电路设计的功能。图16描绘了典型的仿真系统,其包括主机计算机系统300(通常是EDA系统的一部分)和仿真器系统202(通常是一组可编程器件,例如现场可编程门阵列(FPGA))。主机系统通常使用编译器210生成数据和信息,以配置仿真器对电路设计进行仿真。要被仿真的一个或多个电路设计被称为DUT(被测设计)。仿真器是模拟DUT的硬件系统,例如,以使用仿真结果来验证DUT的功能。可用于本文公开的实施例的仿真系统的一个示例是可从新思公司获得的ZeBu服务器。

主机系统300包括一个或多个处理器。在主机系统由多个处理器组成的实施例中,本文描述的由主机系统执行的功能可以分布在多个处理器之间。

主机系统300通常包括编译器210,其对以硬件描述语言编写的表示DUT的代码进行处理,产生用于配置仿真系统202以模拟DUT的数据(通常是二进制)和信息。编译器210可以变换、改变、重新配置、添加新功能和/或控制DUT的定时。

主机系统和仿真器使用由仿真连接所承载的信号来交换数据和信息。连接可以是一根或多根电缆,例如,具有与RS232或USB协议兼容的引脚配置的电缆。连接可以是有线通信介质或网络,比如局域网络,或诸如因特网络之类的广域网络。该连接可以是无线通信介质或具有一个或多个接入点的网络,使用诸如Bluetooth.RTM或IEEE802.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是不可授权的,因为“难以理解”如何在商业中使用新商业解决方案的任何实施例。

具体实施方式-结论

以上具体实施方式单独地表示本文所述的各个特征、结构、功能或特性以及两个或更多这样的特征、结构、功能或特性的任何组合,达到根据本领域技术人员的知识,这些特征、结构、功能或特性或其组合是基于本说明书的整体的程度,无论这些特征、结构、功能或特性或其组合是否解决了本文公开的任何问题,并且对权利要求的范围没有限制。当要求保护的发明的实施例包括特定特征、结构、功能或特性时,结合其他实施例(无论是否明确描述)使用这些特征、结构、功能或特性在本领域技术人员的知识范围内,例如,作为另一特征、结构、功能或特性的替代。

鉴于以上的具体实施方式,对于本领域技术人员来说显而易见的是,在不背离本文所述的原理的情况下,可以在本文所述的创新、实施例和/或示例的范围内进行许多变型,比如要素的功能和布置。如对本领域技术人员显而易见的,实施例的一个或多个要素可以代替另一个实施例中的一个或多个要素。选取本文描述的实施例以表示本发明的原理及其有用的应用,从而使得本领域的其他技术人员能够理解各种实施例和变型如何适合于所表示的特定用途。

已经出于说明和描述的目的提供了所要求保护的发明的创新、实施例和/或示例的以上详细描述。并非旨在穷举也不是将所要求保护的发明限于所描述的精确形式,而是按照与本文公开的原理和特征一致的最宽范围。显然,本领域技术人员将认识到许多变型。在没有限制的情况下,在本专利申请中通过引用而描述、表示或并入的任何及所有等同物通过引用被明确地并入本文的创新、实施例和/或示例的描述中。另外,关于任何一个实施例在本文通过引用而描述、表示或并入的任何及所有变型也应被认为是关于所有其他实施例而教导的。任何这样的变型包括当前已知的变型以及将来的变型,例如本文中使用的任何元件包括提供相同功能的未来等效元件,而不管未来等效物的结构如何。

意图所要求保护的发明的范围由以下权利要求和等同物来限定和判断。以下权利要求在此并入具体实施方式中,每个权利要求自身作为单独的实施例。所公开的实施例可以被描述为具有相比权利要求中明确记载的更多的特征。

概要

本专利的独立权利要求表示实施例的简明描述。提出了一种用于集成电路设计的自动生成“加油站”的最佳位置和尺寸的新颖方法。本摘要不旨在限制权利要求的范围。

版权声明

本专利文档的受让人不反对任何人对专利文件本身或专利申请进行传真复制,因其出现在美国专利商标局的文件中,但在其他方面保留受版权保护的作者的任何所包括的作品中的所有权利。

说明书-免责声明

在以下背景技术、发明内容和具体实施方式中,标题不应被解释为必然的限制。在以下背景技术、发明内容和具体实施方式中,对任何公开的引用或标识并不表示作为对于任何所要求保护或所描述的实施例的现有技术的相关性或状态。文本全部用斜体表示的段落表示多个新思(Synopsys)专利说明书共有的文字。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:制造包括纳米片的集成电路的方法和计算系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类