CN103324512A - 准备可编程设备的方法、布线开关以及机器可读存储介质 - Google Patents
准备可编程设备的方法、布线开关以及机器可读存储介质 Download PDFInfo
- Publication number
- CN103324512A CN103324512A CN2013100653747A CN201310065374A CN103324512A CN 103324512 A CN103324512 A CN 103324512A CN 2013100653747 A CN2013100653747 A CN 2013100653747A CN 201310065374 A CN201310065374 A CN 201310065374A CN 103324512 A CN103324512 A CN 103324512A
- Authority
- CN
- China
- Prior art keywords
- input
- configuration
- data
- output
- register
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- 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/39—Circuit design at the physical level
- G06F30/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- 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
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/08—Intellectual property [IP] blocks or IP cores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/06—Power analysis or power optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Logic Circuits (AREA)
Abstract
本公开涉及准备可编程设备的方法、布线开关以及机器可读存储介质。该方法使用高级语言准备可编程集成电路设备以进行配置,该方法包括从所述高级语言的描述编译多个虚拟可编程设备。这种编译包括从所述可编程集成电路设备的可编程资源编译可配置布线资源的配置,以及从所述可编程集成电路设备的可编程资源编译多个复杂功能块的配置。可以使用这种编译的配置库对机器可读数据存储介质进行编码。虚拟可编程设备可以包括停顿信号网络且虚拟可编程设备的布线开关可以包括停顿信号输入和输出。
Description
技术领域
本发明涉及使用高级语言来配置诸如现场可编程门阵列(FPGA)的可编程集成电路设备或其他类型的可编程逻辑设备(PLD)。
背景技术
早期的可编程设备是一次可配置的。例如,配置可能已通过“烧断”——即断开——可熔链路来实现。备选地,配置可能已存储在可编程只读存储器中。这些设备一般为用户提供对设备进行配置以进行“乘积和”(或“P-TERM”)逻辑操作的能力。后来,结合了用于配置的可擦除可编程只读存储器(EPROM)的这种可编程逻辑设备变得可用,其允许设备被重新配置。
再后来,结合了用于配置的静态随机存取存储器(SRAM)元件的可编程设备变得可用。同样可以被重新配置的这些设备在诸如EPROM的非易失性存储器中存储其配置,当设备通电时将这些配置从这些存储器加载到SRAM元件中。这些设备一般为用户提供对设备进行配置以进行查找表类型的逻辑操作的能力。
这些设备在某个时间开始设置有随机存取存储器的嵌入块,该随机存取存储器可以被用户配置以用作随机存取存储器、只读存储器或逻辑(诸如P-TERM逻辑)。此外,随着可编程设备已变得越来越大,在针对各种常用功能的可编程设备上添加专用电路已变得更加普遍。这种专用电路可以包括用于时钟产生的锁相环或延迟锁定环,以及用于诸如加法或乘法的各种数学运算的各种电路。这通过配置可用的通用可编程逻辑而将用户从必须创建等效电路中解脱出来。
尽管已经可以简单地通过智力判断应当在何处布置各种元件来手动配置最早期的可编程逻辑设备,但是甚至结合这种较早期的设备来提供允许用户按需布置逻辑且然后将该逻辑转换为可编程设备的配置的编程软件也是常见的。利用当前较大的设备(包括上述专用电路的设备),试图在不使用这种软件的条件下布置逻辑是不切实际的。这种软件现在还通常包括通常为称为“核(core)”的预定义功能,以用于配置某些常用结构,且尤其用于结合上述专用电路来配置用于数学操作的电路。例如,可以提供用于各种三角或代数功能的核。
尽管可用的编程软件允许用户在被编程设备的能力内实现几乎任意所需逻辑设计,但是大多数这种软件需要诸如VHDL或Verilog这样的硬件描述语言的知识。然而,可编程设备的很多潜在用户并不是很精通硬件描述语言,而且可能更倾向于使用较高级编程语言来对设备进行编程。
发明内容
可被采用以配置可编程设备的一种高级语言是OpenCL(开放运算语言),不过对其他高级语言且尤其是包括C、C++、Fortran、C#、F#、BlueSpec和Matlab的其他高级综合语言的使用也在本发明的范围内。
在OpenCL中,使用主机和内核(kernel)的组合执行计算,其中主机负责输入/输出(I/O)和建立任务,而内核根据独立输入执行计算。其中,存在内核的明确声明,且待处理的每组元件已知是独立的,每个内核可以实施为高性能硬件电路。基于在诸如FPGA的可编程设备上的可用空间的量,内核可以被复制以改善应用的性能。
内核编译器通过硬件产生、系统集成以及与主机计算机交互而从OpenCL描述将内核转换成实现应用的硬件电路。编译器可以基于扩展为能够实现对OpenCL应用的编译的开源低级虚拟机编译器。编译器对OpenCL内核进行解析、分析、优化并将其实施为适于在诸如FPGA之类的可编程设备上实施的高性能流水线电路。然后可以使用适用于特定可编程设备的编程工具来编译系统。该设备还具有嵌入式硬处理器,或可以配置有嵌入式软处理,以运行OpenCL(或其他高级)代码,或者可以使用外部处理器。可以通过在嵌入式或外部处理器上执行主机程序来运行OpenCL或其他高级代码。
根据本发明,提供一种使用高级语言准备可编程集成电路设备以进行配置的方法。该方法包括:从所述高级语言的描述编译多个虚拟可编程设备。这种编译包括从所述可编程集成电路设备的可编程资源编译可配置布线资源的配置,以及从所述可编程集成电路设备的可编程资源编译多个复杂功能块的配置。
还提供了使用这种编译配置的库编码的机器可读数据存储介质,其是可以用在虚拟可编程设备或任意可编程设备中的布线开关。
附图说明
当结合附图考虑下面的详细描述时,将显见本发明的其他特征、其属性和各种优点,其中贯穿附图,相同的参考符号表示相同的部件,且附图中:
图1示出使用高级语言来配置可编程设备的已知方法;
图2示出根据本发明实施方式的基本虚拟结构(fabric)的示例;
图3示出根据本发明实施方式的在数学方面更为复杂的虚拟结构的示例;
图4示出根据本发明实施方式包括软微处理器块的虚拟结构的示例;
图5示出在包括根据本发明实施方式的方法的方法中使用的控制数据流图;
图6示出根据本发明的实施方式在虚拟结构中配置的虚拟布线开关的示例;
图7示出根据本发明的实施方式在虚拟结构中配置的具有虚拟FIFO的功能块的示例;
图8示出根据本发明的实施方式用于使用虚拟结构库来配置可编程设备的方法的实施方式的流程图;
图9示出根据本发明的实施方式用于使用虚拟结构库来配置可编程设备的另一方法的实施方式的流程图;
图10是磁性数据存储介质的剖面图,该磁性数据存储介质使用用于执行根据本发明的方法的机器可执行指令的集合编码;
图11是光学可读数据存储介质的剖面图,该光学可读数据存储介质使用用于执行根据本发明的方法的机器可执行指令的集合编码;以及
图12是采用结合了本发明的可编程逻辑设备的说明性系统的简化框图。
具体实施方式
在OpenCL中,应用在两个部分——主机和内核——中执行。主机是负责处理I/O请求且设置用于并行处理的数据的程序。当主机准备处理数据时,它可以在内核上载入线程集合,该内核表示将由每个线程将执行的计算单元。
每个线程通过从主机指定的存储器加载数据、处理这些数据且然后将结果存储回存储器以由用户或用户应用读取,来执行内核计算。在OpenCL术语中,内核和其上执行的数据被认为是线程。可以一次针对一组线程计算结果。线程可以分成工作组,这允许数据在工作组中的线程之间共享。通常,对于工作组中线程的执行顺序没有设置约束。
出于数据存储和处理目的,每个内核可以访问多于一种类型的存储器,例如供所有线程共享的全局存储器、供相同工作组中的线程共享的局部存储器以及仅供单个线程使用的私有存储器。
OpenCL应用的执行可以部分地在主机程序中且部分地通过执行一个或更多内核而进行。例如,在矢量加法中,表示矢量的数据阵列可以使用主机程序来建立,而实际加法可以使用一个或更多内核执行。可以通过主机程序中的OpenCL功能集合来促进应用的这两个部分之间的通信。这些功能定义了主机和内核之间的接口,允许主机程序控制处理什么数据以及处理何时开始,且检测处理何时结束。
可以通过以主机程序和内核的集合开始使用诸如OpenCL的高级应用来编程诸如FPGA的可编程设备。使用可以为此目的而扩展的低级虚拟机(LLVM)编译器,将内核编译成硬件电路表示。编译处理开始于针对每个内核产生中间表示的高级解析器,诸如C语言解析器。中间表示可以是指令及其间依赖性的形式。这种表示然后可以被优化成目标可编程设备。
优化的LLVM中间表示然后被转换成诸如控制数据流图(CDFG)(图5)的面向硬件数据结构。这种数据结构在低级别中表示内核,且包括关于其面积和最大时钟频率的信息。CDFG然后可以被优化以在产生每个内核的VerilogHDL描述的RTL发生之前改善系统的面积和性能。
编译的内核然后在优选地包含到主机的接口以及存储器接口的系统中被实例化。主机接口允许主机程序访问每个内核。这允许远程地设置工作空间参数和内核变量。存储器用作用于OpenCL内核的全局存储空间。这种存储器可以经由主机接口访问,允许主机程序设置用于内核的数据以进行处理和检索计算结果。最后,可以使用用于编写该主机程序所使用的高级语言(例如C++)的规则编译器来编译主机程序。
返回到处理的各个部分,为了将内核编译成硬件电路,从基本功能块模块来实现每个内核。每个基本块模块包括输入和输出接口,基本块模块使用该接口与其他基本块交流,且执行诸如加载、加法、减法、保存等指令。
将每个内核实施为硬件电路中的下一步骤是将每个基本块模块转换成硬件模块。每个基本块模块负责处理其内部的操作。为了恰当地工作,基本块模块还应当能够与其他基本块交换信息。确定每个基本块需要和产生什么数据可以使用活跃变量分析完成。
一旦分析了每个基本块,可以创建控制数据流图(CDFG)(图5)以表示该基本块模块的操作,从而基于活跃变量分析的结果显示基本块模块如何从内核变量或另一基本块获得输入。一旦被实例化,每个基本块根据包括在块中的指令处理数据,且产生可以被其他基本块或直接被用户读取的输出。
一旦每个基本块模块被表示为CDFG,块内的操作就可以被调度。可以为每个节点分配其完成操作所需要的寄存器和时钟循环的集合。例如,AND操作可能不需要寄存器,但是浮点加法可能需要至少7个时钟循环和相应寄存器。一旦每个基本块被调度,就可以插入流水线寄存器以平衡通过CDFG的每个路径的执行时间。这允许处理很多线程。
一旦每个内核描述为硬件电路,可以创建包括内核以及存储器和到主机平台的接口的设计。为了防止流水线过载,可以限制工作组中允许的线程的数目以及内核中同时允许的工作组的数目。
在图1中示意了上述一般方法100,其中路径101示出内核的执行而路径102示出主机程序的执行。
路径101开始于内核文件(kernel.cl)111。解析器前端121从内核文件111得出未经优化的中间表示131,该表示被优化器141转换成优化的中间表示151。优化处理包括例如循环展开、存储器-寄存器转换、死码删除等编译器技术以使得代码更加有效。寄存器时序语言(RTL)161发生器将优化的中间表示151转换成硬件描述语言表示171,该硬件描述语言表示171可以以诸如Verilog(所示)或VHDL之类的任意硬件描述语言编写。
路径102开始于主机程序文件(host.c)112,其使用运行时库132通过编译器122编译,其包括抽象主机和可编程设备之间的通信以创建可执行程序文件142的软件例行程序。
可执行程序文件142和(多个)内核的(多个)硬件描述语言表示171通过合适的软件103而编译成可编程设备配置。例如,对于可购自加利福尼亚州圣何塞的Altera公司的FPGA设备,软件103可以是Altera提供的II软件。
结果是配置成在内核文件上运行主机程序以实例化内核表示的电路的可编程设备。可编程设备应当具有嵌入式处理器以执行可编程文件142,从而执行(多个)内核111以产生(多个)硬件描述语言表示161。如果嵌入式处理器是“软”处理器,则它还可以使用软件103配置。如果嵌入式处理器是“硬”处理器,软件103配置到该硬处理器的适当连接。
尽管上述一般方法可以用于使用诸如OpenCL的高级语言来创建用户逻辑设计的有效硬件电路实施,然而不幸的是,所需的编译时间可以与基于惯例硬件描述语言的编程所需的时间相当。取决于特定用户逻辑设计,与基于HDL编程的数秒或数分钟相比,编译可能要花费数小时或甚至数天。长编译时间的问题可能因需要尤其是在开发过程中周期性改变逻辑设计而放大。
因此,根据本发明,可以预编译“虚拟结构(virtual fabrics)”的多个高级语言表示。每个这种虚拟结构200(图2)可以是粗粒度虚拟FPGA的高级语言表示,该粗粒度虚拟FPGA包括总线211和布线开关221的互连网络201以及表示逻辑元件的组合的相对小数目的更复杂功能块202,该更复杂功能块在具有相对大数目的独立逻辑元件的物理FPGA的顶部上实施。例如,功能块202可以包括用于执行诸如固定或浮点加法或乘法的基本数学功能或三角功能的块以及复用逻辑或甚至“软”微处理器。
多个虚拟结构可以看作是虚拟结构库。库中的不同虚拟结构可以具有不同类型的功能块的不同分布。例如,库可以包括多个不同基本虚拟结构,其中结构200仅是一个示例,其中每个虚拟结构具有包括基本数学功能以及复用逻辑的功能块202的不同分布。还可以存在一些更复杂的结构,其中具有基本和复用功能202的结构300(图3)仅是一个示例,但是其中各个功能块301用于执行诸如三角功能之类的更复杂功能。在这些不同更复杂的虚拟结构之间,各种算术、三角和复用功能的数目和分布可以变化。甚至可以存在这样的虚拟结构:其中结构400(图4)仅是一个示例,其可以类似于结构200或结构300,只不过一个或更多功能块由软处理器块401代替。还可以提供附加类型的虚拟结构。
可能希望通过一定程度地流水线化来加速虚拟结构的性能。例如,可以在虚拟布线开关中提供寄存器级,每个虚拟布线开关可以被认为是跟随有寄存器的复用器。流水线中的任意元件优选地具有通过向上游发送停顿信号来停顿流水线——即停止数据流动——直到它准备接收更多数据的能力。否则,如果上游元件继续发送数据而下游软件太忙而不能处理数据,则数据可能丢失。
然而,如果元件向上游发送停顿信号,它可能迟一个时钟循环到达,使得可能丢失一个时钟循环的数据价值。因此,停顿信号优选地本身被流水线化,由此在虚拟结构内提供流水线化停顿信号网络。这可以通过在一些或所有布线开关中提供用于停顿信号的寄存器实现。然后,取代从停顿的组件送出停顿信号,可以从寄存器发送停顿信号。
示例在图6中示出。图6的所有组件均是虚拟的——即,它们从底层FPGA的基本元件或其他可配置或可编程设备被配置为虚拟结构的编译的一部分。
图6是布线开关600的一种可能的详细实现的示意图,其中信号在601从“西”进入且在602可路由到“北”,且在603路由到“南”,且在604路由到“东”。布线开关600需要能够在605向上游往回发送停顿信号,而在606从北、在607从南且在608从东接收停顿信号。
虚拟布线开关600包括输入复用器611和分别位于北输出、南输出和东输出上的输出复用器612、613、614。这种布线开关可能需要在输入到达的方向中往回发送停顿信号605以及从三个输出方向其中任意一个接收停顿信号606、607、608。根据本发明的实施方式,可以提供停顿信号寄存器615以输出停顿信号605,且可以提供停顿信号寄存器616、617、618以寄存接收的停顿信号606、607、608。停顿信号寄存器615、616、617、618允许向上游和下游二者的完全流水线化的停顿信号传播。
提供用于输入数据的寄存器609、610。寄存器609捕获由于从下游接收的停顿不能被进一步传播的数据。如果将向其传播数据的输出方向602、603、604其中任意一个停顿,则这些数据将保存在寄存器609中直到停顿被清除。寄存器610捕获输入数据且在必须断言(assert)停顿信号605时防止这些数据丢失。在缺少寄存器610的情况下,因为上述一个时钟延迟,新的数据将在停顿信号605的断言之后的第一时钟循环上在复用器611被接收且将在复用器611代替先前接收的任何数据,即使先前接收的数据并没有向下游传播。然而,当存在寄存器610的情况下,即使在复用器611随后接收到附加数据,在复用器611先前接收的数据被保留。可以提供配置寄存器626、627、628以开启或关闭接收停顿信号的能力。配置寄存器629选择到复用器611的输入,且因此选择到虚拟布线开关600的输入。配置寄存器630、631、632控制输出复用器612、613、614以选择虚拟布线开关600中的一个或更多输出。
除了刚刚在前文所述的停顿信号网络的流水线化,虚拟结构的流水线化也可以包括用于虚拟结构的各个功能块202、301、401的输入上的数据本身的寄存器。因为在创建虚拟结构时需要流水线化的数据路径的长度未知,并且当在特定用户设计中实施时到相同功能块的不同数据路径可能不同,每个功能块202、301、401的输入处的数据流水线寄存器优选地是如图7所示的FIFO701,以平衡流水线。
可以基于最大期望流水线不平衡性来选择每个FIFO701的深度。然而,可能的是:FIFO701可能填满,且因此每个FIFO701具有在填满时断言停顿信号702的能力。
类似地,每个FIFO701还可以具有断言空信号703以使得功能块202、301、401停顿的能力,从而使得功能块202、301、401在其中任意一个不可用时并不试图读取数据。否则,到功能块202、301、401的各个输入流水线可能失去同步——即,当一个流水线上的数据仍未到达时,功能块202、301、401从两个或更多流水线读取数据。
根据本发明的另一方面,可以通过从先前编译的虚拟结构的库或集合进行选择来配置可编程设备。可以通过检查用户逻辑设计的功能需求以及在虚拟功能块的数目和类型方面选择最近似匹配这些功能需求的虚拟结构,通过编程软件来执行对特定虚拟结构的选择。通过板上硬处理器,通过在选择虚拟结构之前、之后或期间在板上配置的软处理器,或通过外部处理器,在该设备上执行虚拟结构。所选虚拟结构的执行将设备配置为较粗粒度虚拟设备。常规综合、布局和布线工具然后用于根据用户逻辑设计配置该较粗粒度虚拟设备。
图8中图示的处理器800的实施方式可以开始于步骤801,在该步骤中如上所述创建具有不同大小的编译虚拟结构的集合以及各种类型的功能块的不同分布。步骤801可以由设备制造商执行,且虚拟结构库可以在设备上的存储器中或在与为设备提供的设备配置软件相关的存储设备或介质中提供。第三方也可以提供编译虚拟结构库。备选地,用户可以在第一次配置设备时编译虚拟结构库。
对于已经编译虚拟结构的用户私有库的用户,处理800在步骤803继续。对于使用先前编译的虚拟结构库(无论通过制造商或第三方提供或在设备的先前配置中由用户提供)的用户,用户在802进入处理800且进行到步骤803。
在步骤803,如上所述,用户输入高级语言语句(诸如OpenCL语句)形式的定义内核集合的所需配置。如上所述,在步骤804,使用产生用于每个内核的中间表示的高级解析器(诸如C语言解析器之类)来解析内核。中间表示可以是指令及其间依赖性的形式。在步骤805,这种表示然后可以被优化且转换为诸如控制数据流图(CDFG)的面向硬件数据结构。
在步骤806,通过对软件编程来检查CDFG以确定其硬件需求,且软件然后从虚拟结构库选择满足这些硬件需求的虚拟结构。使用已知技术,软件可以检查所有虚拟结构以发现最佳虚拟结构,或者一旦发现与硬件需求足够接近的虚拟结构,则检查结束。在本上下文中,“足够接近”意味着在虚拟结构中存在所有所需资源,但是虚拟结构可以具有可能变得无用的附加资源。
最后,在步骤807,使用常规综合、布局和布线技术(诸如通过可从Altera公司购得的上述II软件可以执行的那些技术),用户的逻辑设计从CDFG被编程为被选虚拟结构。除非设备包括嵌入式硬处理器或者外部处理器将用于执行虚拟结构,该步骤可以包括配置软处理器以执行虚拟结构。
特定用户逻辑设计可以包括大量功能,并不是所有这些功能同时有效。因为此处描述的虚拟结构相对粗粒度,它们具有相对小数目的配置位。因此,允许运行时的虚拟结构的重新配置可能并不是不切实际的(在执行时间方面)。因而,虚拟结构可以配置有包括第一组功能的第一配置,且然后“动态”(on the fly)可以使用第二组功能(可以与第一组功能有重叠,即它可以具有与第一组功能相同的一些功能)来重新配置。
用于对设备进行编程以使用这种重新配置的方法850在图9中示出。方法850开始类似于方法800,具有步骤801、802、803、804和805。在步骤856,CDFG被检查以确定其硬件需求,且软件然后从虚拟结构库选择在两个或更多单独配置中能够满足这些硬件需求的虚拟结构。例如,判断使用哪个虚拟结构的一种方式将是使用成本函数,该价值函数计算虚拟结构与内核的资源需求有多接近。
在步骤857,使用常规综合、布局和布线技术(诸如上述II软件可以实施的那些技术),编程两个或更多单独配置。在步骤858存储用于各种配置的配置比特流,且在步骤859使用第一配置来配置虚拟结构。如有必要(测试860、861),可以在步骤862卸载配置,且可以在步骤863加载两个或更多配置中的另一个。当执行新配置时,方法返回到步骤859。因为两个或更多配置其中的不同配置被卸载且重新加载直到获得设备的所需功能,所以以上处理可能会发生多次。
应当意识到,因为所选的虚拟结构在刚刚描述的重新配置处理中并未改变,所以可以使用这种重新配置处理而不管物理设备是否支持动态重新配置。由虚拟结构表示的虚拟设备支持动态重新配置是唯一必须条件。还应当意识到,如果物理设备支持动态重新配置,则不仅所选虚拟结构的配置可以在运行时改变,而且虚拟结构本身可以动态地被卸载且加载(如有必要,如上所述,加载的任意特定虚拟结构的配置动态地变化)。
因为库中的虚拟结构提前被编译成硬件描述语言表示,仅虚拟结构的所需配置的用户高级综合语言表示需要被编译为用户编程处理的一部分。用户仍输入所需电路的完整高级描述,且仍存在处理器以执行高级描述从而创建配置的设备。但是,因为用户高级描述的大部分执行将涉及预编译的虚拟结构的选择,仅涉及的编译将是虚拟结构的配置的编译,如上所述,这仅涉及相对小的配置问题。因此,用户看到的编译时间远远小于原本从高级描述编译整个设计所需的时间,且与使用硬件描述语言时的配置时间相当。
因而,可以看出,提供了一种使用高级综合语言来配置可编程设备的方法而不需要异常长的编译时间。
用于执行根据本发明用于编程可编程设备的方法的指令可以被编码在机器可读介质上,以由合适的计算机或类似设备执行,从而实施如上所述使用由高级综合语言描述的配置对PLD或其他可编程设备进行编程或配置的本发明的方法。例如,个人计算机可以装配有PLD可以连接到的接口,且个人计算机可以被用户使用以如上所述使用合适的软件工具对PLD进行编程。此外,可以使用虚拟结构库对相同的机器可读介质或分离的机器可读介质进行编码。
图10示出磁性数据存储介质1200的剖面图,该磁性数据存储介质1200可以使用机器可执行程序编码或使用虚拟结构库编码,所述机器可执行程序可以通过诸如上述个人计算机的系统或其他计算机或类似设备来执行。介质1200可以是具有合适衬底1201(可以是常规衬底)和合适涂层1202(可以是常规涂层)的软盘或硬盘或磁带,其中所述涂层位于一面或两面上,包含有其极性或取向可以磁性变化的磁畴(不可见)。除了是磁带的情况之外,介质1200还可以具有用于接收盘驱动或其他数字存储设备的主轴的开孔(未示出)。
介质1200的涂层1202的磁畴被极化或定向,从而可以以可以是常规的方式来编码机器可执行程序,以供诸如个人计算机或其他计算机或类似系统的编程系统执行,所述编程系统具有其中可以插入待编程的PLD的插孔或外围附件,以根据本发明来配置PLD的适当部分,该适当部分包括其专用处理块(如果有的话)。
图11示出光学可读数据存储介质1210的剖面图,该光学可读数据存储介质1210可以使用机器可执行程序编码或使用虚拟结构库编码,所述该机器可执行程序可以通过诸如上述个人计算机的系统或其他计算机或类似设备来执行。介质1210可以是常规光盘只读存储器(CD-ROM),或数字视盘只读存储器(DVD-ROM),或诸如CD-R、CD-RW、DVD-R、DVD-RW、DVD+R、DVD+RW或DVD-RAM的可重写介质,或光学可读且磁光可重写的磁光盘。介质1210优选地具有适当衬底1211(可以是常规衬底)以及通常位于衬底1211的一面或两面上的适当涂层1212(可以是常规涂层)。
在基于CD或DVD的介质的情况中,如所公知,涂层1212是反射性的且压印有布置在一个或更多层上的多个凹点1213,以对机器可执行程序进行编码。凹点的布置通过使得激光反射离开涂层1212的表面来读取。在涂层1212的顶部上提供优选地基本透明的保护性涂层1214。
如所公知,在磁光盘的情况中,涂层1212不具有凹点1213,但是具有多个磁畴,当通过激光(未示出)被加热到某一温度以上时,所述磁畴的极性和取向可以磁性地变化。畴取向可以通过测量从涂层1212反射的激光的偏振而读取。如上所述,畴的布置对程序进行编码。
根据本发明编程的PLD1500可以在很多种类的电子设备中使用。一种可能的使用是在图12所示的数据处理系统1400中。数据处理系统1400可以包括以下组件其中一个或更多个:处理器1401;存储器1402;I/O电路1403以及外围设备1404。这些组件通过系统总线1405而耦合在一起且组装在包含于用户终端系统1407的电路板1406上。
系统1400可以在诸如计算网络、数据网络、仪器、视频处理、数字信号处理之类的各种应用中或希望使用可编程或可重新编程逻辑的优点的任意其他应用中使用。PLD140可以用于执行各种不同的逻辑功能。例如,PLD1500可以配置为与处理器1401协同工作的处理器或控制器。PLD1500也可以用作仲裁器,以在系统1400中对于共享资源的访问进行仲裁。在另一示例中,PLD1500可以配置为处理器1401和系统1400中的其他组件其中一个之间的接口。应当注意,系统1400仅是示例性的,且本发明的真实精神和范围应当由下面的权利要求书指示。
可以使用各种技术来实现如上所述且结合了本发明的PLD1500。
应当理解,上文仅是本发明原理的说明,且本领域技术人员可以在不偏离本发明的范围和精神的条件下做出各种修改。例如,可以以任意所需数目和/或布置在PLD上提供本发明的各种元件。本领域技术人员应当意识到,可以以与上述不同的实施方式来实践本发明,上述实施方式用于说明而非限制目的,且本发明仅由以下权利要求书限制。
Claims (24)
1.一种使用高级语言准备可编程集成电路设备以进行配置的方法,所述方法包括:
从所述高级语言的描述编译多个虚拟可编程设备;所述编译包括:
从所述可编程集成电路设备的可编程资源编译可配置布线资源的配置;以及
从所述可编程集成电路设备的可编程资源编译多个复杂功能块的配置。
2.根据权利要求1所述的方法,其中所述高级语言是OpenCL。
3.根据权利要求1所述的方法,其中所述编译可配置布线资源的配置包括编译流水线停顿信号网络。
4.根据权利要求3所述的方法,其中所述编译流水线停顿信号网络包括编译在两个方向中均流水线化的双向停顿信号网络。
5.根据权利要求3所述的方法,其中所述编译流水线停顿信号网络包括编译包括多个布线开关的网络,所述布线开关中的每一个具有:
输入和至少一个输出;
用于所述输入和所述至少一个输出中的每一个上的停顿信号的相应寄存器;
用于在所述至少一个输出中的任意一个的停顿期间存储输出数据的输出数据停顿寄存器;
用于在所述输入的停顿之前存储在所述输入处接收的数据的第一输入数据停顿寄存器;以及
用于在所述输入停顿时存储在所述输入处存在的数据的第二输入数据停顿寄存器。
6.根据权利要求1所述的方法,其中所述多个复杂功能块包括算术功能块、三角功能块、复用逻辑块或软处理器块中的至少一个。
7.根据权利要求1所述的方法,包括配置用于所述多个复杂功能块中的至少一个复杂功能块的输入寄存器,以用于平衡所述可配置布线资源。
8.根据权利要求7所述的方法,其中所述配置输入寄存器包括配置所述多个复杂功能块中的所述至少一个复杂功能块的至少一个输入上的相应FIFO。
9.根据权利要求8所述的方法,其中所述配置输入寄存器包括配置所述多个复杂功能块中的每个复杂功能块的每个输入上的相应FIFO。
10.根据权利要求8所述的方法,其中所述配置相应FIFO包括配置具有的相应深度与相应最大期望流水线不平衡性相等的相相应FIFO。
11.根据权利要求1所述的方法,其中所述编译多个虚拟可编程设备包括编译在操作期间可重新配置的至少一个虚拟可编程设备。
12.一种非暂时性机器可读存储介质,其使用用于可编程集成电路设备的多个编译配置编码,所述编译配置其中每一个能够通过执行高级综合语言而致使处理器在所述可编程集成电路设备上实例化相应虚拟可编程设备,每个所述相应虚拟可编程设备包括:
相应布线资源配置;以及
用于多个复杂功能块的配置。
13.根据权利要求12所述的非暂时性机器可读存储介质,其中每个相应布线资源配置实例化一个流水线停顿信号网络。
14.根据权利要求13所述的非暂时性机器可读存储介质,其中每个相应布线资源配置实例化在两个方向中均流水线化的双向停顿信号网络。
15.根据权利要求13所述的非暂时性机器可读存储介质,其中每个相应布线资源配置实例化包括多个布线开关的流水线停顿信号网络,所述布线开关中的每一个具有:
输入和至少一个输出;
用于所述输入和所述至少一个输出中的每一个上的停顿信号的相应寄存器;
用于在所述至少一个输出中的任意一个的停顿期间存储输出数据的输出数据停顿寄存器;
用于在所述输入的停顿之前存储在所述输入处接收的数据的第一输入数据停顿寄存器;以及
用于在所述输入停顿时存储在所述输入处存在的数据的第二输入数据停顿寄存器。
16.根据权利要求12所述的非暂时性机器可读存储介质,其中用于多个复杂功能块的所述配置包括用于算术功能块、三角功能块、复用逻辑块或软处理器块中的至少一个的配置。
17.根据权利要求12所述的非暂时性机器可读存储介质,其中用于多个复杂功能块的所述配置包括用于所述多个复杂功能块中的至少一个的输入寄存器的配置,以用于平衡所述可配置布线资源。
18.根据权利要求17所述的非暂时性机器可读存储介质,其中用于输入寄存器的所述配置包括用于在所述多个复杂功能块中的所述至少一个的至少一个输入上的相应FIFO的配置。
19.根据权利要求18所述的非暂时性机器可读存储介质,其中用于输入寄存器的所述配置包括用于所述多个复杂功能块中的每一个的每个输入上的相应FIFO的配置。
20.根据权利要求18所述的非暂时性机器可读存储介质,其中用于相应FIFO的所述配置包括用于具有的相应深度与相应最大期望流水线不平衡性相等的相应FIFO的配置。
21.根据权利要求12所述的非暂时性机器可读存储介质,其中用于多个虚拟可编程设备的所述多个编译配置包括用于在操作期间可重新配置的虚拟可编程设备的至少一个编译配置。
22.一种用在停顿信号控制信号流的网络中的布线开关,所述布线开关包括:
用于从所述网络中的其他地方接收数据的输入;
用于传播输入停顿信号以防止数据从所述网络中的其他地方传播到所述输入的输入停顿信号输出;
用于将数据传播到所述网络中的相应其他位置的多个相应输出;以及
与每个所述相应输出相关联的相应输出停顿信号输入,用于从所述其他位置中的相应一个接收相应输出停顿信号,以防止所述相应输出向所述其他位置中的所述相应一个传播数据。
23.根据权利要求22所述的布线开关,还包括:
用于所述输入停顿信号的输入停顿信号寄存器;以及
用于所述相应输出停顿信号中的每一个的相应输出停顿信号寄存器。
24.根据权利要求22所述的布线开关,还包括输入数据寄存器,其用于保持在断言所述输出停顿信号中的一个之前接收的数据,直到能够传播在断言所述输出停顿信号中的所述一个之前所接收的所述数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/369,829 | 2012-02-09 | ||
US13/369,829 US8959469B2 (en) | 2012-02-09 | 2012-02-09 | Configuring a programmable device using high-level language |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103324512A true CN103324512A (zh) | 2013-09-25 |
CN103324512B CN103324512B (zh) | 2018-04-06 |
Family
ID=47747418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310065374.7A Active CN103324512B (zh) | 2012-02-09 | 2013-02-08 | 准备可编程设备的方法、布线开关以及机器可读存储介质 |
Country Status (4)
Country | Link |
---|---|
US (3) | US8959469B2 (zh) |
EP (1) | EP2626801B1 (zh) |
JP (1) | JP6139160B2 (zh) |
CN (1) | CN103324512B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104600115A (zh) * | 2013-10-31 | 2015-05-06 | 台湾积体电路制造股份有限公司 | 用于设计Fin-FET半导体器件的方法和系统 |
CN111460745A (zh) * | 2020-03-31 | 2020-07-28 | 深圳市风云实业有限公司 | 一种设备芯片间连通性检测方法 |
CN112347429A (zh) * | 2019-08-06 | 2021-02-09 | 天津光电通信技术有限公司 | 一种防止fpga程序泄密的方法、装置、fpga及存储介质 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069549B2 (en) | 2011-10-12 | 2015-06-30 | Google Technology Holdings LLC | Machine processor |
US9448823B2 (en) | 2012-01-25 | 2016-09-20 | Google Technology Holdings LLC | Provision of a download script |
US20130198325A1 (en) * | 2012-01-26 | 2013-08-01 | Motorola Mobility Llc | Provision and running a download script |
US20130212366A1 (en) * | 2012-02-09 | 2013-08-15 | Altera Corporation | Configuring a programmable device using high-level language |
US8959469B2 (en) | 2012-02-09 | 2015-02-17 | Altera Corporation | Configuring a programmable device using high-level language |
US8850413B2 (en) * | 2012-05-31 | 2014-09-30 | Oracle International Corporation | Compiling multi-threaded applications for targeted criticalities |
US10261760B1 (en) | 2013-12-05 | 2019-04-16 | The Mathworks, Inc. | Systems and methods for tracing performance information from hardware realizations to models |
US10078717B1 (en) | 2013-12-05 | 2018-09-18 | The Mathworks, Inc. | Systems and methods for estimating performance characteristics of hardware implementations of executable models |
JP6200824B2 (ja) * | 2014-02-10 | 2017-09-20 | ルネサスエレクトロニクス株式会社 | 演算制御装置及び演算制御方法並びにプログラム、OpenCLデバイス |
GB201405755D0 (en) * | 2014-03-31 | 2014-05-14 | Irdeto Bv | Optimizing and protecting software |
US9584594B2 (en) * | 2014-04-11 | 2017-02-28 | Maxeler Technologies Ltd. | Dynamic provisioning of processing resources in a virtualized computational architecture |
US9503093B2 (en) * | 2014-04-24 | 2016-11-22 | Xilinx, Inc. | Virtualization of programmable integrated circuits |
US9547738B1 (en) * | 2014-05-08 | 2017-01-17 | Altera Corporation | Invariant code optimization in high-level FPGA synthesis |
KR102441717B1 (ko) * | 2014-11-12 | 2022-09-07 | 자일링크스 인코포레이티드 | 이종 멀티프로세서 프로그램 컴파일레이션 타겟팅 프로그램가능 집적 회로 |
US9218443B1 (en) * | 2014-11-12 | 2015-12-22 | Xilinx, Inc. | Heterogeneous multiprocessor program compilation targeting programmable integrated circuits |
US9846660B2 (en) | 2014-11-12 | 2017-12-19 | Xilinx, Inc. | Heterogeneous multiprocessor platform targeting programmable integrated circuits |
US9286196B1 (en) * | 2015-01-08 | 2016-03-15 | Arm Limited | Program execution optimization using uniform variable identification |
US11099918B2 (en) * | 2015-05-11 | 2021-08-24 | Xilinx, Inc. | Accelerating algorithms and applications on FPGAs |
CN104850866B (zh) * | 2015-06-08 | 2018-05-01 | 电子科技大学 | 基于SoC-FPGA的自重构K-means聚类技术实现方法 |
US11016742B2 (en) * | 2015-06-24 | 2021-05-25 | Altera Corporation | Channel sizing for inter-kernel communication |
US9977758B1 (en) * | 2015-10-19 | 2018-05-22 | Xilinx, Inc. | Device profiling for tuning OpenCL applications on programmable integrated circuits |
US9690894B1 (en) | 2015-11-02 | 2017-06-27 | Altera Corporation | Safety features for high level design |
EP3226160A1 (en) * | 2016-03-29 | 2017-10-04 | Wipro Limited | System and method for configuring a field programmable device |
US10545739B2 (en) | 2016-04-05 | 2020-01-28 | International Business Machines Corporation | LLVM-based system C compiler for architecture synthesis |
US10516396B2 (en) * | 2016-04-29 | 2019-12-24 | University Of Florida Research Foundation, Incorporated | Overlay architecture for programming FPGAs |
US10223488B2 (en) * | 2016-07-19 | 2019-03-05 | Altera Corporation | Method and apparatus for improving system operation by replacing components for performing division during design compilation |
US10380313B1 (en) * | 2016-12-08 | 2019-08-13 | Xilinx, Inc. | Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration |
KR20200031625A (ko) * | 2017-06-22 | 2020-03-24 | 아이씨에이티 엘엘씨 | 고성능 프로세서 |
US10445118B2 (en) * | 2017-09-22 | 2019-10-15 | Intel Corporation | Methods and apparatus to facilitate field-programmable gate array support during runtime execution of computer readable instructions |
US10956241B1 (en) | 2017-12-20 | 2021-03-23 | Xilinx, Inc. | Unified container for hardware and software binaries |
US11163530B2 (en) * | 2018-01-12 | 2021-11-02 | Intel Corporation | Programmable-logic-directed multiplier mapping |
JP7278716B2 (ja) * | 2018-05-18 | 2023-05-22 | ヤフー株式会社 | 調整装置、調整方法および調整プログラム |
US11113176B2 (en) | 2019-01-14 | 2021-09-07 | Microsoft Technology Licensing, Llc | Generating a debugging network for a synchronous digital circuit during compilation of program source code |
US10810343B2 (en) | 2019-01-14 | 2020-10-20 | Microsoft Technology Licensing, Llc | Mapping software constructs to synchronous digital circuits that do not deadlock |
US11275568B2 (en) | 2019-01-14 | 2022-03-15 | Microsoft Technology Licensing, Llc | Generating a synchronous digital circuit from a source code construct defining a function call |
US11093682B2 (en) * | 2019-01-14 | 2021-08-17 | Microsoft Technology Licensing, Llc | Language and compiler that generate synchronous digital circuits that maintain thread execution order |
US11106437B2 (en) | 2019-01-14 | 2021-08-31 | Microsoft Technology Licensing, Llc | Lookup table optimization for programming languages that target synchronous digital circuits |
US11144286B2 (en) | 2019-01-14 | 2021-10-12 | Microsoft Technology Licensing, Llc | Generating synchronous digital circuits from source code constructs that map to circuit implementations |
EP3701866B1 (en) | 2019-02-27 | 2021-08-25 | Ecole Polytechnique Fédérale de Lausanne (EPFL) | Sensor system |
US10733016B1 (en) | 2019-04-26 | 2020-08-04 | Google Llc | Optimizing hardware FIFO instructions |
US10908884B2 (en) | 2019-06-27 | 2021-02-02 | Intel Corporation | Methods and apparatus for runtime multi-scheduling of software executing on a heterogeneous system |
US11036477B2 (en) | 2019-06-27 | 2021-06-15 | Intel Corporation | Methods and apparatus to improve utilization of a heterogeneous system executing software |
US11269639B2 (en) | 2019-06-27 | 2022-03-08 | Intel Corporation | Methods and apparatus for intentional programming for heterogeneous systems |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1307406A (zh) * | 2000-01-27 | 2001-08-08 | 华为技术有限公司 | 数字锁相环的滤波方法 |
CN1479892A (zh) * | 2000-12-06 | 2004-03-03 | 英特尔公司 | 多周期指令 |
CN1851824A (zh) * | 2006-05-17 | 2006-10-25 | 中国人民解放军国防科学技术大学 | 高速流水线中长延时多端口sram的快速访问方法 |
US7219342B2 (en) * | 2000-08-07 | 2007-05-15 | Altera Corporation | Software-to-hardware compiler |
Family Cites Families (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1444084A (en) | 1972-06-21 | 1976-07-28 | Honeywell Inf Systems | Generalized logic device |
US4442504A (en) | 1981-03-09 | 1984-04-10 | Allen-Bradley Company | Modular programmable controller |
US5152000A (en) | 1983-05-31 | 1992-09-29 | Thinking Machines Corporation | Array communications arrangement for parallel processor |
US5142625A (en) | 1985-06-12 | 1992-08-25 | Minolta Camera Kabushiki Kaisha | One-chip microcomputer including a programmable logic array for interrupt control |
US5134884A (en) | 1986-05-02 | 1992-08-04 | Forrest Anderson | Single pulse imaging device |
US5068823A (en) | 1988-07-11 | 1991-11-26 | Star Semiconductor Corporation | Programmable integrated circuit using topological and parametric data to selectively connect and configure different high level functional blocks thereof |
EP0419105B1 (en) | 1989-09-21 | 1997-08-13 | Texas Instruments Incorporated | Integrated circuit formed on a surface of a semiconductor substrate and method for constructing such an integrated circuit |
US5128871A (en) | 1990-03-07 | 1992-07-07 | Advanced Micro Devices, Inc. | Apparatus and method for allocation of resoures in programmable logic devices |
US5541849A (en) | 1990-04-06 | 1996-07-30 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of timing parameters |
US7356620B2 (en) | 2003-06-10 | 2008-04-08 | Altera Corporation | Apparatus and methods for communicating with programmable logic devices |
US5684980A (en) | 1992-07-29 | 1997-11-04 | Virtual Computer Corporation | FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions |
US5442792A (en) | 1992-08-07 | 1995-08-15 | Hughes Aircraft Company | Expert system compilation method |
GB9223226D0 (en) | 1992-11-05 | 1992-12-16 | Algotronix Ltd | Improved configurable cellular array (cal ii) |
US5535342A (en) | 1992-11-05 | 1996-07-09 | Giga Operations Corporation | Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols |
US6044211A (en) | 1994-03-14 | 2000-03-28 | C.A.E. Plus, Inc. | Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description |
US5761484A (en) | 1994-04-01 | 1998-06-02 | Massachusetts Institute Of Technology | Virtual interconnections for reconfigurable logic systems |
US5548228A (en) | 1994-09-28 | 1996-08-20 | Altera Corporation | Reconfigurable programmable logic device having static and non-volatile memory |
GB9508931D0 (en) | 1995-05-02 | 1995-06-21 | Xilinx Inc | Programmable switch for FPGA input/output signals |
US5646545A (en) | 1995-08-18 | 1997-07-08 | Xilinx, Inc. | Time multiplexed programmable logic device |
KR0180058B1 (ko) | 1995-09-13 | 1999-04-01 | 이민화 | Cine메모리에 데이타를 압축 저장하는 초음파진단장치 |
SE505783C3 (sv) | 1995-10-03 | 1997-10-06 | Ericsson Telefon Ab L M | Foerfarande foer att tillverka en digital signalprocessor |
US5819064A (en) | 1995-11-08 | 1998-10-06 | President And Fellows Of Harvard College | Hardware extraction technique for programmable reduced instruction set computers |
GB9607528D0 (en) | 1996-04-11 | 1996-06-12 | Int Computers Ltd | Integrated circuit processor |
US5968161A (en) | 1996-08-29 | 1999-10-19 | Altera Corporation | FPGA based configurable CPU additionally including second programmable section for implementation of custom hardware support |
GB2317245A (en) | 1996-09-12 | 1998-03-18 | Sharp Kk | Re-timing compiler integrated circuit design |
US5822570A (en) | 1996-10-30 | 1998-10-13 | Microsoft Corporation | System and method for parsing and executing a single instruction stream using a plurality of tightly coupled parsing and execution units |
US5835734A (en) | 1997-03-07 | 1998-11-10 | California Institute Of Technology | Electronic processing and control system with programmable hardware |
US6085317A (en) | 1997-08-15 | 2000-07-04 | Altera Corporation | Reconfigurable computer architecture using programmable logic devices |
US5987603A (en) | 1997-04-29 | 1999-11-16 | Lsi Logic Corporation | Apparatus and method for reversing bits using a shifter |
US5966534A (en) | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
US6219628B1 (en) | 1997-08-18 | 2001-04-17 | National Instruments Corporation | System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations |
US6608638B1 (en) | 2000-02-07 | 2003-08-19 | National Instruments Corporation | System and method for configuring a programmable hardware instrument to perform measurement functions utilizing estimation of the hardware implentation and management of hardware resources |
US6226776B1 (en) * | 1997-09-16 | 2001-05-01 | Synetry Corporation | System for converting hardware designs in high-level programming language to hardware implementations |
US5999990A (en) | 1998-05-18 | 1999-12-07 | Motorola, Inc. | Communicator having reconfigurable resources |
US6272664B1 (en) | 1998-06-03 | 2001-08-07 | Synopsys, Inc. | System and method for using scalable polynomials to translate a look-up table delay model into a memory efficient model |
US6282627B1 (en) | 1998-06-29 | 2001-08-28 | Chameleon Systems, Inc. | Integrated processor and programmable data path chip for reconfigurable computing |
EP0974898A3 (en) | 1998-07-24 | 2008-12-24 | Interuniversitair Microelektronica Centrum Vzw | A method for determining a storage-bandwidth optimized memory organization of an essentially digital device |
GB9828381D0 (en) | 1998-12-22 | 1999-02-17 | Isis Innovation | Hardware/software codesign system |
US6477683B1 (en) | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6457173B1 (en) | 1999-08-20 | 2002-09-24 | Hewlett-Packard Company | Automatic design of VLIW instruction formats |
US6507947B1 (en) | 1999-08-20 | 2003-01-14 | Hewlett-Packard Company | Programmatic synthesis of processor element arrays |
US6745160B1 (en) * | 1999-10-08 | 2004-06-01 | Nec Corporation | Verification of scheduling in the presence of loops using uninterpreted symbolic simulation |
US6625797B1 (en) | 2000-02-10 | 2003-09-23 | Xilinx, Inc. | Means and method for compiling high level software languages into algorithmically equivalent hardware representations |
US6467075B1 (en) | 2000-03-24 | 2002-10-15 | Nec Corporation | Resolution of dynamic memory allocation/deallocation and pointers |
EP1742159A3 (en) | 2000-08-07 | 2007-06-20 | Altera Corporation | Software-to-Hardware compiler |
US6779169B1 (en) | 2002-05-31 | 2004-08-17 | Altera Corporation | Method and apparatus for placement of components onto programmable logic devices |
US20050283743A1 (en) * | 2004-06-07 | 2005-12-22 | Mulholland Philip J | Method for generating hardware information |
US7290240B1 (en) | 2004-07-30 | 2007-10-30 | Altera Corporation | Leveraging combinations of synthesis, placement and incremental optimizations |
JP4390211B2 (ja) * | 2004-11-30 | 2009-12-24 | 国立大学法人九州大学 | カスタムlsi開発プラットフォーム、命令セット・アーキテクチャ及び論理回路構成情報の生成方法、並びにプログラム |
TW200617703A (en) * | 2004-11-30 | 2006-06-01 | Tokyo Electron Ltd | Dynamically reconfigurable processor |
JP2006171913A (ja) | 2004-12-13 | 2006-06-29 | Canon Inc | 情報処理装置、情報処理方法、ならびにプログラム、記憶媒体 |
US7254801B1 (en) | 2005-01-20 | 2007-08-07 | Altera Corporation | Synthesis aware placement: a novel approach that combines knowledge of possible resynthesis |
US7140235B2 (en) | 2005-02-18 | 2006-11-28 | General Motors Corporation | Leak detection system for a vehicle fuel tank |
WO2007005724A2 (en) | 2005-07-01 | 2007-01-11 | The Regents Of The University Of California | Fpga circuits and methods considering process variations |
JP2007109101A (ja) * | 2005-10-14 | 2007-04-26 | Canon Inc | システム設計ツール |
US7996797B1 (en) | 2006-08-16 | 2011-08-09 | Altera Corporation | Method and apparatus for performing multiple stage physical synthesis |
US7555741B1 (en) * | 2006-09-13 | 2009-06-30 | Altera Corporation | Computer-aided-design tools for reducing power consumption in programmable logic devices |
JP2008181170A (ja) * | 2007-01-23 | 2008-08-07 | Research Organization Of Information & Systems | 非同期式回路の制御回路 |
JP4659774B2 (ja) * | 2007-03-07 | 2011-03-30 | 三菱電機株式会社 | 電気機器 |
US8296696B1 (en) | 2008-03-12 | 2012-10-23 | Altera Corporation | Method and apparatus for performing simultaneous register retiming and combinational resynthesis during physical synthesis |
US9495139B2 (en) * | 2011-04-11 | 2016-11-15 | University Of Florida Research Foundation, Inc. | Elastic computing |
US20130212366A1 (en) | 2012-02-09 | 2013-08-15 | Altera Corporation | Configuring a programmable device using high-level language |
US8959469B2 (en) | 2012-02-09 | 2015-02-17 | Altera Corporation | Configuring a programmable device using high-level language |
-
2012
- 2012-02-09 US US13/369,829 patent/US8959469B2/en active Active
-
2013
- 2013-02-07 JP JP2013022166A patent/JP6139160B2/ja not_active Expired - Fee Related
- 2013-02-08 CN CN201310065374.7A patent/CN103324512B/zh active Active
- 2013-02-11 EP EP13154773.9A patent/EP2626801B1/en active Active
-
2015
- 2015-01-06 US US14/590,367 patent/US9449132B2/en active Active
-
2016
- 2016-08-15 US US15/236,949 patent/US10366189B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1307406A (zh) * | 2000-01-27 | 2001-08-08 | 华为技术有限公司 | 数字锁相环的滤波方法 |
US7219342B2 (en) * | 2000-08-07 | 2007-05-15 | Altera Corporation | Software-to-hardware compiler |
CN1479892A (zh) * | 2000-12-06 | 2004-03-03 | 英特尔公司 | 多周期指令 |
CN1851824A (zh) * | 2006-05-17 | 2006-10-25 | 中国人民解放军国防科学技术大学 | 高速流水线中长延时多端口sram的快速访问方法 |
Non-Patent Citations (2)
Title |
---|
JAMES COOLE等: "Intermediate Fabrics:Virtual Architectures for Circuit Portability and Fast Placement and Routing", 《HARDWARE/SOFTWARE CODESIGN AND SYSTEM SYNTHESIS (CODES+ISSS),2010 IEEE/ACM/IFIP INTERNATIONAL COFERENCE ON》 * |
沈祖斌: "基于FPGA/CPLD的数字系统优化", 《江汉大学学报(自然科学版)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104600115A (zh) * | 2013-10-31 | 2015-05-06 | 台湾积体电路制造股份有限公司 | 用于设计Fin-FET半导体器件的方法和系统 |
CN112347429A (zh) * | 2019-08-06 | 2021-02-09 | 天津光电通信技术有限公司 | 一种防止fpga程序泄密的方法、装置、fpga及存储介质 |
CN111460745A (zh) * | 2020-03-31 | 2020-07-28 | 深圳市风云实业有限公司 | 一种设备芯片间连通性检测方法 |
Also Published As
Publication number | Publication date |
---|---|
US8959469B2 (en) | 2015-02-17 |
EP2626801A3 (en) | 2013-10-16 |
US10366189B2 (en) | 2019-07-30 |
CN103324512B (zh) | 2018-04-06 |
US9449132B2 (en) | 2016-09-20 |
JP6139160B2 (ja) | 2017-05-31 |
EP2626801A2 (en) | 2013-08-14 |
US20160350452A1 (en) | 2016-12-01 |
US20150121321A1 (en) | 2015-04-30 |
JP2013165490A (ja) | 2013-08-22 |
US20130212365A1 (en) | 2013-08-15 |
EP2626801B1 (en) | 2019-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103324512A (zh) | 准备可编程设备的方法、布线开关以及机器可读存储介质 | |
CN103324511A (zh) | 配置可编程设备的方法、可编程设备及机器可读存储介质 | |
US10033387B2 (en) | Method apparatus for high-level programs with general control flow | |
US7926011B1 (en) | System and method of generating hierarchical block-level timing constraints from chip-level timing constraints | |
US8806403B1 (en) | Efficient configuration of an integrated circuit device using high-level language | |
US10216254B1 (en) | Methods and apparatus for selectively extracting and loading register states | |
Stitt | Are field-programmable gate arrays ready for the mainstream? | |
US10235485B1 (en) | Partial reconfiguration debugging using hybrid models | |
Koul et al. | Aha: An agile approach to the design of coarse-grained reconfigurable accelerators and compilers | |
US9922150B1 (en) | Method and apparatus for satisfying operating conditions in a system design using an electronic design automation tool | |
Garrault et al. | HDL coding practices to accelerate design performance | |
US9548740B1 (en) | Multiple alternate configurations for an integrated circuit device | |
Rau et al. | Embedded computing: New directions in architecture and automation | |
Iqbal et al. | “Multi-Circuit”: Automatic Generation of an Application Specific Configurable Core for Known Set of Application Circuits | |
Suvorova et al. | System level modeling of dynamic reconfigurable system-on-chip | |
Smaragdos | An adaptive defect-tolerant multiprocessor array architecture | |
Grover | Area & Power Optimization of Asynchronous Processor Using Xilinx ISE & Vivado. | |
US20160055271A1 (en) | Data structure of design data of semiconductor integrated circuit and apparatus and method of designing semiconductor integrated circuit | |
Noguera et al. | Wireless MIMO sphere detector implemented in FPGA | |
Sierra et al. | Automated timing characterization of high-performance macroblocks for latency insensitive FPGA designs | |
Comerro | Optimizing FPGA Performance: Leveraging the Razor Technique in Digital Design | |
Cortadella et al. | A hierarchical mathematical model for automatic pipelining and allocation using elastic systems | |
Chang | Concept of Logic Synthesis | |
Oreja et al. | Hardware Platform to Test New ISA Extensions | |
Reinsalu et al. | Architectural exploration tasks for on-chip embedded systems |
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 |