CN114253602A - 基于微扇区基础结构的逻辑结构 - Google Patents

基于微扇区基础结构的逻辑结构 Download PDF

Info

Publication number
CN114253602A
CN114253602A CN202110980812.7A CN202110980812A CN114253602A CN 114253602 A CN114253602 A CN 114253602A CN 202110980812 A CN202110980812 A CN 202110980812A CN 114253602 A CN114253602 A CN 114253602A
Authority
CN
China
Prior art keywords
data
micro
row
sector
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110980812.7A
Other languages
English (en)
Inventor
S·R·阿特萨特
A·扬吉提
T·勒
S·钟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Altera Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN114253602A publication Critical patent/CN114253602A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17724Structural details of logic blocks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17736Structural details of routing resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17748Structural details of configuration resources
    • H03K19/17756Structural details of configuration resources for partial configuration or partial reconfiguration
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/027Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
    • H03K3/037Bistable circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Logic Circuits (AREA)

Abstract

本文描述的系统和方法可以涉及提供能够使用微扇区粒度进行编程的动态可配置电路。此外,可以使用写入操作来执行选择性部分重新配置操作以在现有配置之上写入新配置,从而选择性地对可编程逻辑的一部分进行重新编程。n位数据寄存器(例如,1位数据寄存器)和/或控制电路可以启用所描述的至少一些操作,该控制电路从设置在可编程逻辑的各部分之间的访问寄存器接收数据和命令。

Description

基于微扇区基础结构的逻辑结构
技术领域
本公开涉及使用布置在微扇区中的可编程结构的集成电路设备。
背景技术
本部分旨在向读者介绍可能与本公开的各个方面相关的本领域的各个方面,这些方面在下面描述和/或要求保护。该讨论被认为有助于为读者提供背景信息以促进更好地理解本公开的各个方面。因此,应当理解,这些陈述应根据这一点来阅读,而不是作为对现有技术的承认。
微电子的进步使得各种集成电路设备和通信技术的晶体管密度和带宽不断增加。事实上,一些先进的集成电路(例如,现场可编程门阵列(FPGA)或其它可编程逻辑器件)可能包括大量晶体管,这些晶体管使得越来越多种类繁多的可编程电路设计能够被编程到可编程结构中以用于实现大量的不同功能。在一些情况下,由功能生成的数据可以被封包化并路由到其它设备或从其它设备路由以执行操作或传送操作的结果。然而,由于可编程逻辑器件的电路设计可以由用户针对特定应用定制,因此,在这些器件的逻辑结构中使用的相对大的基于扇区的寄存器可能会针对电路设计而对逻辑结构内的区域过度分配。
附图说明
通过阅读以下详细描述并参考附图,本公开的优点将变得显而易见,其中:
图1是根据实施例的用于对集成电路进行编程的系统的框图;
图2是根据实施例的图1的集成电路的框图;
图3是根据实施例的包括图1的集成电路和存储器的应用系统的框图;
图4A是根据实施例的使用扇区分配实现的图1的集成电路的可编程逻辑的框图;
图4B是根据实施例的使用微扇区分配实现的图1的集成电路的可编程逻辑的框图;
图5是根据实施例的图4B的可编程逻辑的框图;
图6是根据实施例的图5的可编程逻辑的微扇区的框图;
图7是根据实施例的可编程逻辑的一部分和用于该可编程逻辑的一部分的至少一些控制电路的框图;
图8是根据实施例的图6的行控制器和微扇区的框图;
图9是根据实施例的用于控制图8的行控制器的操作的数据分组的图示;
图10是根据实施例的图8的行控制器和微扇区的框图;以及
图11是根据实施例的用于对图4B的可编程逻辑的部分重新配置的方法的流程图。
具体实施方式
下面将描述本公开的一个或多个具体实施例。为了提供这些实施例的简明描述,在说明书中并未描述实际实现方式的所有特征。应该意识到,在任何此类实际实现方式的开发中,就像在任何工程或设计项目中一样,必须做出许多特定于实现方式的决策来实现开发人员的特定目标,例如遵守与系统相关和与业务相关的约束,这可能因实现方式而异。此外,应当意识到,这样的开发工作可能是复杂和耗时的,但是对于受益于本公开的普通技术人员而言,它仍然是设计、装配和制造的例行工作。本文提出和要求保护的技术被引用并应用于实际性质的实物和具体示例,它们明显改善了当前的技术领域,并且因此,不是抽象的、无形的或纯理论的。
在介绍本公开的各种实施例的元素时,冠词“一(a)”、“一(an)”和“该(the)”旨在表示存在一个或多个元素。术语“包括”、“包含”和“具有”旨在是包括性的,并且表示除了所列元素之外可能还有其它元素。此外,应当理解,对本公开的“一个实施例”或“实施例”的引用并不旨在被解释为排除也并入了所述特征的附加实施例的存在。此外,短语A“基于”B旨在表示A至少部分地基于B。此外,除非另有明确说明,否则术语“或”旨在包含性的(例如,逻辑OR)而非排他性的(例如,逻辑异或(XOR))。换言之,短语A“或”B旨在表示A、B或A和B两者。
可编程逻辑器件越来越渗透市场,并且越来越多地使客户能够在逻辑结构(例如可编程逻辑)中实现电路设计。由于可编程逻辑器件的高度可定制性,在使用对应于电路设计的电路之前,逻辑结构将被配置有电路设计。当在逻辑结构中实现设计时,扇区可用于将逻辑结构的一部分分配给电路的实现。然而,至少部分地由于数据寄存器和可编程逻辑器件的互连的物理布置,扇区可能是总逻辑结构区域的相对不精确和/或大的分配。
通过重新布置可编程逻辑器件的一些互连和/或通过缩小数据寄存器的数据宽度,可以改进用于在逻辑结构中实现电路设计的系统和过程。例如,通过进行这些改变中的一些,可以减小扇区的大小并形成微扇区,从而允许使用相对更精细的分配粒度来将逻辑结构分配给电路设计。例如,这可以允许将资源更有效地分配给各个电路设计,并且因此使电路设计能够在实现中使用更少的资源。
由于针对可编程逻辑器件的电路设计可以由用户针对特定应用进行定制,因此用于以细粒度和/或并行方式划分和控制器件的配置(可以通过互连的重新布置和/或数据寄存器的数据宽度的缩小来提供)的能力实现了具有可编程逻辑的设备特有的许多优势。一些优势可能在于设备的构造,而一些优势可能在于启用的设备的使用模型(例如,启用或允许的用例)。对于设备的构建,细粒度的可配置区域可以是一种机制,用于使得能够构建具有用于实现设备的适合或定制量的资源的该设备。当与用于可编程逻辑器件编程的其它系统和方法相比时,一些新的使用模型是通过针对设备的较小区域进行更快的配置、更快的部分重新配置和更快的单事件更新(SEU)检测来实现的。
系统实现方式中的这些变化还可以改进(例如,减少)整体配置时间,包括减少在执行部分重新配置时使用的配置时间,并且还可以实现更快的单事件翻转(SEU)检测。例如,本文描述的提议的结构改变可以使部分重新配置能够在与正常配置相似的时间量内发生。
微扇区基础结构可以在单个结构行(行区域)中使用较少数量的列(例如,8列与50列)。行区域可以从较小的数据寄存器(例如,与32位数据寄存器不同的1位数据寄存器)接收数据。由于微扇区可能只占可编程逻辑器件面积的相对小的百分比(例如,不到总结构面积的1%),因此让微扇区成为部分重新配置量子可能是可行的。这可以使部分重新配置成为只写入操作,这避免每次针对微扇区发生部分重新配置时都执行读取-修改-写入,从而为部分重新配置节省时间和资源。在一些情况下,部分重新配置时间可能会减少5或6倍,从而引起相对较大量的性能提升。此外,由于列数减少,等要(到行区或从行区)数据传输完成所花费的时间量减少,由此改善可编程逻辑器件的操作。
考虑到上述情况,图1示出了可以实现算术运算的系统10的框图。设计者可能希望在集成电路12(例如,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)之类的可编程逻辑器件)上实现功能性,例如本公开的算术运算。在一些情况下,设计者可以指定要实现的高级程序,例如OpenCL程序,这可以使设计者能够更有效和容易地提供编程指令来配置针对集成电路12的一组可编程逻辑单元,而无需低级硬件描述语言(如Verilog或VHDL)的具体知识。例如,由于OpenCL与诸如C++等的其它高级编程语言非常相似,因此,与需要学习不熟悉的低级硬件描述语言的设计者相比,熟悉这种编程语言的可编程逻辑设计者可能具有更短的学习曲线以实现集成电路12中的新功能。
设计者可以使用设计软件14来实现高级设计,例如INTEL CORPORATION的
Figure BDA0003229038680000041
的版本。设计软件14可使用编译器16将高级程序转换为较低级描述。编译器16可以向主机18和集成电路12提供代表高级程序的机器可读指令。主机18可以接收可以由内核程序20实现的主机程序22。为了实现主机程序22,主机18可以经由通信链路24将指令从主机程序22通信到集成电路12,通信链路24可以是例如直接存储器存取(DMA)通信或快速外围组件互连(PCIe)通信。在一些实施例中,内核程序20和主机18可以启用集成电路12上的逻辑块26的配置。逻辑块26可以包括电路和/或其它逻辑元件,并且可以被配置为实现算术运算,例如加法和乘法。
设计者可以使用设计软件14来生成和/或指定低级程序,例如上述的低级硬件描述语言。此外,在一些实施例中,可以在没有单独的主机程序22的情况下实现系统10。此外,在一些实施例中,本文描述的技术可以在电路中实现为非可编程电路设计。因此,本文描述的实施例旨在说明而非限制。
现在转向集成电路12的更详细的讨论,图2是作为可编程逻辑器件(例如现场可编程门阵列(FPGA))的集成电路12的示例的框图。此外,应当理解,集成电路12可以是任何其它合适类型的可编程逻辑器件(例如,ASIC和/或专用标准产品)。如图所示,集成电路12可以具有输入/输出电路42,以用于驱动信号关闭设备并经由输入/输出引脚44从其它设备接收信号。互连资源46(例如,全局和局部垂直和水平导线和总线)和/或配置资源(例如,硬连线耦合、未由用户逻辑实现的逻辑耦合)可用于在集成电路12上路由信号。另外,互连资源46可包括固定互连(导线)和可编程互连(即,在各个固定互连之间的可编程连接)。可编程逻辑48可以包括组合和顺序逻辑电路。例如,可编程逻辑48可以包括查找表、寄存器和复用器。在各种实施例中,可编程逻辑48可以被配置为执行定制逻辑功能。与互连资源相关联的可编程互连可以被认为是可编程逻辑48的一部分。
可编程逻辑器件(例如集成电路12)可以包括具有可编程逻辑48的可编程元件50。例如,如上所述,设计者(例如,客户)可以(重新)编程(例如,(重新)配置)可编程逻辑48以执行一个或多个期望功能。举例来说,一些可编程逻辑器件可以通过使用掩模编程布置来配置可编程元件50而被编程或重新编程,这在半导体制造期间执行。其它可编程逻辑器件可以在已经完成半导体制造操作之后进行配置,例如通过使用电编程或激光编程来对可编程元件50进行编程。通常,可编程元件50可以基于任何合适的可编程技术,例如熔丝、反熔丝、电可编程只读存储器技术、随机存取存储器单元、掩模编程元件等。
许多可编程逻辑器件是电编程的。通过电编程布置,可编程元件50可以由一个或多个存储器单元形成。例如,在编程期间,使用引脚44和输入/输出电路42将配置数据加载到存储器单元中。在一个实施例中,存储器单元可以实现为随机存取存储器(RAM)单元。本文描述的基于RAM技术的存储器单元的使用旨在仅作为一个示例。此外,由于这些RAM单元在编程期间加载有配置数据,因此它们有时被称为配置RAM单元(CRAM)。这些存储器单元可以各自提供对应的静态控制输出信号,该静态控制输出信号控制可编程逻辑48中相关联的逻辑组件的状态。例如,在一些实施例中,输出信号可以施加到可编程逻辑48内的金属氧化物半导体(MOS)晶体管的栅极。
记住图1和图2的讨论,用户(例如,设计者)可以利用设计软件14在集成电路12的可编程逻辑48上实现逻辑块26。特别地,设计者可以在高级程序中指定执行数学运算,例如加法和乘法。编译器16可以将高级程序转换为用于编程可编程逻辑48以执行加法的低级描述。
一旦被编程,集成电路12就可以处理数据集60,如图3所示。图3是包括集成电路12和存储器64的应用系统62的框图。应用系统62可以表示一种设备,其使用集成电路12来基于来自集成电路12等的计算结果来执行操作。集成电路12可以直接接收数据集60。数据集60可以在传输到集成电路12之前、期间或同时被存储到存储器64中。
随着带宽和处理期望的增加,例如响应于第五代(5G)和更高通信技术的出现和/或神经网络的广泛使用(例如,机器学习(ML)和/或人工智能(AI)计算)来执行计算,集成电路12可以预期随着时间而处理大小后续增加的数据集60。还可以预期集成电路12执行对使用5G或更高技术传输的信号(例如,更高吞吐量和/或高数据传输带宽的信号)的数字信号处理操作和ML操作。这些期望的应用也可以在运行时动态地实现,例如在部分重新配置期间,该重新配置使得在集成电路的运行时操作期间配置集成电路12的一部分而不使得配置集成电路12的另一部分。至少出于这些原因,可能期望改进配置方法以满足技术计算的复杂性和定时规范。为此,至少包括可编程逻辑48、输入/输出引脚44和互连资源46的可编程逻辑66可以利用1位数据寄存器来使用微扇区(重新)配置可编程逻辑48。使用微扇区来对可编程逻辑48中的电路功能进行编程可以提供以下优点:启用只写重新配置,相对较小的区域SEU检测(例如,1位检测区域),用于重新配置区域的相对较小的粒度,以及相对较大的并行配置(例如,1位宽度的数据通道的并行配置)操作。如本文所用,术语“微扇区”是指可编程逻辑的扇区,其具有相对较小的数据寄存器。在一个示例中,微扇区具有1位数据寄存器。在一些实施例中,微扇区可具有更大的数据寄存器,但仍可小于通常在扇区中发现的数据寄存器(例如,可小于32位、小于16位、小于8位)。
为了详细说明用于重新配置区域的较小粒度,图4A是示例性可编程逻辑66的框图。可编程逻辑66可以包括控制器76,用于对可编程逻辑66进行编程。当被编程时,可编程逻辑66的电路可以用于执行数字信号处理、机器学习处理、计算、逻辑功能等(例如,由部分78表示)。然而,可编程逻辑66可以被划分为相对较大的逻辑扇区,并且因此部分80可以被分配给与对应于部分78的电路区域相对的电路。这种资源的过度分配可能会浪费电路,因为部分80和部分78之间的大小差异代表未充分利用的可编程逻辑66。注意,当部分重新配置可编程逻辑66时,可能期望满足某些速度度量(例如,部分重新配置可能需要以相对快的时间量完成)。在这些情况下,例如,可能会发生资源的过度分配,因为可能会改善资源的分配的较慢的配置速度可能是不希望。
实际上,如果设备内置于多个扇区的可编程逻辑中,则该设备可能具有比期望被分配以用于构件设备相比更多或更少的逻辑(例如,逻辑算术块(LAB)、数字信号处理(DSP)块)。由于使用矩形数量的扇区来实现示例性设备,因此可能会发生这种过度分配。通过重新布置互连和/或缩小数据寄存器的数据宽度以形成微扇区,可以分配相对更精确的逻辑量(例如,更准确的LAB或DSP块的数量)来实现设备。
当在使用微扇区逻辑划分的可编程逻辑66中实现由部分78表示的电路时,如图4B所示,在实现电路时可以浪费更少的可编程逻辑66。图4B是使用微扇区实现的可编程逻辑66的框图。实际上,微扇区可允许对应于部分78的电路在由部分82表示的区域中实现。虽然未按比例绘制,但实现对应于部分78的电路的部分82有效地利用可编程逻辑66,其中实现部分78的部分80否则可能会低效地利用可编程逻辑66。
为了进一步详细说明微扇区架构,图5是可编程逻辑66的框图。可编程逻辑66可以使用互连资源46在微扇区92之间耦合。实际上,互连资源46可以包括数据移位寄存器、寄存器、逻辑门、直接耦合、可重新编程电路等的任意适当的组合,其能够用于将数据从可编程逻辑66内和/或集成电路12内的第一位置移动到第二位置。一个或多个微扇区92可由控制器76用信息进行编程以执行电路的功能,所述电路例如对应于部分78的电路。然而,由于控制器76可以传输配置数据(或任何合适的数据),所以用于将功能编程到可编程逻辑66中的区域的粒度可以减小。当这些粒度减小或变得更精确(例如,更小)时,可编程逻辑66的编程可以改进,因为可以在可编程逻辑66中更有效地配置电路设计。注意,可编程逻辑66和/或集成电路12可以是任何合适类型的软件或硬件,或两者的组合。集成电路12和/或可编程逻辑66可以是或包括可编程逻辑48、可编程元件50等,以使得一个或多个部分能够重新编程(例如,可重新配置)。控制器76可以使用互连资源46与微扇区92接口,该互连资源46可以包括接口总线,例如高级接口总线(AIB)和/或嵌入式多管芯互连桥(EMIB)。如上所述,可编程逻辑66可以是能够执行多种任务的可重编程电路。
图6是两个示例性微扇区92(例如,微扇区92A、微扇区92B)的框图。本申请描述了微扇区92的特定架构,但是应当理解,可以使用任何合适的架构。实际上,每个微扇区92可以包括一个或多个逻辑访问块(LAB)104(例如,八个LAB),其能够与互连资源46(这里示出为经由地址寄存器106(AR)与微扇区92通信)接口。实际上,互连资源46可以包括一个或多个AR 106以发送和/或来自微扇区92的信号,以及或替代其它控制电路、逻辑电路(例如,AND门、OR门、或非门、异或门、触发器、开关复位(SR)锁存器)等。还应当理解,相同或相似的电路可以包含于每个微扇区92中。
LAB 104可以通过地址行缓冲器(ALB)108从AR 106接收数据。ALB 108中的每个可以包括数字信号处理(DSP)电路和/或控制电路,其将数据从用于传输到微扇区92A的合适格式转换为用于由LAB 104的电路使用的合适格式。
每个LAB 104可以包括一定数量的算术逻辑元件电路(ALE)110电路(例如,十个ALE 110)。微数据寄存器(μDR)112可以设置在至少一些ALE 110上,例如在另一层硅或其它材料中,用于物理地形成集成电路。μDR 112将每个LAB 104通信地耦合到ALB 108。LAB 104的每个ALE 110可以共享和/或耦合到LAB宽控制块(LCB)114。LAB 104通过路由结构116彼此分离(例如,配置随机存取存储器(CRAM),配置存储器)。在该示例中,μDR 112经由对应于微扇区92A的一行电路的中心穿过LCB 114。
为了进一步详细说明在AR 106和微扇区92之间的互连,图7是在AR 106中实现的行区域(行区域)124和行控制器126的框图,示出了来自图6的行控制器126和微扇区92之间的通信地耦合。注意,有时可以根据行区域124来引用微扇区92,因为如制造商设计(例如,制造商IP)或用户设计(例如,用户IP)之类的设计可以加载到微扇区92中以用于实现。AR106可以包括任何合适的控制系统电路和/或逻辑电路。实际上,AR 106可以是来自INTELCORPORATION的
Figure BDA0003229038680000091
Figure BDA0003229038680000092
Figure BDA0003229038680000093
的地址寄存器。此外,AR 106被示为设置在至少两个微扇区92之间,然而存在一些实例,其中AR 106可以仅由微扇区92的一个列区域128设置(例如,定向在AR 106的右侧或AR 106的左侧)以容纳可编程逻辑66或集成电路12的物理边界或避免支持左以及右数据移动模式。各个行区域124和列区域128在同一物理板上被布置为网格。
每个行控制器126可以控制微扇区的行区域124,并因此与早先描述的ALB 108相关联或者是ALB 108。对于微扇区实现方式,AR 106可以在微扇区92的列区域128(例如,列区域128A、列区域128B、列区域128C、列区域128D)之间重复和共享。例如,列区域128A与列区域128B共享AR 106A,并且邻近列区域128C布置。列区域128C的微扇区92可以与列区域128D的微扇区92共享AR 106B。因此,可以使用由AR 106B的行控制器126生成和/或发送的信号来控制列区域128C的微扇区92,该信号独立于经由AR 106A发送的至少一些信号。虽然是同一行区域124的一部分,但微扇区92C可以与微扇区92B不同地受到控制,因为微扇区92与不同的列区域128相关联。此外,虽然是相同列区域(例如,列区域128C)的一部分,但微扇区92可以与微扇区92D不同地受到控制,因为微扇区92从单独的行控制器126(例如,行控制器126A、行控制器126B)接收控制信号。可以形成微扇区92以将行区域124分成更小的部分,并且从而提供更小的粒度。
行控制器126可以使用任何合适的通信协议来发送和/或接收来自各个微扇区92的信号。例如,行控制器126可以使用诸如AXI 4流送的流送协议来接收在内部写入寄存器处(例如,在相应行控制器126的内部)同一符号中(例如,同一分组传输)的地址和对应于地址的数据。
每个AR 106可以包括在AR 106列区域的底部或顶部的本地扇区管理器(LSM)130(例如,LSM 130A、LSM 130B)。例如,LSM 130A被示出在AR 106A列区域的顶部并且通信地耦合到AR 106A列区域。LSM 130A还可以设置在可编程逻辑66外部。如图所示,每个AR 106可以包括一个LSM 130,但是应当理解,LSM 130可以由两个或多个AR 106共享,使得一个LSM130控制两个或更多个AR 106。
有时,LSM 130可以与AR列管理器(CM)132(例如,CM 132A、CM 132B)集成以形成相应的扇区列管理器(SCM)。CM 132可以负责管理在其对应的AR 106和互连资源46之间的事务。例如,CM 132A可以与LSM 130A协调以向微扇区92A和微扇区92B发送命令。CM和LSM 130可以涉及从集成电路12的其它部分或从其它微扇区92将命令(例如,配置指令)路由到某些微扇区92。在互连资源46涉及使用片上网络的情况下,CM 132可以管理在片上网络和对应的AR 106之间的事务。这种布置可以允许在经由互连资源46实现的主桥和从桥之间进行相对高带宽的数据移动,因为例如CM 132可以帮助协调在多个微扇区和/或多个AR 106之间的传输,从而传输可以在时间和/或序列上并行或至少部分地协调。
控制器(例如控制器76)可以向LSM 130和/或CM 132中的每一个传输分组,该分组包括用于执行配置和配置的测试的数据和命令。为实现该配置,一个或多个LSM 130可生成可由相应行控制器126解释的相应命令,其中相应命令可用于控制一个或多个微扇区92的配置。从控制器76传输到LSM 130的数据和命令可以对应于由要在管理(例如,通信地耦合)到相应LSM 130的微扇区92的子集中实现的配置表示的电路设计的一部分。一旦在可编程逻辑66中实现配置(或至少部分实现的),一个或多个LSM 130可以测试实现的配置以验证该配置按预期运行。可以使用由LSM 130从控制器76接收到的数据和命令的一部分来执行测试。LSM 130可以测试对应于其相应的列区域128和行区域124的相应交叉的电路设计的相应部分在时间上与可编程逻辑66的附加部分的编程(例如,配置)至少部分重叠,例如同时继续对一个或多个其它行区域124、列区域128或微扇区92进行编程(例如,配置)。一旦可编程逻辑66的每一部分被编程,LSM 130就可以在操作中协调并对在一个或多个微扇区92中实现的一个或多个电路设计执行系统范围的测试。执行的测试可包括除了验证整个电路如何操作外还验证电路的各部分如何操作。每个LSM 130可以作为其微扇区92的本地集合的管理引擎来操作。
实际上,每个行控制器126可以从其对应的LSM 130接收命令,并且可以对该命令进行解码以生成控制信号。控制信号可以控制微扇区92的对应行区域124的操作。例如,耦合在微扇区92C和微扇区92E之间的行控制器126A可以生成用于控制设置在同一行区域124中的微扇区92C和微扇区92E的操作的控制信号。此外,与控制多个列区域128的LSM 130相反,每个LSM 130可以控制两个列区域128。
例如,LSM 130可以生成与读和写入操作相关联的命令。在一些情况下,LSM 130还可以命令行控制器126在将数据传输到相应的微扇区92之前解压缩(例如,解码)与该命令相关联的数据。行控制器126可以被认为是配置端点,其可以被LSM 130和/或控制器76经由互连资源46读取和/或写入以读取或写入数据(例如,配置数据、测试数据)到微扇区92。注意,虽然示出为包括43个行区域124和43个行控制器126,但在集成电路12中可以使用任何适当数量的行区域124、列区域128等,以实现本文描述的系统和方法。
为了进一步详细说明访问微扇区92,图8是相应行控制器126和相应微扇区92的框图。为了便于解释,引用了行控制器126A和微扇区92A。然而,应当理解,这些描述适用于每个行控制器126和/或微扇区92。
行控制器126可以经由数据路径144从LSM 130接收命令。实际上,LSM 130可以使用数据路径144将命令作为一个或多个分组(例如,数据分组)进行传输。标识符解码器(ID解码)块146可以解码分组的标识符(ID)。通过读取分组的ID并与存储的ID指示进行比较,ID解码块146可以识别分组是否与行控制器126A相关和/或分组是否旨在由行控制器126A接收。ID解码块146可以使用一个或多个查找表、寄存器值和/或其标识符的存储指示。数据路径144可由相应AR 106的每个行控制器126共享。因此,数据路径144还可继续到AR 106A的后续行控制器126。
当ID解码块146识别出分组是用于行控制器126A时,有限状态机(FSM)148可以执行逻辑排序以将分组移出数据路径144。从分组接收到的寄存器值可以存储在配置随机存取存储器(CRAM)寄存器150中。注意,CRAM寄存器150可以替代地在触发器电路或其它逻辑电路中实现,但是基于CRAM的寄存器可以将合适的存储器存储能力提供给触发电路或其它逻辑电路,同时使用较小的占用空间。
寄存器值可以被整个行控制器126A中的其它组件引用。例如,从分组,FSM 148和/或ID解码块146可以接收指示寄存器值(R)的信号。响应于寄存器值,FSM 148可以生成指示状态机状态(S)的信号。状态机状态可由FSM 148维持,其中FSM 148的FSM的状态可响应于从CRAM寄存器150接收到的寄存器值(R)和/或响应于来自ID解码块146的输出而改变。FSM148可以将状态机状态(S)输出到CRAM寄存器150。响应于从FSM 148输出的状态机状态(S),开关电路可以改变状态以改变行控制器126A内部的数据路径。
一些CRAM寄存器150可能不会响应于由行控制器126A接收到的分组而改变。例如,可以在行控制器126A的初始配置时设置存储在控制器标识符(ID)寄存器153中的标识符数据。然而,如果行控制器126A没有预先设置存储在ID寄存器153中的标识符数据,则行控制器126A可以将ID寄存器153的值(例如,存储的标识符)设置为包括在分组中的标识。
CRAM寄存器150可以包括存储控制位的控制(CNTL)寄存器154。控制位可以定义行控制器126A如何与数据路径144交互,例如行控制器126A如何从数据路径144接收和/或访问分组。例如,控制位可以向ID解码块146指示哪个分组子集与行控制器126A相关并因此应该从数据路径144中取出。CRAM寄存器150还可以包括用于存储配置位的配置(CNFG)寄存器156。配置位可以传输到FSM 148和/或FSM 158以改变行控制器126的操作,例如基于FSM148和/或FSM 158的状态执行的操作。AR寄存器160可以存储由AR 106(例如,AR 106A)设置的配置位,例如以定义一个或多个行控制器126的操作。
由FSM 148生成的状态机状态(S)可以由FSM 158接收。因此,FSM 158的状态可以基于FSM 148的状态。FSM 158可以使用状态机状态(S)和/或接收到的寄存器值(R)来管理用于执行读取操作以读取微扇区92A的CRAM、写入操作以读取微扇区92A的CRAM、读取操作以读取微扇区92A的用户寄存器,写入操作以写入微扇区92A的用户寄存器,和/或执行SEU检测操作以检测微扇区92A的编程中的错误的序列。
在一些情况下,行控制器126A的随机存取存储器(RAM)162也可以接收由FSM 148生成的状态机状态(S)。RAM 162可以用作配置操作的存储设备。由于RAM 162包括易失性存储器,因此经由RAM 162提供的存储设备可以是临时存储设备。来自数据路径144的分组和/或要传输到数据路径144的分组可以在经由数据路径144传输之前和/或之后临时存储在RAM 162中。用于从RAM 162读取的操作可以基于由读指针(RPTR)块164指示的数据。用于写入RAM 162的操作可以基于由写指针(WPTR)块166指示的数据。可以使用由RPTR块164的数据指示的指针在从RAM 162读取数据时来使提供给RAM 162的地址提前,由此提供用于访问由RAM 162存储的数据的指针的实时调整。注意,在RAM 162不包含于行控制器126A的情况下,也可以省略支持电路。例如,在没有RAM 162的情况下,可以省略一些开关电路(例如,152B、152C)以及一些或全部FPGA结构接口控制信号,因为数据加载可以经由通过μDR 112的传输来执行。在一些情况下,当将数据移入或移出数据路径144时,FSM 148可以控制由RPTR块164和/或WPTR 166指示的地址;和/或当将数据移入或移出微扇区92A时,FSM 158可以控制由PRTR块164和/或WPTR 166指示的地址。
行控制器126A可以通过使用解码器块168(独热解码)要由WPTR块166指示的地址转换为独热解码值(例如,温度计编码值,10000000、00000001)。独热编码值可用于选择要写入或读取的CRAM。注意,对于独热编码值,整数值(例如,地址或另一整数编码变量)可以被替换(例如,转换)为新的二进制变量,其中可以为每个唯一整数值添加二进制值(例如,如在111110编码情况中的逻辑低位“0”或逻辑高位“1”)。这样,十的地址可以表示为“0000000001”或“1111111110”,而四的地址可以由“0001”或“1110”表示,这基于编码是使用“1”还是“0”来代表各种整数值。可以基于特定的系统实现方式来使用其它格式。
行控制器126A还可以包括并行-串行转换器块170(P2S S2P)。并行-串行转换器块170可以将数据的格式从并行改变为串行,反之亦然,从而数据可以串行移入和/或移出μDR112,该μDR 112可以包括串行耦合的单独数据寄存器172(例如,数据寄存器(DR)172A、DR172B、DR 172C、DR 172N)。
每个DR 172可以包括逻辑门电路和/或串行移位电路的任何合适的组合。例如,DR172A可以包括一个或多个触发器、SR锁存器、复用电路等,以使得行控制器126A能够将数据移入和/或移出与微扇区92A相关联的相应的可编程逻辑66(例如,设置在区域174中)。实际上,对应于微扇区92A的可编程逻辑66的区域174可以包括上面至少关于图6描述的LAB104、ALE 110、LCB 114和/或路由结构116。
微扇区92A有时可以包括扫描寄存器(μSR)176。μSR 176可以具有任何合适的数据宽度,并且被示为1位宽的寄存器。实际上,μSR 176可以包括一个或多个扫描寄存器178(例如,扫描寄存器(SR)178A、SR 178B、SR 178C、SR 178N)。行控制器126A可以使用SR 178来扫描用户寄存器(例如,DR 172)进入以及从用户寄存器(例如,DR 172)出去的数据,以测试被编程到可编程逻辑66的区域174中的功能,如图11中详述的。
注意,经由数据路径144接收到的命令可以是任何合适的格式或长度。一种示例性格式在图9中示出。
图9是传输到行控制器126的示例性命令的图示。有时经由数据路径144传输的分组190被示为流送数据分组,这与直接传输的数据分组相对。以这种方式,AR 106的每个行控制器126可以监视数据路径144,并根据自身传输的分组190识别分组190是否与相应行控制器126的操作相关(例如,意味着用于相应的行控制器126)。流送数据分组190可以使用如Avalon流送或AXI 4流送的协议来发送。
分组190被示为包括报头192、写入数据194和时隙196以用于读数据。分组190以及因此报头192、写入数据194和时隙196中的每一个可以由分别对应于1个字或16位或2个字节的数据198的部分构成,但是这些大小可以基于特定实现方式和/或用于传输分组190的特定协议而被配置。分组190的报头192可以描述目标行控制器126的地址和要由目标行控制器126要执行的操作。由报头192指示的地址可以以不同的行控制器126可解释的方式识别目标行控制器126,使得目标行控制器126可以识别分组190何时用于它自己(例如,经由报头192,报头192包括其自己的地址,或匹配针对目标行控制器126的标识符的至少一部分)。例如,第一行控制器126可以访问报头192以确定报头192是否将其识别为目标行控制器126。当报头192识别第一行控制器126时(例如,在标识符之间发生匹配),第一行控制器126可以将数据分组190从数据路径144(例如,共享数据路径144)移位以完成所指示的操作(例如,命令)。然而,当报头192识别另一行控制器126时,第一行控制器126可以将分组190返回到数据路径144,使得分组190可以传输到设置在数据路径144中相对于行控制器126的下游的另一或随后耦合的行控制器126。分组的后续部分包括写入数据194和/或时隙以用于读取数据,该数据将包含于分组190中以用于返回到控制器76、LSM 130和/或CM 132或其它合适的电路的传输。
报头192本身可以包括命令。例如,不同的报头192包括不同的命令和不同数量的附加数据以支持不同命令的执行和/或指示。有时,报头192包括被编码的命令,例如通过使用8位命令编码。编码命令可以提供功能的扩展和/或通过将指示命令的数据压缩成更小的尺寸来增加包含于报头192中的信息量,以命令目标行控制器126。可以使用更多或更少的位来执行命令编码。例如,一些报头192可以指示寄存器写入命令,而其它报头192可以指示写数据命令和/或读时隙命令。生成分组190的组件可以包括未分配的命令空间,以为其它拦截设备保留时隙来将命令添加到报头192,例如在稍后但在经由数据路径144传输之前。
在一些情况下,目标行控制器126接收断言的分组结束信号,该断言的分组结束信号指示符号(例如,数据的一部分)是分组的最后一个符号。分组结束信号可以由控制器76、LSM 130和/或CM 132或其它合适的电路生成并传输到行控制器126。在一些情况下,目标行控制器126可以访问分组长度参数,并跟踪(例如,使用计数器)接收到的符号数量以确定符号何时是分组的最后一个符号。
由对应于报头192A的编码命令指示的寄存器写入命令可以配置目标行控制器96以及请求读取操作发生(例如,指示读取操作)。报头192A的寄存器写入命令可以被认为是单循环消息,其包括要写入行控制器126的寄存器(例如,一个或多个CRAM寄存器150)的立即数据。关键寄存器写入消息之一是允许对存储在寄存器地址处的数据的读取的读取请求。
为了进一步详细说明微扇区92A的操作,图10是微扇区92A和行控制器126A的框图。图10从配置的角度示出了微扇区92A的相应LAB 104,但是应当理解,可以存在本文未具体示出或描述的LAB 104的许多附加功能。注意,LAB 104包括ALE 110和LCB 114,并且微扇区92A包括与LAB 104分离但与ALE 110和/或与LCB 114互连的DR 172和SR 178。
LAB 104的组件可以与配置存储器接口,配置存储器例如配置RAM(CRAM)210(C),或者可编程逻辑66中的能够在(重新)配置操作(或部分重新配置操作)期间被配置的部分。微扇区架构可以支持两类操作—CRAM操作和用户寄存器操作。CRAM操作可由控制μDR 112的逻辑支持,而用户寄存器操作可由控制μSR 176的逻辑支持。
μDR 112可以至少部分地通过跨每个DR 172设置操作模式来在各种操作模式下操作。例如,开关电路212A可以用于控制在其中各个DR 172被操作的操作模式。当开关电路212中的每个均被设置为“0”时,μDR 112可以在CRAM写入模式(例如,示例性写入序列)中操作。也就是说,当每个相应的DR 172为模式“0”时,CRAM写入数据被允许通过DR A寄存器214移位。DR A寄存器214可以包括串联耦合到附加触发器的触发器,其中每个DR 172可以包括另一DR A寄存器214。写入信号(未示出)可以允许数据线(DL)216被来自DR A寄存器214的数据驱动。当μDR 112在CRAM写入模式下操作时,可以断言要写入的CRAM 210的行的地址线218(CRAM地址),从而允许将数据写入地址CRAM帧。需要提醒的是,写入地址线218的地址可以是以单热解码值(例如,00001、10000、001)中表示的地址,由此使得能够使用单个逻辑高位来选择哪一个CRAM 210用于特定的写入(或如下所述的读取操作)。
当开关电路212中的每个均被设置为“2”时,μDR 112有时可以在CRAM读取模式(例如,示例性读取序列)下操作。也就是说,当每个相应的DR 172被设置为模式“2”时,读取信号可以允许DL 216被来自所选CRAM 210的数据驱动。可以使用地址线218选择CRAM 210的一部分。例如,可以断言要被读取的CRAM 210的行的地址线218,导致该数据的CRAM帧被驱动到DL 216。从CRAM 210的所选行读取的数据被输出到DL 216并加载到DR A寄存器214中。在微扇区92A行的结束(例如,当数据已向下移动到图8所示的DR 172N时),来自DR A寄存器214的DR输入下一信号耦合到DR输出优先信号路径(例如,输入到DR B寄存器220中),允许来自所选CRAM 210的数据被移回微扇区92A。注意,DR输入下一信号路径和/或DR输出优先信号路径可以是1位宽,或任何合适的数据宽度。以这种方式,读取数据可通过DR A寄存器214的至少一部分和DR B寄存器220的至少一部分(例如,每个的至少一个触发器)从所选CRAM 210传输到微扇区92A。
在另一时间,当开关电路212中的每个均被设置为“1”时,μDR 112还可以在另一操作模式—CRAM SEU检测模式(例如,示例性序列)—操作。也就是说,当每个相应的DR 172设置为模式“1”时,当前读取的CRAM 210值在被加载到DR A寄存器214之前可以与来自一个或多个先前CRAM列移位的读取数据的数据进行异或。
微扇区92A还可包括扫描寄存器(μSR)176,例如,用于执行设计验证操作或验证操作。μSR 176被示为1位宽的寄存器。实际上,μSR 176可包括一个或多个SR 178。SR 178可用于扫描来自RAM 162的进以及出用户寄存器(例如,DR 172)的测试数据以测试被编程到可编程逻辑66的区域174的功能,如图8所示。实际上,用户数据(例如,实现数据)可以通过ALE110(例如,ALE 110A到ALE 110E)用户寄存器222的顶部集合和扫描触发器224中的任一个或通过ALE 110(例如,ALE 110J到ALE 110F)用户寄存器222的底部集合和扫描触发器224经由数据路径226(例如,LAB扫描输入数据路径226A、LAB扫描输出数据路径226B)进行移位。
当处于扫描模式时,从μDR 112向上通过最顶部的扫描触发器224然后向下通过每个扫描触发器224返回到μDR 112形成扫描链。在LAB 104的顶部处用于ALE 110A的扫描触发器224的D输入上的复用器接收来自μDR输出(例如,LAB扫描输入数据路径226A)的扫描输入。在最顶部的ALE 110A行和μDR 112之间的扫描块从位于其上方的ALE 110行接收到LAB扫描输入数据路径226A上的复用器的扫描输入。
例如,为了执行验证操作,测试数据可以在被移位到ALE 110的底部集合(例如,ALE 110J到ALE 110F)之前被移位到ALE 110的顶部集合(例如,ALE 110A到ALE 110E)。可以经由切换电路228在哪些ALE 110之间进行切换,切换电路228接收诸如来自控制器76、行控制器126、CRAM寄存器150等的“选择顶部”(SEL TOP)控制信号。可以针对每个微扇区92重复该过程,直到每个微扇区92都加载了每个μSR 176。在一些情况下,该过程至少部分并行重复。一旦被加载,扫描加载信号(未示出)就可以被断言,例如由控制器76、LSM 130和/或CM 132,以经由LAB扫描输入数据路径226A将扫描值加载到用户寄存器222。在将扫描值加载到用户寄存器22之后,扫描加载信号被取消断言并且用户寄存器222被计时。对于一个或多个微扇区92,来自用户寄存器的值被加载到对应的SR 178中,并经由LAB扫描输出数据路径226B移出,这允许将测试数据的新值加载到用户寄存器(例如,ALE 110)。
当行控制器126包括RAM 162时,来自ALE 110的用户数据可以在验证操作时临时存储在RAM 162中,例如通过基于测试数据验证计算结果如预期和/或者通过验证用于重新加载SR 178的定时以匹配预期定时值和/或在预期定时值的差异阈值内。一旦测试完成,就可以使用类似的数据移位过程将用户数据从RAM 162重新加载到ALE 110中。
为了进一步详细说明数据如何通过μSR 176串行移位,当将测试数据加载到用户寄存器222中时,第一SR 178A可以首先在其触发器230处接收测试数据。触发器230可以经由LAB扫描输出数据路径226B将来自用户寄存器222的数据输出到第二SR 178B的随后耦合的下一触发器230。这可以重复,直到来自用户寄存器222的用户数据到达最后一个SR 178N的触发器230。来自用户寄存器222的用户数据被计时到触发器234,因为来自开关电路228的输出(例如,扫描输入下一信号路径)被耦合到最后一个SR 178N的触发器234的输入(例如,扫描输出优先信号路径),这允许用户数据被计时回相应的行控制器126以临时存储在RAM 162中,同时继续将测试数据加载到每个用户寄存器222中。注意,扫描输入下一信号路径和/或扫描输出优先可以是1位宽,或任何合适的数据宽度。可以使用与用于加载测试数据相同的过程来重新加载用户数据,但是可以从每个相应行控制器126的RAM 162中读取用户数据以分别加载到微扇区92A中。
为了对配置存储器(CRAM 210)进行编程,可能会发生某些操作。这些操作可以包括写入命令、读取命令等的序列。例如,为了初始配置的微扇区92A,控制器76可以向微扇区92A分配特定标识符(例如,用于将标识符写入ID解码块146的写入命令),并针对微扇区92A对行控制器126A的CRAM寄存器150执行热复位。热复位可以在已知的安全功能状态下操作针对微扇区92A的控制寄存器,而不影响微扇区92A和/或行控制器126A的电路的配置状态。控制器76然后可以改变一个或多个开关电路(例如,开关电路152、其它复用器电路)的状态以对微扇区92A内的CRAM功率复用器供电。控制器76可以继续写入冗余和操作条件(例如,功率(P)、电压(V)、温度(T))控制设置、访问控制设置、认证设置等。当微扇区92A和/或行控制器126A配置有上述初始操作设置时,控制器76可以写入冻结控制并允许微扇区92A脱离或置于用户模式,以允许微扇区92A将电路设计或电路设计的一部分加载到其配置存储器和/或电路中。
另一命令示例是“写入RAM内容,读取RAM内容”控制序列,例如可以在行控制器126包括RAM 162的情况下使用。可以由控制器76使用这些命令来从数据路径144读取RAM 162的内容或将其写入数据路径144以经由数据路径144访问。可以对RAM 162中的本地地址(LADDR)执行对RAM 162的写入,其中要被写入的数据与分组190一起经由数据路径144传输。可以从RAM 162中的LADDR执行从RAM 162的读取,并且要被读取的数据被放置在消息时隙(例如时隙196)中。类似地,可以使用经由RAM 162向数据路径144或自数据路径144传输数据的相同方法来完成对微扇区92A内的配置存储器(例如,CRAM 210)和/或其它电路(例如,LAB 104)的读取或写入。以这种方式,要被写入配置存储器的数据可以从数据路径144访问,并在写入配置存储器之前被存储在RAM 162中。反过来也适用,其中要从配置存储器读取的数据在被写入到数据路径144之前被写入到RAM 162,作为存储在传出分组190的时隙196中的数据。
为了进一步详细说明集成电路12及其系统的示例性操作,图11是用于执行具有微扇区架构的可编程逻辑66的部分重新配置的过程248的流程图。应注意,虽然以特定次序描绘,但过程248的框可能不代表操作的详尽列表,并且可以执行更多或更少的操作和/或可以完全跳过至少一些框。如本文所述,过程248被描述为由控制器76执行,但是应当理解,任何合适的处理和/或控制电路可以执行控制器76的一些或所有操作,例如,CM 132、LSM 130或集成电路12的其它控制电路中的一个或多个。
在框250处,控制器76可以将第一配置数据写入到配置存储器的第一部分(例如,CRAM 210),并且可以将第二配置数据写入到配置存储器的第二部分(例如,CRAM 210)。第一配置数据和第二配置数据可以是与将一个或多个电路设计或计算功能实现到可编程逻辑66相关联的配置数据,并且因此可以与用户电路设计和/或要由设备的提供商或制造商结合设备包括或由任意适当设计软件生成的电路设计相关联。在将配置写入可编程逻辑66之后,控制器76可以确定调整配置,例如调整使用可编程逻辑66执行的操作,调整使用可编程逻辑66执行的计算,以将附加特征添加到在CRAM 210的两个部分中实现的电路设计等。
响应于确定调整配置,在框252处,控制器76可以确定至少部分地通过将第三配置数据写入已经存储的第一配置数据来调整经由配置存储器的第一部分执行的操作。这可以是不涉及读取和修改操作的直接写入操作来调整第一配置数据。
为此,在框254处,控制器76可以将与配置存储器的第一部分相关联的用户逻辑与配置存储器的第二部分隔离。可以沿着微扇区92边界重新配置配置存储器,其中配置存储器的第一部分可以具有第一微扇区92,并且其中配置存储器的第二部分可以具有第二微扇区92。对应于配置存储器的第一部分的用户逻辑通过使用本文描述的寻址技术来引用DR172和CRAM 210和/或用户寄存器222的特定交集,在功能上可以与包括配置存储器的第二部分的配置存储器的其它部分隔离。上述寻址技术(例如参考图10作为示例)可以允许第一ALE 110A的配置存储器210与任何其它ALE 110(例如,ALE 110B、ALE 110C等)的配置存储器210和/或也包括在第一ALE 110A的配置存储器分开引用。注意,隔离操作可以不用于配置存储器210。微扇区可以根据其性质这样做。然而,CRAM 210控制的功能用户逻辑可以在功能上被隔离。这意味着,如果该用户逻辑正在执行第一操作(例如,转换A)并被重新配置以执行第二操作(例如,转换B),则数据将停止流经用户逻辑,同时发生编程操作中的转换。在第二操作的配置完成之后,数据可以返回到用户逻辑,例如,通过使用在重新配置期间保持稳定的变化区域外部的接口处的就绪和有效信号(例如,作为来自FSM 158的微扇区控制信号)。
应注意,当集成电路12的一部分未被用于特定数据传输或处理操作时,集成电路12的该部分可被功率门控或在低功率状态下操作。在这些降低的功耗状态下,集成电路12可以消耗更少的电力,从而降低应用系统62的整体功耗。
一旦被隔离,在框256处,控制器76可以将第三配置数据直接写入配置存储器的第一部分而不调整或读取配置存储器的第二部分。一旦被写入,在框258处,控制器76可以基于写入配置存储器的第一部分中的第三配置数据并基于写入配置存储器的第二部分中的第二配置数据来执行操作。
虽然在本公开中阐述的实施例可易于进行各种修改和替代形式,但具体实施例已经通过示例的方式在附图中示出并且已经在本文中进行了详细描述。例如,可以实现本文描述的实施例和/或技术的任何合适的组合。此外,可以使用任何合适的数字格式组合(例如,单精度浮点、半精度浮点、bfloat16、扩展精度等)。此外,每个DSP电路和/或DSP架构可以包括任何合适数量的元件(例如,加法器、乘法器64、路由等)。因此,应当理解,本公开不旨在限于所公开的特定形式。本公开将涵盖落入由以下所附权利要求限定的本公开的精神和范围内的所有修改、等同和替代。
本公开的技术效果包括提供微扇区架构的系统和方法。通过允许可编程结构的编程发生在结构的较小区域上,本文描述的微扇区架构可以有益于可编程逻辑器件的操作,例如现场可编程门阵列和/或其它可配置器件。本文描述的系统和方法可以使1位宽的数据寄存器(例如,微数据寄存器(μDR))能够向或从可编程结构的较小区域传输数据。通过减小用于将功能编程到可编程逻辑器件中的扇区的大小,配置速度可以增加,因为可以并行执行相对大量的配置操作,减少用于(重新)配置可编程逻辑结构和/或可编程电路的时间量。实际上,微扇区架构还可以改进部分重新配置操作,或在可编程逻辑器件操作时或运行时执行的配置操作,以使配置方法能够改进以及配置速度。例如,微扇区架构可以消除或减少使用读取-修改-写入配置方案来重新配置可编程逻辑器件的一部分的可能性。例如,加载在可编程逻辑中的设备配置可以从配置存储器读取到可编程逻辑外部的存储器,在配置存储器外部修改,然后重写(如修改)到配置存储器以重新配置配置存储器。通过使用微扇区架构,要修改的用户逻辑可以在功能上与附近或相邻的配置存储器隔离以保持不变,例如至少利用图11大体上描述的。然而,微扇区电路的结构隔离了在不同微扇区之间的配置存储器,允许跳过显式隔离操作以将要重新配置的配置存储器与不被重新配置的配置存储器隔离。这些过程可以降低重新配置操作的复杂性以及减少用于重新配置的时间量,因为该过程可能变成只写入操作,其将配置数据直接写入要修改的配置存储器和/或不依赖于配置存储器的隔离操作。
本文提出和要求保护的技术被引用并应用于实际性质的实物和具体示例,它们明显改善了当前的技术领域,因此,不是抽象的、无形的或纯理论的。此外,如果附加到本说明书末尾的任何权利要求包含被指定为“用于[执行][功能]……的手段”或“用于[执行][功能]……的步骤”的一个或多个元素,则旨在此类元素应根据35U.S.C.112(f)进行解释。然而,对于包含以任何其它方式指定的元素的任何权利要求,这些元素不应根据35U.S.C.112(f)进行解释。
本公开的示例性实施例
以下编号的条款定义了本公开的某些示例性实施例。
条款1
一种集成电路,包括:
以行和列网格布置的多个微扇区,其中多个微扇区包括通信地耦合到第一行控制器的第一微扇区;以及
控制器,其被配置为将命令和数据从第二行控制器传输到第一行控制器,从行向下一列,其中第一行控制器被配置为响应于命令而使用数据执行操作。
条款2
示例性实施例1的集成电路,其中,所述多个微扇区包括设置在所述行和列网格内的与所述第一微扇区不同位置处的第二微扇区,其中,所述行控制器被配置为与对所述第二微扇区进行编程至少部分并行地对所述第一微扇区进行编程。
条款3
示例性实施例1的集成电路,其中,所述多个微扇区包括设置在所述行和列网格内的与所述第一微扇区不同行处的第二微扇区,并且其中,所述行控制器被配置为与对第一微扇区进行编程至少部分并行地对所述第二微扇区进行编程。
条款4
示例性实施例1的集成电路,包括设置在所述第一行控制器下方的第三行控制器,其中,所述第三行控制器和所述第一行控制器耦合到共享数据路径,并且其中,所述第一行控制器被配置为在所述第二行控制器被允许访问所述命令之前访问经由所述共享数据路径发送的所述命令。
条款5
示例性实施例4的集成电路,其中,流送数据分组包括所述命令和所述数据,并且其中,所述流送数据分组包括所述命令作为报头的一部分。
条款6
示例性实施例4的集成电路,所述第一行控制器被配置为:
确定所述报头同与所述第一行控制器相关联的标识符的至少一部分匹配;以及
将所述数据分组从所述共享数据路径移位,以停止经由所述共享数据路径传输所述数据分组。
条款7
示例性实施例4的集成电路,其中,所述报头包括对要由目标行控制器执行的命令的指示,并且其中,所述报头包括对所述目标行控制器的指示。
条款8
示例性实施例1的集成电路,其中,所述第一微扇区包括多个逻辑访问块,所述多个逻辑访问块中的每个耦合到数据寄存器。
条款9
示例性实施例8的集成电路,其中,所述数据寄存器包括1位宽的数据路径、第一触发器和第二触发器,并且其中,所述1位宽的数据路径耦合在所述第一触发器和所述第二触发器之间。
条款10
一种方法,包括:
从数据路径接收数据分组,其中,所述数据路径耦合到多个行控制器;以及
使用有限状态机来生成多个控制信号,以至少部分地基于通过使用与微扇区的配置存储器分开设置的所述微扇区的1位数据寄存器来将所述数据分组中的至少一些移位到所述配置存储器,而将所述数据分组中的至少一些写入所述配置存储器。
条款11
示例性实施例10的方法,包括:
确定数据分组包括:
与存储在解码器中的标识符匹配的报头;
对应于要存储在第一寄存器中的配置数据的第一数据部分;以及
对应于要写入所述配置存储器中的数据的第二数据部分;以及
将所述第一数据部分存储在第一寄存器中,并且将所述第二数据部分存储在易失性存储器中。
条款12
示例性实施例11的方法,包括至少部分地基于被写入所述第一寄存器中的第一数据部分来生成所述多个控制信号。
条款13
示例性实施例11的方法,包括经由设置在可编程逻辑器件的可编程逻辑外部的本地扇区管理器来生成所述数据分组,其中,所述报头被配置为指示要由所述多个行控制器中的相应行控制器实现的所述命令。
条款14
示例性实施例10的方法,包括:
接收包括来自数据路径的报头的后续数据分组,其中,所述数据路径耦合到多个行控制器;
确定所述报头与存储在解码器中的标识符不匹配;以及
将所述后续数据分组返回到数据路径以用于传输到另一行控制器。
条款15
一种系统,包括:
可编程逻辑电路,其包括多个配置存储器;
第一控制电路,其被设置在所述可编程逻辑外部并且在同一板上;以及
第二控制电路,其被设置在所述可编程逻辑的各部分之间并且在所述同一板上,其中,所述第二控制电路被配置为:
经由数据路径从所述第一控制电路接收数据分组,其中,所述数据路径耦合到与所述第二控制电路相关联的多个行控制器;以及
至少部分地基于所述数据分组,使用所述多个行控制器中的第一相应行控制器来生成控制信号,其中,所述控制信号用于从微扇区读取或写入到微扇区,所述微扇区包括所述多个配置存储器寄存器的子集。
条款16
示例性实施例15的系统,其中,所述第二控制电路被配置为至少部分地基于通过至少一次将目标数据移位通过所述微扇区的每个1位数据寄存器,来从所述微扇区的多个配置存储器寄存器的子集读取数据。
条款17
示例性实施例15的系统,其中,所述第二控制电路被配置为至少部分地基于通过不超过一次将目标数据移位通过所述微扇区的相应的1位数据寄存器,来将数据写入所述微扇区的多个配置存储器寄存器的子集。
条款18
示例性实施例15的系统,其中,所述微扇区包括用于执行验证操作的扫描寄存器。
条款19
示例性实施例15的系统,其中,所述第一控制电路被配置为生成所述数据分组,其中,所述数据分组包括报头,所述报头被配置为指示要由多个行控制器的相应的行控制器实现的命令。
条款20
示例性实施例15的系统,其中,第一相应的行控制器被配置为接收所述数据分组,并且在验证所述数据分组包括具有与第一相应的行控制器的标识符匹配的标识符的报头之后,生成多个控制信号以实现由所述报头指示的命令。

Claims (20)

1.一种集成电路,包括:
以行和列网格布置的多个微扇区,其中,所述多个微扇区包括通信地耦合到第一行控制器的第一微扇区;以及
控制器,其被配置为将命令和数据从第二行控制器发送到所述第一行控制器,从行向下一列,其中,所述第一行控制器被配置为响应于所述命令而使用所述数据执行操作。
2.根据权利要求1所述的集成电路,其中,所述多个微扇区包括设置在所述行和列网格内的与所述第一微扇区不同位置处的第二微扇区,其中,所述第一行控制器被配置为与对所述第二微扇区进行编程至少部分并行地对所述第一微扇区进行编程。
3.根据权利要求1所述的集成电路,其中,所述多个微扇区包括设置在所述行和列网格内的与所述第一微扇区不同行处的第二微扇区,并且其中,所述第二行控制器被配置为与对所述第一微扇区进行编程至少部分并行地对所述第二微扇区进行编程。
4.根据权利要求1所述的集成电路,包括设置在所述第一行控制器下方的第三行控制器,其中,所述第三行控制器和所述第一行控制器耦合到共享数据路径,并且其中,所述第一行控制器被配置为在所述第二行控制器被允许访问所述命令之前访问经由所述共享数据路径发送的所述命令。
5.根据权利要求4所述的集成电路,其中,流送数据分组包括所述命令和所述数据,并且其中,所述流送数据分组包括所述命令作为报头的一部分。
6.根据权利要求5所述的集成电路,其中,所述第一行控制器被配置为:
确定所述报头同与所述第一行控制器相关联的标识符的至少一部分匹配;以及
将所述数据分组从所述共享数据路径移位,以停止经由所述共享数据路径传输所述数据分组。
7.根据权利要求5所述的集成电路,其中,所述报头包括对要由目标行控制器执行的所述命令的指示,并且其中,所述报头包括对所述目标行控制器的指示。
8.根据权利要求1所述的集成电路,其中,所述第一微扇区包括多个逻辑访问块,所述多个逻辑访问块中的每个耦合到数据寄存器。
9.根据权利要求8所述的集成电路,其中,所述数据寄存器包括1位宽的数据路径、第一触发器和第二触发器,并且其中,所述1位宽的数据路径耦合在所述第一触发器和所述第二触发器之间。
10.一种方法,包括:
从数据路径接收数据分组,其中,所述数据路径耦合到多个行控制器;以及
使用有限状态机来生成多个控制信号,以至少部分地基于通过使用与微扇区的配置存储器分开设置的所述微扇区的1位数据寄存器来将所述数据分组中的至少一些移位到所述配置存储器,而将所述数据分组中的至少一些写入所述配置存储器。
11.根据权利要求10所述的方法,其中,所述数据分组包括:
与存储在解码器中的标识符匹配的报头;
对应于要存储在第一寄存器中的配置数据的第一数据部分;以及
对应于要写入所述配置存储器中的数据的第二数据部分;以及
其中,所述方法包括将所述第一数据部分存储在所述第一寄存器中,并且将所述第二数据部分存储在易失性存储器中。
12.根据权利要求11所述的方法,包括至少部分地基于被写入所述第一寄存器中的第一数据部分来生成所述多个控制信号。
13.根据权利要求11所述的方法,包括经由设置在可编程逻辑器件的可编程逻辑外部的本地扇区管理器来生成所述数据分组,其中,所述报头被配置为指示要由所述多个行控制器中的相应行控制器实现的所述命令。
14.根据权利要求10所述的方法,包括:
将包括报头的后续数据分组从所述数据路径接收到耦合到所述数据路径的行控制器;
确定所述报头与存储在解码器中的标识符不匹配;以及
将所述后续数据分组发送到另一行控制器。
15.一种系统,包括:
可编程逻辑电路,其包括多个配置存储器寄存器;
第一控制电路,其被设置在所述可编程逻辑外部并且在同一板上;以及
第二控制电路,其被设置在所述可编程逻辑的各部分之间并且在所述同一板上,其中,所述第二控制电路被配置为:
经由数据路径从所述第一控制电路接收数据分组,其中,所述数据路径耦合到与所述第二控制电路相关联的多个行控制器;以及
至少部分地基于所述数据分组,使用所述多个行控制器中的第一行控制器来生成控制信号,其中,所述控制信号用于从微扇区读取或写入到微扇区,所述微扇区包括所述多个配置存储器寄存器的子集。
16.根据权利要求15所述的系统,其中,所述第二控制电路被配置为至少部分地基于至少一次将目标数据移位通过所述微扇区的相应的1位数据寄存器,来从所述微扇区的多个配置存储器寄存器的子集读取数据。
17.根据权利要求15所述的系统,其中,所述第二控制电路被配置为至少部分地基于不超过一次将目标数据移位通过所述微扇区的相应的1位数据寄存器,来将数据写入所述微扇区的多个配置存储器寄存器的子集。
18.根据权利要求15所述的系统,其中,所述微扇区包括用于执行验证操作的扫描寄存器。
19.根据权利要求15所述的系统,其中,所述第一控制电路被配置为生成所述数据分组,其中,所述数据分组包括报头,所述报头被配置为指示要由所述第一行控制器实现的命令。
20.根据权利要求15所述的系统,其中,所述第一行控制器被配置为接收所述数据分组,并且在验证所述数据分组包括具有与所述第一行控制器的相对应的标识符匹配的标识符的报头之后,生成所述控制信号以实现由所述报头指示的命令。
CN202110980812.7A 2020-09-25 2021-08-25 基于微扇区基础结构的逻辑结构 Pending CN114253602A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/033,342 2020-09-25
US17/033,342 US12057836B2 (en) 2020-09-25 2020-09-25 Logic fabric based on microsector infrastructure

Publications (1)

Publication Number Publication Date
CN114253602A true CN114253602A (zh) 2022-03-29

Family

ID=74102439

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110980812.7A Pending CN114253602A (zh) 2020-09-25 2021-08-25 基于微扇区基础结构的逻辑结构

Country Status (4)

Country Link
US (1) US12057836B2 (zh)
EP (1) EP3975427A3 (zh)
JP (1) JP2022054412A (zh)
CN (1) CN114253602A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11960734B2 (en) * 2020-09-25 2024-04-16 Intel Corporation Logic fabric based on microsector infrastructure with data register having scan registers
US12057836B2 (en) 2020-09-25 2024-08-06 Intel Corporation Logic fabric based on microsector infrastructure

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6255848B1 (en) * 1999-04-05 2001-07-03 Xilinx, Inc. Method and structure for reading, modifying and writing selected configuration memory cells of an FPGA
US7571303B2 (en) 2002-10-16 2009-08-04 Akya (Holdings) Limited Reconfigurable integrated circuit
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US10523207B2 (en) 2014-08-15 2019-12-31 Altera Corporation Programmable circuit having multiple sectors
US9973194B2 (en) * 2015-09-01 2018-05-15 Flex Logix Technologies, Inc. Block memory layout and architecture for programmable logic IC, and method of operating same
US11257526B2 (en) * 2018-01-11 2022-02-22 Intel Corporation Sector-aligned memory accessible to programmable logic fabric of programmable logic device
US10673440B1 (en) * 2019-08-13 2020-06-02 Xilinx, Inc. Unified programmable computational memory and configuration network
US12057836B2 (en) 2020-09-25 2024-08-06 Intel Corporation Logic fabric based on microsector infrastructure
US20230251839A1 (en) 2022-02-10 2023-08-10 SambaNova Systems, Inc. Head Of Line Blocking Mitigation In A Reconfigurable Data Processor

Also Published As

Publication number Publication date
US20210013885A1 (en) 2021-01-14
JP2022054412A (ja) 2022-04-06
EP3975427A2 (en) 2022-03-30
US12057836B2 (en) 2024-08-06
EP3975427A3 (en) 2022-06-15

Similar Documents

Publication Publication Date Title
US20210326193A1 (en) Processing System With Interspersed Processors DMA-FIFO
US10698853B1 (en) Virtualization of a reconfigurable data processor
US6483342B2 (en) Multi-master multi-slave system bus in a field programmable gate array (FPGA)
US6731133B1 (en) Routing structures for a tileable field-programmable gate array architecture
US6803785B1 (en) I/O circuitry shared between processor and programmable logic portions of an integrated circuit
US20240241650A1 (en) Logic fabric based on microsector infrastructure with data register having scan registers
EP3975427A2 (en) Logic fabric based on microsector infrastructure
US9673824B2 (en) Techniques and circuitry for configuring and calibrating an integrated circuit
EP4020246A1 (en) Micro-network-on-chip and microsector infrastructure
EP4020810A2 (en) Debug trace microsectors
EP4206835A1 (en) Systems and methods to reduce voltage guardband
US20240345884A1 (en) IC Device Resource Sharing
Koch et al. Intra-FPGA Communication Architectures for Reconfigurable Systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20241008

Address after: California, USA

Applicant after: Altera Corp.

Country or region after: U.S.A.

Address before: California, USA

Applicant before: INTEL Corp.

Country or region before: U.S.A.