具有逻辑瓦片的虚拟阵列的FPGA及其配置和操作的方法与流程

文档序号:19251926发布日期:2019-11-27 20:21阅读:252来源:国知局
具有逻辑瓦片的虚拟阵列的FPGA及其配置和操作的方法与流程

有关申请

该非临时申请要求于2017年5月26日提交的题为“fpgahavingavirtualarrayoflogictiles,andmethodofconfiguringandoperatingsame”的美国临时申请no.62/511,739的优先权和权益。该’739临时申请通过引用将其整体并入本文。

介绍

在一个方面,本发明涉及一种集成电路,该集成电路包括设置在其中/其上(下文统称为“其中”)的现场可编程门阵列(fpga),其中fpga包括可编程/可配置逻辑电路系统,该可编程/可配置逻辑电路系统包括瓦片(tile)的物理阵列,每个瓦片包括可编程组件(“瓦片”通常被称为“可配置逻辑块”(clb)、“逻辑阵列块”(lab)或“逻辑瓦片”--下文统称为“逻辑瓦片”),其中,逻辑瓦片的物理阵列在功能上和/或操作上“分区”以提供或形成逻辑瓦片的一个或多个虚拟阵列,该一个或多个虚拟阵列被编程、配置或限定为实现一个或多个功能或操作。逻辑瓦片的虚拟阵列可以是例如逻辑瓦片的物理阵列中的逻辑瓦片的物理连续或非连续子集。逻辑瓦片的虚拟阵列可以被编程、配置或限定为执行或实现一个或多个具体功能/操作。

在一个实施例中,多个逻辑瓦片的第一部分(第一虚拟阵列)被编程、配置或限定为实现第一功能/操作,并且逻辑瓦片的第二部分(第二虚拟阵列)被编程、配置或者限定为实现第二功能/操作。例如,实现第一功能/操作的逻辑瓦片的虚拟阵列可以被编程或配置为数据处理器或微控制器,并且实现第二功能/操作的逻辑瓦片的虚拟阵列可以被配置为具有互连网络的逻辑(例如,与处理器或控制器接口)、加速器、数字信号处理器(dsp)、数据加密引擎、滤波器、编码器、状态机和/或存储器。值得注意的是,在逻辑瓦片的物理阵列在功能上和/或操作上“分区”以形成多个虚拟阵列的情况下,在物理阵列的虚拟阵列中的每一个中逻辑瓦片的数量可以与fpga的逻辑瓦片的物理阵列的其它虚拟阵列相同或不同。

逻辑瓦片的虚拟阵列中的一个或多个(或全部)可以被编程、配置或限定为独立于和/或依赖于其它虚拟阵列中的一个或多个(或全部)而操作。逻辑瓦片的虚拟阵列中的这样的一个或多个(或全部)可以在fpga的全部或部分操作期间完全或部分独立地操作。在一个实施例中,逻辑瓦片的物理阵列可以被分区和编程、配置或限定为使得(i)逻辑瓦片的虚拟阵列中的一个或多个可以被配置为独立于其它虚拟阵列中的一个或多个(或全部)而操作,和(ii)逻辑瓦片的相同或不同虚拟阵列中的一个或多个可以被配置为依赖于其它虚拟阵列中的一个或多个(或全部)而操作。值得注意的是,逻辑瓦片的虚拟阵列中的每一个(或相对于物理阵列的其它逻辑瓦片)的独立和依赖操作的全部组合和置换旨在落入本发明的范围内。

逻辑瓦片的虚拟阵列中的一个或多个(或全部)可以包括、接收、生成和/或采用一个或多个不同时钟信号(或不同时钟域)。除此之外,或者代替它,虚拟阵列中的两个或更多个(或全部)可以包括、生成和/或采用一个或多个公共时钟信号(或公共时钟域),以便例如促进同步和/或同步操作(例如,在这种虚拟阵列的电路系统之间或在这种虚拟阵列的电路系统与外部电路系统或用户之间)。实际上,虚拟阵列中的两个或更多个(或全部)可以采用公共时钟信号(或公共时钟域),并且逻辑瓦片的一个或多个(或全部)虚拟阵列可以包括、接收、生成和/或采用(一个或多个)不同时钟信号(或(一个或多个)不同时钟域)。在逐个虚拟阵列的基础上,关于使用和生成的一个或多个不同时钟信号(或不同时钟域)和一个或多个公共时钟信号(或公共时钟域)的全部组合和置换旨在落入本发明的范围内。

在一个实施例中,逻辑瓦片的虚拟阵列中的一个或多个(或全部)包括和/或采用物理上不同或分离的外部i/o(例如,独立的外部i/o,以与逻辑瓦片的物理阵列外部的电路系统接口/通信)。在另一个实施例中,逻辑瓦片的虚拟阵列中的一个或多个(或全部)包括和/或采用物理上公共的i/o(例如,使用时分复用技术)。实际上,逻辑瓦片的虚拟阵列中的一个或多个(或全部)可以包括和/或采用物理上不同或分离的i/o以及物理上公共的i/o。在逐个虚拟阵列的基础上,物理上分离的i/o和物理上公共的i/o的全部组合和置换旨在落入本发明的范围内。

此外,在一个实施例中,虚拟阵列可以包括虚拟i/o,以连接到逻辑瓦片的物理阵列的其它部分(可以是另一个虚拟阵列)或促进与逻辑瓦片的物理阵列的其它部分(可以是另一个虚拟阵列)的通信。例如,虚拟i/o可以位于或设置在虚拟阵列中的逻辑瓦片的周边上,该虚拟阵列是逻辑瓦片的物理阵列的内部。这种虚拟i/o可以在虚拟阵列中的逻辑瓦片与物理阵列的其它部分之间(例如,在物理阵列中的逻辑瓦片与被配置为或执行数据处理器、微控制器、加速器、数据加密引擎、滤波器、dsp、编码器和/或状态机的操作的虚拟阵列中的逻辑瓦片之间)传输命令、地址和数据信号。在一个实施例中,虚拟i/o提供通信路径以在执行由逻辑瓦片的虚拟阵列执行的功能或操作之后输出数据和/或输入数据(i)以在功能或操作中使用和/或(ii)在其上要执行功能或操作(例如,加密)时输入数据。

物理阵列中的逻辑瓦片的虚拟阵列可以直接与逻辑瓦片的其它虚拟阵列中的一个或多个通信。例如,在一个实施例中,逻辑瓦片的一个或多个虚拟阵列可以使用互连网络或构造与逻辑瓦片的一个或多个其它虚拟阵列通信。例如,在上电、启动时,在初始化或重新初始化期间,和/或在复位或类似顺序/操作(可以在逻辑瓦片的虚拟阵列的配置之前、期间/同时或之后),可以配置这种互连网络或构造。实际上,在一个实施例中,虚拟阵列中的逻辑瓦片可以基于或使用第一时钟信号或第一时钟域同步地与一个或多个其它虚拟阵列中的逻辑瓦片通信或同步一个或多个其它虚拟阵列中的逻辑瓦片之间的通信,并且基于或使用第二时钟信号或第二时钟域与物理阵列外部进行通信。值得注意的是,虚拟阵列中的逻辑瓦片之间和当中全部通信组合旨在落入本发明的范围内。另外,一个或多个虚拟阵列与逻辑瓦片的物理阵列外部的电路系统之间的全部通信组合旨在落入本发明的范围内。实际上,通信的全部形式和/或方法(物理上或功能上)旨在落入本发明的范围内。此外,本发明可以采用促进逻辑瓦片的一个或多个其它虚拟阵列中的逻辑瓦片之间的通信的任何开关互连网络或构造。(参见例如,美国专利9,503,092,该美国专利通过引用并入本文)。

在一个实施例中,逻辑瓦片的虚拟阵列中的一个或多个(或全部)“共享”电路系统、存储器(例如,dram、sram等)、时钟生成或对准电路系统(例如,pll、dll、振荡器)和/或在物理上连续的逻辑瓦片的整个物理阵列外部的其它“资源”。例如,在一个实施例中,逻辑瓦片的多个虚拟阵列可以耦合到相同的时钟生成电路系统(例如,多个虚拟阵列可以接收相同的振荡器电路系统的一个或多个输出)和/或可以访问相同的物理嵌入或分立存储器。实际上,在一个实施例中,可以对这样的存储器进行分段或分区,使得某些子阵列、块或页面与特定虚拟阵列或虚拟阵列中的两个或更多个相关联或者配给或专用于特定虚拟阵列或虚拟阵列中的两个或更多个。存储器可以是任何种类、类型、大小和/或配置(例如,双端口)。值得注意的是,在一个实施例中,本发明的fpga采用在美国专利申请no.15/239,958(该美国专利申请通过引用将其整体并入本文)中描述和/或示出的架构,例如,其中存储器设置或位于(i)虚拟阵列中的逻辑瓦片、(ii)第一虚拟阵列中的逻辑瓦片和第二虚拟阵列中的逻辑瓦片、和/或(iii)物理阵列中的逻辑瓦片(可以是也可以不是一个或多个虚拟阵列中的逻辑瓦片)之间,其中这样的逻辑瓦片可以控制、向设置在逻辑瓦片之间的存储器(例如,双端口sram存储器)写入数据以及从该存储器读取数据。

可以使用现在已知或以后开发的任何技术来配置包括逻辑瓦片的虚拟阵列中的一个或多个的逻辑瓦片的物理阵列。在一个实施例中,经由一个或多个编译器(下文统称为“编译器”)配置逻辑瓦片的物理阵列,在一个实施例中,编译器分离地生成和接收多个比特流(其被设计为实现至少一个特定功能/操作),其中每个比特流表示或对应于逻辑瓦片的相关联虚拟阵列的配置或程序数据。使用多个比特流,编译器可以生成编译的或“合并的”比特流,编译的或“合并的”比特流表示或对应于逻辑瓦片的物理阵列的某个部分(例如,逻辑瓦片的物理阵列的全部或基本上全部)的配置数据-该某个部分包括与“合并的”或组合的比特流(即,作为逻辑瓦片的每个虚拟阵列的每个比特流的复合比特流的一个比特流)对应或相关联的逻辑瓦片的每个虚拟阵列。当实行编译的或复合比特流时,逻辑瓦片的物理阵列被编程或配置。以这种方式,经由实现或实行单个复合比特流来配置物理逻辑瓦片的每个虚拟阵列(相对于经由与虚拟阵列相关联的多个分离或不同的比特流分离地编程或配置每个虚拟阵列中的电路系统)。

例如,在该实施例中,编译器生成与第一虚拟阵列相关联的比特流和与第二虚拟阵列相关联的比特流(以及与任何其它逻辑瓦片相关联的比特流),并且此后组合与逻辑瓦片的第一虚拟阵列(其被设计为实现第一功能/操作)和逻辑瓦片的第二虚拟阵列(其被设计为实现第二功能/操作)相关联的比特流以生成复合比特流,该复合比特流用于配置fpga的逻辑瓦片的整个物理阵列-该整个物理阵列包括物理逻辑瓦片的每个虚拟阵列,或换种说法,与虚拟阵列相关联或对应的物理逻辑瓦片。因此,在该实施例中,可以分离地生成虚拟阵列的比特流,此后将该比特流和与逻辑瓦片的物理阵列对应的其它比特流(包括与(一个或多个)其它虚拟阵列相关联的比特流)“合并”或组合以生成复合比特流。然后可以实行或实现复合比特流以配置或编程fpga的逻辑瓦片的物理阵列(包括逻辑瓦片的(一个或多个)虚拟阵列),以便使fpga的可编程/可配置逻辑电路系统可操作。

配置数据可以存储在位于/驻留在集成电路上的存储器中。在一个实施例中,在逻辑瓦片的物理阵列和/或集成电路的上电或启动时和/或在初始化、重新初始化、配置和/或重新配置期间,将配置数据从存储器读出并应用于逻辑瓦片的物理阵列,并且响应地配置逻辑瓦片。如上所述,与(一个或多个)虚拟阵列对应的逻辑瓦片的配置数据的(一个或多个)比特流可以分离地或以复合形式应用于逻辑瓦片。

在一个实施例中,逻辑瓦片的一个或多个虚拟阵列(实现第一功能/操作)可以被锁定、固定和/或加密(在下文中统称为“加密”),使得这种(一个或多个)虚拟阵列的配置不可以例如由用户或设计者配置/重新配置、限定、修改和/或更改。另外,一个或多个其它虚拟阵列(实现与第一功能/操作不同的功能/操作)可以是未锁定的、可限定的或可修改的,使得可以例如由用户或设计者配置/重新配置、确定和/或限定这种(一个或多个)虚拟阵列的配置。在一个实施例中,编译器分离地生成与物理阵列(其包括逻辑瓦片的每个虚拟阵列)的配置相关联的比特流,并且此后通过将与第一和第二虚拟阵列相关联的比特流和可以限定或配置物理阵列的其它方面(例如,不是第一或第二虚拟阵列的部分的逻辑瓦片)的其它比特流(如果有的话)组合来生成复合比特流。复合配置数据可以存储在位于/驻留在集成电路上的存储器中。

在一个实施例中,在逻辑瓦片的物理阵列和/或集成电路的上电或启动时和/或在初始化、重新初始化、配置和/或重新配置期间,从存储器中读出复合配置数据。然后可以使用复合或一个组合的比特流来配置fpga的逻辑瓦片的物理阵列(其包括“锁定”和“未锁定”虚拟阵列的配置或编程)。例如,在一个实施例中,编译器可以将与逻辑瓦片的第一虚拟阵列(其被设计为实现非用户可限定的第一功能/操作)和逻辑瓦片的第二虚拟阵列(其被设计为实现用户可限定的第二功能/操作)相关联的比特流组合或编译为限定fpga的物理阵列的组合的或复合文件或比特流,以便编程或配置fpga的逻辑瓦片的物理阵列的虚拟阵列。

本文描述和示出了许多发明。本发明既不限于任何单个方面也不限于其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。此外,本发明的每个方面和/或其实施例可以单独采用或与本发明的一个或多个其它方面和/或其实施例组合使用。为简洁起见,本文不分离讨论和/或示出某些置换和组合。

附图说明

可以结合附图中示出的实施例来实现本发明。这些附图显示出了本发明的不同方面,并且在适当的情况下,类似地标记了示出不同附图中的相似结构、电路、电路系统、组件、材料和/或元件的参考数字和参考名称。应当理解,除了具体显示出的那些之外,结构、组件、材料和/或元件的各种组合是预期的并且在本发明的范围内。值得注意的是,这里描述为“示例性”的实施例或实施方式不应被解释为例如相对于其它实施例或实施方式是理想的、优选的或有利的;相反,它旨在反映或指示(一个或多个)实施例是(一个或多个)“示例”实施例。

图1a示出了例如示例性集成电路的框图表示,该示例性集成电路包括控制电路系统、定时或时钟电路系统和可编程/可配置逻辑电路系统(其包括多个逻辑瓦片,每个逻辑瓦片通常包括数千个晶体管(某些晶体管可以互连为例如具有两个或更多个输入的多路复用器,所述多路复用器电互连到网络中以及连接到例如当被编程时确定多路复用器的操作的相关联的数据存储元件、输入引脚和/或查找表));

图1b示出了例如示例性fpga的可编程的多个示例性实施例的多个逻辑瓦片的物理阵列的框图表示,其中逻辑瓦片的输入/输出可以促进逻辑瓦片和/或可编程/可配置逻辑电路系统外部的电路系统之间的通信;值得注意的是,可编程/可配置逻辑电路系统可以包括多个可编程逻辑瓦片,其中每个逻辑瓦片包括多个多路复用器,这些多路复用器电互连到网络中(例如,分层网络和/或网状网络;在美国专利9,503,092中阐明了示例性互连网络,该美国专利通过引用并入本文);

图1c示出了图1a的可编程/可配置逻辑电路系统的示例性逻辑瓦片的一部分的框图表示,其中逻辑瓦片包括逻辑和i/o,例如,多个(i)逻辑块,每个逻辑块包括例如多个查找表、算术块、数据多路复用器、触发器和控制/复位电路系统,(ii)i/o(i/o电路系统或块,其设置在逻辑瓦片的外围、周边或边缘上,以促进逻辑瓦片的电路系统与瓦片外部(并且,在一个实施例中,可编程/可配置逻辑的逻辑瓦片阵列外部)的电路系统之间的互连,和(iii)由一个或多个多路复用器或开关组成的互连网络,该互连网络可以被布置或配置到具有多个开关矩阵或开关矩阵级的互连网络中,以例如执行或促进当前配置的集成电路的正常操作中或期间逻辑操作的执行;值得注意的是,i/o(例如,到逻辑瓦片的信号的进入/退出的物理点--其所有形式旨在落入本发明的范围内)通常沿着逻辑瓦片的整个周边、外围或边界设置(例如,在逻辑瓦片在所有四侧具有正方形或矩形形状的情况下-参见图1b和图1d);值得注意的是,i/o意指一个输入/输出(其可以是单向导体和/或双向导体)和/或多个输入/输出(即,多于一个单向导体和/或多于一个双向导体);

图1d示出了图1a-图1c的可编程/可配置逻辑电路系统的示例性逻辑瓦片的框图表示,其中逻辑瓦片的外部i/o(在一个实施例中,其电耦合到i/o电路系统或块)在该示例性实施例中位于矩形逻辑瓦片的所有侧上(即,沿着逻辑瓦片的整个周边散布);物理阵列中的每个逻辑瓦片具有在逻辑瓦片的周边或外围上的外部i/o的公共布局;值得注意的是,外部i/o与用于逻辑瓦片内的网络的内部互连的逻辑瓦片的i/o分离或独立和/或在可编程/可配置逻辑电路系统的物理阵列中的逻辑瓦片之间;

图2a-图2d以框图形式示出了根据本发明的某些方面的包括可编程/可配置逻辑电路系统的fpga的示例性实施例,该逻辑电路系统具有在功能上或操作上“分区”或布置成多个虚拟阵列的多个逻辑瓦片的物理阵列,其中在这些说明性示例性实施例中,多个逻辑瓦片的物理阵列被布置成两个虚拟阵列,这两个虚拟阵列包括虚拟阵列1,被编程/配置/限定为实现第一功能/操作的逻辑瓦片的第一虚拟阵列(具有m个逻辑瓦片,其中m是正整数),以及虚拟阵列2,被编程/配置/限定为实现第二功能/操作的逻辑瓦片的第二虚拟阵列(具有n个逻辑瓦片,其中n是正整数)(参见图2a);值得注意的是,虚拟阵列1和2接收分离/不同的时钟信号和/或公共时钟信号,包括分离的外部i/o以与fpga外部的电路系统通信;以及经由虚拟i/o(参见图2b和图2c)和/或互连网络(参见图2c和图2d)彼此通信;可以以美国专利9,503,092中描述和示出的方式来实现这种互连网络,例如,包括分层网络和网状网络的混合模式架构,并且在一个实施例中,虚拟阵列经由可配置的网状互连网络(例如,在一个实施例中,其是混合模式开关互连架构的最高级)互连;如上所述,虚拟阵列中的逻辑瓦片可以经由虚拟i/o将数据和控制信号传达到另一个虚拟阵列(例如,相邻虚拟阵列)的逻辑瓦片;在一个实施例中,虚拟i/o是位于逻辑瓦片的周边上的逻辑瓦片的“未使用的”外部i/o(参见图1c和图1d),该逻辑瓦片的周边物理地与相邻虚拟阵列的相邻逻辑瓦片的周边相对,其中在逻辑瓦片的周边上的外部i/o位于虚拟阵列的外围或周边上以及在可编程/可配置逻辑电路系统的逻辑瓦片阵列的外围或周边内部(即,逻辑瓦片的周边不位于可编程/可配置逻辑电路系统的外围或周边上(并且,由此不用于连接到逻辑瓦片阵列外部的电路系统))时,这样的外部i/o是“未使用的”;实际上,即使在可编程/可配置逻辑电路系统的外围或周边上,也可以不使用或禁用逻辑瓦片的外部i/o;虚拟i/o可以被配置或用于电连接到可编程/可配置逻辑电路系统的相邻/相对逻辑瓦片上的虚拟i/o;因此,在该示例性实施例中,这种虚拟i/o是相邻/相对逻辑瓦片的未使用的外部i/o(即,可用于连接到逻辑瓦片阵列外部的电路系统并与之通信的i/o,如果这样的i/o位于可编程/可配置逻辑电路系统的外围或周边上的话),这样的未使用的外部i/o用于提供逻辑瓦片之间的直接通信,该逻辑瓦片在这些实施例中是相邻虚拟阵列;

图3a-图3c以框图形式示出了根据本发明的某些方面的包括可编程/可配置逻辑电路系统的fpga的示例性实施例,该逻辑电路系统具有在功能上或操作上“分区”或布置成物理逻辑瓦片的多个虚拟阵列(在这里示出的示例性实施例中,多于两个虚拟阵列)的多个逻辑瓦片的物理阵列;多个逻辑瓦片的物理阵列可以被布置成x个虚拟阵列(其中x是正整数),这x个虚拟阵列包括被编程/配置/限定为实现虚拟阵列1、第一功能/操作f(1)的逻辑瓦片的第一虚拟阵列(具有m个逻辑瓦片,其中m是正整数),虚拟阵列2,被编程/配置/限定为实现第二功能/操作f(2)的逻辑瓦片的第二虚拟阵列(具有n个逻辑瓦片,其中n是正整数)等,以及虚拟阵列x,被编程/配置/限定为实现第二功能/操作f(x)的逻辑瓦片的虚拟阵列(具有y个逻辑瓦片,其中y是正整数)(参见图3a);值得注意的是,每个虚拟阵列可以包括相同或不同数量的物理逻辑瓦片,并且可以以任何方式关于可编程/可配置逻辑电路系统的逻辑瓦片的物理阵列进行组织,任何方式包括例如以列(参见图3a)、以行(参见图3b)、以及以行和列(参见图3c);此外,虚拟阵列可以(i)接收分离/不同的时钟信号和/或公共时钟信号,(ii)包括分离的外部i/o(以与fpga外部的电路系统通信)和(iii)经由虚拟i/o和/或开关矩阵互连网络彼此进行通信(参见例如,图2b-图2d和与其有关的描述);

图4a-图4d以框图形式示出了根据本发明的某些方面的fpga的可编程/可配置逻辑电路系统的多个逻辑瓦片的物理阵列的示例性实施例,其中多个逻辑瓦片的物理阵列在功能上或操作上“分区”或布置成物理逻辑瓦片的多个虚拟阵列,其中逻辑瓦片的物理阵列(包括逻辑瓦片的虚拟阵列中的一个或多个)可以被配置为经由编译器分离地生成多个比特流(其被设计为实现给定的功能/操作f(i)),其中每个比特流表示或对应于逻辑瓦片的相关联虚拟阵列的配置数据,并且此后生成编译的或复合比特流,编译的或复合比特流当被实行或实现时配置fpga的逻辑瓦片的物理阵列(包括物理逻辑瓦片的每个虚拟阵列);具体地,关于图4a,编译器生成f(1)、f(2)比特流,并且在一个实施例中,随后生成用于配置或编程fpga的逻辑瓦片的物理阵列的f(1)+f(2)的组合的或复合比特流;关于图4b,编译器生成f(1)、f(2)...f(x)比特流,并且在一个实施例中,随后生成用于配置或编程fpga的逻辑瓦片的物理阵列的f(1)+f(2)+…+f(x)的组合的或复合比特流;关于图4c,编译器生成f(1)、...、f(y)比特流,并随后生成用于配置或编程fpga的逻辑瓦片的物理阵列的f(1)+...+f(y)的组合的或复合比特流;并且,关于图4d,编译器生成f(1)、f(2)...f(x)、f(y)比特流,并且使用这样的比特流,生成用于配置或编程fpga的逻辑瓦片的物理阵列的f(1)+f(2)+...+f(x)+f(y)的组合的或复合比特流;值得注意的是,物理逻辑瓦片的虚拟阵列的功能/操作f(i)可以是单个功能/操作或包括有关或无关的功能/操作的组合的多个功能/操作(其全部置换及组合旨在落入本发明的范围内);此外,为了清楚起见,未示出i/o(例如,外部i/o和虚拟i/o)、时钟特征和/或存储器,然而,示例性实施例可以采用本文描述和示出的任何i/o架构(参见例如,图1c、图1d和图2b-图2d)、时钟架构(参见例如,图2b-图2d、图5a和图5b)和/或存储器架构(参见例如,图2b-图2d和图7c);

图5a以框图形式示出了根据本发明的某些方面的在功能上或操作上“分区”或布置成两个虚拟阵列的多个逻辑瓦片的物理阵列的示例性实施例,其中在该说明性示例性实施例中,多个逻辑瓦片的物理阵列被布置成(i)被编程/配置/限定为实现第一功能/操作f(1)的逻辑瓦片的第一虚拟阵列(具有m个逻辑瓦片,其中m是正整数),和(ii)被编程/配置/限定为实现第二功能/操作f(2)的逻辑瓦片的第二虚拟阵列(具有n个逻辑瓦片,其中n是正整数),并且其中每个虚拟阵列接收一个或多个时钟信号以及网状时钟,一个或多个时钟信号以及网状时钟可以分配到每个逻辑瓦片并由逻辑瓦片用于执行各种功能/操作;值得注意的是,控制电路系统可以例如使得能够关于由逻辑瓦片的这样的一个或多个虚拟阵列实现的一个或多个功能/操作、在一个或多个物理逻辑瓦片内和/或在虚拟阵列的一者或两者内使用网状时钟(代替其它时钟信号);控制电路系统可以在启动或初始化时(例如,经由用于设定/控制/建立时钟域的存储器的数据状态)和/或在fpga或集成电路的正常操作期间动态地控制/建立时钟域。

图5b以示意性框图形式示出了逻辑瓦片的物理阵列中的逻辑瓦片的时钟分配和传输电路系统的示例性实施例,其中时钟分配和传输电路系统包括多个输入和输出路径(在该示出的实施例中为四个路径,标记为“北时钟路径”、“东时钟路径”、“南时钟路径”和“西时钟路径”),以生成具有期望或可编程偏斜(skew)的逻辑瓦片时钟信号,并且另外接收时钟网(用于将网状时钟信号传输到例如逻辑瓦片的虚拟阵列中的逻辑瓦片),该时钟网可以经由选择性地启用(一个或多个)时钟选择多路复用器的输出而可用于逻辑瓦片的电路系统;在一个实施例中,这种时钟选择多路复用器响应地输出网状时钟信号或内部生成/得出的时钟信号作为瓦片时钟,该瓦片时钟由逻辑瓦片的电路系统用于执行或实行例如功能和/或操作;控制电路系统可以使得能够经由控制这样的(一个或多个)多路复用器在一个或多个物理逻辑瓦片内并且关于由逻辑瓦片的一个或多个虚拟阵列实现的一个或多个功能/操作使用网状时钟(代替其它时钟信号)(也参见图5a);值得注意的是,在美国专利9,240,791中详细讨论了时钟分配和传输电路系统的某些方面(为了示出/解释图5b的时钟分配和传输电路系统的这些方面的目的,该美国专利通过引用并入本文);

图6以框图形式结合关于虚拟阵列1的某些信息示出了根据本发明的某些方面在功能上或操作上“分区”或布置成两个虚拟阵列的多个逻辑瓦片的物理阵列的示例性实施例,包括根据本发明的某些方面的虚拟阵列1的内部资源;值得注意的是,虚拟阵列1操作被配置为数据处理器、微控制器和/或dsp,其中相关联的逻辑瓦片包括/提供支持和/或补充dsp(即,第一功能/操作)的逻辑电路系统,并且虚拟阵列2可以由用户配置为例如具有互连网络的逻辑、加速器、数据加密引擎、滤波器、编码器、状态机和/或存储器(即,第二功能/操作);此外,逻辑瓦片的物理阵列的某些逻辑瓦片在物理阵列的“底部”边缘/周边上电连接到存储器(例如,sram、dram和mram)以从其读取数据以及向其写入数据;

图7a以框图形式示出了图2a、图2c和图2d的示例性实施例的一部分的级4的网状连接,其中,在一个实施例中,虚拟阵列的互连网络经由可配置网、圆环等的互连网络(在下文中称为“网状网络”)连接,例如,如以美国专利9,503,092(通过引用将其整体并入本文)中描述和示出的方式实现的;在该说明性示例性实施例中,混合模式开关互连架构的最高级是网状互连(这里,虚拟阵列1的逻辑瓦片的最高级的多个开关矩阵连接到虚拟阵列1的该逻辑瓦片中的该级的多个开关矩阵和虚拟阵列2的至少一个逻辑瓦片中的最高级的一个或多个开关矩阵;(实际上,在该说明性示例性实施例中,由级4的开关输出的信号不随着这些信号传播通过网状网络而改变层次结构;即,信号可以从虚拟阵列1的逻辑瓦片的级4中的开关行进,然后到虚拟阵列2的逻辑瓦片的级4中的开关,然后返回到虚拟阵列1的逻辑瓦片的级4中的开关;值得注意的是,在图7a的一个实施例中,在其它开关矩阵(sm)级(即,级1、2和3)中采用分层网络/互连;尽管如此,另一个网状网络/级可以实现为一个或多个分层级的替代和替换(例如,级2可以是网状网络或级2和4可以由水平和垂直地“跳跃”的网状网络替换,除了在每个方向上“跳跃”4的当前级4之外);

图7b以框图形式示出了包括虚拟阵列的2×2物理阵列的示例性实施例,虚拟阵列包括逻辑瓦片00和逻辑瓦片01;在说明性实施例中,逻辑瓦片00和01之间的外部i/o被禁用,而分别与逻辑瓦片10和11并置的逻辑瓦片00和01的外部i/o被用作虚拟i/o,虚拟i/o提供虚拟阵列中的逻辑瓦片与物理阵列的其它逻辑瓦片之间的电接口或通信路径;这种虚拟i/o可以用于在虚拟阵列中的逻辑瓦片和物理阵列的其它部分(诸如,例如以提供或促进虚拟阵列之间的通信路径,虚拟阵列被配置为或执行数据处理器、微控制器、加速器、数据加密引擎、滤波器、dsp、编码器和/或状态机的操作)以及物理阵列的其它逻辑瓦片(其可以是另一个虚拟阵列的部分)之间传输控制信号、数据、命令和地址信息;值得注意的是,在该实施例中,虚拟i/o对应于不用于与逻辑瓦片阵列外部的电路系统接口的逻辑瓦片的外部i/o(参见例如,图1d)(这里,该i/o不位于可编程/可配置逻辑电路系统的虚拟阵列或物理阵列的外围或周边上-因此,不用于连接到可编程/可配置逻辑电路系统外部的电路系统但可以用于和与虚拟阵列相邻和物理上相对的逻辑瓦片(例如,不同虚拟阵列的相邻和物理上相对的逻辑瓦片或逻辑瓦片的物理阵列的阵列和其它逻辑瓦片)的i/o接口;

图7c以框图形式示出了根据本发明的某些方面的示例性可编程/可配置逻辑电路系统,其中,在该示例性实施例中,可编程/可配置逻辑电路系统包括四个逻辑瓦片,其中逻辑瓦片00和01被配置或编程为虚拟阵列1;逻辑瓦片的存储器i/o设置在逻辑瓦片的外围内部,虚拟i/o设置在虚拟阵列1的逻辑瓦片和不是虚拟阵列的部分的逻辑瓦片之间,以及设置在虚拟阵列/物理阵列外围上的外部i/o可由可编程/可配置逻辑电路系统外部的电路系统访问;值得注意的是,在逻辑瓦片的2×2物理阵列的该示例性实施例中,存储器设置在虚拟阵列中的逻辑瓦片以及该示例性可编程/可配置逻辑电路系统实施例的其余部分的逻辑瓦片10和11之间,并且连接到逻辑瓦片的存储器i/o以促进与存储器的通信(即,从相邻逻辑瓦片读取数据和/或从相邻逻辑瓦片向存储器写入数据和/或从相邻存储器读取数据和/或从相邻存储器向逻辑瓦片写入数据-如美国专利申请no.15/239,958(通过引用将该美国专利申请整体并入本文)中所描述和示出的;在一个实施例中,这种存储器可以用作本地或便携式存储器用于要采用的虚拟阵列(例如,存储中间计算),其中在执行功能或操作期间,虚拟阵列中的逻辑瓦片可以在逻辑瓦片的操作期间将数据写入位于逻辑瓦片的阵列之外的存储器以及从该存储器读取数据;值得注意的是,在一个实施例中,存储器是设置在(i)逻辑瓦片00和逻辑瓦片01以及(ii)逻辑瓦片10和逻辑瓦片11之间的双端口存储器;再次,可以采用设置在(i)逻辑瓦片00和逻辑瓦片10以及(ii)逻辑瓦片01和逻辑瓦片11之间的虚拟i/o来在虚拟阵列中的逻辑瓦片和物理阵列的其它部分的逻辑瓦片之间传输控制信号(例如,在被配置为或执行数据处理器、微控制器、逻辑、加速器、数据加密引擎、滤波器、dsp、编码器和/或状态机的操作的虚拟阵列之间提供通信总线);这种虚拟i/o是用于提供逻辑瓦片之间的直接通信的相邻逻辑瓦片的未使用的外部i/o;以及

图8a-图8e以框图形式示出了根据本发明的某些方面的包括可编程/可配置逻辑电路系统的fpga的示例性实施例,该逻辑电路系统具有在功能上或操作上“分区”或布置成物理逻辑瓦片的一个或多个虚拟阵列的多个逻辑瓦片的物理阵列;值得注意的是,逻辑瓦片的一个或多个虚拟阵列可以完全或部分地位于逻辑瓦片的物理阵列的周边或外围上或完全位于其内部;每个虚拟阵列可以包括相同或不同数量的物理逻辑瓦片,并且可以以任何方式关于可编程/可配置逻辑电路系统的逻辑瓦片的物理阵列进行组织;此外,尽管未示出,但是(一个或多个)虚拟阵列可以(i)接收分离/不同的时钟信号和/或公共时钟信号,(ii)包括分离的外部i/o(以与fpga外部的电路系统通信),和(iii)经由虚拟i/o和/或开关矩阵互连网络彼此进行通信(参见例如,图2b-图2d和与其有关的描述)。

同样,本文描述和示出了许多发明。本发明既不限于任何单个方面也不限于其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。本发明的每个方面和/或其实施例可以单独使用或与本发明的一个或多个其它方面和/或其实施例组合使用。为简洁起见,这些组合和置换中的许多不在此分离讨论。此外,为了清楚起见,不是在附图的全部示例性实施例中示出i/o(例如,外部i/o和虚拟i/o)、时钟特征和/或存储器。然而,为了避免,这里描述和示出的示例性实施例(例如,图3a-图3c、图4a-图4d和图8a-图8e)可以采用本文描述和示出的任何i/o架构或实施例(参见例如,图1c、图1d、图2b-图2d和图7b)、开关互连网络架构或实施例(参见例如,图7a)、时钟架构或实施例(参见例如,图2b-图2d、图5a和图5b)和/或存储器架构或实施例(参见例如,图2b-图2d和图7c)。

具体实施方式

在第一方面,本发明涉及一种包括fpga的集成电路,该fpga具有在功能上和/或操作上“分区”以形成逻辑瓦片的多个虚拟阵列中的逻辑瓦片(例如,连续的逻辑瓦片)的物理阵列,其中每个虚拟阵列包括一个或多个逻辑瓦片。逻辑瓦片的物理阵列的虚拟阵列可以是例如逻辑瓦片的物理阵列中的逻辑瓦片的物理连续子集。逻辑瓦片的虚拟阵列可以是逻辑瓦片的物理阵列中的逻辑瓦片的物理连续或非连续子集。逻辑瓦片的虚拟阵列可以被编程、配置或限定为实现一个或多个特定和/或预定的功能/操作,例如数据处理器或微控制器(例如,dsp和相关联的逻辑电路系统)。虚拟阵列还可以被编程/配置/限定为实现其它特定和/或预定的功能/操作,诸如具有互连网络的逻辑(例如,与作为处理器或控制器的第一虚拟阵列接口)、加速器、数据加密引擎、滤波器、编码器、dsp(实现例如一个或多个乘法器-累加器电路和/或操作)、状态机和/或存储器。值得注意的是,与每个虚拟阵列相关联或分区为每个虚拟阵列中的逻辑瓦片的数量可以与fpga的逻辑瓦片的物理阵列的其它虚拟阵列相同或不同。

逻辑瓦片的虚拟阵列可以被编程、配置和/或限定为(i)独立于其它虚拟阵列中的一个或多个(或全部)操作或执行,(ii)在fpga的操作的全部或部分期间完全或部分独立地操作或执行,或(iii)与其它虚拟阵列中的一个或多个(或全部)一起或依赖于其它虚拟阵列中的一个或多个(或全部)执行或操作。实际上,在一个实施例中,逻辑瓦片的虚拟阵列中的一个或多个可以被编程、配置或限定为独立于其它虚拟阵列中的一个或多个来操作或执行其功能,以及逻辑瓦片的一个或多个其它虚拟阵列可以被编程、配置或限定为与一个或多个虚拟阵列一起或依赖于一个或多个虚拟阵列进行操作。值得注意的是,逻辑瓦片的每个虚拟阵列的独立和依赖操作的全部组合和置换旨在落入本发明的范围内。

参考图1a-图1d,简要地说,在一个实施例中,本发明的fpga除了其它之外包括可编程/可配置逻辑电路系统,该逻辑电路系统包括逻辑瓦片的物理阵列。如上所述,每个逻辑瓦片通常包括数千个晶体管,这些晶体管可以被配置为执行组合和/或顺序功能(简单和/或复杂)。在一个实施例中,每个逻辑块可以包括一个或多个多路复用器或开关,该一个或多个多路复用器或开关可以布置在互连网络的多个开关矩阵或开关矩阵级中,以例如在集成电路的正常操作中或期间执行逻辑操作(基于(一个或多个)逻辑块的当前配置),和(ii)i/o(i/o引脚和相关联的i/o电路系统或块)-例如,设置在逻辑瓦片的外围、周边或边缘上的i/o引脚以及与这种i/o引脚相关联的i/o电路系统或块,以促进逻辑瓦片的电路系统与可编程/可配置逻辑电路系统外部的电路系统之间的互连。值得注意的是,每个逻辑瓦片的外部i/o(i/o引脚和相关联的i/o电路系统/块)通常沿着逻辑瓦片的整个周边或边界散布-例如,在逻辑瓦片在四侧具有方形或矩形形状的情况下。(参见例如,图1d)。因此,在一个实施例中,逻辑瓦片阵列中的每个逻辑瓦片具有逻辑瓦片的周边上的公共外部i/o布局(这有利地促进了物理阵列中的逻辑瓦片的平铺(tiling))。

在本发明的一个方面中,本发明的逻辑瓦片的物理阵列在功能上或操作上“分区”以形成逻辑瓦片的一个或多个虚拟阵列(每个虚拟阵列包括一个或多个物理逻辑瓦片)。(一个或多个)逻辑瓦片的虚拟阵列被编程、配置或限定为实现具体功能/操作,例如数据处理器、微控制器、逻辑(例如,与另一虚拟阵列(例如,处理器或控制器)接口)、加速器、数据加密引擎、滤波器、dsp、编码器和/或状态机。例如,参考图2a-图2d,在一个实施例中,可编程/可配置逻辑电路系统的逻辑瓦片的物理阵列被分区为两个虚拟阵列,每个虚拟阵列包括一个或多个物理逻辑瓦片。在该实施例中,虚拟阵列1和虚拟阵列2各自包括逻辑瓦片的物理阵列中的逻辑瓦片的物理连续子集。虚拟阵列1被编程/配置/限定为实现功能f(1)(例如,数据处理器或微控制器(例如,具有支持逻辑电路系统的dsp))并且虚拟阵列2被编程/配置/限定为实现f(2)(例如,具有互连网络的支持逻辑(例如,与作为处理器或控制器的第一虚拟阵列接口)、加速器、数据加密引擎、滤波器、编码器、状态机和/或存储器)。逻辑瓦片的物理阵列的m个逻辑瓦片与虚拟阵列1相关联或在功能上或操作上分区以形成虚拟阵列1,并且逻辑瓦片的物理阵列的n个逻辑瓦片与虚拟阵列2相关联或在功能上或操作上分区以形成虚拟阵列2-其中m和n是正整数(即1、2、3、......),m和n可以是相同的整数或不同的整数。

值得注意的是,逻辑瓦片的物理阵列可以在功能上或操作上“分区”成整个物理阵列的子集,以形成逻辑瓦片的多于两个的虚拟阵列。(参见例如,图3a-图3c)。可以设计、配置或限定每个虚拟阵列以实现一个或多个(或全部)唯一或非唯一功能或操作。实际上,尽管许多实施例将虚拟阵列描述为被编程、配置或限定为实现或执行功能,但该功能可以是单个功能/操作或多个有关或无关的功能/操作(例如,有关功能/操作的组合)。

此外,逻辑瓦片的物理阵列和/或逻辑瓦片的虚拟阵列可以是任何大小(行或列)和/或形状(即,行相对于列)。例如,参考图3a-图3c,多个逻辑瓦片的物理阵列可以被布置成x个虚拟阵列(其中x是正整数),包括被编程、配置或限定为实现功能/操作f(1)的虚拟阵列1(具有m个逻辑瓦片,其中m是正整数),被编程/配置/限定为实现功能/操作f(2)的虚拟阵列2(具有n个逻辑瓦片,其中n是正整数)等,以及被编程/配置/限定为实现功能/操作f(x)的虚拟阵列x(具有y逻辑瓦片,其中y是正整数)。如上所述,这样的功能可以是一个或多个(或全部)唯一或非唯一的功能或操作。值得注意的是,每个虚拟阵列可以包括相同或不同数量的物理逻辑瓦片并且可以以任何方式关于可编程/可配置逻辑电路系统的逻辑瓦片的物理阵列进行组织,任何方式包括例如列(参见图3a,其中虚拟阵列相对于物理阵列以列方式分区/组织)、行(参见图3b,其中虚拟阵列相对于物理阵列以行方式分区/组织)、以及行和列(参见图3c,其中虚拟阵列相对于物理阵列既不以列方式也不以行方式分区/组织)。值得注意的是,尽管每个虚拟阵列可以被示为包括多个连续的逻辑瓦片,但是虚拟阵列还可以包括一个或多个非连续的逻辑瓦片(即,具有一个或多个逻辑瓦片的虚拟阵列与该虚拟阵列的其它逻辑瓦片不连续)。

参考图2a-图2d和图3a-图3c,可以编程/配置/限定逻辑瓦片的虚拟阵列中的一个或多个(或全部),以独立于其它虚拟阵列中的一个或多个(或全部)进行操作。例如,参考图2a和图3a-图3c,虚拟阵列1可以在fpga的全部或部分操作期间相对于虚拟阵列2完全或部分独立地操作。此外,在一个实施例中,虚拟阵列1可以被编程、配置或限定为独立于虚拟阵列x操作并且依赖于虚拟阵列2操作。(参见例如,图3a和图3c)。值得注意的是,逻辑瓦片的每个虚拟阵列的独立和依赖操作的全部组合和置换旨在落入本发明的范围内。

参考图2b-图2d,逻辑瓦片的虚拟阵列可以相对于由(一个或多个)其它虚拟阵列接收、生成和/或采用的信号时钟包括、接收、生成和/或采用一个或多个唯一信号(或时钟域)和/或非唯一时钟信号(或时钟域)。例如,(一个或多个)阵列1时钟(其由虚拟阵列1接收和采用)可以是与(一个或多个)阵列2时钟(其由虚拟阵列2接收和采用)的特性相同或不同的特性(例如,频率和/或相位)。除此之外,或者代替它,虚拟阵列中的两个或更多个(或全部)可以生成和/或采用一个或多个公共时钟信号(或公共时钟域),以便例如促进同步操作(例如,在这种虚拟阵列的电路系统之间,或这种虚拟阵列的电路系统和外部电路系统之间)。(参见例如,图2b中的(一个或多个)阵列时钟))。实际上,虚拟阵列中的两个或更多个(或全部)可以采用公共时钟信号(或公共时钟域),并且逻辑瓦片的一个或多个虚拟阵列可以包括、生成和/或采用(一个或多个)不同的时钟信号(或(一个或多个)不同的时钟域)。值得注意的是,在逐个虚拟阵列的基础上,关于使用和生成的一个或多个不同时钟信号(或不同时钟域)和一个或多个公共时钟信号(或公共时钟域)的全部组合和置换旨在落入本发明的范围内。

虚拟阵列中的逻辑瓦片可以直接与逻辑瓦片的其它虚拟阵列的一个或多个逻辑瓦片通信。参考图2b和图2c,在一个实施例中,一个或多个虚拟阵列中的逻辑瓦片可以使用虚拟i/o与其它逻辑瓦片(例如,一个或多个不同虚拟阵列的一个或多个逻辑瓦片)通信(例如,数据、控制和/或地址信号),在一个实施例中,虚拟i/o是逻辑瓦片的“未使用的”外部i/o(参见图1c和图1d),该“未使用的”外部i/o位于逻辑瓦片的与例如相邻虚拟阵列的相邻逻辑瓦片的周边物理上相对的周边上。当i/o不用于与fpga或可编程/可配置逻辑电路系统外部的电路系统通信时(例如,当逻辑瓦片的外部i/o不位于逻辑瓦片的物理阵列的外围或周边上时(即,在逻辑瓦片的周边上的外部i/o位于虚拟阵列的外围或周边上以及可编程逻辑电路系统的逻辑瓦片阵列的外围或周边的内部),这种外部i/o是“未使用的”。在外部i/o位于虚拟阵列的外围或周边上以及逻辑瓦片阵列的外围或周边内部的情况下,“未使用的”外部i/o可以重新用作虚拟i/o,虚拟i/o可以被配置或用于电连接到可编程/可配置逻辑电路系统的相邻/相对逻辑瓦片上的未使用的外部i/o(例如,相邻虚拟阵列的虚拟i/o)。这里,采用这种虚拟i/o来提供逻辑瓦片的物理阵列中的逻辑瓦片之间的直接通信-在该实施例中,逻辑瓦片是相邻虚拟阵列中的逻辑瓦片。

因此,在一个实施例中,虚拟阵列1和虚拟阵列2包括虚拟i/o以连接或促进它们之间的通信。(还参见图7b的逻辑瓦片00和01)。这种虚拟i/o可以在虚拟阵列1和2的逻辑瓦片之间(以及物理阵列的其它逻辑瓦片之间)传输/接收控制、地址和/或数据信号。例如,在一个实施例中,虚拟i/o提供或促进通信路径,以(i)输入数据(a)以在(诸如,数据处理器、微控制器、加速器、数据加密引擎、滤波器、dsp、编码器和/或状态机的)功能或操作中使用,和/或(b)在其上要执行功能或操作(例如,加密)时输入数据和/或(ii)在执行由逻辑瓦片的虚拟阵列执行的功能或操作(例如,加密操作)之后输出数据。

值得注意的是,一个或多个逻辑瓦片的外部i/o中的一个、一些或全部(无论(一个或多个)逻辑瓦片是否是虚拟阵列)可以是“未使用的”,尽管这些外部i/o位于在逻辑瓦片的物理阵列的外围或周边上。这里,外部i/o不用于与逻辑瓦片的物理阵列外部的电路系统通信。实际上,在一个实施例中,虚拟阵列不直接与可编程/可配置逻辑电路系统外部的电路系统通信,因此没有外部i/o。在该实施例中,逻辑瓦片的虚拟阵列可以经由虚拟i/o和/或互连网络或构造直接与物理阵列的其它逻辑瓦片(例如,另一虚拟阵列中的逻辑瓦片)通信。

参考图2c和图2d,除了虚拟i/o之外,或者代替它,在一个实施例中,逻辑瓦片的一个或多个虚拟阵列可以使用互连网络或构造与逻辑瓦片的一个或多个其它虚拟阵列通信。例如在上电、启动时,在初始化或重新初始化期间,和/或在复位或类似顺序/操作(其可以在逻辑瓦片的虚拟阵列的配置之前、期间/同时或之后),可以配置这种开关互连网络或构造。在一个实施例中,虚拟阵列的一个或多个逻辑瓦片可以基于或使用美国专利9,503,092(其通过引用并入本文)中描述和/或示出的一个或多个网络与另一个虚拟阵列的一个或多个逻辑瓦片互连。实际上,除此之外或代替它,给定虚拟阵列中的逻辑瓦片中的一个或多个(或全部)也可以基于或使用美国专利9,503,092中描述和/或示出的一个或多个网络进行互连。

例如,两个虚拟阵列中的逻辑瓦片可以经由混合模式互连架构或网络进行通信,其中在逻辑瓦片和网状网络(例如,逻辑瓦片中的给定状态的多个开关互连到不同虚拟阵列的另一个逻辑瓦片中的相同级的多个其它开关)内实现分层网络,实现为连接虚拟阵列中的逻辑瓦片(例如,在一个实施例中,网状互连是混合模式开关互连架构的最高级-参见例如图7a-其中虚拟阵列1和虚拟阵列2的一个或多个(或全部)逻辑瓦片中的互连网络的最高级的每个开关矩阵连接到(i)该逻辑瓦片中该级的多个开关矩阵和(ii)虚拟阵列2的至少一个逻辑瓦片中的最高级的多个开关矩阵)。值得注意的是,虚拟阵列中的逻辑瓦片之间和当中(以及之内)的全部通信组合旨在落入本发明的范围内。另外,一个或多个虚拟阵列与逻辑瓦片的物理阵列外部的电路系统之间的全部通信组合(包括形式和方法)旨在落入本发明的范围内。

继续参考图2b-图2d,在一个实施例中,逻辑瓦片的虚拟阵列可以包括和/或采用物理上不同或分离的外部i/o。除此之外或代替它,逻辑瓦片的虚拟阵列包括和/或采用物理上公共的i/o。实际上,逻辑瓦片的虚拟阵列中的一个或多个(或全部)可以包括和/或采用物理上不同或分离的i/o以及物理上公共的i/o。在逐个虚拟阵列的基础上,物理上分离的i/o以及物理上公共的i/o的全部组合和置换旨在落入本发明的范围内。

如上所述,逻辑瓦片的虚拟阵列中的一个或多个(或全部)可以“共享”电路系统、存储器(例如,dram、sram等)、时钟生成或对准电路系统(例如,pll、dll、振荡器)和/或在物理上连续的逻辑瓦片的整个物理阵列外部的其它“资源”。例如,参考图2b,虚拟阵列1和虚拟阵列2耦合到时钟生成电路系统(例如,以接收振荡器电路系统的一个或多个输出)和/或可以访问相同的物理嵌入或分立存储器。在一个实施例中,可以将与fpga相关联的物理嵌入或分立存储器分段或分区,使得某些子阵列、块或页面与特定虚拟阵列或虚拟阵列中的两个或更多个相关联或配给或专用于特定虚拟阵列或虚拟阵列中的两个或更多个。

如上所述,在一个实施例中,本发明的fpga采用美国专利申请no.15/239,958中描述和/或示出的架构,其中存储器设置在逻辑瓦片之间并与逻辑瓦片相邻。(参见例如,图7c)。简而言之,分立存储器设置在虚拟阵列中的逻辑瓦片以及其它逻辑瓦片(其可以是另一个虚拟阵列或虚拟阵列的一部分)的逻辑瓦片10和11之间。逻辑瓦片经由存储器i/o连接到存储器以促进通信(如在美国专利申请no.15/239,958中描述和示出的,从相邻逻辑向存储器读取数据和/或从存储器向相邻逻辑写入数据。例如,在一个实施例中,存储器是设置在(i)逻辑瓦片00和逻辑瓦片01和(ii)逻辑瓦片10和逻辑瓦片11之间的双端口存储器。值得注意的是,设置在(i)逻辑瓦片00和逻辑瓦片10以及(ii)逻辑瓦片01和逻辑瓦片11之间的虚拟i/o可以用于在虚拟阵列中的逻辑瓦片以及物理阵列的其它部分的逻辑瓦片之间传输控制信号、地址和数据(例如,虚拟i/o连接到虚拟阵列之间的通信总线,该虚拟阵列被配置为或执行数据处理器、微控制器、逻辑、加速器、数据加密引擎、滤波器、dsp、编码器和/或状态机以及物理阵列的其它逻辑瓦片(例如,与另一虚拟阵列(例如,处理器或控制器)接口的操作)。

值得注意的是,存储器可以是任何种类、类型、大小和/或配置。

可以使用现在已知或以后开发的任何技术来编程或配置逻辑瓦片的物理阵列-全部这些技术旨在落入本发明的范围内。在一个实施例中,限定、配置或编程逻辑瓦片的每个虚拟阵列的比特流被分离地应用于物理阵列(作为分离或不同的比特流),从而分离地编程或配置每个虚拟阵列。在另一个实施例中,(例如,通过一个或多个编译器)为每个虚拟阵列(例如,分离地)生成表示或对应于逻辑瓦片的相关联的虚拟阵列的配置的配置数据的比特流。然后将与逻辑瓦片的虚拟阵列相关联的比特流提供给编译器,该编译器使用比特流来生成组合的、编译的或“合并的”比特流,这样的比特流表示或对应于逻辑瓦片的物理阵列的配置数据-逻辑瓦片的物理阵列包括逻辑瓦片的每个虚拟阵列。此后,复合比特流被广播或应用于逻辑瓦片的物理阵列,复合比特流又编程或配置fpga的可编程/可配置逻辑电路系统的逻辑瓦片的物理阵列,从而将逻辑瓦片的子集配给或分区为逻辑瓦片的(一个或多个)虚拟阵列。

例如,参考图4a-图4d,一个或多个编译器分离地生成与逻辑瓦片的虚拟阵列相关联或表示逻辑瓦片的虚拟阵列(其被设计或编程为实现一个或多个功能/操作)的比特流,并且使用这样的比特流生成或编译复合比特流。然后采用复合比特流来配置或编程fpga的逻辑瓦片的物理阵列-逻辑瓦片的物理阵列包括物理逻辑瓦片的每个虚拟阵列。这里,复合比特流被广播或应用于物理阵列逻辑瓦片以编程或配置每个虚拟阵列以实现一个或多个预定功能/操作。也就是说,通过将物理阵列分区为逻辑瓦片的(一个或多个)虚拟阵列中的逻辑瓦片的子集,将复合比特流广播或应用于逻辑瓦片的整个物理阵列,以编程或配置fpga的可编程/可配置逻辑电路系统的逻辑瓦片的物理阵列-每个虚拟阵列被设计或编程为实现一个或多个功能/操作(例如,处理器、控制器、加速器、数据加密引擎、滤波器、编码器、dsp(实现例如一个或多个乘法器-累加器电路和/或执行一个或多个乘法器-累加器操作)、状态机)。因此,在该实施例中,可以分离地生成虚拟阵列的比特流,此后(例如,经由一个或多个编译器)将比特流与对应于逻辑瓦片的物理阵列的其它比特流组合、编译或“合并”,然后复合比特流被实行、广播或实现以同时配置fpga的物理逻辑瓦片的虚拟阵列,从而使fpga可操作。

值得注意的是,在一个实施例中,可以锁定、固定和/或加密逻辑瓦片的一个或多个虚拟阵列(例如,实现预限定的功能/操作),使得不可以配置/重新配置、限定、修改和/更改该虚拟阵列的配置(例如,在配置逻辑瓦片的物理阵列之前)。除此之外或代替它,一个或多个其它虚拟阵列(实现例如相同或不同的功能/操作)可以是未锁定的、可限定的或可修改的,使得可以配置/重新配置、确定和/或限定第二虚拟阵列的配置。例如,在一个实施例中,逻辑瓦片的物理阵列包括被“锁定”、固定和/或加密的逻辑瓦片的一个或多个虚拟阵列,使得第一用户或设计者被禁止访问这些虚拟阵列中的一个或多个的配置数据(从而禁止编程、配置、重新限定或修改上述(一个或多个)虚拟阵列的功能/操作)。另外,一个或多个其它虚拟阵列可以是“未锁定”的、可编程的、可限定的或可修改的,使得第一用户或设计者不被禁止访问那些虚拟阵列中的一个或多个的配置数据(从而不被禁止编程、配置、限定或修改这种(一个或多个)虚拟阵列的功能/操作)。以这种方式,第一用户可以编程或限定某些虚拟阵列,而不编程或限定其它虚拟阵列(和/或甚至访问编程这样的其它虚拟阵列的数据)。

在该实施例中,可以通过经由分离或不同的比特流分离地应用限定、配置或编程逻辑瓦片的“锁定”和“未锁定”虚拟阵列中的每一个的(一个或多个)比特流,来编程或配置逻辑瓦片的物理阵列。在另一个实施例中,可以通过(使用编译器)组合或编译与逻辑瓦片的“锁定”和“未锁定”虚拟阵列相关联的比特流来使用复合比特流(如上所述)编程或配置逻辑瓦片的物理阵列,此后可以广播、实行、应用或实现与物理阵列(其包括上述虚拟阵列)相关联的复合或组合的配置比特流,以编程或配置fpga的“锁定”和“未锁定”虚拟阵列,以便使fpga可操作。例如,参考图4a,在一个实施例中,虚拟阵列1可以是“锁定”虚拟阵列,而虚拟阵列2可以是“未锁定”虚拟阵列。这里,编译器可以生成包括与虚拟阵列1(其被设计为实现被“锁定”、固定和/或加密的第一功能/操作,使得第一用户或设计者被禁止编程、配置、限定或修改)相关联的比特流以及与虚拟阵列2(其可以是“未锁定”的,从而用户可编程、可限定或可配置)相关联的比特流的复合文件或比特流。此后,可以采用或广播复合比特流以编程或配置fpga的整个物理阵列(其还编程或配置锁定和未锁定虚拟阵列)。

值得注意的是,可以在具有一个或多个“锁定”虚拟阵列和一个或多个“未锁定”虚拟阵列的那些实施例中采用这样的过程或技术。(参见例如,图4b-图4d)。例如,参考图4b,虚拟阵列1和虚拟阵列x可以是“锁定”虚拟阵列,并且至少虚拟阵列2可以是“未锁定”虚拟阵列。其它虚拟阵列(如果有的话)可以是“锁定”或“未锁定”的。这里,一个或多个编译器(i)生成与f(1)、f(2)...f(x)相关联或对应的比特流,并且此后(ii)使用各个比特流通过组合各个比特流生成复合比特流,以生成与f(1)+f(2)+...+f(x)相关联或对应的组合的或复合比特流。然后可以将复合比特流应用或广播到fpga的可编程/可配置逻辑电路系统,以编程逻辑瓦片的物理阵列(其提供物理阵列的功能上和/或操作上“分区”为物理逻辑瓦片的功能上和/或操作上相关联的子集,以“形成”或提供本发明的虚拟阵列)。

这里描述和示出了许多发明。虽然已经描述和示出了本发明的某些实施例、特征、属性和优点,但是应该理解,本发明的许多其它以及不同和/或类似的实施例、特征、属性和优点从描述和说明中是清楚的。因此,本文描述和示出的本发明的实施例、特征、属性和优点并非详尽无遗,并且应当理解,本发明的这些其它类似以及不同的实施例、特征、属性和优点在本发明的范围内。

实际上,本发明既不限于任何单个方面也不限于其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。此外,本发明的每个方面和/或其实施例可以单独使用或与本发明的一个或多个其它方面和/或其实施例组合使用。

例如,可以编程/配置/限定本发明的逻辑瓦片的虚拟阵列中的一个或多个(或全部),以独立于其它虚拟阵列中的一个或多个(或全部)进行操作。逻辑瓦片的虚拟阵列中的这样的一个或多个(或全部)可以在fpga的全部或部分操作期间完全或部分独立地操作。在一个实施例中,逻辑瓦片的虚拟阵列中的一个或多个可以被编程/配置/限定为独立于其它虚拟阵列中的一个或多个(或全部)来操作,以及逻辑瓦片的相同或不同虚拟阵列中的一个或多个可以被编程/配置/限定为依赖于其它虚拟阵列中的一个或多个(或全部)进行操作。值得注意的是,逻辑瓦片的每个虚拟阵列的独立和依赖操作的全部组合和置换旨在落入本发明的范围内。

此外,如上所述,逻辑瓦片的物理阵列的(一个或多个)虚拟阵列可以采用现在已知或以后开发的任何时钟电路系统和技术。例如,在一个实施例中,虚拟阵列采用网状时钟电路系统和技术。例如,参考图5a和图5b,在一个实施例中,多个逻辑瓦片的物理阵列被布置成两个虚拟阵列,这两个虚拟阵列包括被编程/配置/限定为实现第一功能/操作f(1)的虚拟阵列1(具有m个逻辑瓦片,其中m是正整数)和被编程/配置/限定为实现第二功能/操作f(2)的虚拟阵列2(具有n个逻辑瓦片,其中n是正整数)。每个虚拟阵列可以接收一个或多个分离的时钟信号以及网状时钟,该一个或多个分离的时钟信号以及网状时钟可以被分配给每个逻辑瓦片并由逻辑瓦片使用以执行各种功能/操作。fpga的控制电路系统可以使得能够在虚拟阵列的一个或多个物理逻辑瓦片内并且关于由逻辑瓦片的一个或多个虚拟阵列实现的一个或多个功能/操作使用网状时钟(代替其它时钟信号)。值得注意的是,网状时钟电路系统(和网状时钟)可以在图2a-图2d、图3a-图3c和图4a-图4d中描述和/或示出的任何虚拟阵列实施例中实现。

例如,参考图5b,在一个实施例中,控制电路系统经由接收多个时钟信号(包括时钟网时钟)的多路复用器的控制选择性地使得能够使用时钟网信号。在该实施例中,逻辑瓦片的物理阵列中的逻辑瓦片的时钟分配和传输电路系统包括多个输入和输出路径(在所示实施例中的四个路径-标记为“北时钟路径”、“东时钟路径”、“南时钟路径”和“西时钟路径”)以生成具有期望或可编程偏斜的逻辑瓦片时钟信号,并且另外(经由网状时钟布局)接收时钟网信号。通过选择性地控制(一个或多个)时钟选择多路复用器,逻辑瓦片采用给定时钟信号(例如,网状时钟信号)。也就是说,在一个实施例中,时钟选择多路复用器响应地输出网状时钟信号或内部生成/得出的时钟信号作为瓦片时钟,瓦片时钟由逻辑瓦片的电路系统用于执行或实行例如功能和/或操作。控制电路系统可以经由这样的(一个或多个)时钟选择多路复用器的控制,使得能够在一个或多个物理逻辑瓦片内并且关于由逻辑瓦片的一个或多个虚拟阵列实现的一个或多个功能/操作使用网状时钟(代替其它时钟信号)。

值得注意的是,这里可以如关于时钟网阐明的方式中修改地采用美国专利9,240,791的时钟分配和传输电路系统。美国专利9,240,791通过引入并入于此,用于说明/解释时钟分配和传输电路系统的各方面,但是被修改为包括多路复用器以响应地选择要由逻辑瓦片的电路系统用于执行或实行例如功能和/或操作的时钟信号(例如,网状时钟信号)。

此外,逻辑瓦片的一个或多个虚拟阵列可以被编程、配置或限定为实现现在已知或以后开发的任何功能/操作。例如,在一个实施例中,一个或多个虚拟阵列被编程或配置为数据处理器、微控制器、加速器、数据加密引擎、滤波器和/或编码器。(在图6中,还参见,被配置或编程为微控制器单元的虚拟阵列1的示例性实施例(具有例如经由一个或多个乘法器-累加器电路配置和/或被配置为执行一个或多个乘法器-累加器操作的dsp)。

另外,逻辑瓦片的一个或多个虚拟阵列可以完全或部分地位于逻辑瓦片的物理阵列的周边或外围上或完全位于其内部。(参见例如,图8a-图8e)。如上所述,在逻辑瓦片的物理阵列包括多个虚拟阵列的情况下,虚拟阵列可以包括相同或不同数量的物理逻辑瓦片,并且可以以任何方式关于可编程/可配置逻辑电路系统的逻辑瓦片的物理阵列进行组织。全部组合和置换旨在落入本发明的范围内。参考图8a-图8e,尽管未示出,但是(一个或多个)虚拟阵列可以(i)接收分离/不同的时钟信号和/或公共时钟信号,(ii)包括分离的外部i/o(以与fpga外部的电路系统通信)和(iii)经由虚拟i/o和/或开关矩阵互连网络彼此通信(参见例如,图2b-图2d和与之有关的描述)。

此外,为了清楚起见,不是在附图的所有示例性实施例中示出i/o(例如,外部i/o和虚拟i/o)、时钟特征和/或存储器。然而,为了避免,这里描述和示出的示例性实施例(例如,图3a-图3c、图4a-图4d和图8a-图8e)可以采用本文描述和示出的任何i/o架构/实施例(参见例如,图1c、图1d、图2b-图2d和图7b)、开关互连网络架构/实施例(参见例如,图7a)、时钟架构/实施例(参见例如,图2b-图2d、图5a和图5b)和/或存储器架构/实施例(参见例如,图2b-图2d和图7c)。

值得注意的是,本文公开的各种电路、电路系统和技术可以使用计算机辅助设计工具来描述,并且在其行为、寄存器传递、逻辑组件、晶体管、布局几何形状和/或其它特性方面表达(或表示)为在各种计算机可读介质中体现的数据和/或指令。可以实现这种电路、电路系统、布局和布线表达的文件和其它对象的格式包括但不限于支持诸如c、verilog和hldl之类的行为语言的格式,支持rtl之类的寄存器级描述语言的格式,和支持诸如gdsii、gdsiii、gdsiv、cif、mebes之类的几何形状描述语言的格式,以及现在已知或以后开发的任何其它格式和/或语言。可以体现这种格式化数据和/或指令的计算机可读介质包括但不限于各种格式的非易失性存储介质(例如,光学、磁性或半导体存储介质)和可以用于通过无线、光学或有线信令介质或其任何组合来传递这种格式化数据和/或指令的载波。通过载波传递这种格式化数据和/或指令的示例包括但不限于经由一个或多个数据传递协议(例如,http、ftp、smtp等)在因特网和/或其它计算机网络上的传递(上载、下载、电子邮件等)。

实际上,当经由一个或多个计算机可读介质在计算机系统内接收时,上述电路的这种基于数据和/或指令的表达可以由计算机系统内的处理实体(例如,一个或多个处理器)结合实行一个或多个其它计算机程序来处理,其它计算机程序包括但不限于网表生成程序、放置和布线程序等,以生成这种电路的物理表现的表示或图像。此后,例如,通过使得能够在器件制造过程中生成用于形成电路的各种组件的一个或多个掩模,可以在器件制造中使用这种表示或图像。

此外,可以使用计算机辅助设计和/或测试工具经由仿真来表示本文公开的各种电路、电路系统和技术。实现的电路、电路系统、布局和布线和/或技术的仿真由此可以由计算机系统实现,其中经由计算机系统模拟、复制和/或预测由此实现的这种电路、电路系统、布局和技术的特性和操作。本发明还涉及由此实现的本发明电路、电路系统和/或技术的这种仿真,并且因此旨在落入本发明的范围内。对应于这种仿真和/或测试工具的计算机可读介质也旨在落入本发明的范围内。

值得注意的是,本文提及“一个实施例”或“实施例”(或类似)意指关于该实施例描述的特定特征、结构或特性可以被包括、采用和/或结合在本发明的实施例的一个、一些或全部中。本说明书中的短语“在一个实施例中”或“在另一个实施例中”(或类似)的使用或出现不是指相同的实施例,也不是一个或多个其它实施例的必须相互排斥的分离的或替代的实施例,也不限于单一的排他性实施例。这同样适用于术语“实施方式”。本发明既不限于任何单个方面也不限于其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。此外,本发明的每个方面和/或其实施例可以单独采用或与本发明的一个或多个其它方面和/或其实施例组合使用。为简洁起见,本文不分离讨论和/或示出某些置换和组合。

此外,如上所述,本文描述为“示例性”的实施例或实施方式不应被解释为例如相对于其它实施例或实施方式是理想的、优选的或有利的;相反,它旨在传达或指示实施例或多个实施例是(一个或多个)示例实施例。

尽管已经在某些具体方面描述了本发明,但是对于本领域技术人员来说许多其它修改和变化是明显的。因此,应该理解,在不脱离本发明的范围和精神的情况下,可以以不同于具体描述的方式实施本发明。因此,本发明的实施例应该在所有方面都被认为是说明性/示例性的而非限制性的。

值得注意的是,术语“包括”、“包括有”、“包含”、“包含有”、“具有”和“有”或其任何其它变型旨在涵盖非排他性的包含,使得包括元件列表的过程、方法、电路、物品或设备不仅包括那些元件,而可以包括未明确列出的或者这种过程、方法、物品或设备固有的其它元件。此外,在整个本文档中术语“连接”、“被连接”、“连接到”或“连接”的使用应广义地解释为包括直接或间接(例如,经由一个或多个导体和/或中间器件/元件(有源或无源)和/或经由电感或电容耦合)),除非另有说明(例如,使用术语“直接连接”或“直接被连接”)。

本文的术语“第一”、“第二”等不表示任何顺序、数量或重要性,而是用于将一个元件与另一个元件区分开。此外,本文中的术语“一(a)”和“一个(an)”不表示数量的限制,而是表示存在至少一个所引用的项目。

此外,术语“逻辑瓦片”意指多个晶体管(通常多于数千个)的设计单元或块,多个晶体管被连接或配置为例如可编程组件(例如,可编程逻辑组件),在本申请中,逻辑瓦片能够连接到一个或多个相邻的“逻辑瓦片”。术语(i)“集成电路”除其它之外意指处理器、控制器、状态机、门阵列、soc、pga和/或fpga。

此外,术语“电路系统”除其它之外意指电路(无论是集成的还是其它的)、一组这样的电路、一个或多个处理器、一个或多个状态机、实现软件的一个或多个处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列,或者一个或多个电路(无论是集成的还是其它的)、一个或多个状态机、一个或多个处理器、实现软件的一个或多个处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列的组合。术语“数据”除其它之外意指(一个或多个)电流或电压信号(复数或单数),无论是模拟形式还是数字形式,可以是单个比特(或类似)或多个比特(或类似)。此外,术语“初始化操作”意指鲁棒型存储器部(或其存储元件)和/或集成电路的上电、启动、初始化、重新初始化、配置和/或重新配置操作。术语数据处理操作意指包括数字信号处理、编码、解码、加密、解密和/或其它形式的数据处理的操作。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1