专利名称:集成电路及其制造方法
技术领域:
本发明的实施例涉及交换网络,并且尤其涉及使用了可编程逻辑电路的交换网
背景技术:
可编程逻辑电路也称为现场可编程门阵列(FPGA),是通用的集成逻辑电路,可以由用户编程以执行逻辑功能。电路设计者定义所需的逻辑功能并且电路被编程为按此处理信号。就逻辑密度需求和生产量而言,可编程逻辑电路在成本和时间方面为市场中的较优选择。典型的可编程逻辑电路由逻辑单元组成,其中各个逻辑单元可以编程为根据其输入变量执行逻辑功能。并且,在整个可编程逻辑电路中提供互连资源,所述互连资源可以编程为根据用户指定而将信号从逻辑单元的输出传送到逻辑单元的输入。随着技术进步,可以实现更大规模更复杂的可编程逻辑电路,电路中逻辑单元的数量和所需的互连资源的数量均增加。与逻辑单元和互连资源不断增加的数量相对应的是需要将电路保持在较小尺寸。一种最小化所需的电路尺寸的方法是最小化互连资源,同时保持一定级别的连接性。因此,随着芯片上实现的功能增加,需要连接大量信号的互连资源可能迅速被耗尽。折衷办法是在将电路保持在较小尺寸的同时提供更低的逻辑单元利用率,或者提供更多的连接资源,但是这样可能大幅度增加电路尺寸。在可编程逻辑电路领域过去四十年的发展中连接方式越来越复杂。L. M. Spandorfer在1965年描述了使用领域互连和使用Clos网络中的开关通过多个导体进行连接的可能的可编程逻辑电路的实现。R. G. Sioup在1970年他的博士论文中同时描述了使用领域互连和使用总线进行更长距离的互连。Freeman在1989年的美国专利4,870,302中描述了使用领域互连、短距离(长度 1,称为单长度)互连以及例如时钟等信号的全局连接线的FPGA的商业实现。短距离互连与逻辑单元的输入和输出交互,其中各个输入通过开关连接到与逻辑单元相邻的各个短线并且水平和垂直短线通过接头中的开关盒连接。El Gamal等人在美国专利4,758,745中介绍了分段连接,其中逻辑单元的输入和输出与一维中不同长度的连接片段交互。Peterson等人在美国专利5, 260,610中以及Cliff等人在美国专利5, 260,611 中介绍了与逻辑元件组连接的本地导体组,其中逻辑元件的各个输入通过开关连接到所述组中的各个本地导体。同时在水平方向和垂直方向上引入附加芯片长度导体,其中水平导体可以连接到垂直导体并且水平导体连接到多个本地导体。在美国专利4,870,302、 4,758,745,5, 260,610以及5,260,611中,逻辑单元的输入导体具有与所述本地导体组的全部连接(例如对于η输入和k本地导体,具有nXk个开关将输入连接到本地导体。还可以使用多路复用器(MUX)方法以减少晶体管数量)。在美国专利4,870,302、4,758,745、5,260, 610以及5,260, 611中,所有的互连资源被限制为一种或者两种不同的长度(即美国专利4,870,302中的单长度,美国专利5,260,610和5,260,611中的本地和芯片长度)或者限制为一维(即美国专利4,758,745中水平方向上的不同长度,美国专利5,260, 610和 5,260, 611中的垂直方向上的本地长度)。Camarota等人在美国专利5,144,166中以及Kean在美国专利5,469,003中介绍了在二维中通过超过两种的不同长度的连接方法,但是限制了导体的范围。美国专利 5,144,166允许各个线路选择性的通过超过一个的可能的驱动源进行驱动,但是美国专利 5,469,003由于各个线路硬连接到MUX输出而受限于单方向。在美国专利5,144,166和 5,469,003中提供的连接性非常低,因为每个连接是相邻或者相对本地的,或者逻辑单元自身可以作为互连资源而不是执行逻辑功能。Ting在美国专利5,457,410,6, 507,217、 6,051,991,6, 597,196中描述了多级架构,其中多种长度的导体通过分级的逻辑单元中的开关进行互连。Young等人在美国专利2001/00074 和美国专利5,914,616中描述了在二维中具有多种长度(每一维中三种长度)的线路的架构,其中对于短的本地连接,使用了近邻交叉条方法(near cross-bar scheme),其中一组逻辑单元输出被多路复用到减少的一组输出端口,然后所述输出端口连接到其他互连资源。较长的线路通常在各维中扇入(fan-in)长度更短的线路。Reddy等人在美国专利6,417,694中公开了另一种架构,其中使用了超区域间、区域间以及本地的导体。在最低层对本地线路使用交叉条方法(使用MUX)从而能够对逻辑元件的输入进行通用访问。Reddy等人在美国专利5,883,526中公开了在本地交叉条中具有电路缩减技术的各种方法。在分级电路的底层,通常使用具有四个输入的查找表(LUT)逻辑单元。使用LUT 作为底层逻辑单元有两个优点。一个优点是电路允许对任何四个输入、一个输出的布尔函数进行可编程控制。另一个优点是四个输入可以互换并且逻辑等效。因此不管哪个信号连接到LUT的哪个输入引脚,只要四个信号连接到LUT的四个输入,LUT均能正常工作。在所有的可编程逻辑电路中需要解决的一个共同问题是互连接性,即如何将传送信号的第一组导体连接到多组导体以接收这些信号,其中发出所述信号的逻辑单元和接收所述信号的逻辑单元分布在集成电路中的广泛区域中(即M个逻辑单元的M个输出,其中各个输出连接到多个逻辑单元的输入)。一种高度理想化但是在很多情况下并不现实的解决方案是使用交叉条开关,其中第一组中的各个导体可以通过开关直接连接到多组导体中的各个导体。现有解决方案在某种程度上试图将连接性问题使用逐个击破的办法划分为多个子块,其中本地的逻辑单元群互相连接并且通过本地连接的延伸或者使用更长距离的连接而延伸到其他的逻辑单元群。这些现有的互连方法很特别并且在很大程度上是基于经验的。理想的连接模型或者互连架构应当确保完全的可连接性,使得大量的输入和输出在任何时候在大部分电路上(通过可编程互连导体)连接到多组导体。需要复杂的软件跟踪互连资源,同时在使用可编程逻辑电路实现定制设计的布局布线阶段需要使用算法改善互连接性。因此,需要一种新的可编程逻辑电路的互连方法,其中在更全局的范围内可以确保连接性或者互连性,同时互连的成本保持很低,因为所需要的开关和实现定制设计时确定布局布线的软件复杂性得以简化。
发明内容
本发明提供了一种集成电路,包括L级可交换的交换网络(L-PSN);其中该L-PSN 包括(L+2)级导体和(L+1)组开关其中该(L+2)级导体包括对于每个i = [l:L],(I[i]/ D[i]) >1,D[1] > 1,L彡1,至少一个j,其中对于从j = [1:L]中选择的j,D[j] >2,第 i级导体包括I [i]个导体,该第i级导体包括D [i]组导体,其中该D [i]组导体中的每一组导体包括(I[i]/D[i])个导体;具有1
个导体的第0级导体,其中(冗0]/1^ = [1:旧[土]) > 1 ;具有包括D[L+1]组导体的I[L+1]个导体的第(L+1)级导体,其中D[L+1] >2,所述 D[L+1]组导体中的每一组导体包括(I[L+1]/D[L+1])个导体且(I [L+1]/D[L+1]) =TIi = [1:L]D[i];其中对于 i = [1:L+1],其中 T[i] = (I[i-l]_D[i]+l),所述(L+1)组开关中的每第i组开关包括至少(T[i]x D[i])个开关;其中所述第(L+1)级导体中的D[L+1]组导体中的每组导体中的Π i = [1:uD[i]个导体物理地连接到选自交换网络和逻辑单元的对应模块的对应数量的引脚;其中对于每个i = [1:L+1],第(i-Ι)级导体中的I[i_l]个导体中的至少T[i]个导体在不需要任何其他导体跨越的情况下通过所述第i组开关中各自的多个至少T[i]个开关选择性地耦合到所述第i级导体中的D [i]组导体中的每一组导体中的 (I[i]/D[i])个导体。本发明还提供一种制造集成电路的方法,该方法包括制造L级可交换的交换网络(L-PSN),其中该L-PSN包括(L+2)级导体和(L+1)组开关其中所述(L+2)级导体包括对于每个i = [1:L], (I[i]/D[i]) > 1,D[1] > 1,L彡1,至少一个j,其中对于从j = [1:L]中选择的j,D[j] >2,第i级导体包括I[i]个导体,该第i级导体包括D[i]组导体,其中所述D[i]组导体中的每一组导体包括(I[i]/D[i])个导体;具有1
个导体的第0级导体,其中(Π0]/Π i = [1:uD[i]) > 1 ;具有包括D[L+1]组导体的I[L+1]个导体的第(L+1)级导体,其中D[L+1] >2,所述D[L+1]组导体中的每一组导体包括(I[L+1]/ D[L+1])个导体且(I[L+1]/D[L+1]) = Π i = [1:L]D[i];其中对于 i = [1 L+1],其中 T[i]= (I[i-l]_D[i]+l),所述(L+1)组开关中的每第i组开关包括至少(T[i]xD[i])个开关;将所述第(L+1)级导体中的D[L+1]组导体中的每组导体中的TliyiuDti]个导体物理地连接到选自交换网络和逻辑单元的对应模块的对应数量的引脚;以及对于每个i = [1:L+1], 将第(i_l)级导体中的I[i_l]个导体中的至少T [i]个导体在不需要任何其他导体跨越的情况下通过第i组开关中各自的多个至少T[i]个开关选择性地耦合到所述第i级导体中的D[i]组导体中的每一组导体中的(I[i]/D[i])个导体。
本发明的目标、特征和优点通过下面的详细描述是显见的,其中图1显示了使用可扩展的非阻断交换网络(SN)的具有四个四输入的逻辑单元和两个双稳态多谐振荡器的电路的实施例;图2显示了使用具有i^一个M导体访问四组、每组四个N导体的0级(stage-0) 可扩展的非阻断交换网络(O-SN)的电路的一个实施例;图3显示了使用两个0级可扩展的非阻断交换网络的电路的一个实施例,其中各个O-SN使用五个M导体访问四组、每组两个N导体;图4显示了使用1级可扩展的非阻断交换网络(I-SN)的电路的一个实施例,其中i^一个M导体通过N组四个中介导体访问四组、每组四个N导体;图5显示了使用1级可扩展的非阻断交换网络的电路的一个实施例,其中十二个 M导体通过更少的中介导体访问四组、每组四个N导体;图6显示了使用1级可扩展的非阻断交换网络的电路的一个实施例,其中十二个 M导体通过更强的可连接性访问四组、每组四个N导体;图7显示了具有更少开关的缩减的1级可扩展的非阻断交换网络的一个实施例;图8显示了更大尺寸的1级可扩展的非阻断交换网络的一个实施例;图9显示了具有十六个M导体的1级可扩展的非阻断交换网络的一个实施例;图10为显示2级可扩展的非阻断交换网络O-SN)和具有四个图1所示的逻辑电路的电路的一个实施例的结构图,其中所述各个逻辑电路使用图9所示的可扩展的非阻断交换网络;图IlA显示了图10所示的2级可扩展的非阻断交换网络的实施例的结构图;图IlB显示了图IlA所示的2级可扩展的非阻断交换网络的第一部分的一个实施例;以及图12显示了实现图IlA所示的2-SN的第二部分的1级可扩展的非阻断交换网络的一个实施例。
具体实施例方式首先描述了一种新型的可扩展的非阻断交换网络(SN),其中使用开关并且包括中介的导体级将第一组导体连接到多组导体,其中所述第一组导体中的各个导体能够通过 SN连接到所述多组导体中的各个导体。所述可扩展的非阻断交换网络应用广泛,不管在单级或者多级分层中使用均能提供在开关、路由器以及可编程逻辑电路中使用的大型交换网络。可扩展的非阻断交换网络被用于通过所述SN将第一组导体连接到多组导体,其中所述多组导体中的各个导体为等价或者可互换的,例如,所述多组导体中的一组导体为逻辑单元的输入(可以为LUT的输入或者分级的逻辑单元的输入)。本发明的可扩展的非阻断交换网络允许所述第一组导体的任何子集通过所述SN连接到第二多组导体中的导体,从而所述子集中的各个导体可以连接到所述多组导体中各组的各个导体。在下面的描述中,给出了大量特定细节以进行解释,从而提供对本发明的全面的理解。显然,对于本领域技术人员而言,本发明的实施例可以实施为不具有这些特定细节。 在其他实施例中,公知的结构和电路以结构图形式显示以避免对本发明的不必要的模糊。 为了进行描述,除非特别说明,术语程序控制开关和开关在本说明书中是可以互换的;术语程序配置的逻辑单元、逻辑单元、单元、查找表(LUT)、可编程逻辑单元在本说明书中是可以互换的;术语导体、信号、引脚、端口、线路在本说明书中是可以互换的。还应当注意,本发明描述了使用程序控制设备以设置所使用的开关的状态的实施例,所述控制设备可以为一次性的,例如熔丝/反熔丝(fuse/anti-fuse)技术,或者可重复编程的,例如SRAM (易失的), FLASH(非易失的),铁电材料(Ferro-electric)(非易失的)等等。因此本发明适合于各种工艺,包括但不限于静态随机访问存储器(SRAM),动态随机访问存储器(DRAM),熔丝/反熔丝,可擦除可编程只读存储器(EPROM),电擦除可编程只读存储器(EEPROM)例如FLASH, 以及铁电材料工艺。
在此描述的可编程逻辑电路中采用的可扩展的非阻断交换网络的概念可以被一般性的应用以允许多个导体与多组导体之间非限制性的连接,只要所需连接没有超过可用的导体数量。当程序控制的开关被用于对导体进行互连时,驱动器电路可以耦合到所述开关以提高信号通过这些导体的速度。并且,如果多个导体(信号)通过程序控制开关扇入到一个导体,则可以在需要时根据所使用的工艺技术使用MUX方法以减少导体负荷或者减小电路尺寸或者二者兼有。在使用MUX的情况下,多个开关被转换为新的开关机制,其中有效状态的数量与开关数量相同,通过选择特定状态(在使用多个开关时对应于特定开关)以连接两个导体,并且所述状态通过可编程控制而确定。描述了各种类型的可扩展的非阻断交换网络,包括但不限于0级可扩展的非阻断交换网络(O-SN),1级可扩展的非阻断交换网络(I-SN),2级可扩展的非阻断交换网络 0-SN),以及对多级可扩展的非阻断交换网络的扩展,使用分级的可扩展的非阻断交换网络为可编程逻辑电路提供互连接性。图1显示了包含可扩展的非阻断交换网络200并且包含k个四输入逻辑单元(在此实施例中k = 4) 10,20,30和40以及两个双稳态多谐振荡器50和60的群(CLST4)电路 100的实施例。各个逻辑单元10-40中,单元10具有四个输入101-104 (N0W-3]),单元20 具有四个输入105-108 (Nl
),单元30具有四个输入109-112 (N2
),以及单元40 具有四个输入113-116(N3
),四个导体121-1M分别作为单元10-40的四个输出。开关151-156和159、160用于控制逻辑单元输出驱动双稳态多谐振荡器还是逻辑单元直接输出到电路100的输出125-128。双稳态多谐振荡器50、60使用开关157、158、161和162输出到电路100的输出125-128。并且,导体131可以通过开关141驱动单元10的导体101 并且通过开关142驱动单元20的导体105。类似的,导体132可以分别通过开关143和144 驱动单元30和40。单元20可以通过输出122使用对导体133的开关145而驱动相邻的 CLST4电路(图1中未显示)。单元40的输出IM通过图1中的开关146驱动导体134。 三个其他信号135-137分别作为SET、CLOCK和CLEAR控制双稳态多谐振荡器。并且,图1 具有(X+1)个导体180 (MW-X]),使用交换网络MTX 200扇入以驱动十六个输入101-116。 导体M W-X] 180称为M导体,其中M等于图1中的实施例中导体的数量(X+1)。对于i = [O-(k-l)]的输入导体NU0-3] 101-116称为Ni导体,其中Ni等于图1中的实施例中的输入数量(等于四)。作为示例,图1中显示了 Ni = N = 4。可替换的,各个Ni可以具有不同的大小而不会改变在此描述的连接特性。在图2显示的实施例中,图1中的MTX 200表示为0级可扩展的非阻断交换网络 (O-SN) 300 ;各个N导体101-116可以连接到M导体的(M-N+1)导体(例如图1中的导体 180) 201-211 (MW-10]),因此图2所示的导体101-116的各个输入导体的开关数量对于图 2中的O-SN 300为(M-N+l) = 8。交换网络O-SN 300允许M导体201-211的任何子集使用300的开关驱动各个逻辑单元10-40中的一个输入导体而没有任何阻断,只要连接数量没有超过可用互连资源数量(即驱动任何逻辑单元的输入的M导体的数量不能超过逻辑单元的输入数量)。图2中的方法相对于交叉条连接是一种改进,其中代替包含MX (kXN)= IlX (4X4) = 176个开关的完全的开关阵列,开关的数量为(M-N+l)X(kXN) = 128。图 2中的O-SN 300允许上述连接性,其中假定各个逻辑单元的四个输入可以互换或者逻辑等
8价(即图1中单元10的导体101-104为等价或者可互换的),从而在连接需求为将特定M 导体连接到给定逻辑单元时仅需要将特定M导体(即M[4]导体20 连接到给定逻辑单元的任何输入引脚(即图1中单元10的导体101-104中使用开关222的导体101)。根据可编程电路中使用的技术,可以实现一定的面积最小化。例如,当使用具有六个晶体管的SRAM存储器单元对各个使用通过闸(passgate)实现的开关进行程序控制时, 图2中每个输入线路101的八个开关221-2 需要五十六个晶体管。相反的,可以使用具有三个存储比特的八个输入MUX以控制八个状态,从而有效替代八个SRAM比特和八个开关。 在MUX方法中,三个比特、十四个通过闸(passgate)以及可能的一个取反器(用于重新产生信号)使用三十四个晶体管,这相对于将八个SRAM存储器单元作为各个开关的程序控制中使用的五十六个晶体管有大幅减少。使用MUX实现可以减少导体101上的负荷,但是八对一的MUX会产生附加延迟。在图3所示的实施例中,图1中的MTX 200通过使用两个0级可扩展的非阻断交换网络330和320而表示,所述网络具有M = Ma+Mb = 10个导体301-310,包含子组Ma =[A0-A4] = 5个导体301-305和Mb = [B0-B4] = 5个导体306-310。对于四个逻辑单元中的每一个的上部的两个输入导体(对于单元10包含导体101-102,对于单元20包含导体105-106,对于单元30为导体109-110以及对于单元40为导体113-114)各个Nb = 2,并且对于k = 4个逻辑单元中的每一个的下部的两个输入导体(对于单元10包含导体 103-104,对于单元20包含导体107-108,对于单元30为导体111-112以及对于单元40为导体115-116)Na = 2。对于图3中的全尺寸的0级可扩展的非阻断交换网络,每个输入导体具有(M-N+l) = 10-4+1 = 7个程序控制的开关。相反的,在图3中的实施例中,输入开关的数量仅为四个,因为单独的Ma个导体和Mb个导体(Ma = Mb = 5),并且数量N为拆分为两部分(Na = Nb = 2)。这样,网络330中每个输入导体的程序控制开关的数量为Ma_Na+l =5-2+1 = 4并且网络320中每个输入导体使用的程序控制开关为Mb-Nb+1 = 4个。使用网络330连接到四个逻辑单元的下部两个输入的Ma导体301-305保持了图2所示的连接性(同样的,对于使用网络320连接到四个逻辑单元的上部两个输入的Mb导体306-310也类似),但是不能任意使用[A0-A4]、[B0-B4]扇入到四个逻辑单元。这种约束防止了通过图3中的两个O-SN 320和330将任意指定的M导体连接到N导体。然而,0级可扩展的非阻断交换网络320和330可以为提供可编程逻辑电路的良好连接性的经济实现,同时在记录并且跟踪所允许的M导体的使用时的软件耗费比图2中的方法更复杂。图3允许十个中的至少八个M导体任意连接到四个逻辑单元的输入,其中各个导体使用网络320和330连接到四个逻辑单元中每一个的一个输入。此处的约束为十个导体不能如同图2中一样的任
意分配。在本发明的实施例中,第一组导体使用交换网络连接到多组等价导体。因此提出了 0-SN,其中具有(M-N+l) XNXk个开关用于提供第一组M个导体与k组、每组N个导体之间的无限制的连接,其中M导体的任何子集可以通过O-SN连接到k组、每组N个导体中任何一组的一个导体而没有任何阻断。图4显示了可替换的实施例方法,其中所述交换网络中使用的开关数量可以很大程度的减少而不改变O-SN的连接性。在图4所示的实施例中,图1中的MTX 200通过使用 1级可扩展的非阻断交换网络(I-SN)而表示。I-SN 400使用I-SN 400的两个开关以及一个中介导体将导体401-411中的M导体连接到导体101-116中的N导体。图4中的I-SN 400通过首先经开关437连接到中介导体妨4然后经子网络450中的开关441连接到N导体109而将M导体407 (MW])连接到N导体109,而不是通过图2中的使用了 1 个开关的网络300将M导体201-211直接连接到k组N导体101-116。类似的,可以分别通过开关442、443和444经相同的中介导体妨4将相同的M导体407连接到N导体101、105和 113。图4中的I-SN 400具有九十六个开关,这与图2中的O-SN 300相比开光数量减少了 25%。可以通过建立具有中介级互连的可扩展的非阻断交换网络而减少O-SN中所需的开关数量,在所述中介级互连中,各个M导体可以任意连接到k组N导体中任一组的导体。所述可扩展的非阻断交换网络能够将M导体连接到k组N导体中各组中的超过一个的导体, 然而,在逻辑上并不需要连接到各组N导体中超过一个的导体。图4显示了具有N组中介导体Ii (i = [1-N])的I-SN 400,其中有i^一个M导体 401-411,四组 N 导体,101-104,105-108,109-112 以及 113-116,并且 k 为 4。第一组中介导体I1例如为与各个N导体的第一输入导体101、105、109和113关联的四个导体451-454, 类似的,导体461-464为与导体104、108、112和116关联的I4导体。O-SN中N导体中各个导体的(M-N+1)个开关分布在图4中对应的Ii导体中。例如,耦合M导体401-408的八个开关431-438分布到I1导体451-454,其中各个I1导体耦合到[(Μ-Ν+D/Ij个开关(即两个)。在图4中的示例中,各个Ii导体中的中介导体的数量为四个。通常的,不同的Ii不需要为相同数量(如下所述)。图4中的I-SN 400具有[(M-N+l)XN+sum i = M (IiXk)]= 32+64 = 96个开关,其中Ii为N组Ii中介导体中各组的中介导体数量。图4中的1-SN400 允许与图2中的各个O-SN 300相同的连接性,通过I-SN 400中的两个开关和一个中介导体将M导体中的任何导体连接到k组N导体中各组中的一个导体。在图4中的I-SN 400中,M导体的任何N元组具有适当的开关选择以连接到不同的N组Ii导体。例如,导体401、404、405以及410为M导体的四元组(N = 4),其中导体401 通过开关431连接到(I1导体的)导体451 ;导体404通过开关446连接到(I2导体的)导体466 ;导体405通过开关447连接到(I3导体的)导体467 ;以及导体410通过开关427 连接到(I4导体的)导体464 ;M导体的N元组的任何子集具有连接到中介导体的相同特性。 并且,Ii导体中的各个中介导体可以连接到k组N导体中各组中的一个N导体。例如,导体 451-4M中的任何一个导体可以通过子网络450中的开关连接到导体101、105、109和113。 类似的,导体461-464中的任何导体可以通过子网络420中的开关连接到导体104、108、112 和 116。图5显示了表示图1中表示的MTX 200的1-SN的可替换实施例。在1-SN 500中, 具有十二个M导体501-512,四组N导体101-116,以及N组中介I1导体521-523,I2导体 524-526,I3 导体 527-529,以及 I4 导体 530-532,其中 M =或者 Ii = M/N = 3。 图5中开关的数量为[(M-N+1) XN+sum J = ^(IiXk)] = 36+48 = 84。对应的0-SN具有 144个开关并且交叉条具有192个开关。图5中的I-SN 500的连接性与先前参考图4中的 I-SN 400讨论的相同,但是具有更少的中介导体和开关。图4和图5中的示例具有通过图 4中的子网络450中的开关和图5中的子网络MO中的开关分别连接到作为图1中的四个逻辑单元10-40的第一输入的导体101、105、109、113的第一组中介Il导体(图4中的导体451-4M和图5中的导体521-523)。同样有效的一个可替换实施例是将各组Ii导体连接到四个逻辑单元中各个单元的任何一个导体(而不是第i个),只要该示例中的特定逻辑单元的四个输入被不同组的Ii导体所覆盖。图6显示了不同版本的1级可扩展的非阻断交换网络的一个实施例,具有比图 5中的I-SN 500更强的连接性。在需要更多开关的同时,I-SN 600中的十二个M导体 601-612(M
-M[11])可以连接到 N 组 Ii 中介导体 621-623,624-6 ,627-6 ,630-632 中各组中的所有导体。这与图4和图5中耦合到M个导体中的(M-N+1)个导体形成对比。在 I-SN 600中,导体601-612可以通过子网络620中的开关连接到I1导体621-623。导体 601-612可以通过子网络640中的开关连接到I2导体624-626。导体601-612可以通过子网络650中的开关连接到I3导体627-629。导体601-612可以通过子网络660中的开关连接到I4导体630-632。图6中的十二个M导体601-612具有比图5中的I-SN 500更强的连接性,其中可以程序选择Μ/%导体中的一个导体连接到任何k组中的特定N个导体。作为示例,在图6的实施例中,(M导体中的)任何N元组导体601-604,605-608,609-612可以使用I-SN连接到四组(k = 4)N导体中各组中的任何特定输入导体,但是各个四元组中的导体互相排斥于特定输入导体。图6中的I-SN 600中所需的开关数量为[MXN+sum i = M(IiXk)] = 48+48 = 96 个开关。就所需开关而言,在图5中的情况下O-SN和I-SN之间的差别在于 [(M-N+1) XNX k]禾口 [ (M-N+1) XN+sum i = fi_N] (Ii X k)]之间的差另Ij,其中 M 导体中的 (M-N+1)个导体可以通过I-SN连接到N组Ii导体中各组中的Ii导体。就所需开关而言, 在图6中的情况下O-SN和I-SN之间的差别在于[MXNXk]和[MXN+sum J = ^(IiXk)] 之间的差别。如果我们简化为各个Ii = k,则M在图5中的情况下至少为R+N+l/(k-l)] 并且M至少为[k+1+l/ (k-Ι)],值得注意的是,图5中的方法在M小于上述数量时仍然可以应用。并且,为了应用I-SN方案,各个中介导体的开关数量[(Μ-Ν+1)/%]不能超过N从而不至于失去SN的非阻断特性。数量[(M-N+D/IJ可以不为整数,在此情况下,使用对数量 (1^+1)/%进行舍入的整数Pi,其中sum i = [1_N] Pi= (M-N+1)。类似的,在图6中的情况下,使用M替代(M-N+1),从而Pi为(Μ/%)的舍入整数,其中sum i = ^lflPi = Μ。而且,在图 4和图5中的示例中,中介导体的数量sum i = ^lflIi被限制为至少为M并且如果kXN大于 M,则sum ^mI1可以为M或者kXN或者其间的某个数。其中各个单独的Ii限制为M/N、 k或者其间的某个数,并且由于M/N可能不是整数,Ii为M/N的舍入整数,因此可以看到,各个Ii可能在所有i(i = [1-N])上并不是相同的。在图7所示的实施例中,图6中实施例中的开关数量被减少的同时对I-SN的连接性没有显著改变。图7表示了如下减少,其中图6中的导体601缩短为到导体621,导体602 缩短为到导体624,导体603缩短为到导体627,导体604缩短为到导体630。其中图6中的子网络670中的十六个开关被去除并且图7中开关的数量为八十个而不是图6中的九十六个。图7中的I-SN 700除去子网络710、720、730以及740之外具有M个导体605-612,具有与图6中所示的I-SN 600—样强的连接性,并且为M = 8的1-SN。可以进一步减少开关数量,例如通过将更多的M导体缩短为到中介导体,但是连接性会较大幅度的降低并且确定连接图案的软件耗费会变得更加复杂。图 8 显示了 M = 48、k = 4、N = 16 和 Ii = 3 (i = [1-16])的 1-SN 的实施例。由于在I-SN 800中具有720个开关,O-SN需要2112个开关并且交叉条需要3072个开关。N组(N = 16) Ii中介导体中的各组例如I16具有三个导体(在子网络810内),其中I16导体耦合到图8中的(M-N+l) = 33个M导体,各个中介导体通过子网络811中的i^一个开关耦合到十一个M导体。通过在连接路径中引入中介导体和附加开关,与O-SN相比,I-SN 800 很大程度上减少了所需开关的数量。在各个实施例中,使用了 M小于kXN的示例,并且M导体为传送扇入信号的导体, 而k组N导体为接收这些扇入信号的导体。然而这并非一定的情况。可以提供M大于kXN 的SN0可替换的,例如可以将图6中的导体101-104、105-108、109-112和113-116认为是四个逻辑单元群的十六个输出,并且使用I-SN以将输出从十六个减少到十二个,其中可以使用I-SN选择十六个输出中的十二个输出的任何子集。并且,各个附图中的导体101-104、 105-108、109-112和113-116不一定为逻辑单元的输入或者输出,而是可以为多个等价导体,其中与多个等价导体的任何一个导体的连接是充分的,而不是与多个等价导体中的特定导体的连接。在设计可编程逻辑电路的互连架构时,基于工程的权衡取舍例如电路尺寸、布局布线定制特定的设计的软件的速度和简易度而提供合理的连接性和足够的互连资源很重要。M导体和k组N导体之间的比率为R,即R = M/(k X N)。如果R过小,则连接性相对于更大的R更加受限。例如在图6的电路中,R = O. 75。在使用可扩展的非阻断交换网络构建分级电路时我们称R为扩张指数。在使用可扩展的非阻断交换网络设计可编程逻辑电路时通常使用的扩张指数在0. 5和1. 0之间,并且R的选择依赖于工程设计的权衡取舍(即逻辑利用、电路面积最小化、布局布线软件的复杂度等等)以及所使用的技术(例如SRAM, 反熔丝等)等因素。某些时候在电路局部超过所述范围是优选的,例如在使用SN将大量输出减少到更少数量的输出减少的情况下。先前的讨论涉及使用可以用于构建分级电路以互连可编程逻辑单元的O-SN和 1-SN,其中分级中的各个级别包含若干可编程逻辑电路,具有相关联的O-SN和/或I-SN以使用各种可扩展的非阻断交换网络连接到电路中的各种导体。前述方法允许在电路分级的任意级别使用O-SN和I-SN连接到任意信号以实现分级内的任何逻辑单元的输入,只要存在可用的互连资源和逻辑容量。下面讨论使用1级和2级可扩展的非阻断交换网络分级构建可编程逻辑电路的方法。图9显示了图1中的CLST4电路100中的MTX电路200的一个实施例,使用了 1级可扩展的非阻断交换网络,其中具有十六个M导体901-916,四组N导体101-104,105-108, 109-112,113-116,其中 N = 4,以及 N 组 Ii 导体 931-934,935-938,939-942,943-946,i = [1-N],其中Ii = M/N = 4。在图9的实施例中扩张指数为1. 0。通过使用图9中的I-SN 900构建可编程电路,M导体901-916的任何子集可以通过I-SN 900单独连接到k组N导体中各组中的一个导体。然后这些M导体自身变得逻辑等效。对于任何从图1中的CLST4电路100外的某处发出的连接到图1中的四个逻辑单元10-40中的四个输入(一个来自导体101-104,一个来自导体105-108,一个来自导体 109-112,一个来自导体113-116)的信号,仅需要连接到M导体中的一个导体。因此,这些 M导体901-916可以分级处理为N个导体(其中N= 16),其中多个新的k组所述新的N个导体中的每一组具有包含四个逻辑单元和两个双稳态多谐振荡器以及I-SN的电路,通过新的交换网络例如SN选择性的通过新的M导体组连接。该过程将重复直到达到所需电路尺寸,同时所需电路允许如上所述的无限制的连接性。图 10 显示了使用图 1 中的四组 CLST4 100(图 10 中的 CLST4 1010,CLST41020, CLST4 1030, CLST4 1040)的CLST16分级电路1000的下一级的实施例结构图,其中使用图9中的I-SN 900和电路MTX16 1050的2级可扩展的非阻断交换网络实现电路MTX 200,所述2级可扩展的非阻断交换网络具有六十四个M导体,其中包含四十八个导体 1055(M
)和十六个导体 1056 (Off
, OE
)以及四组 N 导体 1060、1070、1080、 1090,其中各个N导体具有对应于图9中的十六个M导体901-916的十六个导体。在图 10中,六十四个M导体1055和1056中的十六个导体1056直接连接到四个CLST4 100电路 1010、1020、1030、1040 的四个输出 1065、1075、1085、1095。十六个导体 1056 (Off
, OE
)具有四组、每组四个导体,四个导体中的每个导体对应于图1中的CLST4电路100 的四个输出125-128 (O
)0扩张指数R在电路1000中同样为1.0。图IlA中显示了在分级电路的下一级中使用可扩展的非阻断交换网络将大量导体连接到多组导体。图IlA以结构图形式显示了图10中的电路MTX161050的实施例,其中六十四个M导体1101(M
,OW
,OE
)对应于图10中的导体1055和1056。中介导体的第一级包括NO (其中NO = 4)组的十六个IOi导体(其中IOi = M/NO = 16,对于 i = [1-N0]) 1150、1160、1170 和 1180。M 导体 1101 使用子网络 1110、1120、1130 和 1140 中的开关连接到第一个四组中介级IOi导体1150、1160、1170、1180。图IlB显示了通过子网络1120将导体1101连接到导体1160的方法。通过子网络1110将导体1101连接到导体 1150、通过子网络1130连接到导体1170、通过子网络1140连接到导体1180的连接方法与图IlB中的子网络1120的连接方法相同。该实施例中在M导体1101和四组第一级中介导体1150、1160、1170、1180之间使用的开关数量为MXNO = 256。如同参考图5所述,可替换实施为具有(M-NO+1) XNO个开关。图12显示了电路TA11165的实施例,其中导体1160为第二个NO组的IOi导体,其中i = 2并且IOi = 16。中介导体1201-1216(对应于图IlA中的导体1160)连接到十六个导体1241-1邪6(对应于图IlA中的导体1161-1164)。图IlA的子网络1155、1175、1185与子网络1165的电路相同,分别将导体1150、1170、1180连接到图IlA中的导体1151-1154, 1171-1174,1181-1184。在图12中,电路TAl为图IlA中的I-SN 1165,其中M导体1201-1216为图IlA中的十六个中介IO2导体1160 (11_1
)。十六个中介导体1221-1236包括附(=4)组 II2j (II2j = M/N1 = 4)导体(i = 2,j = [1-N1])导体 1221-1224、1225-1228、12四_1232、 1233-1236。Il2j 导体分别连接到四组目标导体 1241-1M4,1245-1248,1249-1252, 1253-1256 (j = [1-N1])。图 12 中的 1-SN 1165 使用与图 9 相同的 1-SN 900。然而,1-SN 1165为图IlA中的二级可扩展的非阻断交换网络Q-SN) 1050的第二部分中的四个子网络(子网络 1155、1165、1175、1185)中的-个,其中 2-SN 中的导体 1151-1154、1161-1164、 1171-1174、1181-1184 分别为图 10 中的 CLST4 电路 1010、1020、1030、1040 中的 M 导体 1060、1070、1080、1090。CLST4 电路 1010、1020、1030、1040 中的每一个对应于图 1 中的 CLST4电路100以及图9中的I-SN 900。图12中的TAl电路1165选择性的将导体1201-1216连接到导体1241-1256。 1241U245U249U253为对应于图10中的CLSjMIOIO的十六个M导体1060中的四个导体(CO
中的贿-7])的图IlA中的导体1161(N(^4-7])。类似的,导体1242、1对6、 1250、12M为对应于图10中的CLSjMIOSO的十六个M导体1080中的四个导体(Cl
中 W Cl [4-7])的图 IlA 中的导体 1162 ⑴U4-7])。导体 1243、1247、1251、1255 为对应于图 10 中的CLSiMK^O的十六个M导体1070中的四个导体(C2
中的C2R-7])的图IlA中的导体1163(Ν2[4-7]) ο导体1M4、1248、1252、1256为对应于图10中的CLST41040的十六个M导体1090中的四个导体(C3
中的C3W-7])的图IlA中的导体1164 (N3 [4-7])。在图IlA中的MTX 1050电路的1-SN实现中,M = 64,k = 4,以及N = 16。在2-SN 实现中,各级中介导体组的数量为NO = 4并且m = 4,其中乘积NO XNl等于N。使用图6和图9中所述的更强连接性的SN的图10中的2-SN 1050中的开关数量为MXNO+sum i = fl_N0] [(IOi XNi) +sum j = fl_N1] (IIij X (IOiZNl))],其中在网络 1050 中 IOi = M/NO (i = [1-N0]),并且 Ilij = IOi/NKi = [1-N0],j = [1-N1]),从而 IOi = 16,Ilij = 4,并且 1050 的 2-SN 具有768个开关。I-SN实现需要1280个开关,并且完全的交叉条开关需要4096个开关。在各个IOi导体连接到M导体中的(M-N0+1)个导体而不是M个导体,并且各个Ilu导体连接到 IOi导体中的(IOi-Nl+Ι)个导体而不是IOi个导体的情况下,开关数量为(M-N0+1) XNO+sum =[1_Ν(1][(Ι0「Ν1+1) XNi)+sum J =[刚(IlijX (IOi/ΝΙ))]。在图 10 中的情况下,N = NOXNi, IOi = Μ/Ν0, Ilij = Μ/Ν = k,从而此情况中的2-SN中的开关数量为[MX (N0+Nl+k)]。如前所述,不同SN中的k组N导体中的每组N导体并不需要具有相同大小。SN可以构建为不同大小的N/,其中使用最大的Ni作为相同大小的新的N,并且可以添加虚拟导体和开关到更小的Ni使得Ni看上去为N。由于互连规定中不需要更小的队具有大于队的连接,SN的连接性没有改变。例如,与图1中四组N导体101-104、105-108、109-112、113-116 分别作为逻辑单元10-40的输入不同的是,图1中的逻辑单元10仅具有三个输入101-103。 在图6中具有M导体601-612的SN中,图6中的开关和中介导体621-632保持不变,除了其中子网络680中的三个开关和导体104为“虚拟”的并且可以从图6中的SN中移出。可以使用上述方法构建多级可扩展的非阻断交换网络,例如,图10中的MTX 1050 可以实现为三级可扩展的非阻断交换网络,NO = 2,N1 = 2,N2 = 4,第一中介IOi导体IOi = MZNOjIlij = IOiZNl 并且 I2iJk= Ι、/Ν2“ = [l_N0],j= [1-N1]以及 k = [1-N2]),其中 N0XN1XN2 = N= 16 为图 10 中四个 CLST4 电路 1010、1020、1030、1040 中每一个的输入的数量。类似的,SN 1050可以实现为4级SN,其中NO = 2, Nl = 2,N2 = 2,N3 = 2,四个中介级导体将M个导体连接到N个导体。图10中的SN 1050中的I-SN实现之上的2-SN 实现将开关数量减少了 NXM = 16M和(N0+N1) XM= (4+4) XM = 8M之间的差值。在3-SN 和 4-SN 中,分别有(N0+N1+N2) = (2+2+4) = 8 以及(N0+N1+N2+N3) = (2+2+2+2) = 8,相对于(N0+N1) = (4+4) =8的2-SN没有改进。这样,仅当各级的中介导体组的数量Ni的累加和小于前一级的多级SN时才有意义。因此,可以看到,对于N = 64,使用NO = m = N2 = 4(其中(N0+N1+N2) = 12)的 3-SN 相对于使用 NO = Nl = 8(其中(NO+附)=16)的 2-SN可以更加有效的减少开关,在N = 64时2-SN相对于I-SN与上述情况类似。我们描述了使用可扩展的非阻断交换网络的两种级别的分级电路,其中六十四个 M导体通过2-SN以及I-SN扇入连接到十六个四输入逻辑单元。六十四个M导体中的十六个导体直接连接到四个CLST4电路(图1中100的125-128)中各个电路的十六个输出,提供了从任何输出至所有十六个逻辑单元的无限制的连接。分级电路中的第一级包括图1中的CLST4电路100,MTX 200实现为图9中的I-SN 900,其中如图1所示,CLST4 100具有四个四输入逻辑单元10-40和两个双稳态多谐振荡器50、60。分级电路的下一个更高的第二级为图10中的CLST16电路1000,具有包含图10所示的2_SN MTX16 1050的四个CLST4 电路100,其中在图11A、图IlB以及图12中显示了网络1050的实现。在CLST16 1000中, 十六个输出1065、1075、1085、1095(直接连接到导体1056)中的每一个输出具有与CLST16 电路1000中的每个逻辑单元的无限制的连接,并且图10中的其他48个M导体1055在构建下一级分级电路时可以认为是CLST16 1000中的N导体。对于图10中的四个CLST4电路1010、1020、1030、1040中的每一个电路中的图1中CLST4100的十六个输出125-1 可以直接连接到十六个M导体1056,M导体1056的输出可以进一步通过SN使用CLST16电路 1000作为构建模块连接到第三级分级电路,并且其他四十八个M导体为CLST电路1000的等效引脚或者输入导体,从而在可编程逻辑电路中提供连续的高连接性。图10中的CLST电路1000显示了将四个1-SN级联在一起的2-SN,使用各种SN 中的总共1280个开关将六十四个M导体1055、1056和十六个四输入逻辑单元组织在四个组1010、1020、1030、1040中。对于图10中的各组1010-1040,这些SN包括图10中的SN 1050和图1中的SN 200。图10中的CLST电路1000可以使用图9所述方法进行可替换实施,其中使用具有六十四个M导体、k组(例如16)N(例如4)导体的1-SN。按照这样的分析,开关数量为MX (N+k) = 1280。在此情况下,所述I-SN实施和图10中的实施例均具有相同的开关数量。根据工程考虑确定哪种实施更加合适,例如图10实施例中的具有更多中介级导体的四输入MUX实施还是具有十六输入MUX和更少数量的中介级导体的I-SN实施更加适合于使用SRAM的技术,一种方式是否更加适合于布局实施等等。需要注意的是,基于上述分析,优选的提供合理大小的通过SN连接的逻辑单元基础阵列,从而在分级电路的下一级中使用另一个SN连接若干逻辑单元的基础阵列时耗费的开关总数不会超过实现更大的逻辑单元的基础阵列。在大多数的可编程逻辑电路中,(具有SN的逻辑单元阵列中的)基础逻辑单元通常具有三个输入或者四个输入,并且通过上述示例显见,基础逻辑阵列中的逻辑单元的数量k不会很小,或者依赖于N的大小,kXN对于SN应当为合理大小(例如图1 中的CLST4电路100)以作为互连网络有效使用。使用各种实施例和示例,提供了对构建各种可扩展的非阻断交换网络的详细描述,并且通过使用各种组合以提供可编程逻辑电路的输入和输出的互连接。基于技术和工程的考虑,可以使用可扩展的非阻断交换网络的变化实施,包括但是并不限于使用MUX减少存储控制的数量、减少开关数量等等。
权利要求
1.一种集成电路,包括L级可交换的交换网络(L-PSN); 其中该L-PSN包括(L+幻级导体和(L+1)组开关 其中该(L+2)级导体包括对于每个i= [1:L], (I[i]/D[i]) >1,D[1] > 1,L彡1,至少一个j,其中对于从j = [1:L]中选择的j,D[j] >2,第i级导体包括I[i]个导体,该I[i]个导体包括D[i]组导体,其中该D [i]组导体中的每一组导体包括(I[i]/D[i])个导体; 具有1
个导体的第0级导体,其中moviii^Dti]) > 1 ; 具有包括D[L+1]组导体的I [L+1]个导体的第(L+1)级导体,其中D[L+1] >2,所述 D[L+1]组导体中的每一组导体包括(I[L+1]/D[L+1])个导体且(I [L+1]/D[L+1]) =TIi = [i:L]D[i];其中对于i = [1:L+1],其中T[i] = (I[i-l]_D[i]+l),所述(L+1)组开关中的每第i 组开关包括至少(T[i]xD[i])个开关;其中所述第(L+1)级导体中的D[L+1]组导体中的每组导体中的Π i = [1:uD[i]个导体物理地连接到选自交换网络和逻辑单元的对应模块的对应数量的引脚;其中对于每个i = [1:L+1],第(i-Ι)级导体中的I[i_l]个导体中的至少T[i]个导体在不需要任何其他导体跨越的情况下通过所述第i组开关中各自的多个至少T [i]个开关选择性地耦合到所述第i级导体中的D[i]组导体中的每一组导体中的(I[i]/D[i])个导体。
2.根据权利要求1所述的集成电路,其中对于至少一个从j= [1:L+1]中选择的j, D[j]组导体中的每一组导体中的(I[j]/D[j])个导体中的每一个导体在不需要任何其他导体跨越的情况下通过对应的多个至少(T[j]/(I[j]/D[j]))个开关选择性地耦合到所述至少T[j]个导体中的至少(T[j]/(I[j]/D[j]))个导体。
3.根据权利要求1所述的集成电路,其中对于至少一个从j= [1:L+1]中选择的j, T[j] = I[j-1]。
4.根据权利要求3所述的集成电路,其中D[j]组导体中的每一组导体中的(I[j]/ D[j])个导体中的每一个导体在不需要任意其他导体跨越的情况下通过对应的多个至少 (1[」-1]/1[」])劝[」]个开关选择性地耦合到1[」-1]个导体中的至少(I[j-l]/I[j])xD[j] 个导体。
5.一种制造集成电路的方法,该方法包括 制造L级可交换的交换网络(L-PSN),其中该L-PSN包括(L+2)级导体和(L+1)组开关 其中所述(L+幻级导体包括对于每个i = [l:L],(I[i]/D[i]) > 1,D[1] > 1,L彡1,至少一个j,其中对于从j = [1:L]中选择的j,D[j] >2,第i级导体包括I[i]个导体,该I[i]个导体包括D[i]组导体,其中所述D[i]组导体中的每一组导体包括(I[i]/D[i])个导体; 具有1
个导体的第0级导体,其中moviii^Dti]) > 1 ; 具有包括D[L+1]组导体的I [L+1]个导体的第(L+1)级导体,其中D[L+1] >2,所述 D[L+1]组导体中的每一组导体包括(I[L+1]/D[L+1])个导体且(I [L+1]/D[L+1]) =TIi = [i:L]D[i];其中对于i = [1:L+1],其中T[i] = (I[i-l]_D[i]+l),所述(L+1)组开关中的每第i 组开关包括至少(T[i]xD[i])个开关;将所述第(L+1)级导体中的D[L+1]组导体中的每组导体中的Π i = [1:uD[i]个导体物理地连接到选自交换网络和逻辑单元的对应模块的对应数量的引脚;以及对于每个i = [1:L+1],将第(i-Ι)级导体中的I[i_l]个导体中的至少T [i]个导体在不需要任何其他导体跨越的情况下通过第i组开关中各自的多个至少T [i]个开关选择性地耦合到所述第i级导体中的D[i]组导体中的每一组导体中的(I[i]/D[i])个导体。
6.根据权利要求5所述的方法,该方法还包括对于至少一个从j= [1:L+1]中选择的j,将D[j]组导体中的每一组导体中的(I[j]/D[j])个导体中的每一个导体在不需要任何其他导体跨越的情况下通过对应的多个至少(T[j]/(I[j]/D[j]))个开关选择性地耦合到所述至少T[j]个导体中的至少(T[j]/(I[j]/D[j]))个导体。
7.根据权利要求5所述的方法,其中,对于至少一个从j= [1:L+1]中选择的j,T[j] =I[j-1]。
8.根据权利要求7所述的方法,该方法还包括将所述D[j]组导体中的每一组导体中的 (I[j]/D[j])个导体中的每一个导体在不需要任意其他导体跨越的情况下通过对应的多个至少(I[j"l]/I[j])xD[j]个开关选择性地耦合到I [j_l]个导体中的至少(I[j-1]/I[j]) xD[j]个导体。
全文摘要
本发明提供了一种集成电路以及一种制造集成电路的方法。一种可扩展的非阻断交换网络,具有开关(151-160)和中介(分级的)导体用于在各个互连资源的约束内以无限制方式将第一组导体连接到其他多组导体。所述交换网络(200)应用广泛,协同或者级联的提供网络、路由器以及可编程逻辑电路中使用的大型交换网络。所述交换网络用于通过该交换网络将第一组导体(101-104)连接到给定逻辑电路分级中的多组导体,从而所述多组导体中各组中的导体为等效或者可互换的,使得所述第一组导体在下一级分级电路中使用时等效。所述交换网络可以扩展到很大的导体组并且可以分级使用以实现大型电路中的可编程互连。
文档编号H04L12/56GK102571073SQ20111043966
公开日2012年7月11日 申请日期2005年2月28日 优先权日2004年3月30日
发明者B·S·廷, P·M·帕尼 申请人:利益逻辑公司