CN103390425A - 电阻开关阵列的路由和编程 - Google Patents
电阻开关阵列的路由和编程 Download PDFInfo
- Publication number
- CN103390425A CN103390425A CN2013101639732A CN201310163973A CN103390425A CN 103390425 A CN103390425 A CN 103390425A CN 2013101639732 A CN2013101639732 A CN 2013101639732A CN 201310163973 A CN201310163973 A CN 201310163973A CN 103390425 A CN103390425 A CN 103390425A
- Authority
- CN
- China
- Prior art keywords
- programming
- row
- programmed
- driver
- local
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/1731—Optimisation thereof
- H03K19/1732—Optimisation thereof by limitation or reduction of the pin/gate ratio
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R21/00—Arrangements for measuring electric power or power factor
- G01R21/133—Arrangements for measuring electric power or power factor by using digital technique
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0023—Address circuits or decoders
- G11C13/0026—Bit-line or column circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0023—Address circuits or decoders
- G11C13/0028—Word-line or row circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0069—Writing or programming circuits or methods
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/1733—Controllable logic circuits
- H03K19/1737—Controllable logic circuits using multiplexers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17736—Structural details of routing resources
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/1776—Structural details of configuration resources for memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2213/00—Indexing scheme relating to G11C13/00 for features not covered by this group
- G11C2213/70—Resistive array aspects
- G11C2213/77—Array wherein the memory element being directly connected to the bit lines and word lines without any access device being used
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Power Engineering (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Logic Circuits (AREA)
- Attenuators (AREA)
- Semiconductor Integrated Circuits (AREA)
Abstract
本发明公开了涉及在具有可编程电阻开关阵列的集成电路(IC)上路由和编程电路的多种结构和方法。在一些实施例中,路由结构使用密集布置的电阻开关阵列以提供路由进和路由出逻辑区域的高效选择电路。在其他实施例中,提供编程电路以帮助保持通过将被编程的电阻开关阵列的编程电流相对恒定。在其他实施例中,提供了用于编程电阻开关而不违反给定功率约束的方法。这些以及其他实施例在本文被进一步描述。
Description
背景技术
电阻开关元件,例如使用导电桥的电解元件,被提出作为配置随机存储器(CRAM)和在具有可编程元件的集成电路(IC)中普遍存在的传输门晶体管开关的替代。这种IC的一个实例是现场可编程门阵列(FPGA)。电阻开关元件不必要限制为导电桥器件,并且本文使用的术语“电阻开关”和“可编程电阻开关”通常代表可配置为执行至少两种模式中的一种的电阻元件,这两种模式包括高阻抗模式(其中的电阻元件实质上相当于开关的OFF(关闭)状态)和低阻抗模式(其中的电阻元件实质上相当于是开关的ON(开启)状态)。
在过去的FPGA路由结构中,选择电路的各级(例如,多路复用器或“复用器”)被用于路由主路由线(例如,跨越逻辑区,例如逻辑阵列模块或者“LAB”,的横向通道线和纵向通道线)和每个LAB内的逻辑元件输入之间的信号。例如,在一些结构中,进入LAB的复用器的第一级(有时指LAB输入复用器或“LIM”)可被编程为从子路由线中选择信号,然后,被LIM选择的子线可以通过编程第二级复用器(有时指逻辑元件输入复用器或“LEIM”)被选择。独立的复用器(有时是指驱动器输入复用器或“DIM”)选择来自逻辑元件的输出,并将其提供给路由线驱动器。在一些实现中,DIM除了从本地LAB输出中选择输入外,也可以从其他路由线中选择输入信号。
用于选择电路,例如上如描述的LIM,LEIM和DIM,的可编程开关经常与和传输门晶体管联接的CRAM元件一起实现,CRAM元件保持“1”或“0”状态以控制晶体管的开启或关闭。
用于编程选择电路和用在编程逻辑元件中的CRAM元件通常包括跨越FPGA编程逻辑区域的可编程阵列。在一个典型的实现中,该阵列可一次编程一列。在一个编程周期中,选择一列(基于地址寄存器中的地址数据),然后将已加载到数据寄存器元件中的行编程数据移到已选列的CRAM元件中。在编程区域内,CRAM的整列在单个时钟周期内被编程,这种编程需要相对少的功率。通过使用单个驱动器连同地址寄存器选择该列。
鉴于CRAM元件和相关的传输门晶体管的管芯成本,现有的布线结构通常只为进入LAB逻辑源的LAB附近少量的子路由源提供潜在连接。例如,在一些实现中,尽管基本上LAB附近的横向和纵向通道内的所有路由线都被连接到LAB中的LIM输入端,但是LAB的LIM开关总数仅提供可能的LIM输入到输出连接的大约5%。
在这个背景下提出了本发明实施例。
发明内容
尽管已被实现的实例电路包括几百甚至几千个电阻开关,实际使用可编程电阻开关的现场可编程门阵列(FPGA)将使用电阻开关阵列,其数量比迄今为止实例电路中包含的元件数量大几个数量级。这种基于电阻开关阵列的FPGA以前还没有被实现。
与先前FPGA中使用的可配置随机存储器(CRAM)元件和晶体管开关的组合相比,电阻开关提供的优势在于尺寸比较小。另外,他们可以位于进程堆栈中的高位,并且有效地不占用管芯上的额外区域。因此,在FPGA密集阵列中使用大量的电阻开关是有效的。这可以使路由源和逻辑元件之间用于可编程选择的潜在连接的百分比提高。一方面,本发明实施例通过使用单级可编程选择电路,提供出入逻辑区域(例如,逻辑阵列模块或“LAB”内的逻辑元件)的路由。在一个实施例中,该单级可编程选择电路包括单个选择阵列,在这个选择阵列中,任意输入均可被选为任意输出。在另一个实施例中,单级可编程选择电路包括两个或更多相同的选择阵列。在这个实施例的变体中,一些但不是全部子路由源被提供给该两个或多个并行选择阵列的每一个。在一个实施例中,逻辑区域两面上的路由通道提供单级可编程选择电路的输入,该逻辑区域三面上的路由通道接收穿过可编程选择电路的来自逻辑区域的输出。
FPGA中的电阻开关(用于形成选择电路和逻辑元件)可以是与可编程电路连接的大量电阻开关阵列的部分。编程大量电阻开关阵列存在挑战,而编程CRAM元件阵列没有。通过在足够时间周期内,在电阻元件中通入足够的电流来编程电阻开关(本文有时是指“正在被编程”或简单地指“被编程”)。用于编程的列线上会被引入大量负载,尤其是,在同一列中如果大量开关处于“正在被编程”状态。由于到远离列线编程驱动器的行中电阻开关的连接,所以这种负载会导致带有压降的沿列线的不一致电压。这会造成编程这种开关时需要更长的编程时间。
在本发明的一个实施例中,编程电路被提供以使被编程列与FPGA的编程区域内的多个本地区域中的本地列联接。在一个变体中,本地区域内的每个本地列编程驱动器(用于驱动本地列线)与提供电源电压的本地区域功率缓冲器联接。
在本发明的另一个实施例中,行或列编程驱动器包含电流源驱动器。例如,在一个实施例中,利用电压源驱动器给列线提供编程电压,而在行线上使用电流源驱动器作为编程驱动器可以有助于将流经电阻开关的电流维持恒定,即使这些开关进一步低于列线并因此从列线中接收到较低水平电压。
在另一个实施例中,提供了一种使用一个或多个编程向量编程开关的方法和相关的计算机程序产品,以使开关的整列都被编程,若需要,可以在多个编程周期中逐步地被编程。在一个实施例中,特殊的功率约束被用作确定编程向量的部分。在一个特殊的实施例中,当计算了功率成本违反该约束,则一种方法可以被适配以减少向量的个数,该功率成本依赖于被编程行而变化。
下面将更全面地描述这些和其他实施例。为了说明起见,将参考下面的图说明本发明特定实施例的几个方面。
附图说明
图1根据本发明实施例图示了部分集成电路(IC)中的路由和逻辑电路。
图2图示了图1的其中一个逻辑阵列模块(LAB)的路由电路的进一步细节。
图3图示了图2的选择电路开关阵列的进一步细节。
图4图示了图2图示的路由电路的另一个替代实施例。
图5根据本发明实施例图示了用于编程穿过多个本地编程区域的电阻开关的编程电路的高级视图。
图6根据本发明实施例图示了用于编程电阻开关网格的电路的进一步细节。
图7图示了用于生成编程电阻开关的编程向量的方法,该方法根据本发明实施例获得。
图8的表格图示了在给定功率约束下,应用图7的方法生成的用于编程电阻开关列的样本编程向量。
图9是另一个表格,图示了在另一给定功率约束和根据电阻开关属于哪一行而计算的不同功率成本的情形下,应用图7的方法生成的用于编程电阻开关列的样本编程向量。
图10是根据本发明实施例图示了一种包含具有电路的现场可编程门阵列(FPGA)的典型数据处理系统。
图11显示了用于执行包含在计算机程序产品中的指令代码的计算机系统实例。该计算机程序产品根据本发明实施例获得。
具体实施方式
下面的描述使本领域的任何技术人员能够制造和使用本发明,本文也提供了本发明详细的应用和要求。对于本领域的技术人员而言,对典型实施例的不同修改版本读起来是显而易见的,本文定义的一般原理在不偏离本发明的精神和范围的情形下,可被应用到其他的实施例和应用中。因此,本发明并不局限于实施例中显示的内容,而是与本文公开的原理和特征一致的最大范围。
图1根据本发明实施例图示了在部分集成电路(IC)1000中的路由和逻辑电路。路由电路包括纵向通道101-V0,101-V1以及101-V2和横向通道101-H0。在具体的实施例中,每个这些通道可以包括小于整个通道长度的多条线路,这些通道的起始点和终点是交错的。IC部分1000还包括排列为包括LAB10,LAB11,LAB12的逻辑阵列模块(LAB)(注意:术语“LAB”通常包括逻辑区域自身—一组逻辑元件—和与逻辑区域相关的路由接口)的逻辑区域。在这个实例中,仅为了图示方便,每个纵向通道包含100条单独的纵向路由线,图示的横向通道包含200条横向线。每个通道内的纵向和横向路由线跨多个LAB。显示的输出线104-0和104-1用于相邻逻辑区域之间的信号的本地传输。例如,线104-0提供了从LAB10到LAB11的信号路径,而线104-1提供了从LAB11到LAB12的信号路径。
图2图示了图1用于LAB11的路由电路的进一步细节。如图2所示,LAB11包括选择电路开关阵列201和逻辑元件202。注意:术语“选择电路”一般指适于选择性地连接输入和输出的任意电路。有时,本文用的术语“多路复用器”或“复用器”是指能将任意输入映射成一个或多个输出的电路。根据本领域的一些使用情况,“复用器”被更严格的定义为在多个输入之间选择,具有单输出的选择电路(而“多路分配器”是在多个输出之间选择,具有单输入的选择电路)。从这个意义上来说,本文中用的术语复用器有点更加一般化,该复用器有时包括纵横开关(虽然一些复用器没有被构造成阵列,技术上不是纵横开关;因此,一种特殊的纵横开关可以简单地被认为是一种本文所使用的复用器)。然而,复用器通常输出比输入少,而纵横开关输入和输出相同(但也可以是输出数小于输入数)。为了避免这种定义上的问题,由于在最宽泛的方面这些术语与本发明的精神和范围无关,通常使用较广泛的术语“选择电路”定义本发明的实施例,尽管偶尔会使用术语“复用器”描述具体的实例。
选择电路开关阵列201可被配置为选择340个输入中的任意一个作为155个输出中的任意一个。如图所示,开关阵列201的输入包括:来自纵向通道101-V1中的100条纵向路由线的100个输入;来自横向通道101-H0中的200条路由线的200个输入;来自20个输出104-0(来自图1中相邻的LAB10)的20个输入;以及来自20根提供逻辑元件202输出的线路103的20个输入(没有显示单个逻辑元件)。选择电路开关阵列201提供75个输出作为路由线路101的输入驱动(在这个实例中,该路由线路包括图1中图示的横向通道101-H0中的一些线路和纵向通道101-V1中的一些线路),并提供80个输出作为逻辑元件202的输入。特别地,如果每个横向和纵向通道包含的线路逻辑长度为4(即跨四个LABs),则线路总数的1/4(200个横向通道线路和100个纵向通道线路,即,总共300根线路),或75根线路需要在每个LAB位置上被驱动。
如这个详细的实施例所示,选择电路开关阵列201被认为是“单级”选择电路,因为在它的输入和输出之间只发生一级信号选择。换句话说,155个输出是从340个输入中选择的,而没有使用在最终选择之前影响初始输入的中间选择的两个或更多不同的串联连接的选择电路。例如,通过对比,如果一个选择电路由串联的两个选择电路的组合替代实现,比如,第一级电路从340个输入中选择225个输出,第二级电路从第一级电路的225个输出中选择155个输出,这样的组合选择电路被认为是两级选择电路而不是单级选择电路。
图3图示了图2的选择电路开关阵列的进一步细节。更具体地,开关阵列201包括编号从3010,0到301339,154(在这个实例中,开关总数为52700)的多个电阻开关。每个开关301与一个输入驱动器321(作为特殊复用器的输入)联接,连接到输出驱动器322(作为特殊复用器的输出)上。输入是否被选为具体的输出取决于开关301连接的输入和输出是否被编程(本文是指“正在被编程”或简单地指“被编程”)。例如,为了选择IN0作为OUT0,则开关3010,0正在被编程;选择IN2作为OUT1,开关3012,1正在被编程;以及选择IN339作为OUT154,则开关301339,154被编程。图3没有单独显示编程电路的每行和每列。
图4图示了图2中图示的LAB的替代实施例。更具体地,图4图示的LAB11'包括选择开关阵列401A和401B。如图所示,开关阵列401A接收:来自LAB11'的逻辑元件402的20个输出的输入,来自相邻LAB10中的逻辑元件的20个输出的输入;来自H通道101-H0的200根总线中的120根的输入,以及来自V通道101-V1的100根总线中的60根的输入。同样地,开关阵列401B接收:来自LAB11'的逻辑元件402的20个输出的输入,来自相邻LAB10中的逻辑元件的20个输出的输入;来自H通道101-H0的200根总线中的120根的输入,以及来自V通道101-V1的100根总线中的60根的输入。
在图示实例中,相同的来自LAB11'的逻辑元件402的20个逻辑元件输出被提供给开关阵列401A和开关阵列402B。同样地,相同的来自相邻LAB10的20个逻辑元件输出被提供给开关阵列401A和401B。来自H通道101-H0的重叠但不相同的组线被提供给开关阵列401A和401B作为它们的输入。更具体地,在这个实例中,H通道线包括编号自101-H00到101-H0199的线。线101-H00-119被提供给开关阵列401A,作为其输入,线101-H080-199被提供给开关阵列401B,作为1其输入。同样地,来自V通道101-V1的重叠但不相同的组线被提供给开关阵列401A和401B作为它们的输入。更具体地,在这个实例中,V通道线包括编号自101-V10到101-V199的线。线101-H00-59被提供给开关阵列401A,作为其输入,线101-H040-99被提供给开关阵列401B,作为其输入。
开关阵列401A提供37个输出作为与路由总线联接的驱动器的输入,并提供40个输出作为逻辑元件402的输入。开关阵列401B提供38个输出作为与路由总线联接的驱动器的输入,并提供40个输出作为逻辑元件402的输入。
基于设计的考虑,通过比较图4实施例相对于图2实施例的效益和成本来选择具体环境中的最佳实现。对于给定的开关阵列,开关的数量等于输入量乘以输出量。因此,图4实施例通过提供两个较小平行布置的开关阵列,容纳的开关总数较少。具体地,图4中的阵列可以实现的开关总数为220*77+220*78=34100,所需的开关数约为35%,小于图2实施例所需的开关数。
然而,在图4的布置中,由于每个开关阵列(401A和401B)提供到达不同组源的输出,并且因为一些,但不是全部V通道和H通道的路由源都被提供为两个开关阵列的输入,因此一些连接不能被选择。然而,一些源是与两个开关阵列都连接的。上文描述的这个具体实例中,被路由到LAB11'的200个H通道线中的40个(线101-H080-119)都被提供为开关阵列401A和401B的输入。同样地,被路由到LAB11'的100个V通道线中的20个(线101-V140-59)都被提供给开关阵列401A和401B。由于很多路由输入(一些V线和H线输入,以及所有来自LAB11'和LAB10中的LE输出的输入)都被提供给开关阵列401A和开关阵列401B,这两个开关阵列总共的输入数(总输入:220+220=440)大于图2实施例的开关阵列201具有的输入总数(总输入:340)。这导致更多列需要被编程,(从图3中可以看出,更多的总输入数需要更多的总电阻开关列数),因此,需要大量的列编程驱动器(列编程驱动器将在图5的文本中讨论)对引起的编程网格(注意:尽管本文中在这里提到的“开关阵列”是指在IC的操作模式中的特殊选择电路,由于编程模式的缘故,在本文图5-9的文本中描述的进一步细节中,在单个选择电路开关阵列中开关是更大型被编程开关阵列的部分)编程。
从占有IC的空间来说,电阻开关自身的成本相当低。因此,图2的实施例对很多实现具有吸引力,因为它增加了具体源之间的连接选择数。然而,由于编程电阻开关需要很大功率(将图5-9的文本中进一步描述),在一些实现中,以牺牲不可用的接入和接出逻辑区域的源连接为代价,有利于限制开关的总数。图4实施例提供了一个实例。然而,对于单个LAB包含有两个或多个相同阵列的替代实施例,在不超出本发明精神和范围情形下,可以提供的路由源到LAB的连接的重叠度高于或低于(或不重叠)图4图示实例的重叠度。
图5根据本发明实施例图示了用于编程跨多个LAB本地区域的电阻开关的编程电路的高级视图。具体地,图5图示了部分本地LAB区域110和120。本地LAB区域110包括LAB0,LAB1,LAB2,LAB3,和LAB4。同样地,本地LAB区域120包括LAB5,LAB6,LAB7,LAB8,和LAB9。为便于图示,图5只图示了跨本地区域的LABs的一列。电阻开关301被布置以形成多列电阻开关,每列电阻开关与列线314联接,列线314被本地区域内的列线编程驱动器311驱动。在线316上提供了地址控制,并通过附加电路控制地址寄存器C0,C1,C2,C3(每个寄存器对应被编程电阻开关阵列中的一列)和其他没有单独显示的地址寄存器。当电阻开关的具体列被编程时,地址寄存器为该具体列提供列选择编程信号,并通过列线编程驱动器311在列线314上提供编程电压。在线313a和313b上提供编程控制信号。线313a上的信号控制地址寄存器,而线313b上的信号通过用于所选列的编程驱动器311使能列线314上驱动的编程电压。
通过各自的线318和本地列驱动器311将编程电压传送到各自列线314上。本地区域功率缓冲器312提供本地缓冲或调节通过线317传送的电源电压,从而为本地编程区域110和220中的每个本地列驱动器311提供电源电压。如图中所示的方式,通过提供编程电压信号和电源电压的本地缓冲,从而获得足够的在编程区域内沿整列电阻开关编程所有电阻开关的编程电压水平。
图6图示了用于编程电阻开关网格的电路的进一步细节。具体地,显示了更大电阻开关网格的4X4部分600(已在图5中表示)和用于编程包括已图示的开关的行和列的行与列编程电路,下面将进一步描述。
图示的编程电路包括每一行的行驱动电路360。每个行驱动电路360包括电流源驱动器361和使能晶体管362。另外,还图示了行数据寄存器R0,R1,R2和R3。在执行编程时,每个这些寄存器被加载为“1”或“0”编程位,用来表示具体行中的开关是否是“正在被编程”。例如,在编程周期中,如果行数据寄存器R2被加载为“1”(即,任何二进制高电压信号水平),则该信号将会被施加到与寄存器R2联接的使能晶体管362的栅极。接着,这会导致相应地电流源驱动器361驱动相应行线324上的电流。
在编程过程中,其中一个地址寄存器(例如:C0,C1,C2,C3)中的数据表示在编程周期中被选为编程的列。对于该已选列,相应列线314的驱动器311将要在该已选列线314上(也就是说,在被编程列中)施加高电压。例如,如果列地址寄存器C1的值表示它的列被选择,将会在列C1的列线314上施加高电压(如图所示,本地区域110中的线314和本地区域120中的线314),并且该列的行数据寄存器保持“1”的行中的电阻开关将会在该编程周期中被编程(例如,行中的电阻开关对应行寄存器R2)。具体地,用于已选列的本地列编程驱动器和行编程驱动器与将要被编程的电阻开关联接,而且这些驱动器执行从而维持电阻开关两端的编程电压差。
在该图示实施例中,特别地,如果很多电阻开关与单个列线联接,以及如果在相同编程周期内,很多这些开关被选进行被编程,则列线314在编程过程中会承受很大负载。因此,沿线电压水平会产生变化,沿着列线某一点的电压随着该点与本地编程驱动器311的距离的增加而减小。基于这个原因,一方面,本发明实施例使用电流源361(而不是电压源)作为部分行编程驱动电路360。这有助于将流经每个正在被编程的电阻开关的电流维持恒定,即使提供的电压沿列线发生变化。这允许在驱动器提供较大电压差以补偿沿列线的电压降,同时将跨越将被编程的电阻开关的电压差和流过的电流限制在合适水平。例如,在一个实施例中,行驱动器和列驱动器之间提供的电压差大于编程电压。然而,驱动行的电流源将正在被编程的电阻开关两端的电压差和流过的电流限制在合适的编程电压和电流水平。
在本实施例中,提供的电压源编程驱动器用以驱动列线,而提供的电流源编程驱动器用于驱动行线。然而,在这个方面与本发明一致的替代实施例中,在列线上提供电流源编程驱动器,并在行线上提供电压源驱动器。另外,在一些这种替代体中,电压源行编程驱动器可以简单地接地或以其他方式在行线上提供“低”电压值。
此外,在其他方面与本发明实施例一致的一些实现中,行与列编程驱动器都可以包含电压源驱动器,其中一个提供高电压源,而另一个提供低电压源。例如,如果编程区域被分成图5实施例所示的本地编程区域,则每个列线可用于编程足够小量的电阻开关,从而编程电压在沿线的长度上被保持足够恒定,而不需要电流源驱动器作为行或列编程驱动器。
尽管在电阻开关的行和列与逻辑区域的行和列(其中,例如,“横向”路由通常在行的方向上路由,“纵向”路由通常朝向跨多行的方向和/或在列的方向上路由)的上下文中描述了本发明实施例的各方面,但必须理解,由于行和列的说法是相对器件的方向而言的,器件仅旋转90度,行和列就会互换。另外,尽管术语“行”和“列”通常与物体的直线排列有关,但替代实施例在不背离本发明的精神和范围情形下可以采用的行或列排列是:曲线型,或部分曲线型,或偶尔有粗糙面或裂口,或没有跨IC整个区域。
图7图示了符合本发明实施例的方法700。因为电阻开关需要巨大的功率水平来完成编程,所以需要为每个编程周期实行功率约束。反过来,这会导致限制在单个编程周期中被编程的电阻开关数量,因此,需要多个编程周期来编程电阻开关的单列。当这种编程周期功率约束成为必要或需要时,方法700提供了完成电阻开关阵列编程的步骤。
如本文使用的,术语“编程向量”简单指,在应用一个或多个功率约束条件下,被加载到在编程周期中使用的行寄存器上的一组编程数据值,从而在区域被编程电阻开关列中的行。(本文中,此处的区域表示“功率约束共享区域”)编程电阻开关列中的行。参考图5实施例,列可以跨多个本地区域,因此在同列内沿着多个列线会有电阻开关。在图7图示的方法和图8-9图示的样本编程向量的上下文中,为便于说明,如果具体行中的开关被编程,则假定编程向量包括“1”值,而如果没有被编程,则包括“0”值。编程周期内的功率水平通常取决于被编程的开关数量,因此,在编程向量中的“1”会影响具体编程周期中的总功率成本。在典型的用于编程现场可编程门阵列(FPGA)的现有方法中,配置元件的列(该配置元件经常但不必需,被用于实现静态随机存储器或“SRAM”单元)在单编程时钟周期(假定该行编程数据已经被加载行数据寄存器元件中)中被编程。相反,如果必须给定功率约束,则方法700提供多编程向量,该多编程向量可用于在多编程周期中编程单列开关。
步骤701识别功率约束共享区域列中的被编程位的组。步骤702初始化当前编程向量,置为0s,表示该方法这部分的起始编程数据向量,假定初始值只包含0s。正如该方法的进展,编程向量中的一些0s被设置为1s,若这样做不违反功率约束将进一步说明。步骤703选择被编程位的第一1-位(注意:本领域的技术人员有时为方便将此处“1-位”简单理解为本文中的位;尽管技术上,“位”可以指代值为1或0的位)。如果编程电阻开关的功率成本随行变化,则应当按顺序从成本最高位到最低位测试(这在本文的图9和相应的文本中进一步解释)被编程位(即,1-位)。步骤704确定编程已选位是否会违反预功率约束(导致相应电阻开关被编程)。若是,该方法进入步骤706,确定这些被编程位是否有更多位需要被检测。若步骤704的结果是否,则该方法进行到步骤705,将已选位加到编程向量上(即,编程向量中行为“0”的变成“1”)。另外,该位被从被编程位中移除(即,被编程位中的“1”被改为“0”)。然后该方法进入步骤706,正如刚才描述的,步骤706确定列中是否有更多被编程位还没有被测试。
如果步骤706的结果为是,则该方法进入步骤707,选择下一个1-位测试(若功率成本随行变化,读取下一个最高功率成本位,图9的上下文中将进一步解释),然后该方法回到步骤704。若步骤706的结果是否,则方法进入步骤708,输出编程向量。步骤709确定是否有更多1-位被编程。若是,方法回到步骤702,开始建立额外的编程向量。若否,该方法结束进入步骤710。一旦到达步骤710,已经被建立的一个或多个编程向量可被用于编程整列电阻开关。
图8显示的表800图示了在特殊功率约束下,实行方法700生成编程向量的一个实例。表800图示的建立编程向量所应用的功率约束包括两个简单的线性约束:规则1:在本地编程区域内(在图5的上下文中,表示在其中一个本地编程区域内—区域110或区域120,沿单个本地列线314的开关),一列中每周期功率成本不超过2个单位(为进行概念解释采用通用单位)。规则2是全局约束,在整个功率约束共享区域(在图5的上下文中,该区域的电源由全局列线317提供)中,每周期的功率成本不超过5个单位。在图8图示实例的上下文中,假定编程任意行中电阻开关的公里成本为1个单位。
图8实例中假定可用功率约束共享区域中有四个本地区域,并且,为了说明简单和方便,假定每个本地列区域包括10行电阻(一个实际的实现,单个本地区域可能包括更多行电阻,包含更多或更少本地区域)。具体地,图8假定第一本地区域80(行R0-R9),第二本地区域81(R10-R19),第三本地区域82(R20-R29)和第四本地区域83(R30-R39)。
表800的801列图示了用于编程的位组样本。若表格所示,行R1,R2,R4,R6,R7,R10,R14,R15,R18,R22,R25,R27,R31和R39中的电阻开关正在被编程。应用方法700和上述提到的功率约束(规则1:每个本地区域最大功率2个单位;规则2:整个编程区域总的功率成本为5个单位)生成初始编程向量,(向量1),如表800的802列所示。向量1编程行R1,R2,R10,R14和R22中的位,注意:应用方法700评估“将被编程的位”被加到向量1的可能性,最初对行R1和R2中的位测试,然后发现没有违反规则1和规则2功率约束,因此被加到向量1上。然而,当测试行R4,R6和R7中的位时,发现违反了规则1功率约束,因此不加到向量1上。同样地,行R10和R14中的位可以被加到向量1上而行R18和R19中的位不被加到向量1上。行R22中的位被可以被加到向量1上,但是接下来,达到规则2的限制条件(总共5位),所以其他被测试位都不能通过功率约束而被加到向量1上。
向量1确定后,然后,如表800的803列所示,正在编程位剩余的被编程位在行R4,R6,R7,R15,R18,R25,R26,R27,R31和R39中。继续应用规则1和规则2功率约束,并使用图7的方法将行R4,R6,R15,R18和R25中的位加到第二向量上(向量2,表800的804列所示)。向量2被确定后,正在编程位剩余的被编程位在行R7,R26,R27,R31和R39中,如表800的805列所示。继续应用规则1和规则2功率约束和图7的方法将行R7,R26,R27,R31和R39中的位加到第三向量上,向量3(如表800的806列所示)。向量3确定后,已经没有正在编程位剩余的被编程位,如表800的807列所示。因此向量1,向量2和向量3可被用在三个编程周期中编程列。
图9显示的表900图示了在给定具体功率约束下,实行方法700生成编程向量的另一个实例。为了简要说明。图9图示的实例显示了单个本地列区域,并假定功率约束是本地的。具体地,图9的实例假定每个编程周期的总功率成本为3个单位。然而,图8的实例假定每行编程电阻开关的功率成本是相同的,而图9的实例假定功率成本随行与列编程驱动器的距离增加而增加,约等于沿编程主线的电压降。假定该功率成本的形式是1+i/10,其中i表示行号。
表900的901列显示了编程每行的功率成本。902列显示被编程位在行R1,R2,R4,R5,R7和R8中。应用方法700,行R8首先被测试。首先测试最高成本行,可以使更有效配对更贵行和便宜行成为可能,在某些情况下,可以减少用于编程列必要的向量总数(并因此减小编程周期)。如表900的903列所示,使用方法700从成本最高的行到成本最低的行进行测试以生成向量1,其中,行R8和R2被编程。
向量1建立后,剩余被编程位在行R1,R4,R5和R7中,如表900的904列所示。继续应用功率约束(每个向量功率成本不超过3个单位)和方法700建立向量2,如905列所示。向量2编程行R1和R7。向量2建立后,剩余被编程位在行R4和R5中,如906列所示,由于这些位的总功率成本为2.9个单位,他们可以和一个额外的向量一起被编程,即向量3,如907列所示。如908列所示,向量3建立后,没有更多正在编程位剩下被编程。
本文的可编程电阻开关阵列和相关的路由及编程电路可以被实现为任意IC部分。IC的一个具体实例是FPGA。FPGA(也指可编程逻辑器件(PLD)、复杂PLD、可编程阵列逻辑、可编程逻辑阵列、现场PAL、可擦除PLD、电可擦除PLD、逻辑单元阵列或其他)提供固定IC的优势是定制IC的灵活性。FPGA具有配置元件(即,可编程元件),可以被编程或重新被编程。将新的数据写入到配置元件中,编程或重新编程FPGA的逻辑功能和相关的路由路径。这种配置可以通过将数据存储到IC上的可编程元件中来完成。可编程元件可以包括动态或静态RAM、触发器、电可擦除可编程可读存储(EEPROM)单元、闪存、熔丝、反熔丝可编程连接、或其他存储元件。也可以在IC操作过程中,通过IC接收一个或更多外部产生的信号来实现配置。在IC执行过程中,这种信号表示的数据可以存储或可以不存储在IC上。还可以在IC制造过程中通过掩膜编程实现配置。然而掩膜编程相对于已经列出的现场可编程选择具有缺点,但对于某些大容量应用场合有用。
图10图示了包括FPGA1010的典型数据处理系统1000。FPGA1010包括可编程电路,该可编程电路包括电阻开关1001和根据本文图1-6图示(图10中没有单独显示)的实施例原理的编程和路由电路。
数据处理系统1000可以包括一个或多个以下列出的额外组件:处理器1040、存储器1050、输入/输出(I/O)电路1020和外围设备1030、以及/或其他组件。这些组件通过系统总线1065连接在一起,并被布置在电路板1060上,该电路板1060包含在终端用户系统1070中。如系统1000的数据处理系统可以包括像终端用户系统1070的单个终端用户系统,或可以包括作为一个数据处理系统一起工作的多个系统。
系统1000可被用在很多不同的应用中,比如计算机网络、数据网络、自动化设备、视频处理、数据信号处理或在系统设计中需要利用可编程或再编程逻辑优势的其他应用中。FPGA1010可被用于实现不同的逻辑功能。例如,FPGA1010可构造为与处理器1040协同工作的处理器或控制器(或,在替代实施例中,FPGA自身作为单独的系统处理器)。FPGA1010还可用作判别进入系统1000中的共享源的权限的判别器。然而,在其他实例中,FPGA1010可构造为处理器1040与系统1000中其他组件的其中一个之间的接口。注意:系统1000仅是典型实例。
图11显示了根据本发明实施例的计算机系统1100的一个实例,该计算机系统1100可用于执行包含在计算机程序产品1160中的指令码。计算机程序产品1160包括电子可读介质中的可执行码,可执行码可以指导一个或多个诸如计算机系统1100的计算机执行数据处理,以完成图7中的典型方法700。电子式可读介质可以是任何永久性介质,电子式存储信息,可以本地访问或比如通过网络连接进行远程访问。该介质可包括多个地理上分散的介质,每个介质被构造为存储不同位置和/或不同时间的执行码的不同部分。电子式可读介质中的可执行指令码指导图示的计算机系统1100实现本文已描述的不同典型任务。用于指导执行本文已描述的任务的可执行码通常用软件实现。然而,本领域的技术人员应当理解,计算机或其他电子装置可以在硬件上使用代码,以执行多个或所有不背离本发明的确定性任务。例如,用于执行本文编程方法的一些逻辑可在FPGA或其他被编程IC或相应可配置存储设备上的可配置控制器内的硬件上实现。本领域的技术人员将理解,在本发明的精神和范围内实现典型方法可执行码会有很多变化。
计算机程序产品1160中包含的代码或代码的副本可被存储到存储器1110中,以被处理器1120执行。计算机系统1100还包括I/O子系统1130和外围设备1140。I/O子系统1130、外围设备1140、处理器1120和存储器1110通过总线1150连接。
本领域那些技术人员将理解计算机系统1100仅图示了根据本发明实施例可以实现的计算机程序产品中的一个系统实例。为了引用一个替代实施例的实例,根据本发明实施例,包含在计算机程序产品中的执行指令可以被分布在多个计算机中,例如,比如,分布式计算网络的计算机中。
附加实施例
一种集成电路(IC),其包括:多个逻辑区域和用于路由进/出该逻辑区域的信号的路由方法。IC包括用于编程电阻开关阵列的编程电路。
虽然本发明关于图示实施例已经进行了详细描述,但应当理解,在本发明的范围内,会在本公开基础上有不同修改、修正和改动。虽然本发明关于什么被认为是当前最实用和最可取的实施例已经进行了描述,但必须理解的是本发明并不限于所公开的实施例,而仅由权利要求书限定。
Claims (36)
1.一种集成电路IC中的路由电路,包括:
包含多个路由线的纵向通道;
包含多个路由线的横向通道;以及
包含多个可选输入和多个输出的第一单级选择电路开关阵列,所述第一单级选择电路开关阵列被联接以接收来自所述纵向通道和所述横向通道的输入,并提供到第一逻辑区域的多个逻辑元件的输入的输出以及到所述纵向通道和横向通道至少一个中的路由线路路的输出。
2.根据权利要求1所述的路由电路,其中所述第一单级选择电路开关阵列还被联接以接收来自所述第一逻辑区域的多个逻辑元件的输出的输入。
3.根据权利要求2所述的路由电路,其中所述第一单级选择电路开关阵列还被联接以接收来自第二逻辑区域的多个逻辑元件的输出的输入。
4.根据权利要求1所述的路由电路,其中所述单级选择电路开关阵列包括电阻开关阵列。
5.根据权利要求3所述的路由电路,其中所述单级选择电路开关阵列包括电阻开关阵列。
6.根据权利要求4所述的路由电路,其中所述电阻开关阵列被编程以为所述多个输出中的任意输出选择所述多个可选输入中的任意可选输入。
7.根据权利要求5所述的路由电路,其中所述电阻开关阵列被编程以为所述多个输出中的任意输出选择所述多个可选输入中的任意可选输入。
8.根据权利要求1所述的路由电路,还包括:
对于所述多个逻辑区域的逻辑区域,第二单级选择电路开关阵列包括多个可选输入和多个输出,
其中:
所述第一单级选择电路开关阵列被联接以接收来自所述纵向通道的所述多个路由线路的第一部分和所述横向通道的所述多个路由线的第一部分的输入;以及
所述第二单级选择电路开关阵列被联接以接收来自所述纵向通道的所述多个路由线路的第二部分和所述横向通道的所述多个路由线的第二部分的输入。
9.根据权利要求8所述的路由电路,其中:
所述纵向通道的所述多个路由线的第一部分包含的一些路由线也包含在所述纵向通道的所述多个路由线的第二部分;
所述横向通道的所述多个路由线的第一部分包含的一些路由线也包含在所述纵向通道的所述多个路由线的第二部分;
所述第一单级选择电路开关阵列被联接以提供对所述第一逻辑区域的多个逻辑元件的第一部分的输入的输出,以及对所述纵向通道和所述横向通道的路由线的第一部分的输出;以及
所述第二单级选择电路开关阵列被联接以提供对所述第一逻辑区域的多个逻辑元件的第二部分的输入的输出,以及对所述纵向通道和所述横向通道的路由线的第一部分的输出。
10.根据权利要求3所述的路由电路,还包括:
包含多个可选输入和多个输出的第二单级选择电路开关阵列;
其中:
所述第一单级选择电路开关阵列被联接以接收来自所述纵向通道的所述多个路由线的第一部分和所述横向通道的所述多个路由线的第一部分的输入;
所述第二单级选择电路开关阵列被联接以接收来自所述纵向通道的所述多个路由线的第二部分和所述横向通道的所述多个路由线的第二部分的输入;并且
所述第二单级选择电路开关阵列被联接以接收来自所述第一逻辑区域的多个逻辑元件和所述第二区域的多个逻辑元件的输入。
11.根据权利要求10所述的路由电路,其中:
所述纵向通道的所述多个路由线的第一部分包含的一些路由线也包含在所述纵向通道的所述多个路由线的第二部分;并且
所述横向通道的所述多个路由线的第一部分包含的一些路由线也包含在所述纵向通道的所述多个路由线的第二部分。
12.一种现场可编程门阵列FPGA,包括权利要求1所述的路由电路。
13.一种数据处理系统,包括权利要求12所述的FPGA。
14.一种用于编程电阻开关阵列的编程电路,所述电阻开关阵列的电阻开关被联接到与列线和行线,所述编程电路包括:
联接到相应列线的多个列线编程驱动器;和
联接到相应行线的多个行线编程驱动器;
其中:
所述多个列线编程驱动器的列线编程驱动器和所述多个行线编程驱动器的行线编程驱动器可被操作以提供跨越将被编程的电阻开关的电压差;并且
所述列线编程驱动器和所述行线编程驱动器中的一个包含电流源驱动器,而所述列线编程驱动器和所述行线编程驱动器中的另一个包含电压源驱动器。
15.根据权利要求14所述的编程电路,还包括:
多个行编程数据寄存器,所述多个行编程数据寄存器的行编程数据 寄存器被联接到所述多个行线编程驱动器的行线编程驱动器以提供行编程信号到所述行线编程驱动器;和
多个列地址寄存器,所述多个列地址寄存器的列地址寄存器被联接到所述多个列线编程驱动器的列线编程驱动器以提供列选择信号到所述列线编程驱动器。
16.根据权利要求14所述的编程电路,其中:
所述电流源驱动器被适配以限制跨越将被编程的电阻开关的电压差到编程电压水平。
17.根据权利要求16所述的编程电路,其中所述列线编程驱动器和所述行线编程驱动器被适配以提供大于所述编程电压水平的所述列线编程驱动器和行线编程驱动器之间的电压差。
18.根据权利要求15所述的编程电路,其中:
所述列编程驱动器包括电压源驱动器;
所述行编程驱动器包括联接到电流源使能晶体管的电流源驱动器;以及
若所述行编程信号为高,所述电流源使能晶体管被控制以导通从而允许电流在联接到所述行编程驱动器的行线流动。
19.根据权利要求14所述的编程电路,其中所述编程电路包括:
联接到第一本地区域功率缓冲器的第一多个本地列编程驱动器,所述第一本地区域功率缓冲器可被操作以提供电源电压到所述第一多个本地列编程驱动器的每个本地列编程驱动器;和
联接到第二本地区域功率缓冲器的第二多个本地列编程驱动器,所述第二本地区域功率缓冲器可被操作以提供电源电压到所述第二多个本地列编程驱动器的每个本地列编程驱动器。
20.一种现场可编程门阵列FPGA,包括权利要求14所述的编程电 路。
21.一种数据处理系统,包括权利要求20所述的FPGA。
22.一种用于编程电阻开关阵列的编程电路,所述编程电路包括:
联接到第一本地区域功率缓冲器的第一多个本地列编程驱动器,所述第一本地区域功率缓冲器可被操作以提供电源电压到所述第一多个本地列驱动器的每个本地列编程驱动器,所述第一多个本地列编程驱动器的本地列编程驱动器被连接以驱动联接到多个电阻开关的列线;和
联接到第二本地区域功率缓冲器的第二多个本地列编程驱动器,所述第二本地区域功率缓冲器可被操作以提供电源电压到所述第二多个本地列编程驱动器的每个本地列驱动器,所述第二多个本地列编程驱动器的本地列编程驱动器被连接以驱动联接到多个电阻开关的列线。
23.根据权利要求22所述的编程电路,还包括:
多个列地址寄存器,所述的个列地址寄存器的地址寄存器被联接到所述第一多个本地列编程驱动器的本地列编程驱动器和所述第二多个本地列编程驱动器的本地列编程驱动器。
24.根据权利要求23所述的编程电路,其中所述本地列编程驱动器包含电压源驱动器,所述编程电路还包括:
多个行编程驱动器,所述多个行编程驱动器的行编程驱动器被联接到行线,所述行线被联接以响应行编程数据信号编程已选列中的电阻开关。
25.根据权利要求24所述的编程电路,其中所述行编程驱动器包含电压源驱动器。
26.根据权利要求25所述的编程电路,其中所述电压源驱动器包含接地连接。
27.根据权利要求24所述的编程电路,其中所述行编程驱动器包含电流源驱动器。
28.一种现场可编程门阵列FPGA,包括权利要求22所述的编程电路。
29.一种数据处理系统,包括权利要求28所述的FPGA。
30.一种编程电阻开关阵列的功率约束共享区域中的电阻开关列的方法,所述方法包括:
在第一编程周期中,如果正在编程一个或多于一个电阻开关的功率成本不超过编程周期期间正在编程开关的功率约束,则对一个或多于一个将被编程的电阻开关编程;并且
在第一编程周期后,如果剩余将被编程的任意电阻开关,即剩余开关,则在一个或多于一个随后的编程周期期间编程所述剩余开关。
31.根据权利要求30所述的方法,其中所述功率约束共享区域包括多个本地功率区域,并且所述功率约束包括对所述功率约束共享区域的总功率消耗的至少一个限制,和对所述多个本地功率区域的本地功率区域内的本地功耗的一个限制。
32.根据权利要求30所述的方法,其中正在编程特定电阻开关的功率成本依赖于所述特定电阻开关在所述列中的位置。
33.根据权利要求30所述的方法,其中用于编程所述电阻开关列的编程位的一个或多于一个编程向量由下述确定:
(ⅰ)识别还没有被加到用于编程所述列中电阻开关的编程向量中正在编程位,即剩余正在编程位;
(ⅱ)测试所述剩余正在编程位的第一正在编程位以确定将第一正在编程位加到当前编程向量中是否会违反所述功率约束,如果不会,将所述第一正在编程位加到所述当前编程向量;
(ⅲ)确定所述剩余正在编程位的正在编程位是否已被测试,若是,进入步骤(ⅳ),否则进入步骤(ⅵ);
(ⅳ)测试所述剩余正在编程位的下一个正在编程位以确定将所述下一个正在编程位加到当前编程向量是否会违反所述功率约束,如是,进入步骤(ⅲ),若否,进入步骤(ⅴ);
(ⅴ)将所述下一个正在编程位加到所述当前编程向量,并进入步骤(ⅲ);
(ⅵ)若步骤(ⅲ)的结果为否,则输出所述当前编程向量;以及
(ⅶ)若步骤(ⅰ)识别的全部正在编程位都被加到编程向量,则停止用于编程所述电阻开关列的额外编程向量的建立,若否,则返回步骤(ⅱ)。
34.一种包括在永久计算机可读存储介质中的可执行指令代码的计算机程序产品,所述可执行指令代码至少用于:
识别对应于集成电路IC的电阻开关阵列内的电阻开关列中将被编程的电阻开关的行编程数据列中将被编程的位;以及
确定用于在所述IC的一个或多于一个编程周期期间编程所述识别的位而在编程周期期间不违反功率约束的一个或多于一个编程向量。
35.根据权利要求34所述的计算机程序产品,其中所述可执行指令代码还至少用于:
识别的将被编程的位的逐位测试,以确定将被编程的特定位是否可以被加到当前编程向量而不违反限定的功率约束。
36.根据权利要求35所述的计算机程序产品,其中编程所述电阻开关列的特定行中电阻开关的功率成本随着行而变化,并且所述可执行指令代码至少还用于:
以从对应最高功率成本行的位到对应最低功率成本行的位的顺序引导所述识别的将被编程的位的逐位测试。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/466,847 | 2012-05-08 | ||
US13/466,847 US9166598B1 (en) | 2012-05-08 | 2012-05-08 | Routing and programming for resistive switch arrays |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103390425A true CN103390425A (zh) | 2013-11-13 |
CN103390425B CN103390425B (zh) | 2018-09-07 |
Family
ID=48444055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310163973.2A Active CN103390425B (zh) | 2012-05-08 | 2013-05-07 | 电阻开关阵列的路由和编程 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9166598B1 (zh) |
EP (1) | EP2662861B1 (zh) |
JP (2) | JP2013236082A (zh) |
CN (1) | CN103390425B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373493A (zh) * | 2014-08-15 | 2016-03-02 | 阿尔特拉公司 | 具有多个扇区的可编程电路 |
CN107533862A (zh) * | 2015-08-07 | 2018-01-02 | 慧与发展有限责任合伙企业 | 用于计算矩阵乘法的交叉阵列 |
CN108885895A (zh) * | 2016-03-29 | 2018-11-23 | Arm有限公司 | 作为逻辑电路之间的连接元件的相关电子电阻存储器元件 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9166598B1 (en) | 2012-05-08 | 2015-10-20 | Altera Corporation | Routing and programming for resistive switch arrays |
JP2016063026A (ja) | 2014-09-17 | 2016-04-25 | 株式会社東芝 | 再構成可能な回路 |
JP6860916B2 (ja) * | 2015-05-29 | 2021-04-21 | ナノブリッジ・セミコンダクター株式会社 | プログラマブル論理集積回路、設計支援システム及びコンフィグレーション方法 |
JP2017169118A (ja) * | 2016-03-17 | 2017-09-21 | 株式会社東芝 | 集積回路および電子機器 |
EP3443197A4 (en) * | 2016-04-14 | 2019-10-23 | Landmark Graphics Corporation | ROAD-BASED ROAD-GENERATION OF PARAMETERS FOR DOWNHOLE OPERATIONS |
US20180063007A1 (en) * | 2016-08-31 | 2018-03-01 | Viavi Solutions Inc. | Microburst buffering circuit |
JPWO2018051946A1 (ja) * | 2016-09-16 | 2019-07-04 | 日本電気株式会社 | 集積回路 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6492834B1 (en) * | 1996-04-05 | 2002-12-10 | Altera Corporation | Programmable logic device with highly routable interconnect |
CN101447787A (zh) * | 2008-12-30 | 2009-06-03 | 成都华微电子系统有限公司 | 现场可编程门阵列 |
US20120075907A1 (en) * | 2010-09-29 | 2012-03-29 | Crossbar, Inc. | Resistor structure for a non-volatile memory device and method |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4870302A (en) | 1984-03-12 | 1989-09-26 | Xilinx, Inc. | Configurable electrical circuit having configurable logic elements and configurable interconnects |
GB8906145D0 (en) | 1989-03-17 | 1989-05-04 | Algotronix Ltd | Configurable cellular array |
US5260610A (en) | 1991-09-03 | 1993-11-09 | Altera Corporation | Programmable logic element interconnections for programmable logic array integrated circuits |
US5260611A (en) | 1991-09-03 | 1993-11-09 | Altera Corporation | Programmable logic array having local and long distance conductors |
GB9223226D0 (en) | 1992-11-05 | 1992-12-16 | Algotronix Ltd | Improved configurable cellular array (cal ii) |
US5455525A (en) | 1993-12-06 | 1995-10-03 | Intelligent Logic Systems, Inc. | Hierarchically-structured programmable logic array and system for interconnecting logic elements in the logic array |
DE69532396T2 (de) | 1994-02-28 | 2004-12-09 | Koninklijke Philips Electronics N.V. | Magnetfeldmessgerät |
US5682107A (en) | 1994-04-01 | 1997-10-28 | Xilinx, Inc. | FPGA architecture with repeatable tiles including routing matrices and logic matrices |
US5689195A (en) | 1995-05-17 | 1997-11-18 | Altera Corporation | Programmable logic array integrated circuit devices |
US5581199A (en) | 1995-01-04 | 1996-12-03 | Xilinx, Inc. | Interconnect architecture for field programmable gate array using variable length conductors |
US5537057A (en) | 1995-02-14 | 1996-07-16 | Altera Corporation | Programmable logic array device with grouped logic regions and three types of conductors |
JP3361006B2 (ja) * | 1995-03-24 | 2003-01-07 | 川崎マイクロエレクトロニクス株式会社 | 半導体デバイス |
US5701091A (en) | 1995-05-02 | 1997-12-23 | Xilinx, Inc. | Routing resources for hierarchical FPGA |
US5592106A (en) | 1995-05-17 | 1997-01-07 | Altera Corporation | Programmable logic array integrated circuits with interconnection conductors of overlapping extent |
US5900743A (en) | 1995-05-17 | 1999-05-04 | Altera Corporation | Programmable logic array devices with interconnect lines of various lengths |
US5541530A (en) | 1995-05-17 | 1996-07-30 | Altera Corporation | Programmable logic array integrated circuits with blocks of logic regions grouped into super-blocks |
US5909126A (en) | 1995-05-17 | 1999-06-01 | Altera Corporation | Programmable logic array integrated circuit devices with interleaved logic array blocks |
US5614840A (en) | 1995-05-17 | 1997-03-25 | Altera Corporation | Programmable logic array integrated circuits with segmented, selectively connectable, long interconnection conductors |
US6300794B1 (en) | 1996-10-10 | 2001-10-09 | Altera Corporation | Programmable logic device with hierarchical interconnection resources |
US5880598A (en) | 1997-01-10 | 1999-03-09 | Xilinx, Inc. | Tile-based modular routing resources for high density programmable logic device |
US6249149B1 (en) * | 1997-01-23 | 2001-06-19 | Altera Corporation | Apparatus and method for centralized generation of an enabled clock signal for a logic array block of a programmable logic device |
US5942913A (en) | 1997-03-20 | 1999-08-24 | Xilinx, Inc. | FPGA repeatable interconnect structure with bidirectional and unidirectional interconnect lines |
US5963050A (en) | 1997-02-26 | 1999-10-05 | Xilinx, Inc. | Configurable logic element with fast feedback paths |
US5914616A (en) | 1997-02-26 | 1999-06-22 | Xilinx, Inc. | FPGA repeatable interconnect structure with hierarchical interconnect lines |
US5847579A (en) | 1997-03-20 | 1998-12-08 | Xilinx, Inc. | Programmable logic array with improved interconnect structure |
US5966027A (en) * | 1997-09-30 | 1999-10-12 | Cypress Semiconductor Corp. | Symmetric logic block input/output scheme |
US6107824A (en) | 1997-10-16 | 2000-08-22 | Altera Corporation | Circuitry and methods for internal interconnection of programmable logic devices |
US6084429A (en) | 1998-04-24 | 2000-07-04 | Xilinx, Inc. | PLD having a window pane architecture with segmented and staggered interconnect wiring between logic block arrays |
US6507216B1 (en) * | 1998-11-18 | 2003-01-14 | Altera Corporation | Efficient arrangement of interconnection resources on programmable logic devices |
US6864710B1 (en) * | 1999-12-30 | 2005-03-08 | Cypress Semiconductor Corp. | Programmable logic device |
US6628140B2 (en) * | 2000-09-18 | 2003-09-30 | Altera Corporation | Programmable logic devices with function-specific blocks |
US6630842B1 (en) | 2001-05-06 | 2003-10-07 | Altera Corporation | Routing architecture for a programmable logic device |
US6970014B1 (en) | 2001-05-06 | 2005-11-29 | Altera Corporation | Routing architecture for a programmable logic device |
JP4985583B2 (ja) * | 2003-08-27 | 2012-07-25 | 日本電気株式会社 | 半導体装置 |
WO2005119532A2 (en) * | 2004-06-04 | 2005-12-15 | The Regents Of The University Of California | Low-power fpga circuits and methods |
US7176718B1 (en) * | 2005-01-21 | 2007-02-13 | Altera Corporation | Organizations of logic modules in programmable logic devices |
US7280392B2 (en) | 2005-01-26 | 2007-10-09 | Infineon Technologies, Ag | Integrated memory device and method for operating the same |
US7256613B1 (en) * | 2005-06-24 | 2007-08-14 | Lattice Semiconductor Corporation | Programmable interconnect architecture for programmable logic devices |
US7486111B2 (en) * | 2006-03-08 | 2009-02-03 | Tier Logic, Inc. | Programmable logic devices comprising time multiplexed programmable interconnect |
US7302513B2 (en) * | 2006-04-03 | 2007-11-27 | Blaise Laurent Mouttet | Programmable crossbar signal processor |
US7702978B2 (en) | 2006-04-21 | 2010-04-20 | Altera Corporation | Soft error location and sensitivity detection for programmable devices |
JP4823316B2 (ja) * | 2006-09-05 | 2011-11-24 | 富士通株式会社 | 不揮発性半導体記憶装置の書き込み方法 |
US7456653B2 (en) * | 2007-03-09 | 2008-11-25 | Altera Corporation | Programmable logic device having logic array block interconnect lines that can interconnect logic elements in different logic blocks |
US7724031B2 (en) * | 2007-03-21 | 2010-05-25 | Altera Corporation | Staggered logic array block architecture |
US20080291723A1 (en) | 2007-05-23 | 2008-11-27 | Wang Daniel C | Source biasing of nor-type flash array with dynamically variable source resistance |
JP5046142B2 (ja) * | 2008-03-31 | 2012-10-10 | 独立行政法人産業技術総合研究所 | 再構成可能集積回路 |
US8027209B2 (en) | 2008-10-06 | 2011-09-27 | Sandisk 3D, Llc | Continuous programming of non-volatile memory |
GB2464510B (en) * | 2008-10-17 | 2013-09-04 | Advanced Risc Mach Ltd | Power control of an integrated circuit including an array of interconnected configurable logic elements |
KR20100107609A (ko) * | 2009-03-26 | 2010-10-06 | 삼성전자주식회사 | 저항성 메모리 장치, 이를 포함하는 메모리 시스템 및 저항성 메모리 장치의 기입 방법 |
CA2782142A1 (en) * | 2009-12-01 | 2011-06-09 | Queen's University At Kingston | Method and system for a run-time reconfigurable computer architecture |
WO2011121971A1 (ja) | 2010-03-30 | 2011-10-06 | パナソニック株式会社 | 不揮発性記憶装置及び不揮発性記憶装置への書き込み方法 |
JP5521850B2 (ja) * | 2010-07-21 | 2014-06-18 | ソニー株式会社 | 抵抗変化型メモリデバイスおよびその駆動方法 |
US8320172B2 (en) * | 2010-07-29 | 2012-11-27 | Micron Technology, Inc. | Write operation for phase change memory |
US8890567B1 (en) * | 2010-09-30 | 2014-11-18 | Altera Corporation | High speed testing of integrated circuits including resistive elements |
US8984367B2 (en) | 2011-02-25 | 2015-03-17 | Altera Corporation | Error detection and correction circuitry |
KR101926603B1 (ko) | 2011-12-08 | 2018-12-10 | 삼성전자 주식회사 | 반도체 메모리 장치 및 반도체 메모리 장치의 번-인 테스트 방법 |
US9166598B1 (en) | 2012-05-08 | 2015-10-20 | Altera Corporation | Routing and programming for resistive switch arrays |
-
2012
- 2012-05-08 US US13/466,847 patent/US9166598B1/en active Active
-
2013
- 2013-05-07 CN CN201310163973.2A patent/CN103390425B/zh active Active
- 2013-05-07 EP EP13166757.8A patent/EP2662861B1/en active Active
- 2013-05-07 JP JP2013097398A patent/JP2013236082A/ja not_active Withdrawn
-
2015
- 2015-10-19 US US14/886,777 patent/US9432023B2/en not_active Expired - Fee Related
-
2016
- 2016-08-03 US US15/227,718 patent/US10027327B2/en active Active
-
2018
- 2018-01-22 JP JP2018008127A patent/JP2018098514A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6492834B1 (en) * | 1996-04-05 | 2002-12-10 | Altera Corporation | Programmable logic device with highly routable interconnect |
CN101447787A (zh) * | 2008-12-30 | 2009-06-03 | 成都华微电子系统有限公司 | 现场可编程门阵列 |
US20120075907A1 (en) * | 2010-09-29 | 2012-03-29 | Crossbar, Inc. | Resistor structure for a non-volatile memory device and method |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373493A (zh) * | 2014-08-15 | 2016-03-02 | 阿尔特拉公司 | 具有多个扇区的可编程电路 |
US10523207B2 (en) | 2014-08-15 | 2019-12-31 | Altera Corporation | Programmable circuit having multiple sectors |
CN107533862A (zh) * | 2015-08-07 | 2018-01-02 | 慧与发展有限责任合伙企业 | 用于计算矩阵乘法的交叉阵列 |
CN108885895A (zh) * | 2016-03-29 | 2018-11-23 | Arm有限公司 | 作为逻辑电路之间的连接元件的相关电子电阻存储器元件 |
Also Published As
Publication number | Publication date |
---|---|
JP2013236082A (ja) | 2013-11-21 |
US9166598B1 (en) | 2015-10-20 |
EP2662861B1 (en) | 2022-06-22 |
US10027327B2 (en) | 2018-07-17 |
US20160344390A1 (en) | 2016-11-24 |
JP2018098514A (ja) | 2018-06-21 |
US9432023B2 (en) | 2016-08-30 |
EP2662861A3 (en) | 2017-10-25 |
CN103390425B (zh) | 2018-09-07 |
EP2662861A2 (en) | 2013-11-13 |
US20160043724A1 (en) | 2016-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103390425A (zh) | 电阻开关阵列的路由和编程 | |
AU593281B2 (en) | Semi-conductor integrated circuit/systems | |
CN100505458C (zh) | 保险丝电路 | |
US9257165B2 (en) | Assisted local source line | |
CN1848435B (zh) | 具有更高可靠性的熔丝微调电路 | |
US6294928B1 (en) | Programmable logic device with highly routable interconnect | |
US20090138187A1 (en) | Method and device for the automatic generation of traffic management strategies | |
WO1992017001A1 (en) | A field programmable gate array | |
CN106910525B (zh) | 电可编程熔丝单元阵列及其操作方法 | |
US9525422B2 (en) | Reconfigurable semiconductor integrated circuit and electronic device | |
JP2018098514A5 (zh) | ||
CN100338683C (zh) | 存储器装置 | |
CN101622787A (zh) | 集成电路熔丝阵列 | |
US9646686B2 (en) | Reconfigurable circuit including row address replacement circuit for replacing defective address | |
JPH04252500A (ja) | 半導体記憶回路 | |
JP2018120992A (ja) | 集積回路および電子機器 | |
US7634753B2 (en) | System for signal routing line aggregation in a field-programmable gate array | |
US9691498B2 (en) | Semiconductor integrated circuit | |
US8451666B2 (en) | Reading a memory element within a crossbar array | |
CN100514644C (zh) | 半导体集成电路 | |
US8397009B2 (en) | Interconnection network with dynamic sub-networks | |
WO2011036770A1 (ja) | メモリ機能付きパストランジスタ回路およびこのパストランジスタ回路を有するスイッチングボックス回路 | |
JP4931765B2 (ja) | 信号分配装置 | |
US20040218422A1 (en) | Circuit for compensating programming current required, depending upon programming state | |
CN108053857A (zh) | Nand flash的cg分组方法和cg分组装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |