CN116457789A - 针对异构集成电路的基于模型的设计和分割 - Google Patents

针对异构集成电路的基于模型的设计和分割 Download PDF

Info

Publication number
CN116457789A
CN116457789A CN202180075124.4A CN202180075124A CN116457789A CN 116457789 A CN116457789 A CN 116457789A CN 202180075124 A CN202180075124 A CN 202180075124A CN 116457789 A CN116457789 A CN 116457789A
Authority
CN
China
Prior art keywords
program code
systems
graph
model
nodes
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
CN202180075124.4A
Other languages
English (en)
Inventor
A·S·苏雷什
A·贝布迪安
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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Publication of CN116457789A publication Critical patent/CN116457789A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • G06F30/3953Routing detailed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/02System on chip [SoC] design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/08Intellectual property [IP] blocks or IP cores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/08HW-SW co-design, e.g. HW-SW partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Architecture (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Stored Programmes (AREA)

Abstract

针对异构集成电路的设计的基于模型的实现可以包括将使用建模系统被创建为数据结构的模型转换为数据流图,其中模型表示用于在具有多个系统的集成电路中实现的设计,系统是异构的;对数据流图的节点进行分类以在集成电路的多个系统中的不同系统中实现;并且基于分类将数据流图分割为多个子图,其中每个子图对应于多个系统中的不同系统。从每个子图,可以生成高级语言(HLL)程序代码的一部分。HLL程序代码的每个部分可以特定于与从其生成HLL程序代码的一部分的子图相对应的系统。

Description

针对异构集成电路的基于模型的设计和分割
相关申请的交叉引用
本专利文献的公开内容的一部分包含受版权保护的材料。版权所有人不反对任何人传真复制专利文献或专利公开,因为它出现在专利和商标局的专利文献或记录中,但保留所有版权。
技术领域
本公开涉及集成电路(IC),并且更具体地涉及异构IC的基于模型的设计和分割。
背景技术
IC可以被实现以执行各种功能。一些IC可以被编程以执行指定的功能。可以编程的IC的一个示例是现场可编程门阵列(FPGA)。FPGA通常包括可编程瓦片的阵列。可编程瓦片统称为可编程逻辑。可编程瓦片的示例可以包括但不限于输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储器块(BRAM)、乘法器、数字信号处理块(DSP)、时钟管理器、延迟锁定环(DLL)等。
基于计算机的建模环境可用,用户可以在该环境中创建电子系统的模型。用户通过使用图形拖放范例将模型块插入到设计环境中来创建模型。用户连接模型块以定义模型块之间的数据流。建模环境能够处理模型以生成模型的寄存器传输级(RTL)表示,该RTL表示可以被进一步处理以在IC的可编程逻辑中实现。
然而,现代IC已经发展到在同一芯片上包括多种不同类型的系统。这些多个不同系统可以包括可编程逻辑、硬连线处理器等。然而,可用的建模环境仅限于以可编程逻辑为目标的模型创建。可用的建模环境缺乏与现代IC上可用的其他类型的系统竞争的机制。
发明内容
在一个方面,一种方法可以包括将使用建模系统被创建为数据结构的模型转换为数据流图。该模型表示用于在具有多个系统的IC中实现的设计。该系统是异构的。该方法可以包括对数据流图的节点进行分类以在IC的多个系统中的不同系统中实现,并且基于分类将数据流图分割为多个子图。每个子图对应于多个系统中的不同系统。该方法还可以包括从每个子图生成高级语言(HLL)程序代码的一部分。HLL程序代码的每个部分特定于与从其生成HLL程序代码的一部分的子图相对应的系统。
在另一方面,一种系统包括被配置为发起操作的处理器。该操作可以包括将使用建模系统被创建为数据结构的模型转换为数据流图。该模型表示用于在具有多个系统的IC中实现的设计。该系统是异构的。该操作可以包括对数据流图的节点进行分类以在IC的多个系统中的不同系统中实现,并且基于分类将数据流图分割为多个子图。每个子图对应于多个系统中的不同系统。该操作还可以包括从每个子图生成HLL程序代码的一部分,其中HLL程序代码的每个部分特定于与从其生成HLL程序代码的一部分的子图相对应的系统。
在另一方面,一种计算机程序产品包括一个或多个计算机可读存储介质、以及共同存储在一个或多个计算机可读存储介质上的程序指令。该程序指令由计算机硬件可执行以发起操作。该操作可以包括将使用建模系统被创建为数据结构的模型转换为数据流图。该模型表示用于在具有多个系统的IC中实现的设计。该系统是异构的。该操作可以包括对数据流图的节点进行分类以在IC的多个系统中的不同系统中实现,并且基于分类将数据流图分割为多个子图。每个子图对应于多个系统中的不同系统。该操作还可以包括从每个子图生成HLL程序代码的一部分,其中HLL程序代码的每个部分特定于与从其生成HLL程序代码的一部分的子图相对应的系统。
本“发明内容”部分仅用于介绍某些概念,而非确定所要求保护的主题的任何关键或基本特征。根据附图和下面的详细描述,本发明布置的其他特征将是很清楚的。
附图说明
本发明布置在附图中以示例的方式说明。然而,附图不应当被解释为将本发明布置仅限于所示的特定实现。通过审查以下详细描述并且参考附图,各个方面和优点将变得很清楚。
图1示出了具有多个异构系统的示例IC。
图2示出了使用建模系统创建的示例模型。
图3示出了由建模系统生成的数据流图的示例。
图4示出了与目标IC的可编程逻辑相对应的子图的示例。
图5示出了与目标IC的处理器系统相对应的子图的示例。
图6示出了与目标IC的数据处理引擎阵列相对应的子图的示例。
图7示出了根据子图生成用于目标IC的配置数据。
图8示出了在具有多个异构系统的目标IC内实现模型的示例方法。
图9示出了可以用于执行建模环境的计算机的示例,该建模环境包括如本公开中描述的基于模型的设计工具。
具体实施方式
虽然本公开以定义新特征的权利要求作为结束,但相信,通过结合附图考虑说明书,将能够更好地理解本公开中描述的各种特征。本文中描述的(多个)过程、(多个)机器、(多个)制造及其任何变体是为了说明的目的而提供的。本公开中描述的具体结构和功能细节不应当被解释为限制,而仅作为权利要求的基础,并且作为教导本领域技术人员以各种方式使用在实际上任何适当详细的结构中描述的特征的代表性基础。此外,本公开中使用的术语和短语并非旨在限制,而是提供对所描述的特征的可理解的描述。
本公开涉及IC,并且更具体地涉及异构IC的基于模型的设计和分割。异构IC是指包括多个不同或异构系统的IC。根据本公开中描述的发明布置,提供了能够为电子系统创建模型并且在具有多个异构系统的IC内实现该模型的系统、方法和计算机程序产品。
通常,建模系统是指基于计算机的建模环境,用户可以在该环境中创建电子系统的模型。建模系统可以包括与建模环境协作执行的基于模型的设计工具。基于模型的设计工具增强了建模环境的功能,使得模型可以在称为“目标IC”的特定IC中实现。用户可以将模型块插入由建模系统提供的设计环境中。模型块可以使用图形拖放范例来插入。模型块表示最终由目标IC中的电路实现的特定功能或操作。用户还可以在设计环境内连接模型块,以在模型块之间建立信号和/或数据流。
建模环境的一个示例是与SIMULINK结合使用的MATLAB。MATLAB和SIMULINK都可以从马萨诸塞州纳蒂克的股份有限公司获取。这样的建模环境能够作为建模环境的一部分来执行另外的应用。例如,建模环境可以执行诸如Model Composer等应用,该应用可以从加利福尼亚州圣何塞市的Xilinx,Inc.获取。Model Composer是一个基于模型的设计工具的示例,它有助于设计和探索用于在IC中实现的模型。例如,使用基于模型的设计工具,用户可以访问与可以在IC中实现的不同核或电路相对应的模型块的库。
根据本公开中描述的发明布置,模型可以使用建模系统来创建,其中模型旨在在具有多个异构系统的IC中实现。这些不同系统可以包括作为系统中的一个的可编程逻辑。此外,不同系统可以彼此协作地操作。出于说明的目的,IC中可用的不同系统的示例可以包括但不限于可编程逻辑、数据处理引擎(DPE)阵列和/或处理器系统。处理器系统可以包括一个或多个硬连线处理器。硬连线处理器可以不同。IC的一个或多个或所有系统可以通过芯片上互连来互连。在一个方面,不同系统可以通过称为片上网络(NoC)的另外的系统来互连。这些系统可以以不同组合被包括在IC中。
在通常情况下,为了对具有多个异构系统的IC进行编程,开发人员或系统设计师必须获取不同领域的知识和技能,诸如硬件编程、软件开发、架构探索和系统分割。通常,软件开发人员没有接受过这些不同领域的训练,这些领域对于在具有多个异构系统的IC内实现模型是必要的。类似地,领域特定应用工程师、算法开发人员和系统架构师可能几乎没有或根本没有软件开发、硬件编程和/或分割模型以在具有多个异构系统的IC中实现方面的专业知识。此外,可用的建模系统仅限于在同构IC中实现模型。例如,可用的建模系统被限制为在FPGA的可编程逻辑内实现模型。
在本公开中,公开了建模系统的示例实现,该建模系统的功能扩展到创建用于在可编程逻辑中实现的模型之外。根据本公开中描述的发明布置,提供了扩展建模系统的功能以在包括各种不同类型的系统的现代IC内创建和实现模型的系统、方法和计算机程序产品。
在一个或多个示例实现中,提供了能够执行如下操作的系统、方法和计算机程序产品,诸如将模型分割为不同部分,每个部分对应于目标IC的不同系统。模型可以被执行和仿真以验证功能正确性,验证设计规则检查,验证目标IC中的各种模型块和/或目标系统之间的端口接口连接,以及验证模型块相对于目标IC中目标硬件的配置。本发明布置提供了一种建模系统,其中用户能够探索不同设计方案和/或算法,仿真模型,验证与目标IC的不同系统相对应的模型、模型的不同部分的功能正确性,和/或在仿真期间观察模型或其部分的动态行为。这些操作可以跨在IC中可用的不同系统来执行。
下面将参考附图更详细地描述本发明布置的其他方面。为了说明的简单明了,图中所示的元素不一定按比例绘制。例如,为了清楚起见,一些元素的尺寸可以相对于其他元素被夸大。此外,在认为适当的情况下,附图中重复附图标记以指示对应的、类似的或相似的特征。
图1示出了具有多个异构系统的示例IC 100。IC 100是可编程IC和自适应系统的示例。在一个方面,IC 100也是片上系统(SoC)的示例。在图1的示例中,IC 100在设置在单个集成封装内的单个裸片上实现。在其他示例中,IC 100可以使用多个互连裸片来实现,其中图1所示的各种可编程电路资源跨不同互连裸片来实现。
如前所述,IC 100包括多个异构系统。该系统包括数据处理引擎(DPE)阵列102、可编程逻辑104、处理器系统106和片上网络(NoC)108。IC 100还可以包括一个或多个其他系统,诸如平台管理控制器(PMC)110和一个或多个硬连线电路块112。
DPE阵列102被实现为多个互连并且可编程的DPE 116。DPE 116可以布置成阵列并且是硬连线的。每个DPE 116可以包括一个或多个核118和存储器模块(在图1中缩写为“MM”)120。在一个方面,每个核118能够执行存储在包含在每个相应核(未示出)内的特定于核的程序存储器中的程序代码。每个核118能够直接访问同一DPE 116内的存储器模块120以及在上、下、左和右方向上与DPE 116的核118相邻的任何其他DPE 116的存储器模块。例如,核118-5能够直接读取和/或写入(例如,经由未示出的相应存储器接口)存储器模块120-5、120-8、120-6和120-2。核118-5将存储器模块120-5、120-8、120-6和120-2中的每个视为存储器的统一区域(例如,视为核118-5可访问的本地存储器的一部分)。这便于在DPE阵列102中的不同DPE 116之间进行数据共享。在其他示例中,核118-5可以直接连接到其他DPE中的存储器模块120。
DPE 116通过可编程DPE互连电路系统被互连。可编程DPE互连电路系统可以包括一个或多个不同并且独立的网络。例如,可编程DPE互连电路系统可以包括由流连接(阴影箭头)形成的流网络、由存储器映射连接(交叉阴影箭头)形成的存储器映射网络。
在一个或多个示例实现中,本说明书中描述的电路组件之间的某些连接可以使用与高级微控制器总线架构(AMBA)可扩展接口(AXI)(以下简称“AXI”)协议兼容的硬件和/或电路系统来实现。AXI定义了嵌入式微控制器总线接口,以用于在兼容的电路块和/或系统之间建立片上连接。连接可以是流(例如,AXI-S)连接、存储器映射(AXI-MM)连接、或控制连接和/或接口(AXI-L)。AXI被提供为总线接口的说明性示例,该总线接口可以用于建立片上连接,而不旨在限制本公开中描述的示例。应当理解,可以使用其他类似和/或等效的协议、通信总线、总线接口和/或互连来代替AXI,并且在本公开中提供的各种示例电路块和/或信号将基于所使用的特定协议、通信总线、总线接口、和/或互连而变化。
通过存储器映射连接将配置数据加载到DPE 116的控制寄存器中允许独立地控制每个DPE 116及其组件。DPE 116可以在每个DPE的基础上被启用/禁用。例如,每个核118可以被配置为访问所描述的存储器模块120或仅访问其子集以实现核118或作为集群进行操作的多个核118的隔离。每个流连接可以被配置为仅在所选择的DPE 116之间建立逻辑连接以实现DPE 116或作为集群进行操作的多个DPE 116的隔离。因为每个核118可以加载有特定于该核118的程序代码,所以每个DPE 116能够在其中实现一个或多个不同内核。
在其他方面,DPE阵列102内的可编程DPE互连电路系统可以包括附加的独立网络(诸如独立于(例如,不同于和分离于)流连接和存储器映射连接的调试网络)、和/或事件广播网络。在一些方面,调试网络由存储器映射连接形成,和/或是存储器映射网络的一部分。
核118可以通过核到核级联连接与相邻核118直接连接。在一个方面,如图所示,核到核级联连接是核118之间的单向和直接连接。在另一方面,核到核级联连接是核118之间的双向和直接连接。通常,核到核级联连接通常允许将存储在源核的累积寄存器中的结果直接提供给目标或负载核的输入。核到核级联接口的激活还可以通过将配置数据加载到相应DPE 116的控制寄存器中来控制。
在示例实现中,DPE 116不包括高速缓冲存储器。通过省略高速缓冲存储器,DPE阵列102能够实现可预测的(例如,确定性的)性能。此外,由于不需要保持位于不同DPE 116中的高速缓冲存储器之间的一致性,因此避免了显著的处理开销。在另一示例中,核118不具有输入中断。因此,核118能够不间断地操作。省略对核118的输入中断也允许DPE阵列102实现可预测的(例如,确定性的)性能。
SoC接口块122作为将DPE 116连接到IC 100的其他资源的接口进行操作。在图1的示例中,SoC接口块122包括组织成行的多个互连瓦片124。在特定实施例中,可以使用不同架构来实现SoC接口块122内的瓦片124,其中每个不同瓦片架构支持与IC 100的不同资源的通信。瓦片124被连接,使得数据可以从一个瓦片双向地传播到另一瓦片。每个瓦片124能够作为用于正上方的一列DPE 116的接口进行操作。
如图所示,使用流连接和存储器映射连接,瓦片124被连接到相邻瓦片,连接到正上方的DPE 116,以及连接到下方的电路系统。瓦片124还可以包括连接到在DPE阵列102中实现的调试网络的调试网络。每个瓦片124能够从诸如处理器系统106、可编程逻辑104和/或另一硬连线电路块112等另一源接收数据。例如,瓦片124-1能够将寻址到上面的列中的DPE 116的数据的那些部分(无论是应用还是配置)提供给这样的DPE 116,同时将寻址到其他列中的DPE 116的数据发送到其他瓦片124,例如,124-2或124-3,使得这样的瓦片124可以相应地路由寻址到其相应列DPE中的CPE 116的数据。
在一个方面,SoC接口块122包括两种不同类型的瓦片124。第一类型的瓦片124具有被配置为仅用作DPE 116与可编程逻辑104之间的接口的架构。第二类型的瓦片124具有被配置为用作DPE 116与NoC 108之间以及DPE 116与可编程逻辑104之间的接口的架构。SoC接口块122可以包括第一类型和第二类型的瓦片的组合,或者仅包括第二类型的瓦片。
可编程逻辑104是可以被编程以执行指定功能的电路系统。例如,可编程逻辑104可以被实现为现场可编程门阵列类型的电路系统。可编程逻辑104可以包括可编程电路块的阵列。如本文中定义的,术语“可编程逻辑”是指用于构建可重构数字电路的电路系统。可编程逻辑由提供基本功能的很多可编程电路块(有时称为“瓦片”)组成。与硬连线电路系统不同,可编程逻辑104的拓扑结构是高度可配置的。可编程逻辑104的每个可编程电路块通常包括可编程元件126(例如,功能元件)和可编程互连142。可编程互连142提供可编程逻辑104的高度可配置拓扑。可编程互连142可以在每条导线的基础上来配置以提供可编程逻辑104的可编程电路块的可编程元件126之间的连接性,并且可以在每个比特的基础上来配置(例如,其中每条导线传送单个比特的信息),这不同于例如DPE 116之间的连接性。
可编程逻辑104的可编程电路块的示例包括具有查找表和寄存器的CLB。与下文所述的有时称为硬块的硬连线电路系统不同,这些可编程电路块在制造时具有未定义功能。可编程逻辑104可以包括其他类型的可编程电路块,该可编程电路块也提供具有更有限的可编程性的基本的已定义功能。这些电路块的示例可以包括DPS、锁相环(PLL)和BRAM。与可编程逻辑104中的其他可编程逻辑块一样,这些类型的可编程电路块数量众多并且与可编程编程逻辑104的其他可编程电路块混合。这些电路块还可以具有通常包括可编程互连142和可编程元件126的架构,并且因此是可编程逻辑104的高度可配置拓扑的一部分。
在使用之前,可编程逻辑104(例如,可编程互连和可编程元件)必须通过将称为配置比特流的数据加载到其中的内部配置存储器单元中来被编程或“配置”。一旦加载有配置比特流,配置存储器单元就定义可编程逻辑104如何配置(例如,拓扑结构)和操作(例如,所执行的特定功能)。可编程逻辑104可以具有到NoC 108的多个连接点。
处理器系统106被实现为硬连线电路系统,该硬连线电路系统被制造为IC 100的一部分。处理器系统106可以被实现为或包括各种不同处理器类型中的任何一种,每个处理器类型都能够执行程序代码。例如,处理器系统106可以被实现为个体处理器,例如,能够执行程序代码的单个核。在另一示例中,处理器系统106可以被实现为多核处理器。在又一示例中,处理器系统106可以包括一个或多个处理器、模块、协处理器、I/O接口和/或其他资源。处理器系统106可以使用各种不同类型的架构中的任何一种来实现。可以用于实现处理器系统106的示例架构可以包括但不限于ARM处理器架构、x86处理器架构、图形处理单元(GPU)架构、移动处理器架构、DSP架构、前述架构的组合、或者能够执行计算机可读指令或程序代码的其他合适的架构。处理器系统106可以具有到NoC 108的多个连接点。
在示例实现中,处理器系统106可以实现为或包括各种不同处理器类型中的任何一种,每种处理器类型都能够执行程序代码。处理器可以具有不同架构和/或指令集。在一个示例实现中,处理器系统106可以包括各种处理器,诸如一个或多个实时处理单元(RPU)、一个或多个应用处理单元(APU)和/或一个或多个GPU,每个处理器都能够执行程序代码。处理器系统106还可以包括各种支持电路。支持电路的示例可以包括但不限于片上存储器(OCM)、收发器、外围设备、互连、(多个)直接存储器存取电路、存储器控制器、和/或耦合到IC 100的其他系统的多路复用输入/输出电路。在处理器系统106内,处理器和支持电路可以通过互连来互连。
NoC 108是用于在IC 100中的端点电路之间共享数据的可编程互连网络。端点电路可以设置在DPE阵列102、可编程逻辑104、处理器系统106和/或所选择的硬连线电路块112中。NoC 108可以包括具有专用交换的高速数据路径。在一个示例中,NoC 108包括一个或多个水平路径、一个或多个垂直路径、或(多个)水平和垂直路径两者。图1所示的区域的布置和数目仅仅是一个示例。NoC 108是IC 100内可用于连接所选择的组件和/或子系统的公共基础设施的示例。
在NoC 108内,要通过NoC 108来路由的网络是未知的,直到创建了用于在IC 100内实现的用户电路设计。NoC 108可以通过将配置数据加载到内部配置寄存器中来编程,该内部配置寄存器定义诸如交换机和接口等NoC 108内的元件如何配置和操作以从交换机到交换机以及在NoC接口之间传递数据以连接端点电路。NoC 108被制造为IC 100的一部分(例如,被硬连线),并且虽然在物理上不可修改,但是可以被编程为在用户电路设计的不同主电路与不同从电路之间建立连接性。在通电时,NoC 108可以不在其中实现任何数据路径或路由。然而,一旦由PMC 110配置,NoC 108就可以实现端点电路之间的数据路径或路由。
PMC 110负责管理IC 100。PMC 110是IC 100内的系统,其能够管理整个IC 100上的其他可编程电路资源。PMC 110能够在正常操作期间维持安全的环境、引导IC 100以及管理IC 100。例如,PMC 110能够为IC 100的不同可编程电路资源(例如,DPE阵列102、可编程逻辑104、处理器系统106和NoC 108)提供对通电、引导/配置、安全、电源管理、安全经检测、调试和/或错误处理的统一和可编程的控制。PMC 110作为专用平台管理器进行操作,该专用平台管理器将处理器系统106与可编程逻辑104解耦。这样,处理器系统106和可编程逻辑104可以彼此独立地来管理、配置和/或通电和/或断电。
在一个方面,PMC 110能够作为整个IC 100的信任根进行操作。例如,PMC 110负责认证和/或验证包含IC 100的任何可编程资源的配置数据的设备图像,这些可编程资源可以加载在其中。PMC 110还能够在操作期间保护IC 100免受篡改。通过作为IC 100的信任根进行操作,PMC 110能够监测可编程逻辑104、处理器系统106、和/或IC 100中可以包括的任何其他可编程电路资源的操作。由PMC 110执行的信任根能力与处理器系统106和可编程逻辑104和/或由处理器系统106或可编程逻辑104执行的任何操作不同和分离。
硬连线电路块112包括作为IC 100的一部分而制造的专用电路块。尽管被硬连线,但硬连线电路块112可以通过将配置数据加载到控制寄存器中以实现一个或多个不同操作模式来配置。硬连线电路块112的示例可以包括输入/输出(I/O)块、用于向IC 100外部的电路和/或系统发送和接收信号的收发器、存储器控制器等。不同I/O块的示例可以包括单端和伪差分I/O。收发器的示例可以包括高速差分时钟收发器。硬连线电路块112的其他示例包括但不限于密码引擎、数模转换器(DAC)、模数转换器(ADC)等。通常,硬连线电路块112是特定于应用的电路块。
图1所示的各种可编程电路资源最初可以作为IC 100的引导过程的一部分来编程。在运行时间期间,可编程电路资源可以被重新配置。在一个方面,PMC 110能够初始配置DPE阵列102、可编程逻辑104、处理器系统106和NoC 108。在运行时间期间的任何时刻,PMC110可以重新配置IC 100的全部或一部分。在一些情况下,处理器系统106可以在由PMC 110初始配置之后配置和/或重新配置可编程逻辑104和/或NoC 108。
图2示出了使用建模系统创建的示例模型200。在本公开中,术语“建模系统”是指被配置为执行建模环境和基于模型的设计工具的计算机或其他数据处理系统。结合图9描述了可以用作建模系统的计算机和/或数据处理系统的示例。
建模系统的基于模型的设计工具提供了高级设计抽象,作为目标IC的模型块库。每个模型块可以具有可执行的对应的内置HLL软件模型。模型块的HLL软件模型可以用C和/或C++程序代码、作为MATLAB脚本或作为其他高级程序代码和/或脚本来指定。因此,实现为数据结构的模型可以由模型块构成。该模型在建模环境中可执行,以加速仿真并且保证从该模型生成的硬件的功能正确的、位准确的仿真结果。
模型200包括多个模型块。模型块之间的连接如箭头所示。连接表示模型块之间交换的数据流或信号。用户可以使用拖放范例在由建模系统提供的图形编程环境中创建模型200,这不同于用于创建电路设计的其他技术(其中用户必须用基于文本的语言来编写结构化的复杂的程序代码)。
模型200可以由建模系统执行,建模系统允许以交互方式仿真模型200。仿真的结果可以在建模系统的范围和图形显示器上查看,以验证在早期开发阶段(例如,在这样的硬件的生成之前)从模型200生成的任何硬件的功能正确性和动态行为。通过仿真,模型200可以被细化,以确保从模型200生成的任何硬件都将满足已建立的设计规范。此外,模型200的仿真有助于设计规则检查、端口接口连接的验证、以及目标硬件的块配置的验证。
出于说明的目的,模型200表示要在具有多个异构系统的IC中实现的电子系统。这样的IC的一个示例是图1的IC 100。因此,例如,模型200的不同模型块可以在DPE阵列102、可编程逻辑104和/或处理器系统106中实现。
图3示出了由建模系统生成的示例数据流图300。数据流图300可以被实现为数据结构。例如,建模系统能够将电子系统的模型(例如,图2的模型200)转换为数据流图,诸如图3的数据流图300。在一个方面,模型的每个模型块对应于数据流图300中的一个或多个节点。模型的连接在数据流图300中表示为有向边。
在一个方面,建模系统通过首先创建初始数据流图来生成数据流图,该初始数据流图在逐节点的基础上表示模型。建模系统能够以各种方式转换和/或优化初始数据流图。在一个示例实现中,建模系统能够基于节点依赖关系对初始数据流图的节点进行排名或排序。基于排名的节点,建模系统能够生成用于进一步处理和优化的中间数据流图表示。
建模系统还能够将数据流图的节点分类为不同组,其中每个组对应于目标IC的系统中的一个系统。可以对中间数据流图执行分类。在一个方面,作为分类的一部分,建模系统能够自动标记每个节点以在目标IC的特定系统中实现。在图3的示例中,数据流图300的节点具有与目标IC的不同系统(例如,标签)相对应的不同形状。每个不同形状对应于目标IC的特定系统。
例如,形状为矩形的节点表示要在软件中实现并且由处理器系统106的处理器中的一个或多个处理器执行的功能。每个形状为矩形的节点表示来自模型的一个或多个节点,这些节点执行可以在软件中实现的特定于控制操作或处理器操作。
形状为椭圆形的节点表示要在可编程逻辑104中实现的功能。每个形状为椭圆形的节点表示来自模型的一个或多个节点,这些节点表示要使用可编程逻辑104来实现的计算密集的操作或加速的操作。形状为五边形的节点表示要由DPE阵列102中的DPE实现的功能。例如,每个形状为五边形的节点可以在由DPE阵列102内的特定的DPE的核执行的程序代码中实现。每个形状为五边形的节点表示模型中的一个或多个节点。
在一个方面,建模系统能够基于(多个)特定的模型块的一个或多个属性来自动对数据流图的节点进行分类,数据流图的每个节点都是从该(多个)特定的模型块中导出的。由建模系统用于对数据流图的节点进行分类的属性的示例可以包括但不限于功能性、连接性、实现特性、可移植性、功率约束、应用上下文或其他硬件要求。某些节点还可以具有将该节点指定为控制节点的属性。
为了便于说明,考虑数据流图的一个节点,该节点表示来自模型的滤波器模型块。作为建模系统中的设计过程的一部分,滤波器模型块可以具有分配给它的一个或多个属性,该属性指定模型块的各种操作参数和/或要求中的任何一个。属性的示例可以包括但不限于期望的操作或时钟频率、模型块的期望数据吞吐量、功率约束(例如,定义最大功耗限制)等。模型块的属性可以被推进并且分配给表示模型块的数据流图的节点。在某些情况下,属性被分配给个体模型块,而在其他情况下,属性被分配给模型的整个子系统,例如,两个或更多个模型块的组。
建模系统能够在存储器中存储一个或多个系统偏好,该偏好指示如何实现模型的模型块和/或子系统。通过将(多个)模型块和/或(多个)子系统的(多个)属性与对应系统偏好进行比较,建模系统能够自动对数据流图的节点进行分类。也就是说,建模系统能够从模型的一个或多个模型块创建数据流图的节点,并且基于由节点表示的(多个)模型块的属性来对节点进行分类。
考虑一个示例,其中建模系统存储系统偏好,该系统偏好将滤波器模型块的时钟频率阈值定义为500MHz。建模系统能够将指定模型内模型块的期望时钟频率的时钟频率属性与滤波器模型块的系统偏好进行比较。建模系统能够响应于确定模型块的时钟频率属性小于或等于系统偏好而将表示滤波器模型块的数据流图的节点分类为打算在可编程逻辑中实现的节点。建模系统能够响应于确定模型块的时钟频率属性大于系统偏好而将表示滤波器模型块的数据流图的节点分类为打算在DPE阵列中实现的节点。
建模系统能够针对从(多个)底层模型块结转的与功率、数据吞吐量等相关的节点的其他系统偏好和其他属性执行类似分析。例如,对于可以在可编程逻辑或DPE阵列中实现的那些模型块,数据流图中数据吞吐量属性大于相关系统偏好的对应节点可以被分类为要在DPE阵列中实现的节点,而数据吞吐量属性小于或等于相关系统偏好的那些节点可以被分类为要在可编程逻辑中实现的节点。类似地,对于可以在可编程逻辑或DPE阵列中实现的模型块,功耗属性(例如,功率约束)大于相关系统偏好的对应节点可以被分类为要在DPE阵列中实现的节点,而功耗属性小于或等于相关系统偏好的那些节点可以被分类为要在可编程逻辑中实现的节点。
通常,与可编程逻辑相比,DPE阵列能够实现更高的数据吞吐量、更高的操作频率和更低的功耗。当执行数据流图的节点的分类时,建模系统可以使用DPE阵列和可编程逻辑的这些特性。
在其他示例中,表示某些模型块的节点可以由建模系统以预定方式进行分类以在处理系统、可编程逻辑或DPE阵列中实现。例如,节点可以表示具有“控制”属性的模型块。该节点可以被自动分类为打算在处理器系统中实现的节点。
虽然描述了建模系统自动对数据流图的节点进行分类的不同示例,但在其他示例实现中,用户可以手动指定要在其中实现给定模型块的特定系统。在这种情况下,任何这样的手动指定都可以覆盖由建模系统做出的任何自动确定。建模系统可以以与手动指定的指定一致的方式对节点进行分类。
图4-图6示出了将数据流图分割为多个子图的示例。图4-图6每个示出了从图3的示例数据流图生成的示例子图。图4-图6所示的子图中的每个子图对应于目标IC的系统中的不同系统。例如,建模系统能够基于所执行的节点分类和开放边将给定数据流图S(例如,数据流图300)的节点聚类为子图S1、S2和S3,以保持节点之间的功能特性和互连。建模系统能够为数据流图中表示的目标IC的每个不同系统生成一个子图。
图4示出了示例子图400。子图400包括被分类为打算在可编程逻辑中实现的每个节点。在创建子图400时,子图中包括的节点之间的连接性被保留。对于子图400中连接到未包括在子图400中的节点的那些节点,这样的节点连接到子图400的端口。例如,节点N18连接到端口E17-18。节点N20连接到端口E19-20和E 20-21。
图5示出了示例子图500。子图500包括被分类为打算在处理器系统中实现的每个节点。在创建子图500时,子图中包括的节点之间的连接性被保留。对于子图500中连接到未包括在子图500中的节点的那些节点,这样的节点连接到子图500的(多个)端口。例如,节点N5连接到端口N6以及端口E1-5、E2-5和E3-5,以保持与另一子图中的节点N1、N2和N3的连接性。
图6示出了示例子图600。子图600包括被分类为打算在DPE阵列中实现的每个节点。在创建子图600时,子图中包括的节点之间的连接性被保留。对于子图600中连接到未包括在子图600中的节点的那些节点,这样的节点连接到子图400的(多个)端口。例如,节点N14连接到节点N15和N16以及端口E13-14,以保持与另一子图中的节点N13的连接性。节点N21连接到端口E 20-21,以保持与另一子图中的节点N20的连接性。
在一个方面,所得到的子图400、500和600中的每个可以独立地处理和优化,以生成异构系统的不同组件。当被互连时,每个子图和所得到的硬件实现仍然表示原始模型的功能特性和实现细节。因此,个体节点的特定输出产品以及因此目标硬件(例如,目标IC的系统)可以基于对数据流图执行的分类和分割而动态地改变。
一旦子图被生成,各种硬件实现工具就可以用于生成在目标IC内实现模型所需要的配置数据。硬件实现工具可以包括例如硬件和软件编译器、各种库(例如,用于可编程逻辑的DPE阵列库和/或IP库)、链接器等。
在一个方面,建模系统能够处理每个不同子图,以生成HLL程序代码(例如,源代码)。例如,参考与要在可编程逻辑中实现的模型的一部分相对应的子图400,建模系统能够从子图400生成硬件可合成HLL程序代码。硬件可合成程序代码是指可以由能够执行高级合成的硬件实现工具处理的语法正确的HLL程序代码。硬件可合成程序代码可以被指定为HLL的源代码,诸如C、C++或其他替代HLL。
在一个方面,建模系统将子图400转换为抽象语法树(AST)作为中间表示。建模系统能够通过执行诸如构建功能上等同于子图400的AST等操作来生成硬件可合成程序代码。在这样做时,建模系统按照依赖关系的顺序遍历或检查子图的每个节点,并且将HLL构造(诸如类型、表达式、语句、符号、声明、指令等)应用于AST。建模系统还能够通过添加硬件指令、启用并行编程和执行其他已知优化来处理和优化AST,这些优化会提高以可编程逻辑实现的硬件的数据吞吐量。建模系统还可以执行其他操作以生成符合高级合成工具用于确保高质量结果的已知标准的硬件可合成程序代码。根据所得到的AST,建模系统生成硬件可合成程序代码。
参考与要在处理器系统中实现的模型的一部分相对应的子图500,建模系统能够从子图500生成由处理器系统中包括的各种处理器中的一个或多个兼容和可执行的程序代码。程序代码可以以HLL指定为源代码,诸如C、C++或其他HLL。建模系统能够构建功能上等同于子图500的AST。建模系统可以使用AST构造(诸如类型、表达式、语句、声明等)按照依赖关系的顺序遍历(例如,检查)子图的每个节点来做到这一点。建模系统还能够修改AST以满足处理器系统的目标处理器的存储器要求、性能和效率。建模系统能够生成HLL,该HLL以要在其上执行程序代码的目标IC的处理器系统的特定处理器为目标。
参考与要在DPE阵列中实现的模型的一部分相对应的子图600,建模系统能够生成HLL源代码,该HLL源代码定义或指定来自子图600的另外的数据流图。另外的数据流图在本文中称为“DPE阵列图”。在一个方面,用于指定DPE阵列图的HLL可以包括适合于实现数据流图的标记语言。DPE阵列图是以DPE阵列为目标的数据流图,并且因此可以映射到目标IC的DPE阵列上。也就是说,DPE阵列图具有与内核相对应的节点,内核可以被映射到DPE阵列中的DPE的特定核,边被映射到DPE的存储器和/或DPE阵列的数据信道(例如,流互连)上。内核可以来自为由DPE的核执行而优化的程序代码库、或用户指定的程序代码。
例如,建模系统能够将表示自包含的DPE库内核、导入的(例如,用户指定的)内核或另外的子图的子图的每个节点转换为DPE阵列图中的计算节点。计算节点映射到特定DPE(例如,DPE的核)上。建模系统还能够基于边的功能和节点的任何用户指定属性来将子图的每个边分类为窗口连接、流连接、级联连接或实时参数接口。“窗口连接”是指在DPE阵列中的DPE之间传送固定或预先确定的数据量的连接。窗口连接可以使用DPE本地存储器和缓冲器来实现。“流连接”是指在DPE之间传输可变数据量的连接。流连接可以使用流互连来实现(例如,在DPE阵列上可用的AXI-S连接)。“级联连接”是指DPE阵列中DPE之间的直接核到核连接。“实时参数接口”是指在PS与DPE之间发送和/或接收信号/数据的连接。实时参数连接可以被实现为使用内部DPE缓冲器的存储器映射连接(例如,AXI-MM连接)。建模系统能够将分类的边转换为连接DPE阵列图中的计算节点的数据流连接器。在一个或多个示例实现中,DPE阵列图可以使用诸如C或C++等HLL来指定,该HLL被扩展为包括用于定义数据流图的自定义构造。
图7示出了根据子图生成用于目标IC的配置数据。配置数据可加载在目标IC内以将目标IC配置为实现最初在建模系统中创建的模型。
在图7的示例中,从子图400生成的HLL程序代码(对应于要在可编程逻辑中实现的模型的一部分)由能够执行高级合成的实现工具702处理。实现工具生成具有正确连接性的一个或多个RTL内核704。在一个方面,RTL内核704可以被放置和路由。
根据子图500生成的HLL程序代码(对应于要由处理器系统实现的模型的一部分)表示为HLL内核706。可以是编译的程序代码的HLL内核706以处理器系统的(多个)特定处理器(例如,RTP、APU、GPU等)为目标,这样的HLL程序代码将在该处理器系统上执行。根据与要在DPE阵列中实现的模型的一部分相对应的子图600生成的DPE阵列图被示出为DPE阵列图708。
链接器710能够链接RTL内核704、HLL内核706和DPE阵列图708,并且从链接的部分生成配置数据712。链接器710能够在用于目标IC的各种系统的组件之间建立地址空间和/或逻辑连接。配置数据712可加载在目标IC内,以在其中实现在功能上等同于在建模系统中创建的原始模型的电子系统。配置数据712可以包括例如配置可编程逻辑的一个或多个配置比特流、用于由处理器系统的处理器执行的编译程序代码的一个或多个二进制文件、以及DPE阵列的配置数据。
在本文中描述的示例实现中,应当理解,虽然所描述的模型处理使用目标IC的三个不同系统,但基于所使用的特定目标IC和所创建的特定模型,更少或更多的系统可以并入所描述的处理中。例如,尽管目标IC可以包括处理器系统、可编程逻辑和DPE阵列,但是所创建的模型可以仅使用处理器系统和DPE阵列、处理器系统和可编程逻辑、或系统的任何组合。因此,所执行的分类、分割、HLL程序代码生成和/或DPE阵列图生成将变化,并且取决于正在处理的目标IC和原始模型,因为并非所有系统都可以被模型需要或使用。在目标IC包括本文中未描述的附加系统的情况下,本文中描述的示例分类和分割可以适用于这样的附加系统。
图8示出了在具有多个异构系统的目标IC内实现模型的示例方法800。方法800可以由诸如结合图9描述的示例计算机等系统来执行。该系统可以执行如本文中描述的建模系统。该系统还可以执行一个或多个硬件实现工具。要在其中实现模型的IC包括多个异构系统。
在框802中,该系统能够将使用建模系统被创建为数据结构的模型转换为数据流图。该模型表示用于在具有多个异构系统的IC中实现的设计。在框804中,该系统能够对数据流图的节点进行分类以在IC的多个系统中的不同系统中实现。在框806中,该系统能够基于在框804中执行的分类将数据流图分割为多个子图。每个子图对应于多个系统中的不同系统。在框808中,该系统能够从每个子图生成HLL程序代码的一部分,其中HLL程序代码的每个部分特定于与从其生成HLL程序代码的一部分的子图相对应的系统。
上述和其他实现每个可以可选地单独或组合包括以下特征中的一个或多个。一些示例实现组合包括以下所有特征。
在一个方面,多个系统中的第一系统是可编程逻辑,并且用于第一系统的HLL程序代码的一部分是可硬件合成的。
在另一方面,多个系统中的第二系统是具有被配置为执行程序代码的硬连线处理器的硬连线处理器系统,并且用于第二系统的HLL程序代码的一部分由硬连线处理器可执行。处理器的HLL程序代码是功能正确的。
在另一方面,多个系统中的第三系统是数据处理引擎阵列,并且用于第三系统的HLL程序代码的一部分指定包括通过数据流连接器连接的多个计算节点的DPE阵列图。
在另一方面,该方法可以包括链接用于IC的系统的HLL程序代码的部分,并且从HLL程序代码的链接部分生成可加载在IC内以在IC内实现设计的配置数据。
数据流图的节点可以至少部分基于以下项来被分类:节点的数据吞吐量、与节点相对应的功率约束、节点的操作频率和/或数据流图中的节点是否被指定为控制节点。
在另一方面,数据流图的节点之间的连接性在分割期间跨子图被保持。
通过分割和链接,本公开中描述的示例实现保证了原始模型的功能特性在所得到的硬件中的每个相应系统中得到保留和实现。为目标IC的每个系统而生成的设计可以被独立地验证,也可以作为一个整体被验证,例如,跨目标IC的系统被验证。
在另一示例实现中,建模系统能够在模型模拟期间在模型的模型块的端口处捕获数据。在模型块的端口处捕获的该数据可以由该系统用来生成测试台,以验证所生成的硬件设计。例如,验证可以包括使用C仿真或RTL仿真来验证与可编程逻辑相对应的子图的HLL代码。验证可以包括使用软件仿真验证与处理器系统相对应的子图的HLL代码。验证可以包括使用基于软件的DPE阵列模拟器来验证DPE阵列图。链接的设计(例如,配置数据)可以使用组合描述的不同仿真器来验证。
图9示出了计算机900的示例。计算机900可以以独立的能力使用,例如,作为用户计算设备、作为服务器、作为计算集群的一部分(例如,两个或更多个互连的计算机)、或作为云计算节点。图9的示例并不旨在对本文中描述的示例实现的使用范围或功能提出任何限制。计算机900是能够执行本公开中描述的各种操作的系统和/或计算机硬件的示例。例如,计算机900能够执行本文中描述的建模系统和一个或多个硬件实现工具(例如,(多个)放置器、(多个)路由器、(多个)配置比特流生成器、链接器等)。
计算机900可以与很多其他通用或专用计算系统环境或配置一起操作。适合与计算机900一起使用的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
计算机900可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统可执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机900可以被实践为诸如服务器等独立计算机系统,或者在分布式云计算环境中实践,在该环境中,任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于本地和远程计算机系统存储介质两者中,包括存储器存储设备。
如图9所示,计算机900的组件可以包括但不限于处理器902、存储器904、和将包括存储器904在内的各种系统组件耦合到处理器902的总线906。处理器902可以被实现为一个或多个处理器。
总线906表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何总线架构的处理器或本地总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、外围组件互连(PCI)总线和PCI快速(PCIe)总线。
计算机900通常包括各种计算机系统可读介质。这样的介质可以包括计算机可读的易失性和非易失性介质以及计算机可读的可移动和不可移动介质。
存储器904可以包括易失性存储器形式的计算机可读介质,诸如随机存取存储器(RAM)908和/或高速缓冲存储器910。计算机900还可以包括其他可移动/不可移动的易失性/非易失性的计算机存储介质。例如,可以提供存储系统912以用于从不可移动的非易失性的磁性和/或固态介质(未示出,通常称为“硬盘驱动器”)读取和向其写入。尽管未示出,但可以提供用于从可移动的非易失性的磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器、以及用于从诸如CD-ROM、DVD-ROM或其他光学介质等可移动的非易失性的光盘读取或向其写入的光盘驱动器。在这种情况下,每个可以通过一个或多个数据媒体接口连接到总线906。存储器904是具有一组(例如,至少一个)程序模块的至少一个计算机程序产品的示例,该程序模块被配置为执行本发明的实施例的功能。
具有一组(至少一个)程序模块916的程序/实用程序914可以存储在存储器904中。例如,程序模块916可以表示操作系统、一个或多个应用程序、其他程序模块和程序数据。程序模块916通常执行本公开中描述的示例实现的功能和/或方法。例如,一个或多个程序模块可以执行本公开中描述的各种操作,包括但不限于结合建模系统和/或硬件实现工具而描述的那些操作。
程序/实用程序914由处理器902可执行。程序/实用程序914和由计算节点900使用、生成和/或操作的任何数据项是在被计算节点900采用时赋予功能的功能性数据结构。如本公开中定义的,“数据结构”是数据模型在物理存储器内组织数据的物理实现。这样,数据结构由存储器中的特定电或磁结构元件形成。数据结构将物理组织强加给存储在存储器中的数据,以供使用处理器而执行的应用程序来使用。
计算机900还可以与以下各项通信:一个或多个外部设备920,诸如键盘、定点设备、显示器922等;使得用户能够与计算机900交互的一个或多个设备;和/或使得计算机900能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)。这样的通信可以经由输入/输出(I/O)接口918发生。尽管如此,计算机900可以经由网络适配器924与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,互联网)等一个或多个网络通信。如图所示,网络适配器924经由总线906与计算机900的其他组件通信。应当理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机900相结合使用。示例包括但不限于微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据归档存储系统等。
计算机900是数据处理系统的一个示例。如本文中定义的,“数据处理系统”是指被配置为处理数据的一个或多个硬件系统,每个硬件系统包括被编程为发起操作的至少一个处理器、和存储器。
根据所实现的设备和/或系统的特定类型,计算机900可以包括比图9中所示的更少的组件或未示出的附加组件。所包括的特定操作系统和/或(多个)应用可以根据设备和/或系统类型而变化,因为所包括的I/O设备的类型也可以变化。此外,一个或多个说明性组件可以并入另一组件中,或者以其他方式形成另一组件的一部分。例如,处理器可以包括至少一些存储器。
出于解释的目的,提出了具体的命名法,以提供对本文中公开的各种发明概念的全面理解。然而,本文中使用的术语仅用于描述本发明布置的特定方面,而不旨在进行限制。
如本文中定义的,除非上下文另有明确指示,否则单数形式“一个(a)”、“一个(an)”和“该(the)”也应当包括复数形式。
如本文中定义的,术语“至少一个”、“一个或多个”和“和/或”是开放式表达,除非另有明确说明,否则在运算中既可为合取表达,也可为析取表达。例如,表达“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)、记忆棒、软盘等。
如本文中定义的,术语“如果”是指“当……时”或“在……时”或“响应于……”或“对……做出响应”,具体取决于上下文。因此,短语“如果确定”或“如果检测到[所述情况或事件]”可以被解释为“在确定……时”或“响应于确定……”或“在检测到[所述情况或事件]时”或“响应于检测到[所述情况或事件]”或“对检测到[所述情况或事件]做出响应”,具体取决于上下文。
如本文中定义的,术语“对……做出响应”和如上所述的类似语言(例如,“如果”、“当……时”或“在……时”)表示对某一动作或事件容易做出响应或做出反应。响应或反应是自动执行的。因此,如果第二动作是“对第一动作做出响应”而执行的,则在第一动作的发生与第二动作的发生之间存在因果关系。术语“对……做出响应”表示因果关系。
如本文中定义的,术语“处理器”是指能够执行指令的至少一个硬件电路。该指令可以被包含在程序代码中。该电路可以是集成电路或嵌入在集成电路中。
如本文中定义的,术语“实时”是指处理响应级别,用户或系统将该处理响应级别感知为足够即时以进行特定过程或确定,或者该处理响应级别使得处理器能够跟上某些外部过程。
如本文中定义的,术语“基本上”是指所述的特性、参数或值不需要精确实现,而是指偏差或变化(包括例如公差、测量误差、测量准确性限制和本领域技术人员已知的其他因素)可以以不排除该特性旨在提供的效果的量出现。
本文中可以使用术语“第一”、“第二”等来描述各种元素。这些元素不应受到这些术语的限制,因为这些术语仅用于将一个元素与另一元素区分开来,除非另有说明或上下文另有明确指示。
一种计算机程序产品可以包括(多个)计算机可读存储介质,该介质上具有计算机可读程序指令,该指令用于引起处理器执行本文中描述的发明布置的各方面。在本公开中,术语“程序代码”可以与术语“计算机可读程序指令”互换使用。本文中描述的计算机可读程序指令可以从计算机可读存储介质下载到相应计算/处理设备,或者经由网络(例如,互联网、LAN、WAN和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或包括边缘服务器的边缘设备。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本文中描述的发明布置的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、或者以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的编程语言和/或过程编程语言。计算机可读程序指令可以包括状态设置数据。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上执行并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括LAN或WAN,或者到外部计算机的连接可以被进行(例如,通过使用互联网服务提供商的互联网)。在一些情况下,包括例如可编程逻辑电路系统、FPGA或PLA在内的电子电路系统可以通过利用计算机可读程序指令的状态信息来个性化电子电路系统来执行计算机可读程序指令,以便执行本文中描述的发明布置的各方面。
本文中参考方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明布置的某些方面。应当理解,流程图图示和/或框图的每个块、以及流程图图示中的块和/或框图中的块的组合可以通过计算机可读程序指令(例如,程序代码)来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,以生产机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在一个或多个流程图和/或框图块中指定的功能/动作的部件。这些计算机可读程序指令也可以存储在计算机可读存储介质中,该计算机可读存储介质可以指导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现在一个或多个流程图和/或框图块中指定的操作的各方面的指令。
计算机可读程序指令也可以加载到计算机、其他可编程数据处理装置或其他设备上,以引起一系列操作在计算机、其他可编程装置或其他设备上被执行,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在一个或多个流程图和/或框图块中指定的功能/动作。
图中的流程图和框图说明了根据本发明布置的各个方面的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个块可以表示指令的模块、段或部分,其包括用于实现指定操作的一个或多个可执行指令。
在一些替代实现中,框中所示的操作可以不按图中所示顺序进行。例如,根据所涉及的功能,连续示出的两个块可以基本上同时执行,或者这些块有时可以以相反的顺序执行。在其他示例中,块通常可以按递增的数字顺序执行,而在另一些示例中,一个或多个块可以按变化的顺序执行,结果被存储并且在不立即跟随的后续或其他块中使用。还将注意到,框图和/或流程图的每个块以及框图和/或流程图中的块的组合可以由基于专用硬件的系统来实现,该系统执行指定功能或动作或者执行专用硬件和计算机指令的组合。
可以在以下权利要求中找到的所有装置或步骤加功能元件的对应结构、材料、动作和等效物旨在包括用于与其他要求保护的元件组合执行功能的任何结构、材料或动作,如具体要求保护的。
本文中提供的发明布置的描述是为了说明的目的,并不旨在穷举或限制于所公开的形式和示例。本文中使用的术语被选择以解释本发明布置的原理、实际应用或对市场上发现的技术的技术改进,和/或使得本领域普通技术人员能够理解本文中公开的本发明布置。在不脱离所描述的发明布置的范围和精神的情况下,修改和变化对于本领域普通技术人员来说是很清楚的。因此,在指示这样的特征和实现的范围时,应当参考权利要求,而不是前述公开。

Claims (15)

1.一种方法,包括:
将使用建模系统被创建为数据结构的模型转换为数据流图,其中所述模型表示用于在具有多个系统的集成电路中实现的设计,所述系统是异构的;
对所述数据流图的节点进行分类以在所述集成电路的所述多个系统中的不同系统中实现;
基于所述分类将所述数据流图分割为多个子图,其中每个子图对应于所述多个系统中的不同系统;以及
从每个子图生成高级语言(HLL)程序代码的一部分,其中HLL程序代码的每个部分特定于与从其生成HLL程序代码的所述一部分的所述子图相对应的系统。
2.根据权利要求1所述的方法,其中
所述多个系统中的第一系统是可编程逻辑,并且用于所述第一系统的所述HLL程序代码的一部分是硬件可合成的。
3.根据权利要求2所述的方法,其中
所述多个系统中的第二系统是具有被配置为执行程序代码的硬连线处理器的硬连线处理器系统,并且用于所述第二系统的所述HLL程序代码的一部分由所述硬连线处理器可执行。
4.根据权利要求3所述的方法,其中
所述多个系统中的第三系统是数据处理引擎阵列,并且用于所述第三系统的所述HLL程序代码的一部分指定包括通过数据流连接器连接的多个计算节点的数据流图。
5.根据权利要求2所述的方法,其中
所述多个系统中的第二系统是数据处理引擎阵列,并且用于所述第二系统的所述HLL程序代码的一部分指定包括通过数据流连接器连接的多个计算节点的数据流图。
6.根据权利要求1所述的方法,还包括:
链接用于所述集成电路的所述系统的所述HLL程序代码的部分;以及
从所述HLL程序代码的链接部分生成可加载在所述集成电路内以在所述集成电路内实现所述设计的配置数据。
7.根据权利要求1所述的方法,其中
所述数据流图的所述节点至少部分地基于所述节点的数据吞吐量来被分类。
8.根据权利要求1所述的方法,其中
所述数据流图的所述节点至少部分地基于所述节点是否是控制节点来被分类。
9.根据权利要求1所述的方法,其中
所述数据流图的所述节点至少部分地基于以下项中的至少一项来被分类:
与所述节点相对应的功率约束;或者
所述节点的操作频率。
10.根据权利要求1所述的方法,其中
所述数据流图的所述节点之间的连接性在所述分割期间跨所述子图被保持。
11.一种系统,包括:
处理器,被配置为发起操作,所述操作包括:
将使用建模系统被创建为数据结构的模型转换为数据流图,其中所述模型表示用于在具有多个系统的集成电路中实现的设计,所述系统是异构的;
对所述数据流图的节点进行分类以在所述集成电路的所述多个系统中的不同系统中实现;
基于所述分类将所述数据流图分割为多个子图,其中每个子图对应于所述多个系统中的不同系统;以及
从每个子图生成高级语言(HLL)程序代码的一部分,其中HLL程序代码的每个部分特定于与生成所述HLL程序代码的一部分的所述子图相对应的系统。
12.根据权利要求11所述的系统,其中
所述多个系统中的第一系统是可编程逻辑,并且用于所述第一系统的所述HLL程序代码的一部分是硬件可合成的。
13.根据权利要求12所述的系统,其中
所述多个系统中的第二系统包括以下中的至少一项:
具有被配置为执行程序代码的硬连线处理器的硬连线处理器系统,并且用于所述第二系统的所述HLL程序代码的一部分由所述硬连线处理器可执行,或者
数据处理引擎阵列,并且用于所述第二系统的所述HLL程序代码的一部分指定包括通过数据流连接器连接的多个计算节点的数据流图。
14.根据权利要求11所述的系统,其中所述处理器被配置为发起操作,所述操作包括:
链接用于所述集成电路的所述系统的所述HLL程序代码的部分;以及
从所述HLL程序代码的链接部分生成可加载在所述集成电路内以在所述集成电路内实现所述设计的配置数据。
15.根据权利要求11所述的系统,其中所述数据流图的所述节点至少部分地基于以下项中的至少一项来被分类:所述节点的数据吞吐量、所述节点是否是控制节点、与所述节点相对应的功率约束或所述节点的操作频率。
CN202180075124.4A 2020-11-09 2021-07-19 针对异构集成电路的基于模型的设计和分割 Pending CN116457789A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/092,875 US11270051B1 (en) 2020-11-09 2020-11-09 Model-based design and partitioning for heterogeneous integrated circuits
US17/092,875 2020-11-09
PCT/US2021/042138 WO2022098401A1 (en) 2020-11-09 2021-07-19 Model-based design and partitioning for heterogeneous integrated circuits

Publications (1)

Publication Number Publication Date
CN116457789A true CN116457789A (zh) 2023-07-18

Family

ID=77274826

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180075124.4A Pending CN116457789A (zh) 2020-11-09 2021-07-19 针对异构集成电路的基于模型的设计和分割

Country Status (6)

Country Link
US (1) US11270051B1 (zh)
EP (1) EP4241195A1 (zh)
JP (1) JP2023548392A (zh)
KR (1) KR20230097191A (zh)
CN (1) CN116457789A (zh)
WO (1) WO2022098401A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802807B1 (en) * 2019-05-23 2020-10-13 Xilinx, Inc. Control and reconfiguration of data flow graphs on heterogeneous computing platform

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854929A (en) * 1996-03-08 1998-12-29 Interuniversitair Micro-Elektronica Centrum (Imec Vzw) Method of generating code for programmable processors, code generator and application thereof
US7155708B2 (en) 2002-10-31 2006-12-26 Src Computers, Inc. Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation
JP4165712B2 (ja) * 2004-11-10 2008-10-15 シャープ株式会社 データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体
WO2011125232A1 (en) * 2010-04-09 2011-10-13 Nec Corporation Method and apparatus for design space exploration acceleration
US20190138373A1 (en) * 2017-10-27 2019-05-09 Wave Computing, Inc. Multithreaded data flow processing within a reconfigurable fabric
US10747690B2 (en) 2018-04-03 2020-08-18 Xilinx, Inc. Device with data processing engine array
US10586003B1 (en) 2018-08-21 2020-03-10 Xilinx, Inc. Circuit design using high level synthesis and linked hardware description language libraries
US10783295B1 (en) 2019-04-30 2020-09-22 Xilinx, Inc. Netlist partitioning for designs targeting a data processing engine array
US10628622B1 (en) 2019-05-10 2020-04-21 Xilinx, Inc. Stream FIFO insertion in a compilation flow for a heterogeneous multi-core architecture
US11188312B2 (en) 2019-05-23 2021-11-30 Xilinx, Inc. Hardware-software design flow with high-level synthesis for heterogeneous and programmable devices
US10891414B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Hardware-software design flow for heterogeneous and programmable devices
US10802807B1 (en) * 2019-05-23 2020-10-13 Xilinx, Inc. Control and reconfiguration of data flow graphs on heterogeneous computing platform
US10891132B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Flow convergence during hardware-software design for heterogeneous and programmable devices

Also Published As

Publication number Publication date
EP4241195A1 (en) 2023-09-13
JP2023548392A (ja) 2023-11-16
US11270051B1 (en) 2022-03-08
WO2022098401A1 (en) 2022-05-12
KR20230097191A (ko) 2023-06-30

Similar Documents

Publication Publication Date Title
CN106155755B (zh) 程序编译方法和程序编译器
US7340693B2 (en) System for designing re-programmable digital hardware platforms
US20170286169A1 (en) Automatically Mapping Program Functions to Distributed Heterogeneous Platforms Based on Hardware Attributes and Specified Constraints
Rabaey et al. Fast prototyping of datapath-intensive architectures
KR100186869B1 (ko) 회로와 시스템들의 고레벨의 의미론적 명세들과 기술들로부터 회로와 시스템들의 실행가능한 저레벨의 구조적 기술과 정당한물리적구현들을추론하는방법론
US5870308A (en) Method and system for creating and validating low-level description of electronic design
US8639487B1 (en) Method for multiple processor system-on-a-chip hardware and software cogeneration
US10977018B1 (en) Development environment for heterogeneous devices
US10586003B1 (en) Circuit design using high level synthesis and linked hardware description language libraries
US8181131B2 (en) Enhanced analysis of array-based netlists via reparameterization
US9665674B2 (en) Automating a microarchitecture design exploration environment
US10817353B1 (en) Adaptable dynamic region for hardware acceleration
Kapre et al. Survey of domain-specific languages for FPGA computing
Lecomte et al. A co-design methodology based on model driven architecture for real time embedded systems
US10387584B1 (en) Streaming on hardware-software platforms in model based designs
Cilardo et al. Exploiting concurrency for the automated synthesis of MPSoC interconnects
Stavinov 100 power tips for FPGA designers
CN116457789A (zh) 针对异构集成电路的基于模型的设计和分割
Shetty et al. Enabling the design of behavioral systems-on-chip
Developers Verilog-to-routing documentation
Tomja Enhancing Versatility and Efficiency of the CCSDS-123 Compression Algorithm through Dynamic Partial Reconfiguration for the HYPSO Mission
US12073155B2 (en) Method and system for building hardware images from heterogeneous designs for electronic systems
Giesen Accelerating HLS Autotuning of Large, Highly-Parameterized Reconfigurable SoC Mappings
WO2017046941A1 (ja) アーキテクチャ生成装置およびアーキテクチャ生成プログラム
Khatti et al. PASTA: Programming and Automation Support for Scalable Task-Parallel HLS Programs on Modern Multi-Die FPGAs

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