CN112437925A - 可编程集成电路的分层局部重构 - Google Patents
可编程集成电路的分层局部重构 Download PDFInfo
- Publication number
- CN112437925A CN112437925A CN201980048365.2A CN201980048365A CN112437925A CN 112437925 A CN112437925 A CN 112437925A CN 201980048365 A CN201980048365 A CN 201980048365A CN 112437925 A CN112437925 A CN 112437925A
- Authority
- CN
- China
- Prior art keywords
- local reconstruction
- local
- region
- container
- module
- 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
Links
- 238000013461 design Methods 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims description 61
- 230000003068 static effect Effects 0.000 claims description 45
- 238000005192 partition Methods 0.000 claims description 12
- 230000036961 partial effect Effects 0.000 claims description 6
- 230000015654 memory Effects 0.000 description 30
- 230000008569 process Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- 230000000670 limiting effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000001364 causal effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- CIWBSHSKHKDKBQ-JLAZNSOCSA-N Ascorbic acid Chemical compound OC[C@H](O)[C@H]1OC(=O)C(O)=C1O CIWBSHSKHKDKBQ-JLAZNSOCSA-N 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000000692 anti-sense effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- QWXYZCJEXYQNEI-OSZHWHEXSA-N intermediate I Chemical compound COC(=O)[C@@]1(C=O)[C@H]2CC=[N+](C\C2=C\C)CCc2c1[nH]c1ccccc21 QWXYZCJEXYQNEI-OSZHWHEXSA-N 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
-
- 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
-
- 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
- H03K19/17744—Structural details of routing resources for input/output signals
-
- 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/17756—Structural details of configuration resources for partial configuration or partial reconfiguration
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Logic Circuits (AREA)
Abstract
用于集成电路的分层局部重构包括:使用计算机硬件将电路设计的第一局部重构模块转换为(415)第一局部重构容器,其中电路设计被布局和布线;使用计算机硬件将第一网表加载(420)到第一局部重构容器中,其中第一网表包括第一多个局部重构模块,该第一多个局部重构模块最初是空的;并且使用计算机硬件在第一多个局部重构模块中的每个局部重构模块内包括(435)另一网表。使用计算机硬件,实现(440)第一局部重构容器,其中在第一局部重构容器内实现第一多个局部重构模块。
Description
有版权材料中的权利保留
该专利文件的公开内容的一部分包含受版权保护的材料。版权所有者不反对任何人对专利文献或专利公开内容的传真复制,正如其在专利和商标局的专利文件或记录中所表明的一样,但是保留所有版权。
技术领域
本公开涉及集成电路(IC),更具体地涉及可编程IC的局部重构。
背景技术
可编程集成电路(IC)是指包括可编程电路系统的一种IC。可编程IC的一个示例为现场可编程门阵列(FPGA)。FPGA的特征在于包括可编程电路块。可编程电路块的示例包括但不限于输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储块(BRAM)、乘法器、数字信号处理块(DSP)、处理器、时钟管理器、以及延迟锁定环(DLL)。通过将配置比特流加载到可编程IC的配置存储器中,电路设计可以在可编程IC的可编程电路内被物理实现。
局部重构是一种过程,其中可以通过将局部配置比特流加载到可编程IC中来动态重构可编程IC内被称为“局部重构区域”或“PR区域”的可编程电路系统区域。该局部配置比特流可以指定与先前在PR区域中实现的电路系统不同的电路系统。部分配置比特流没有为PR区域之外的可编程电路系统的各个部分指定新电路系统和/或不同电路系统。PR区域可以通过局部重构来重复进行修改,例如,为PR区域加载局部配置比特流,其中不同局部配置比特流指定不同电路系统(或应用),而被称为“静态电路系统”或“静态区域”的可编程IC的可编程电路系统的其他区域继续操作而不会中断。
当使用具有PR区域的电路设计时,PR区域的各种特点保持恒定。虽然PR区域内的电路系统可能会使用局部重构技术随时间的推移发生改变,但是PR区域的边界可能不会改变。如此,诸如PR区域的大小、PR区域的形状、PR区域与其他电路系统的连接性以及PR区域的数目之类的某些特点在可编程IC内保持不变。
发明内容
在一个或多个实施例中,一种方法可以包括:使用计算机硬件将电路设计的第一局部重构模块转换为第一局部重构容器,其中电路设计被布局和布线;使用计算机硬件将第一网表加载到第一局部重构容器中,其中第一网表包括第一多个局部重构模块,这些模块最初是空的;使用计算机硬件在第一多个局部重构模块的每个局部重构模块中包括另一网表;以及使用计算机硬件实现第一局部重构容器以及该第一局部重构容器内的第一多个局部重构模块。
在一个或多个实施例中,一种方法可以包括:在可编程集成电路的静态区域内实现第一电路系统,该第一电路系统由第一局部比特流指定;在可编程集成电路的局部重构容器区域内实现第二电路系统,该第二电路系统由第二局部比特流指定;以及在局部重构容器区域内包含的第一局部重构区域内实现第三电路系统并且在局部重构容器区域内包含的第二局部重构区域内实现第四电路系统,其中第三电路系统由第三局部比特流指定,并且第四电路系统由第四局部比特流指定。
在一个或多个实施例中,一种集成电路可以包括静态区域,该静态区域包括第一可编程电路系统,该第一可编程电路系统被配置为实现与外部设备的接口;以及局部重构容器区域,该局部重构容器区域耦合到静态区域,该局部重构容器区域使用第二可编程电路系统实现对静态区域的接口。局部重构容器区域可以包括第一多个局部重构区域,其中第一多个局部重构区域中的至少一个局部重构区域被耦合到局部重构容器区域。
提供本发明内容章节仅是为了引入某些概念而非标识所要求保护的主题的任何关键特征或必要特征而提供。根据附图和以下具体实施方式,本发明布置的其他特征变得显而易见。
附图说明
在附图中,通过示例,对本发明的布置进行说明。然而,附图不应被解释为将本发明的布置限制为仅示出的特定实现方式。在阅读以下具体实施方式并且参考附图之后,各个方面和优点变得显而易见。
图1图示了与本文中所描述的一个或多个实施例一起使用的数据处理系统的示例。
图2图示了可编程集成电路(IC)的示例。
图3图示了可编程IC的另一示例。
图4图示了分层局部重构的示例方法。
图5A至图5G图示了在图4中执行的示例操作。
图6图示了实现图5G的电路设计的示例IC。
图7图示了PPLOC处置的示例。
图8图示了用于布置和布线的示例技术。
图9图示了分层局部重构的另一示例方法。
图10A至图10E图示了在图9中执行的示例操作。
图11图示了PPLOC处理的另一示例。
图12图示了在IC内实现电路系统的示例方法。
图13图示了IC的示例架构。
具体实施方式
虽然本公开以限定新颖特征的权利要求结尾,但是相信根据结合附图的描述,更好地理解本公开内所描述的各种特征。出于说明的目的,提供了本文中所描述的一个或多个过程、一个或多个机器、一个或多个制造及其任何变型。本公开内容内描述的特定结构和功能细节不应被解释为具有限制性,而仅仅是作为权利要求的基础,并且作为教导本领域的技术人员以不同形式采用以实质上任何适当详述结构描述的特征的代表性基础。进一步地,在本公开内容内使用的术语和短语不旨在具有限制性,而是提供所描述的特征的可理解描述。
本公开涉及集成电路(IC),更具体地涉及可编程IC的局部重构。根据本公开内所描述的发明布置,可编程IC(在本文中也称为“目标IC”)能够维持与外部系统的通信链路,同时经由局部重构在其中实现不同电路系统和/或系统。可编程IC的静态区域用于实现与外部系统进行通信的电路系统。静态区域为硬件加速的用户应用和/或用户指定电路系统(本文中被称为“内核”)提供支持。内核在与静态区域通信的可编程IC的局部重构(PR)区域内实现。
在一些情况下,PR区域与静态区域紧密相关联,并且在大小和边界方面固定。然而,PR区域的固定性质约束了快速重构,如诸如数据中心内使用的应用之类的特定应用经常所需要的。PR区域的固定性质还防止了精细粒度的并行性,其中一个内核集合能够连续计算,同时另一内核集合在目标IC内新实现,以为下一操作集合做准备。
本公开内所描述的发明布置解决了这些问题和其他问题。例如,本公开内所描述的发明布置允许功能即服务(FaaS)用户根据需要定制硬件加速平台设计。使用本文中所描述的实施例,用户能够将单个默认计算区域定制为具有针对用户的特定应用并且针对其进行优化的多个计算区域的完全定制平台设计。一般而言,FaaS是一种云计算服务,其提供了一个平台,该平台允许客户开发、运行和管理应用功能性,而没有构建和维护通常与开发和启动应用相关联的基础架构的复杂性。
另外,本文中所描述的示例实施例能够将局部配置比特流(以下称为“局部比特流”)的数目从“N choose M”个局部比特流减少到“NxM”个局部比特流,其中N为PR区域的数目,M为可以在给定PR区域中实现的运行时功能的数目。
在一个或多个实施例中,在目标IC上提供PR容器区域。PR容器区域可以耦合(例如,通信链接)到静态区域。PR容器区域可以包括多个分层嵌套PR区域和/或PR容器区域。进一步地,PR容器区域内的一个或多个PR区域可以被变换为PR容器区域,其中每个可以包括其他多个PR区域。这样,PR区域可以分层嵌套在PR容器区域内。这允许用户在目标IC内形成PR区域的分层达任意深度。
在一个或多个其他实施例中,PR容器区域内的PR区域的边界可以通过将不同的PR容器区域加载到可编程IC中来修改。每个不同的PR容器区域可以包括不同数目的PR区域和/或其中容纳的PR区域的不同边界。仍然,由于在目标IC内实现了不同的PR容器区域,所以静态区域能够维持与外部系统的通信链接。
在特定实施例中,PR容器区域内的PR区域不会彼此接触或相交。PR区域缺乏重叠和/或接触允许PR容器区域的一个PR区域进行局部重构,而静态电路系统以及PR容器区域内的任何其他PR区域继续不间断操作。结果,由于一些内核能够继续运行而其他不同的内核在目标IC内实现,所以增加了目标IC的数据吞吐量。
在传统局部重构方案中,如本文中所描述的示例实施例所提供的PR区域中的增加粒度不可用。这导致以下情形:跨越目标IC(例如,使用更少和更大的PR区域)执行局部重构的宽度比需要的宽度大。结果,可以暂时关闭许多内核或计算单元,以便在目标IC内实现新内核和/或计算单元和/或不同的内核和/或计算单元,从而在局部重构操作期间降低数据吞吐量或可能暂时中止目标IC的数据吞吐量。
下文参考附图对本发明的布置的其他方面进行更详细地描述。为了说明的简洁性和清楚性,附图中所示的元件未必按比例绘制。例如,为了清楚起见,元件中的一些元件的尺寸可能相对于其他元件被放大。进一步地,在认为适当的情况下,附图中重复附图标记以指示对应特征、类似特征或相似特征。
图1图示了与本文中所描述的一个或多个实施例一起使用的示例系统100。系统100为可以用于实现计算机、服务器、诸如膝上型计算机或平板计算机之类的便携式计算机、或其他数据处理系统的计算机硬件的示例。使用计算机硬件实现的系统或设备能够执行本文中所描述的与处理电路设计以用于在IC内实现的各种操作。
在图1的示例中,系统100包括至少一个处理器105。处理器105通过接口电路系统115耦合到存储器110。系统100能够在存储器110内存储计算机可读指令(也称为“程序代码”)。存储器110为计算机可读存储介质的示例。处理器105能够执行经由接口电路系统115从存储器110访问的程序代码。
存储器110可以包括一个或多个物理存储器设备,诸如例如,本地存储器和大容量存储设备。本地存储器是指在实际执行程序代码期间通常使用的(多个)非永久性存储器设备。本地存储器的示例包括随机存取存储器(RAM)和/或适合于处理器在执行程序代码期间使用的各种类型的RAM中的任一种(例如,动态RAM或“DRAM”或静态RAM或“SRAM”)。大容量存储设备是指永久性数据存储设备。大容量存储设备的示例包括但不限于硬盘驱动器(HDD)、固态驱动器(SSD)、闪存、只读存储器(ROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)或其他合适存储器。系统100还可以包括一个或多个高速缓冲存储器(未示出),其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储设备中取回程序代码的次数。
存储器110能够存储程序代码和/或数据。为了说明的目的,存储器110存储操作系统125、一个或多个应用130、以及电路设计135。在一个或多个实施例中,(多个)应用130包括电子设计自动化(EDA)应用。EDA应用能够执行设计流程中的一个或多个操作(例如,合成、布局、布线、和/或比特流生成),并且本文中所描述的各种操作与目标IC内电路设计135的实现以及局部重构有关。目标IC可以具有与结合图13所描述的架构相同或相似的架构。
系统100(例如,处理器105)能够执行操作系统125和(多个)应用130以执行本公开中所描述的操作。如此,操作系统125和(多个)应用130可以被认为是系统100的集成部分。进一步地,应当领会,系统100(例如,处理器105)所使用、生成和/或操作的任何数据都是被当作为系统的一部分采用时赋予功能性的功能数据结构。
接口电路系统115的示例包括但不限于系统总线和输入/输出(I/O)总线。接口电路系统115可以使用多种总线架构中的任一总线架构来实现。总线架构的示例可以包括但不限于增强型工业标准架构(EISA)总线、加速图形端口(AGP)、视频电子标准协会(VESA)本地总线、通用串行总线(USB)、以及外围部件互连高速(PCIe)总线。
系统100还可以包括一个或多个I/O设备120,该一个或多个I/O设备120耦合到接口电路系统115。I/O设备120可以直接或通过中间I/O控制器耦合到系统100,例如,接口电路系统115。I/O设备120的示例包括但不限于键盘、显示设备、指向设备、一个或多个通信端口、以及网络适配器。网络适配器是指电路系统,其使得系统100变得能够通过中间专用或公用网络耦合到其他系统、计算机系统、远程打印机和/或远程存储设备。调制解调器、电缆调制解调器、以太网卡、以及无线收发器是可以与系统100一起使用的不同类型的网络适配器的示例。
依据实现的设备和/或系统的特定类型,系统100可以包括比图1所图示的部件更少的部件或图1中未图示的其他部件。另外,所包括的特定操作系统、(多个)应用和/或I/O设备可能会依据系统类型而发生变化。进一步地,说明性部件中的一个或多个说明性部件可以合并到另一部件中,或以其他方式形成另一部件的一部分。例如,处理器可以包括至少一些存储器。系统100可以用于实现单个计算机或多个联网计算机或互连计算机,每个计算机使用图1的架构或与其相似的架构来实现。
在一个或多个实施例中,系统100表示开发系统(例如,EDA系统),其能够处理电路设计135以实现用于实现静态区域、一个或多个不同的PR容器区域以及PR容器区域内的一个或多个PR区域的局部比特流。静态区域实现目标IC内的通信电路系统,该通信电路系统能够经由通信链路与目标IC外部的系统通信。例如,静态区域可以实现能够与主机系统通信的PCIe端点。PR容器区域耦合到静态区域。PR容器区域能够参考用户应用(例如,硬件加速的用户应用)和/或电路设计的用户指定部分实现供内核使用的基础设施电路系统。可以在PR容器区域内包含的一个或多个PR区域内实现内核。系统100可以将得到的电路设计实现为目标IC内的局部比特流。可编程IC 140为目标IC的示例。
在一个或多个其他实施例中,系统100表示运行时系统,例如,主机系统,其中可编程IC 140耦合到接口电路系统115并且用作硬件加速器。例如,可编程IC 140可以安装在电路板上,该电路板上包括可以在操作期间由可编程IC 140使用的附加存储器(例如,RAM,未示出)。在那种情况下,可编程IC 140可以通过处理器105(例如,主机处理器)加载有局部比特流,以随时间的推移在其中实现不同的电路系统。处理器105例如可以执行应用,该应用控制随着时间的推移加载在可编程IC中的特定局部比特流以及随着时间的流逝将特定任务卸载到在可编程IC 140内实现的内核。可编程IC 140可以将任何结果提供回到处理器105。
系统100允许例如FaaS用户根据需要自定义硬件加速平台设计。使用系统100,用户能够将单个默认计算区域定制为具有多个计算区域的完全定制平台设计,该多个计算区域针对用户的特定应用并且针对其进行优化。另外,对于涉及局部重构的设计,本文中所描述的本发明的布置能够将局部比特流的数目从“N choose M”个局部比特流减少到“NxM”个局部比特流。通过减少需要生成的局部比特流的数目,在本公开内描述的发明的布置改善了系统的操作。由于每个局部比特流的生成通常需要数小时的计算时间,所以可以大大减少系统的运行时。通过对如本文中所描述的电路设计进行操作以实现分层局部重构,需要较少的局部比特流,从而改善了系统的操作。
图2图示了可编程IC(IC)200的示例。IC 200为图1的可编程IC 140的示例实现方式。在本公开中,术语“区域”用于是指目标IC的物理部分或区。一般而言,本文中所描述的区域与电路设计的特定模块和/或容器相对应。“PR容器”是指电路设计的逻辑结构,其能够容纳或包括一个或多个PR模块和一个或多个PR容器。“PR容器区域”是指目标IC上与PR容器相对应的区域。如此,PR容器区域可以包括多个PR区域,其中每个PR区域与电路设计的PR模块相对应。然而,PR区域可能不包括另一PR区域。同样,PR模块可以不包括任何其他PR模块。
在图2的示例中,IC 200包括静态区域205和PR容器区域210。静态区域205和PR容器区域210均使用IC 200的可编程电路系统实现。PR容器区域210包括多个用户定义的PR区域215和220。如所描画的,在PR容器区域210内对PR区域215和220进行分层排序。例如,PR区域215和220完全包含在PR容器区域210内。
图2还图示了可以加载到IC 200中以实现所示的不同区域的多个局部比特流。例如,局部比特流230可以加载到IC 200中以在静态区域205内实现电路系统。局部比特流235可以加载到IC 200中以在PR容器区域210内实现电路系统。
PR区域215能够实现多个不同的用户应用,每个用户应用在PR区域215内产生不同的电路系统。在图2的示例中,PR区域215可以通过加载局部比特流240来实现与应用A相对应的电路系统或通过加载局部比特流245来实现与应用B相对应的电路系统。PR区域220可以通过加载局部比特流250来实现与应用C相对应的电路系统或通过加载局部比特流255来实现与应用D相对应的电路系统。
如所图示的,PR区域215不与PR区域220重叠或接触。这允许对PR区域215进行部分重构,而与PR区域220无关。例如,PR区域215可以实现与应用A相对应的电路系统,而PR区域220实现与应用C相对应的电路系统。PR区域215可以被重构为通过在PR区域220继续不间断执行应用C的同时加载局部比特流245来实现与应用B相对应的电路系统(使与应用C相对应的电路系统不间断操作)。同样,PR区域215外部的PR容器区域210的区域可以继续不间断操作,如同静态区域205的情况一样。
在任何时候,主机系统(例如,处理器105)都能够在IC 200内加载实现不同PR容器区域的不同的局部比特流。不同的PR容器区域可以包括数目与图2所示的数目不同的PR区域和/或具有不同边界的相同数目的PR区域,从而允许不同形状和尺寸的PR区域。
为了说明的目的,PR区域215和/或PR区域220可以被变换为PR容器区域。在那种情况下,可以在经变换的PR容器区域中实现一个或多个PR区域。可以对新创建的PR区域迭代执行该过程(例如,变换为PR容器区域),以便在IC 200内创建局部重构分层结构。
图3图示了IC 200的另一示例。在图3的示例中,新局部比特流加载到实现不同的PR容器区域310的IC 200中。PR容器区域310包括四个PR区域315、320、325和330。每个PR区域315、320、325和330均能够通过将不同的局部比特流加载到IC 200中来实现一个或多个不同的应用。图3图示了如何在IC内改变PR区域边界和/或PR区域的数目的示例。
图4图示了分层局部重构的示例方法400。方法400可以由与结合图1所描述的系统100相同或相似的系统执行。方法400图示了细分电路设计的PR模块以实现分层局部重构的示例。为了说明的目的,还参考图5A至图5G对方法400进行描述,该图5A至图5G提供了对电路设计执行的操作的视觉图示。
在框405中,系统能够加载实现的电路设计。实现的电路设计是被布局和布线的电路设计。电路设计包括如图5A所示的静态模块505和PR模块510。对静态模块505和PR模块510进行布局和布线。
在框410中,系统能够移除如图5B所图示的PR模块510的内容。在图5B的示例中,PR模块510的阴影图示了系统已经移除了PR模块510的内容。就这点而言,PR模块510被称为“黑盒”,其是空模块,例如,没有内容但具有“局部重构”和“模块”属性的电路设计的逻辑模块。
在框415中,系统能够将PR模块510转换为PR容器模块515。例如,系统将PR模块510的“模块”属性改变为“容器”。
在框420中,系统能够将网表加载到PR容器515中。图5B图示了被包括在PR容器515内的网表545。被加载到PR容器515中的网表(例如,网表545)包括两个或更多个PR模块520和525,并且在图5C中图示。PR模块520和525中的每个PR模块可以是空的。
在框425中,系统能够将PPLOC从PR容器515重新定位到PR模块520和525中的适当模块的边界。结合图7对PPLOC的重新定位进行更详细地描述。
在框430中,系统能够生成用于PR模块520和525中的每个PR模块的PR模块布图规划。PR模块布图规划指定用于每个PR模块的位置约束。就这点而言,PR模块520的PR模块布图规划指定目标IC内的PR模块520的物理边界。特别地,用于PR模块520的PR模块布图规划指定物理边界完全在PR容器515的物理边界内(例如,在用于PR容器515的布图规划的边界内)。应当领会,由于PR模块510被首先布局和布线,所以可以从框405中加载的原始电路设计中保留与该模块相对应的边界。如此,PR容器515的布图规划可用(例如,相同)。用于PR模块525的PR模块布图规划指定PR模块525的边界完全在PR容器515的边界内。进一步地,PR模块520和PR模块525的边界不会重叠或不会彼此接触。
在一个或多个实施例中,用户可以提供一个或多个用户输入,该一个或多个用户输入指定PR模块520和525中的每个PR模块的物理边界。在特定实施例中,系统可以显示PR容器515所覆盖的目标IC的区域的图形说明。用户可以在PR容器515内绘制具有期望尺寸和位置的矩形,该矩形与PR模块520和525中的每个PR模块相对应。系统可以将用户指定的输入用作用于PR模块520和525中的每个相应PR模块的PR模块布图规划。
在框435中,系统能够在PR模块520和525的每个PR模块内包括网表。图5C图示了网表550包括在PR区域520中,而网表555包括在PR区域525中。例如,用户可以指定要包括在PR模块520内的网表和要包括在PR模块525中的网表。系统在PR模块520和525的每个PR模块内包括用户指定的网表。
在框440中,系统能够实现PR容器515。这样做时,系统能够基于相应PR模块布图规划来实现包括PR模块520和525中的每个PR模块以及包括在其中的相应网表的PR容器515。例如,该系统能够使用用于PR容器515的布图规划对与PR容器515相对应的电路系统进行布局和布线。该系统还能够基于针对PR模块中的每个相应PR模块开发的PR模块布图规划来对PR模块520(例如,网表550)和525(例如,网表555)中的每个PR模块进行布局和布线。图5D图示了完全对其中包括PR模块520和525的PR容器515进行布局和布线的示例。
在一个或多个实施例中,系统可以输出用于PR容器的局部比特流、用于PR模块520的局部比特流、以及用于PR模块525的局部比特流。在实现了框405中的电路设计时,用于静态模块505的局部比特流最初是可用的。
为了生成在与PR模块520和525相对应的目标IC上的PR区域内实现的用于不同应用的其他局部比特流,可以存储图5C中的电路设计的状态起以备后用。从这点开始,该方法可以通过将不同的网表插入到PR模块520和/或PR模块525中并且使用新网表和/或不同网表实现PR模块520和525中的每个PR模块来重复,以生成应用中的每个应用的其他局部比特流。
图5E至图5G图示了可以被执行以进一步细分PR模块的附加过程步骤。例如,可以迭代执行结合方法400所描述的操作,以便在其他PR容器内创建其他PR模块达任意深度。在图5E至图5G的示例中,PR模块525被变换为包括其他PR模块535和540的PR容器530。
参考图5E的示例,该系统能够通过以下各项来生成PR容器530:移除PR模块525的内容、将PR模块525的参数改变为“容器”的参数、以及将其中的包括多个PR模块535和540的网表560加载到如图5F所图示的PR容器530中。PR模块535和540中的每个PR模块可以是空的。在图5E的示例中,PR模块525的阴影图示了系统已经移除了PR模块525的内容。就这点而言,PR模块525被称为黑盒。在图5F的示例中,网表560包括在现在的PR容器530中。系统可以包括进入PR模块535的网表565和进入PR模块540的网表570。然后,系统可以实现PR容器530(例如,对其进行布局和布线)。然后,系统可以实现包括图5G所示的PR模块535和540的PR容器530。
如所讨论的,PR容器和PR模块的分层可以继续达任意深度。进一步地,任何给定PR容器中包括的PR模块的数目可以大于2。例如,用户可以发起使用EDA系统所描述的操作,以将任何PR模块转换为能够包括多个PR的PR容器模块,并且将过程迭代到局部重构分层结构的期望水平。
图6图示了实现图5G的电路设计的示例IC 600。图5A至图5G图示了电路设计的状态的逻辑图示,同时还试图图示与目标IC的物理关系。图6图示了根据图5G所图示的布局和布线的电路设计在IC 600中实现的物理区域。如所描画的,IC 600包括与静态模块505相对应的静态区域605。如所讨论的,静态区域605可以实现能够通过通信总线维持与诸如主机处理器之类的外部系统的通信链路的通信电路系统。IC 600还包括PR容器区域615。一般而言,PR容器区域615图示了实现PR容器515的IC 600上的物理区域。
PR容器区域615包括PR区域620和PR容器区域630。PR区域620图示了实现PR模块520的IC 600上的物理区域。PR容器区域630图示了实现PR容器530的IC 600上的物理区域。PR容器区域630包括PR区域635和PR区域640。PR区域635和640分别是实现PR模块535和540的IC上的物理区域。
在图6的示例中,不同的局部比特流可以加载到IC 600中,并且在操作期间的任何时间加载,以在PR区域620、635和/或640中的任一PR区域内实现不同的电路系统。在主机系统的控制下,可以对PR区域620、635和/或640中的每个PR区域进行重构,而与其他PR区域无关。在另一示例中,在PR区域620和PR容器区域615继续不间断操作时的任何时间,可以在IC600内实现PR区域630的全新实现方式。PR区域630的新实现方式一共可以包括边界与针对PR区域635和640所图示的PR区域的边界不同的PR区域和/或PR区域的数目与针对PR容器区域630所示出的PR区域的数目不同的PR区域。在又一示例中,可以实现具有与图6所示的架构完全不同的架构的PR容器区域615的全新版本。
图6的示例旨在说明不同PR区域之间的独立性,并且说明可以动态重构一个或多个PR区域以实现不同的内核,同时其他PR区域的内核继续在IC 600内不间断操作。这允许IC 600的数据吞吐量保持较高,其中选定内核继续操作,同时在IC 600内的电路系统中实现其他内核以执行不同任务。图6的示例还图示了用户在应用级别能够根据需要控制并改变不同PR区域之间的边界。一般而言,用户应用可以创建给定应用所需的PR容器区域和PR区域的任何分层结构,只要该分层可以在没有包括在静态区域605内的IC 600的可用部分内实现即可。
图7图示了PPLOC处置的示例。PPLOC是指带有参数的分区引脚,该参数指示该分区引脚被锁定并且不能被移动。分区引脚定义了静态模块(静态区域)与PR模块(PR区域)之间或PR模块(PR区域)之间的信号交叉。如结合图4的框425所描述的,PPLOC处置可以作为重构模块的创建的一部分来执行。
图7图示了PPLOC关于电路设计中的分区(例如,模块边界)如何被处置。为了说明的目的,仅针对PR容器515和PR模块525,对PPLOC进行了说明。对于连接到未示出的PR模块520的网络,可能存在其他PPLOC,但可能以相同方式或相似方式处置。
一般而言,系统将跨越PR容器515的边界的连接分为两个不同的类别。第一类别包括没有PPLOC参数的连接。第二类别包括确实具有PPLOC参数的连接。在图7的示例中,单元A(例如,电路块)连接到单元G。单元B连接到单元H和PR模块525。单元C连接到PR模块525。连接A-G、B-H以及C-PR模块525属于第一连接类别。对于第一类别内的连接,系统不采取任何动作。
对于第二类别内的连接,系统选择性地重新定位PPLOC。重新定位PPLOC是指从分区引脚移除“锁定”属性,并且将“锁定”属性添加到另一不同的分区引脚上。对于涉及单元D的连接,系统将PPLOC P1从PR容器515的边界上的分区引脚重新定位到PR区域525的边界上的分区引脚。因为单元D(1)具有位于PR容器525的边界上的PPLOC并且没有连接到PR模块520和525外部的PR容器515内的任何其他单元,所以系统重新定位PPLOC P1。
对于涉及单元E和单元I的连接,由于E-I连接不涉及PR模块525或PR模块520,所以尽管位于PR容器525的边界上,但系统不会移动PPLOC P2。对于连接F-J,由于单元J没有直接连接到PR模块520或PR模块525,所以尽管位于PR容器515的边界上,但是该系统不会移动PPLOC P3。与PR模块525的连接发生在PPLOC P3之后并且在PR容器515内。
图8图示了用于布局和布线的示例技术。图8中图示的技术可以用于实现PR容器515,作为图4的框440的一部分。在图8的示例中,PR容器区域810包括PR区域820和PR区域830。在对与PR容器区域810相对应的PR容器的电路元件进行布局时,系统被约束为根据PR容器区域810的布图规划将这样的电路元件布局在PR容器区域810内除PR区域820和825之外的任何地方。当布线PR容器区域810内的单元的连接时,准许系统使用扩展区域805所表示的扩展区。每个扩展区可以从正在被扩展的底层区(例如,在该示例中,为PR容器区域810)延伸一预先确定的距离。
围合在圆圈中用1标记的连接中的每个连接为必须仅使用位于扩展区域805内的导线进行布线的连接。如此,当对单元E和F之间的连接、单元G与PR区域830之间的连接、PR区域830与单元D之间的连接、以及单元A与PPLOC P2之间的连接进行布线时,系统被约束为仅使用包括扩展区域805的那些布线资源(例如,导线)。
同样,当对与PR区域820和830相对应的PR模块的电路元件进行布局时,系统被约束为分别基于每个PR区域的PR模块布图规划来将电路元件布局在PR区域820和830内。对于位于PR区域820内的单元之间的任何连接,该系统被约束为仅使用位于扩展区域815内的那些布线资源。对于位于PR区域830内的单元之间的任何连接,该系统被约束为仅使用位于扩展区域825内的那些布线资源。
如所描述的,使用本文中所描述的示例实施例,设计者能够创建可能期望的PR容器区域和PR区域的分层结构。这允许在某些PR区域中实现新内核和/或不同的内核,同时在其他PR区域中实现的内核能够不间断继续操作。这可以以任何期望粒度水平执行。在设计者不再需要一个或多个局部重构分层结构水平的情况下,PR区域可以重新组合以减少电路设计内的分层结构水平。
图9示出了分层局部重构的另一示例方法900。更具体地,图4图示了创建附加分层结构,方法900涉及减少电路设计内的局部重构分层结构的数目。方法900可以由与结合图1所描述的系统100相同或相似的系统执行。方法900图示了重新组合电路设计的PR模块从而减少所使用的分层局部重构的数目的示例。为了说明的目的,还参考图10A至图10E对方法900进行了描述,该图10A至图10E提供了对电路设计执行的操作的视觉图示。
在框905中,系统能够加载实现的电路设计。实现的电路设计是一种被布局和布线的电路设计,并且包括局部重构分层结构。如图10A所示,电路设计包括静态模块505、PR容器515、PR模块520、PR容器530、以及PR模块535和540。为了说明的目的,图10A中图示的电路设计是最初结合图5G所描述的电路设计。对所描述的模块和容器中的每个模块和容器进行布局和布线。
在框910中,系统能够执行PPLOC处理。在框910中,该系统能够从PR容器530中移除选定PPLOC并且将其他选定PPLOC从PR模块的边界移动到PR容器530的边界。结合图11对为了重新组合局部重构分层结构水平而进行的PPLOC处置进行更详细地描述。
在框915中,系统能够将PR容器530转换为PR模块525。例如,系统将与PR容器530相关联的属性从“容器”改变为“模块”。图10B中至少部分图示了PR容器530到PR模块525的变换。在框920中,系统能够移除PR模块525的内容。内容的移除会将PR模块525变为黑盒。图10B的阴影图示了PR模块525的黑盒性质。
在框925中,系统能够将网表加载到PR模块525中。如图10B所示,系统可以将网表1005加载到PR模块525中。被加载到PR模块525中的网表(例如,网表1005)可以为标准网表,并且不包括任何PR模块。
在框930中,该系统能够实现PR模块525。例如,该系统能够对PR模块525中包括的网表进行布局和布线。可以根据结合图4所描述的局部重构分层结构的先前生成存储PR模块525的布图规划。PR模块525的布图规划可以用于实现其中加载的网表1005。图10C图示了对PR模块525进行布局和布线的示例。该系统可以生成并输出用于PR模块525的局部比特流。进一步地,通过将不同的网表加载到PR模块525的黑盒版本中然后实现如所描述的这样的网表,该系统可以生成用于其他应用的其他局部比特流。
在图9的示例中,选择PR容器530以进行处理。应当领会,可以对水平比图10中图示的水平更多的局部重构分层结构进行处理,并且用户可以选择该分层结构内的任何重构容器以进行处理,如结合图9所描述的。该处理有效消除了PR容器的PR模块,并且将PR容器变换为PR模块。
出于说明的目的,图10D和图10E图示了可以处理PR容器515的其他处理。在图10D的示例中,系统可以执行PPLOC处理。系统还可以移除PR容器515的内容,从而留下PR容器515的黑盒实现方式。然后,系统可以将PR容器515的参数从“容器”改变为“模块”,从而将PR容器515变换为PR模块510。然后,系统可以将网表1010添加到PR模块510的黑盒版本。
然后,系统可以实现PR模块510。如此,对PR模块510进行布局和布线。进一步地,系统可以生成和/或输出用于PR模块510的局部比特流。在实现PR模块510时,系统可以使用如在结合图4所描述的过程期间生成的用于PR模块510的布图规划。
如所讨论的,PR容器和PR模块的分层结构可以继续达任意深度。用户可以实现重新组合过程以减少来自分层结构内的任何选定PR容器的局部重构分层结构水平的数目。例如,出于说明的目的,在描述9时,首先可以选择PR容器515而非PR容器530。
图11图示了PPLOC处理的另一示例。更特别地,图11图示了用于重新组合局部重构分层结构的水平的PPLOC处理。系统可以在实现图9的框910时执行图11中图示的PPLOC处理。出于说明的目的,针对PR容器530、PR模块535和PR模块540,对PPLOC进行了说明。
一般而言,系统将跨越PR容器530的边界或PR容器530内的连接分为两个不同的类别。第一类别包括没有PPLOC参数的连接。第二类别包括确实具有PPLOC参数的连接。在图11的示例中,单元A(例如,电路块)连接到单元G。单元B连接到单元H和PR模块535。单元C连接到PR模块535。连接A-G、B-H以及C-PR模块535属于第一连接类别。对于第一类别内的连接,系统不采取动作。
对于第二类别的连接,系统选择性地移除和/或重新定位PPLOC。对于涉及单元D的连接,系统将PPLOC P1从PR模块535的边界上的分区引脚重新定位在PR容器530的边界上的分区引脚。一般而言,系统将PPLOC从正在从电路设计中移除的PR模块在分层结构内往上一个水平重新定位到父PR容器。因为单元D具有位于PR模块535的边界上的PPLOC并且未连接到PR模块535和540外部的PR容器530内的任何其他单元,所以系统重新定位PPLOC P1。
对于涉及单元E和单元I的连接,因为PPLOC P2已经位于PR容器530的边界上并且连接E-I不涉及PR模块535或PR模块540,所以系统不会移动PPLOC P2。对于连接F-J,由于PPLOC P3已经位于PR容器530的边界上并且由于单元J没有直接连接到PR模块535或PR模块540,所以系统不会移动PPLOC P3。
对于位于正在从电路设计中移除并且尚未如结合PPLOC P1所描述的进行移动的PR模块的边界上的PPLOC,系统移除这样的PPLOC。例如,系统移除了PPLOC P6和P7,由于这些PPLOC位于正在从电路设计中移除的PR模块的边界上并且处于正在从电路设计中移除的两个PR模块之间的连接。系统还移除了位于正在被移除的PR模块的边界上的PPLOC,该PR模块没有连接到位于父PR容器之外的单元。例如,由于PPLOC P5处于与位于PR容器530中的单元K的连接,所以系统移除了PPLOC P5。由于PPLOC P8位于PR模块535的边界上并且连接的另一端前进到PR容器530的边界上的另一PPLOC P3,所以系统还移除了PPLOC P8。
出于布局和布线的目的,系统可以使用结合图8所描述的布局和布线技术。例如,参考图10B和图10C,当对网表1005进行布局时,系统可以将网表1005的部件布局在与PR模块525相对应的PR区域内。当对PR模块525进行布线时,系统可以使用位于延伸超过与PR模块525相对应PR区域之外的区域内的布线资源。同样,系统可以将网表1010的部件布局在与PR模块510相对应的PR区域内。当对网表1010进行布线时,系统可以使用位于延伸超过与PR模块510相对应的PR区域之外的区域内的布线资源。
图12图示了在IC内实现电路系统的示例方法1200。方法1200可以由主机系统(例如,图1的处理器105)执行,以在目标IC内实现分层局部重构。更具体地,方法1200可以使用目标IC作为硬件加速器由主机系统执行,以在运行时期间实现如本文中所描述的电路系统的不同区域。通过在主机系统的控制下将局部比特流加载到目标IC中,可以使用目标IC的局部重构来执行结合图12所描述的各种区域的实现方式。
在框1205中,主机系统能够在目标IC的静态区域内实现第一电路系统。第一电路系统可以由加载到目标IC中的第一局部比特流来指定。在框1210中,主机系统能够在目标IC的PR容器区域内实现第二电路系统。第二电路系统可以由加载到目标IC中的第二局部比特流来指定。
在框1215中,主机系统能够在PR容器区域内包含的第一PR区域内实现第三电路系统并且在PR容器区域内包含的第二PR区域内实现第四电路系统。第三电路系统可以由加载到目标IC中的第三局部比特流来指定。第四电路系统可以由加载到目标IC中的第四局部比特流来指定。
在第一电路系统、第二电路系统和第四电路系统继续不间断操作的同时,主机系统可以执行其他操作,诸如在PR区域中的一个或两个PR区域内实现不同的电路系统。
主机系统还可以加载其他局部比特流,以在目标IC中实现完全不同的PR容器区域,该完全不同的PR容器区域其中包括一个或多个不同的PR区域。主机可以通过将不同的局部比特流加载到目标IC中来在每个相应的PR区域内实现不同的电路系统。
图13图示了用于IC的示例架构1300。在一个方面中,架构1300可以在可编程IC内实现。例如,架构1300可以用于实现现场可编程门阵列(FPGA)。架构1300也可以表示片上系统(SOC)类型的IC。SOC为包括执行程序代码的处理器和一个或多个其他电路的IC。其他电路可以被实现为硬连线电路系统、可编程电路系统、和/或其组合。电路可以彼此配合操作和/或与处理器配合操作。
如所示出的,架构1300包括几种不同类型的可编程电路,例如,逻辑、块。例如,架构1300可以包括大量不同的可编程图块,这些可编辑图块包括多千兆位收发器(MGT)1301、可配置逻辑块(CLB)1302、随机存取存储器块(BRAM)1303、输入/输出块(IOB)1304、配置和时钟逻辑(CONFIG/CLOCKS)1305、数字信号处理模块(DSP)1306、专用I/O模块1307(例如,配置端口和时钟端口)、以及其他可编程逻辑1308,诸如数字时钟管理器、模数转换器、系统监视逻辑等。
在一些IC中,每个可编程图块包括可编程互连元件(INT)1311,该可编程互连元件(INT)具有往返于每个相邻图块中的对应INT1311的标准化连接。因此,INT 1311一起实现了用于所图示的IC的可编程互连结构。每个INT 1311还包括往返于同一图块内的可编程逻辑元件的连接,如图13顶部处包括的示例所示。
例如,CLB 1302可以包括可配置逻辑元件(CLE)1312,其可以被编程为实现用户逻辑加上单个INT 1311。BRAM 1303可以包括除一个或多个INT 1311之外的BRAM逻辑元件(BRL)1313。通常,图块中包括的INT 1311的数目取决于图块的高度。如所描画的,BRAM图块具有与五个CLB相同的高度,但是还可以使用其他数目(例如,四个)。除了适当数目个INT1311外,DSP图块1306还可以包括DSP逻辑元件(DSPL)1314。除了INT 1311的一个实例之外,IOB 1304例如还可以包括I/O逻辑元件(IOL)1315的两个实例。连接到IOL 1315的实际I/O垫可能不限于IOL 1315的区。
在图13所描画的示例中,例如由区域1305、1307和1308形成的管芯的中心附近的柱状区可以用于配置、时钟、以及其他控制逻辑。从该列延伸的水平区1309可以用于跨越可编程IC的幅度分配时钟和配置信号。
利用图13中图示的架构的一些IC包括附加逻辑块,这些逻辑块破坏了构成IC的大部分的规则柱状结构。附加逻辑块可以为可编程块和/或专用电路系统。例如,被描绘为PROC 1310的处理器块跨过CLB和BRAM的几列。
在一个方面中,PROC 1310可以被实现为专用电路系统,例如,被实现为硬连线处理器,其被制造为实现IC的可编程电路的管芯的一部分。PROC 1310可以表示复杂度范围从单个处理器(例如,能够执行程序代码的单个内核)到具有一个或多个内核、模块、协同处理器、接口等的整个处理器系统的多种不同的处理器类型和/或系统中的任一处理器类型和/或系统。
在另一方面中,可以从架构1300中省略PROC 1310,并且PROC1310可以被更换为所描述的可编程块的其他种类中的一个或多个其他种类。进一步地,这样的块可以用于形成“软处理器”,其中可编程电路系统的各个块可以用于形成可以执行程序代码的处理器,如同PROC 1310的情况一样。
短语“可编程电路系统”是指IC内的可编程电路元件,例如,本文中所表述的各种可编程或可配置电路块或图块,以及根据加载到IC中的配置数据选择性地耦合各种电路块、图块和/或元件的互连电路系统。例如,诸如CLB 1302和BRAM 1303之类的PROC 1310外部的图13所示的电路块被认为是IC的可编程电路系统。
一般而言,可编程电路的功能性不被建立,直到配置数据被加载到IC中。配置比特集合可以用于对诸如FPGA之类的IC的可编程电路系统进行编程。(多个)配置比特通常被称为“配置比特流”。一般而言,在没有首先将配置比特流加载到IC中的情况下,可编程电路系统无法操作或运转。配置比特流有效实现了可编程电路系统内的特定电路设计。电路设计指定例如可编程电路块的功能方面以及各种可编程电路块之间的物理连接性。
被“硬连线”或“硬化”(即,不可编程)的电路系统被制造为IC的一部分。与可编程电路系统不同,不会在通过加载配置比特流制造IC之后实现硬连线电路系统或电路块。硬连线电路系统通常被认为具有例如专用电路块和互连,这些专用电路块和互连在没有首先将配置比特流加载到IC(例如,PROC 1310)中的情况下是功能性的。
在一些实例中,硬连线电路系统可以具有一个或多个操作模式,该一个或多个操作模式可以根据寄存器设置或IC内的一个或多个存储器元件中存储的值来设置或选择。操作模式可以例如通过将配置比特流加载到IC中来设置。尽管具有这种能力,但是由于当硬连线电路系统被制造为IC的一部分时,该硬连线电路可操作并且具有特定功能,所以硬连线电路系统不被认为是可编程电路系统。
在SOC的情况下,配置比特流可以指定要在可编程电路系统内实现的电路系统以及要由PROC 1310或软处理器执行的程序代码。在一些情况下,架构1300包括专用配置处理器,其将配置比特流加载到适当配置存储器和/或处理器存储器。专用配置处理器不执行用户指定的程序代码。在其他情况下,架构1300可以利用PROC 1310来接收配置比特流,将配置比特流加载到适当配置存储器中,和/或提取程序代码以供执行。
图13旨在说明可以用于实现包括可编程电路系统(例如,可编程结构)的IC的示例架构。例如,一列中逻辑块的数目、列的相对宽度、列的数目和顺序、列中包括的逻辑块的类型、逻辑块的相对大小、以及图13的顶部处包括的互连/逻辑实现方式仅是说明性的。例如,在实际IC中,无论CLB出现在何处,通常都包括多于一个的相邻列的CLB,以促进用户电路设计的有效实现。然而,相邻CLB列的数目可能会随IC的整体大小而发生变化。进一步地,IC内的诸如PROC 1310之类的块的大小和/或位置仅出于说明目的,而不旨在作为限制。
例如,如结合图1所描述的系统能够进一步处理已经经过本文中所描述的处理的电路设计,以在具有与图13的架构相同或相似的架构的IC内实现。例如,该系统能够对电路设计进行合成、布局和布线。该系统还可以创建局部重构分层结构达指定深度或任意深度和/或执行重新组合以减少局部重构分层结构水平。该系统可以生成适当比特流,例如,局部比特流,以使这些比特流可以加载到IC中,从而在IC内物理实现电路设计,该电路设计包括指定的任何局部重构分层结构水平。
出于解释的目的,对特定术语进行阐述,以提供对本文中所公开的各种发明概念的透彻理解。然而,本文中所使用的术语仅出于描述本发明布置的特定方面的目的,而并非旨在进行限制。
如本文中所定义的,除非上下文另有明确指出,否则单数形式“一”、“一个”和“该”也旨在包括复数形式。
如本文中所定义的,术语“大约”意指接近正确或精确,在值或量上接近但不精确。例如,术语“大约”可以意指所列举的特点、参数或值在精确特点、参数或值的预先确定的量之内。
如本文中所定义的,除非另外明确指出,否则术语“至少一个”、“一个或多个”和“和/或”为在操作时作为连接词和反义连接词两者的开放式表达。例如,表达“A、B和C中的至少一个”、“A、B或C中的至少一个”、“A、B和C中的一个或多个”、“A、B或C中的一个或多个”、以及“A、B、和/或C”中的每个表达意指“单独的A、单独的B、单独的C、A和B一起、A和C一起、B和C一起、或A、B和C一起。
如本文中所定义,术语“自动”意指没有用户干预。如本文中所定义的,术语“用户”意指人类。
如本文中所定义的,术语“计算机可读存储介质”意指包含或存储程序代码以供指令执行系统、装置或设备使用或与其结合使用的存储介质。如本文中所定义的,“计算机可读存储介质”本身并非暂态传播信号。计算机可读存储介质可以是但不限于电子存储设备、磁性存储设备、光学存储设备、电磁存储设备、半导体存储设备、或前述的任何合适组合。如本文中所描述的,各种形式的存储器是计算机可读存储介质的示例。计算机可读存储介质的更具体示例的非详尽列表可以包括便携式计算机磁盘、硬盘、RAM、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、电可擦可编程只读存储器(EEPROM)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、软盘等。
如本文中所定义的,依据上下文,术语“如果”意指“何时”或“继……之后”或“响应于……”或“对……响应”。因此,依据上下文,短语“如果确定”或“如果检测到[所陈述的条件或事件]”可以被解释为意指“继确定之后”或“响应于确定”或“继检测到[所陈述的条件或事件]之后”或“响应于检测到[所陈述的条件或事件]”或“对检测到[所陈述的条件或事件]响应”。
如本文中所定义的,术语“对……响应”和如上文所描述的类似语言(例如,“如果”、“何时”或“继......之后”)意指容易对动作或事件做出响应或做出反应。自动执行响应或反应。因此,如果“对”第一动作“响应”而执行第二动作,则在第一动作的发生与第二动作的发生之间存在因果关系。术语“对……响应”指示因果关系。
如本文中所定义的,术语“一个实施例”、“一实施例”、“一个或多个实施例”、“特定实施例”或类似语言意指结合该实施例所描述的特定特征、结构或特点包括在本公开内所描述的至少一个实施例中。因此,在整个本公开中,短语“在一个实施例中”、“在一实施例中”、“在一个或多个实施例中”、“在特定实施例中”和类似语言的出现可以但不一定全部是指同一实施例。在本公开内容内,术语“实施例”和“布置”可互换使用。
如本文中所定义的,术语“处理器”意指至少一个硬件电路。硬件电路可以被配置为执行程序代码中包含的指令。硬件电路可以为集成电路。处理器的示例包括但不限于中央处理器(CPU)、阵列处理器、矢量处理器、数字信号处理器(DSP)、FPGA、可编程逻辑阵列(PLA)、ASIC、可编程逻辑电路、以及控制器。
如本文中所定义的,术语“输出”意指在物理存储器元件(例如,设备)中存储、写入显示器或其他外围输出设备、向另一系统发送或传输、导出等。
如本文中所定义的,术语“基本上”意指无需精确实现所列举的特点、参数、或值,但意指包括例如公差、测量误差、测量精度限制和本领域技术人员已知的其他因素在内的偏差或变化可以以没有排除该特点旨在提供的效果的量发生。
本文中可以使用术语第一、第二等来描述各种元件。由于除非另有陈述或上下文另有明确指出,否则这些术语仅用于将一个元件与另一元件区分开,所以这些元件不应受这些术语的限制。
计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质,该计算机可读程序指令用于使得处理器执行本文中所描述的本发明的布置的各个方面。在本公开内,术语“程序代码”与术语“计算机可读程序指令”可互换使用。本文中所描述的计算机可读程序指令可以从计算机可读存储介质下载到相应计算/处理设备,或经由网络(例如,互联网、LAN、WAN和/或无线网络)下载到外部计算机或外部存储设备。该网络可以包括铜传输电缆、光学传输纤维、无线传输、路由器、防火墙、交换机、网关计算机、和/或包括边缘服务器的边缘设备。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以供存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本文中所描述的本发明的布置的操作的计算机可读程序指令可以为汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、或以一种或多种编程语言的任何组合编写的源代码或目标代码,该一种或多种编程语言包括面向对象的编程语言和/或过程编程语言。计算机可读程序指令可以包括状态设置数据。计算机可读程序指令可以完全在用户计算机上、部分在用户计算机上、作为独立软件封装、部分在用户计算机上并且部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过任何类型的网络(包括LAN或WAN)连接到用户的计算机,或可以与外部计算机建立连接(例如,使用互联网服务提供商通过互联网)。在一些情况下,包括例如可编程逻辑电路系统、FPGA或PLA的电子电路系统可以通过利用计算机可读程序指令的状态信息个性化电子电路系统来执行计算机可读程序指令,以便执行本文中所描述的本发明的布置的各个方面。
本文中参考方法、装置(系统)和计算机程序产品的流程图图示和/或框图对本发明的布置的某些方面进行描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令(例如,程序代码)来实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,以产生机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的器件。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指导计算机、可编程数据处理装置和/或其他设备以特定方式运转,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现在流程图和/或框图的一个或多个框中指定的操作的各个方面的指令。
计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现了流程图和/或框图中的一个或多个框中指定的功能/动作。
附图中的流程图和框图图示了根据本发明的布置的各个方面的系统、方法和计算机程序产品的可能实现方式的架构、功能性和操作。就这点而言,流程图或框图中的每个框可以表示指令的模块、分段或部分,其包括用于实现指定操作的一个或多个可执行指令。
在一些备选实现方式中,框中所指出的操作可以不按图中指出的次序发生。例如,依据所涉及的功能性,连续示出的两个框可以基本同时执行,或有时可以以相反次序执行。在其他示例中,框通常可以以增加数字次序来执行,而在其他示例中,一个或多个框可以以变化次序来执行,其中结果存储并用于后续框或没有紧随其后的其他框中。还应当指出,框图和/或流程图图示的每个框以及框图和/或流程图图示中的各个框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的基于专用硬件的专用系统来实现。
可以在下文权利要求书中找到的所有器件或步骤加上功能元件的对应结构、材料、动作、以及等同物旨在包括与如具体要求保护的其他要求保护的元件组合执行功能的任何结构、材料、或动作。
在一个或多个实施例中,一种方法可以包括:使用计算机硬件将电路设计的第一局部重构模块转换为第一局部重构容器,其中电路设计被布局和布线;使用计算机硬件将第一网表加载到第一局部重构容器中,其中第一网表包括第一多个局部重构模块,该第一多个局部重构模块最初是空的;使用计算机硬件在第一多个局部重构模块的每个局部重构模块内包括另一网表;以及使用计算机硬件实现第一局部重构容器以及第一局部重构容器内的第一多个局部重构模块。
在一个方面中,该方法可以包括:针对第一多个局部重构模块中的每个局部重构模块,生成第一局部重构模块布图规划。每个第一局部重构模块布图规划都被包含在第一局部重构容器的布图规划内,并且被用于实现第一多个局部重构模块中的相应局部重构模块。
在另一方面中,实现第一局部重构容器可以包括:对第一局部重构容器和第一多个局部重构模块中的每个局部重构模块进行布局和布线,以使第一多个局部重构模块中的每个局部重构模块的电路元件位于每个相应第一局部重构模块布图规划所指定的边界内。
在另一方面中,转换可以包括:在加载第一网表之前,清空第一局部重构模块的内容。
在另一方面中,该方法可以包括:将与第一多个局部重构模块中的选定局部重构模块的连接的分区引脚从第一局部重构容器的边界移动到第一多个局部重构模块中的选定局部重构模块的边界。
在另一方面中,该方法可以包括:接收用户输入,该用户输入指定用于第一多个局部重构模块的边界。
在另一方面中,该方法可以包括:对于第一多个局部重构模块中的至少一个选定局部重构模块,将至少一个选定局部重构模块转换为第二局部重构容器并且在第二局部重构容器内实现第二多个局部重构模块。
在一个或多个实施例中,一种方法可以包括:在可编程集成电路的静态区域内实现第一电路系统,该第一电路系统由第一局部比特流指定;在可编程集成电路的局部重构容器区域内实现第二电路系统,该第二电路系统由第二局部比特流指定;以及在局部重构容器区域内包含的第一局部重构区域内实现第三电路系统并且在局部重构容器区域内包含的第二局部重构区域内实现第四电路系统,其中第三电路系统由第三局部比特流指定,并且第四电路系统由第四局部比特流指定。
在一个方面中,该方法可以包括:在第一电路系统、第二电路系统和第四电路系统继续不间断操作的同时,在第一局部重构区域内实现第五电路系统。第五电路系统可以更换第三电路系统。
在另一方面中,第五电路系统由第五局部比特流指定。
在另一方面中,该方法可以包括:在第一电路系统和第二电路系统继续不间断操作的同时,在第一局部重构区域内实现第五电路系统,以及在第二局部重构区域内实现第六电路系统。第五电路系统可以更换第三电路系统,并且第六电路系统可以更换第四电路。
在另一方面中,第五电路系统可以由第五局部比特流指定,并且第六电路系统可以由第六局部比特流指定。
在另一方面中,该方法可以包括:在可编程集成电路的局部重构容器区域内实现第五电路系统,其中第五电路系统由第五局部比特流指定。该方法还可以包括:在局部重构容器区域内实现第三局部重构区域内的第六电路系统和第四局部重构区域内的第七电路系统,其中第六电路系统由第六局部比特流指定并且第七电路系统由第七局部比特流指定。
在一个或多个实施例中,一种集成电路可以包括静态区域,包括第一可编程电路系统,该第一可编程电路系统被配置为实现与外部设备的接口;以及局部重构容器区域,其耦合到静态区域,该局部重构容器区域使用第二可编程电路系统实现与静态区域的接口;其中局部重构容器区域包括第一多个局部重构区域,其中第一多个局部重构区域中的至少一个局部重构区域被耦合到局部重构容器区域。
在一个方面中,在集成电路的操作期间,在第一多个局部重构区域中的选定局部重构区域内的电路系统被改变,同时静态区域和局部重构容器区域继续不间断操作。
在另一方面中,在集成电路的操作期间,在第一多个局部重构区域中的每个局部重构区域内的电路系统被改变,同时静态区域和局部重构容器区域继续不间断操作。
在另一方面中,第一多个局部重构区域中的数目是用户指定的。
在另一方面中,第一多个局部重构区域的边界是用户指定的。
在另一方面中,局部重构容器区域包括另一局部重构容器区域,该另一局部重构容器区域包括第二多个局部重构区域。
在另一方面中,第一多个局部重构区域中的每个局部重构区域和第二多个局部重构区域中的每个局部重构区域能够独立重构。
本文中所提供的发明布置的描述是出于说明的目的,并非旨在为穷举性的或局限于所公开的形式和示例。选择本文中所使用的术语是为了解释发明布置的原理、对市场上找到的技术的实际应用或技术改进,和/或使得本领域的其他普通技术人员能够理解本文中所公开的发明布置。在没有背离所描述的发明布置的范围和精神的情况下,修改和变化对于本领域普通技术人员而言是显而易见的。因而,应当参考以下权利要求,而非参考前述公开内容,以指示这种特征和实现方式的范围。
Claims (14)
1.一种方法,包括:
使用计算机硬件将电路设计的第一局部重构模块转换为第一局部重构容器,其中所述电路设计被布局和布线;
使用所述计算机硬件将第一网表加载到所述第一局部重构容器中,其中所述第一网表包括第一多个局部重构模块,所述第一多个局部重构模块最初是空的;
使用所述计算机硬件在所述第一多个局部重构模块的每个局部重构模块内包括另一网表;以及
使用所述计算机硬件实现所述第一局部重构容器、以及所述第一局部重构容器内的第一多个局部重构模块。
2.根据权利要求1所述的方法,还包括:
针对所述第一多个局部重构模块中的每个局部重构模块,生成第一局部重构模块布图规划;
其中每个第一局部重构模块布图规划都被包含在所述第一局部重构容器的布图规划中,并且被用于实现所述第一多个局部重构模块中的相应局部重构模块。
3.根据权利要求2所述的方法,其中实现所述第一局部重构容器包括:
对所述第一局部重构容器和所述第一多个局部重构模块中的每个局部重构模块进行布局和布线,以使所述第一多个局部重构模块中的每个局部重构模块的电路元件位于每个相应第一局部重构模块布图规划所指定的边界内。
4.根据权利要求1至3中任一项所述的方法,其中所述转换包括:
在加载所述第一网表之前,清空所述第一局部重构模块的内容。
5.根据权利要求1至4中任一项所述的方法,还包括:
将与所述第一多个局部重构模块中的选定局部重构模块的连接的分区引脚从所述第一局部重构容器的边界移动到所述第一多个局部重构模块中的所述选定局部重构模块的边界。
6.根据权利要求1至5中任一项所述的方法,还包括:
接收用户输入,所述用户输入指定用于所述第一多个局部重构模块的边界。
7.根据权利要求1至6中任一项所述的方法,还包括:
对于所述第一多个局部重构模块中的至少一个选定局部重构模块,将所述至少一个选定局部重构模块转换为第二局部重构容器,并且在所述第二局部重构容器内实现第二多个局部重构模块。
8.一种集成电路,包括:
静态区域,包括第一可编程电路系统,所述第一可编程电路系统被配置为实现与外部设备的接口;以及
局部重构容器区域,耦合到所述静态区域,所述局部重构容器区域使用第二可编程电路系统实现与所述静态区域的接口;
其中所述局部重构容器区域包括第一多个局部重构区域,其中所述第一多个局部重构区域中的至少一个局部重构区域被耦合到所述局部重构容器区域。
9.根据权利要求8所述的集成电路,其中在所述集成电路的操作期间,在所述第一多个局部重构区域中的选定局部重构区域内的电路系统被改变,同时所述静态区域和所述局部重构容器区域继续不间断操作。
10.根据权利要求8或9所述的集成电路,其中在所述集成电路的操作期间,在所述第一多个局部重构区域中的每个局部重构区域内的电路系统被改变,同时所述静态区域和局部重构容器区域继续不间断操作。
11.根据权利要求8至10中任一项所述的集成电路,其中所述第一多个局部重构区域的数目是用户指定的。
12.根据权利要求8至11中任一项所述的集成电路,其中所述第一多个局部重构区域的边界是用户指定的。
13.根据权利要求8至12中任一项所述的集成电路,其中所述局部重构容器区域包括另一局部重构容器区域,所述另一局部重构容器区域包括第二多个局部重构区域。
14.根据权利要求13所述的集成电路,其中所述第一多个局部重构区域中的每个局部重构区域和所述第二多个局部重构区域中的每个局部重构区域能够独立重构。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/041,602 | 2018-07-20 | ||
US16/041,602 US10608641B2 (en) | 2018-07-20 | 2018-07-20 | Hierarchical partial reconfiguration for programmable integrated circuits |
PCT/US2019/042661 WO2020018942A1 (en) | 2018-07-20 | 2019-07-19 | Hierarchical partial reconfiguration for programmable integrated circuits |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112437925A true CN112437925A (zh) | 2021-03-02 |
Family
ID=67515200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980048365.2A Pending CN112437925A (zh) | 2018-07-20 | 2019-07-19 | 可编程集成电路的分层局部重构 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10608641B2 (zh) |
EP (1) | EP3803675B1 (zh) |
JP (1) | JP7377852B2 (zh) |
KR (1) | KR20210034625A (zh) |
CN (1) | CN112437925A (zh) |
WO (1) | WO2020018942A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836845A (zh) * | 2021-09-13 | 2021-12-24 | 深圳市紫光同创电子有限公司 | 一种局部动态重配的位流实现方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11443018B2 (en) * | 2019-03-12 | 2022-09-13 | Xilinx, Inc. | Locking execution of cores to licensed programmable devices in a data center |
US11294992B2 (en) * | 2019-03-12 | 2022-04-05 | Xilinx, Inc. | Locking execution of cores to licensed programmable devices in a data center |
US10990737B2 (en) * | 2019-04-23 | 2021-04-27 | Owl Cyber Defense Solutions, Llc | Secure one-way network gateway |
EP3985541A1 (de) * | 2020-10-15 | 2022-04-20 | Siemens Aktiengesellschaft | Verfahren zur integritätsprüfung von nachladbaren funktionseinheiten |
US11681846B1 (en) | 2021-01-12 | 2023-06-20 | Xilinx, Inc. | Sub-FPGA level compilation platform with adjustable dynamic region for emulation/prototyping designs |
US11886789B1 (en) | 2021-07-07 | 2024-01-30 | Xilinx, Inc. | Block design containers for circuit design |
US11720735B2 (en) | 2021-08-20 | 2023-08-08 | Xilinx, Inc. | Flat shell for an accelerator card |
US11610042B1 (en) | 2021-09-28 | 2023-03-21 | Xilinx, Inc. | Scalable scribe regions for implementing user circuit designs in an integrated circuit using dynamic function exchange |
US11861010B2 (en) | 2022-02-14 | 2024-01-02 | Xilinx, Inc. | Extensible device hosted root of trust architecture for integrated circuits |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1434953A (zh) * | 1999-12-14 | 2003-08-06 | 爱特梅尔股份有限公司 | 实现动态可重构逻辑电路结构设计的方法 |
US7478357B1 (en) * | 2006-08-14 | 2009-01-13 | Xilinx, Inc. | Versatile bus interface macro for dynamically reconfigurable designs |
CN102708221A (zh) * | 2011-03-03 | 2012-10-03 | 阿尔特拉公司 | 用于对局部重配置模块进行布局和布线的方法和设备 |
CN103258074A (zh) * | 2012-02-08 | 2013-08-21 | 阿尔特拉公司 | 使用部分重构在可编程电路上实施外围器件的方法和装置 |
CN106886505A (zh) * | 2017-01-20 | 2017-06-23 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多波形运行的局部动态可重构系统 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6507211B1 (en) | 1999-07-29 | 2003-01-14 | Xilinx, Inc. | Programmable logic device capable of preserving user data during partial or complete reconfiguration |
US6526557B1 (en) | 2000-07-25 | 2003-02-25 | Xilinx, Inc. | Architecture and method for partially reconfiguring an FPGA |
US6625794B1 (en) | 2000-11-06 | 2003-09-23 | Xilinx, Inc. | Method and system for safe device reconfiguration |
US6573748B1 (en) | 2001-11-06 | 2003-06-03 | Xilinx, Inc. | Programmable logic device with output register for specifying memory space during reconfiguration |
US6907595B2 (en) | 2002-12-13 | 2005-06-14 | Xilinx, Inc. | Partial reconfiguration of a programmable logic device using an on-chip processor |
US7109750B2 (en) | 2004-04-30 | 2006-09-19 | Xilinx, Inc. | Reconfiguration port for dynamic reconfiguration-controller |
US7138820B2 (en) | 2004-04-30 | 2006-11-21 | Xilinx, Inc. | System monitor in a programmable logic device |
US7218137B2 (en) | 2004-04-30 | 2007-05-15 | Xilinx, Inc. | Reconfiguration port for dynamic reconfiguration |
US7599299B2 (en) | 2004-04-30 | 2009-10-06 | Xilinx, Inc. | Dynamic reconfiguration of a system monitor (DRPORT) |
US7233532B2 (en) | 2004-04-30 | 2007-06-19 | Xilinx, Inc. | Reconfiguration port for dynamic reconfiguration-system monitor interface |
US7640526B1 (en) * | 2005-09-12 | 2009-12-29 | Xilinx, Inc. | Modular partial reconfiguration |
US7739092B1 (en) * | 2006-01-31 | 2010-06-15 | Xilinx, Inc. | Fast hardware co-simulation reset using partial bitstreams |
WO2012154616A2 (en) | 2011-05-06 | 2012-11-15 | Xcelemor, Inc. | Computing system with hardware reconfiguration mechanism and method of operation thereof |
US8719750B1 (en) * | 2012-11-12 | 2014-05-06 | Xilinx, Inc. | Placement and routing of a circuit design |
US9846660B2 (en) | 2014-11-12 | 2017-12-19 | Xilinx, Inc. | Heterogeneous multiprocessor platform targeting programmable integrated circuits |
US9218443B1 (en) | 2014-11-12 | 2015-12-22 | Xilinx, Inc. | Heterogeneous multiprocessor program compilation targeting programmable integrated circuits |
US9613173B1 (en) | 2015-10-01 | 2017-04-04 | Xilinx, Inc. | Interactive multi-step physical synthesis |
US9590635B1 (en) * | 2015-12-03 | 2017-03-07 | Altera Corporation | Partial reconfiguration of programmable devices |
-
2018
- 2018-07-20 US US16/041,602 patent/US10608641B2/en active Active
-
2019
- 2019-07-19 KR KR1020217004734A patent/KR20210034625A/ko unknown
- 2019-07-19 EP EP19749127.7A patent/EP3803675B1/en active Active
- 2019-07-19 CN CN201980048365.2A patent/CN112437925A/zh active Pending
- 2019-07-19 WO PCT/US2019/042661 patent/WO2020018942A1/en unknown
- 2019-07-19 JP JP2021503040A patent/JP7377852B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1434953A (zh) * | 1999-12-14 | 2003-08-06 | 爱特梅尔股份有限公司 | 实现动态可重构逻辑电路结构设计的方法 |
US7478357B1 (en) * | 2006-08-14 | 2009-01-13 | Xilinx, Inc. | Versatile bus interface macro for dynamically reconfigurable designs |
CN102708221A (zh) * | 2011-03-03 | 2012-10-03 | 阿尔特拉公司 | 用于对局部重配置模块进行布局和布线的方法和设备 |
CN103258074A (zh) * | 2012-02-08 | 2013-08-21 | 阿尔特拉公司 | 使用部分重构在可编程电路上实施外围器件的方法和装置 |
CN106886505A (zh) * | 2017-01-20 | 2017-06-23 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多波形运行的局部动态可重构系统 |
Non-Patent Citations (2)
Title |
---|
KOCH DIRK等: "Hierarchical reconfiguration of FPGAs", 《2014 24TH INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS》, pages 1 - 8 * |
王仪洁;王烈;许晓洁;: "基于FPGA的局部动态可重构技术研究", 集成技术, no. 06, pages 36 - 40 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836845A (zh) * | 2021-09-13 | 2021-12-24 | 深圳市紫光同创电子有限公司 | 一种局部动态重配的位流实现方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3803675A1 (en) | 2021-04-14 |
US20200028511A1 (en) | 2020-01-23 |
EP3803675B1 (en) | 2022-11-02 |
JP2021530809A (ja) | 2021-11-11 |
WO2020018942A1 (en) | 2020-01-23 |
US10608641B2 (en) | 2020-03-31 |
KR20210034625A (ko) | 2021-03-30 |
JP7377852B2 (ja) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10608641B2 (en) | Hierarchical partial reconfiguration for programmable integrated circuits | |
US8819608B2 (en) | Architectural physical synthesis | |
US8595674B2 (en) | Architectural physical synthesis | |
US10331836B1 (en) | Loop optimization for implementing circuit designs in hardware | |
US9864828B1 (en) | Hardware acceleration device handoff for using programmable integrated circuits as hardware accelerators | |
US8689170B2 (en) | Changing the location of a buffer bay in a netlist | |
CN104834630A (zh) | 运算控制装置、运算控制方法、存储有程序的非瞬时计算机可读介质以及OpenCL设备 | |
US10621299B1 (en) | Dynamic platform support in programmable integrated circuits | |
CN115769217A (zh) | 半导体电路设计和单元引脚布置 | |
US10796058B1 (en) | Partial reconfiguration of integrated circuits using shell representation of platform design | |
US10437946B1 (en) | Using implemented core sources for simulation | |
US20170011139A1 (en) | Physically-aware circuit design partitioning | |
US9824173B1 (en) | Software development-based compilation flow for hardware implementation | |
US10963613B1 (en) | Partial reconfiguration of integrated circuits using shell representation of platform design with extended routing region | |
US9965581B1 (en) | Fanout optimization to facilitate timing improvement in circuit designs | |
US9594859B1 (en) | Apparatus and associated methods for parallelizing clustering and placement | |
US10289775B1 (en) | Systems and methods for assigning clock taps based on timing | |
US10586005B1 (en) | Incremental synthesis for changes to a circuit design | |
US20230008569A1 (en) | System memory-aware circuit region partitioning | |
US10839125B1 (en) | Post-placement and post-routing physical synthesis for multi-die integrated circuits | |
US8024681B2 (en) | Hierarchical HDL processing method and non-transitory computer-readable storage medium | |
Fröhlich et al. | A new partitioning method for parallel simulation of VLSI circuits on transistor level | |
Siozios et al. | A novel allocation methodology for partial and dynamic bitstream generation for fpga architectures | |
US10242150B1 (en) | Circuit design implementation using control-set based merging and module-based replication | |
US11610042B1 (en) | Scalable scribe regions for implementing user circuit designs in an integrated circuit using dynamic function exchange |
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 |