CN115796105A - 用于添加另外的电路组件的方法、装置和存储介质 - Google Patents
用于添加另外的电路组件的方法、装置和存储介质 Download PDFInfo
- Publication number
- CN115796105A CN115796105A CN202211109966.XA CN202211109966A CN115796105A CN 115796105 A CN115796105 A CN 115796105A CN 202211109966 A CN202211109966 A CN 202211109966A CN 115796105 A CN115796105 A CN 115796105A
- Authority
- CN
- China
- Prior art keywords
- circuit component
- existing
- fpga configuration
- fpga
- existing circuit
- 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
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/32—Circuit design at the digital level
- G06F30/337—Design optimisation
-
- 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/343—Logical level
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)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明涉及一种用于将另外的电路组件(1)添加到FPGA配置(3)的方法,所述另外的电路组件具有可在FPGA上执行的操作,其中FPGA配置(3)已经具有在FPGA配置(3)中在位置上分布地设置的至少一个现有的电路组件(2),所述至少一个现有的电路组件具有可在FPGA上执行的操作,所述方法具有如下步骤:对所述另外的电路组件(1)进行综合以用于获得另外的网表;并且在考虑到在FPGA配置(3)中的所述至少一个现有的电路组件(2)的情况下分布地设置所述另外的网表。本发明还涉及一种非易失性的计算机可读存储介质和一种用于将另外的电路组件(1)添加到FPGA配置(3)的装置。
Description
技术领域
本发明涉及一种用于将另外的电路组件添加到FPGA配置的方法,所述另外的电路组件具有可在FPGA上执行的操作,其中,FPGA配置已经具有在位置上分布地设置在FPGA配置中的至少一个现有的电路组件,所述至少一个现有的电路组件具有可在FPGA上执行的操作。本发明还涉及一种非易失性的计算机可读存储介质,所述存储介质具有存储在其上的指令,在处理器上执行所述指令时,所述指令引起所述方法。此外,本发明还涉及一种用于将另外的电路组件添加到FPGA配置的装置。
背景技术
FPGA是一种在其中可以加载逻辑电路的数字技术集成电路。不同于计算机、微控制器和控制器的编程,在FPGA中,术语“编程”或“构建FPGA”不仅意味着预给定时间序列,还意味着定义所追求的电路结构。这种电路结构借助于硬件描述语言来表达,然后由软件编译成配置文件,所述配置文件预给定各元件在FPGA中应当如何连接。因此在FPGA编程时,创建对硬件结构的描述,然后借助于综合和布线工具将所述描述传递到实际的FPGA上。这种硬件描述通常以专门的语言、例如VHDL或Verilog进行。因此,在此除了“FPGA程序”外还提及“FPGA配置”。与计算机、微处理器和控制器的编程不同,FPGA编程不是针对预给定的操作系统和驱动程序库。代替于此,FPGA编程针对的是定义半导体中的结构,这些结构后续实施所预期的功能。通过这种方式能实现传统的预制的微处理器仅能困难地实现的专业化程度和并行程度。
在硬件在环仿真(HIL仿真)和快速控制原型系统(RCP系统)领域,实时仿真、例如在电力电子和电动汽车技术领域中的实时仿真已经有很长一段时间不再能通过纯处理器模型来满足。在许多要求非常快速的控制回路的应用情况中,这必须通过FPGA模型来补充甚至替代。用于HIL仿真和在快速控制原型系统中的这种硬件具有大量的FPGA,所述FPGA具有针对不同功能的经过测试的固件版本或电路组件,例如用于在实时网络中通信的FPGA和在I/O通道上能实现不同I/O功能的FPGA。
一旦需要对功能进行更改,就必须重新实现该功能,重新构建FPGA,并对每个单独的功能(即现有的功能和新的功能)进行测试并发布。这是因为在构建FPGA固件版本时,每个单独的电路组件的功能必须跨过电路组件的边界来优化、在FPGA上布局并重新布线。甚至单个位或信号的更改也可能导致不同的结果。在这方面,每个单个的功能可以具有不同的时序行为,取决于在FPGA上的布局。即使在仅最小的更改时,由此所需的测试也产生从硬件开发到软件开发直至系统测试的高的成本,因为始终需要测试FPGA的整体功能。这在硬件开发中特别成问题,因为固件版本必须耗费地在气候室中测试,以便保证固件版本在对于产品特定的所有环境条件下都能起作用。
发明内容
从这种情况出发,本发明的目的是给出一种用于更改FPGA配置的功能的方法和装置,与现有技术中已知的方法和装置相比,所述方法和装置的特征在于低的测试成本。
本发明的所述目的通过独立权利要求的特征来实现。有利的设计方案在从属权利要求中给出。
因此,所述目的通过一种用于将另外的电路组件添加到FPGA配置的方法来实现,所述另外的电路组件具有可在FPGA上执行的操作,其中,FPGA配置已经具有在位置上分布地设置在FPGA配置中的至少一个现有的电路组件,所述至少一个现有的电路组件具有可在FPGA上执行的操作,所述方法具有如下步骤:
对所述另外的电路组件进行综合以用于获得另外的网表;并且
在考虑到在FPGA配置中的所述至少一个现有的电路组件的情况下分布地设置所述另外的网表。
所提出的方法的一个要点在于,与现有技术相比,仅还需要测试FPGA配置的更改,而不需要测试FPGA配置的整体功能,由此强烈降低时间成本和费用成本。在这样的应用情况中,在现有技术中以固定的所谓布图规划为前提,在所述布图规划中,电路组件在FPGA配置中布局在固定的区域、所谓的Pblock中。与此相对,所提出的方法能够将特别是受保护的电路组件在可变的逻辑中使用而无需布图规划。所述方法对于另外的电路组件(所述另外的电路组件例如由客户而不是由制造商创建)使用现有的自由空间。在此,FPGA的整体时序不受刚性的Pblock边界的影响和/或电路组件不预先确定为固定的Pblock尺寸。这意味着在考虑到所述至少一个现有的电路组件的情况下分布地设置所述另外的网表不限于(如在现有技术中实践的那样)在FPGA配置中的固定区域上进行。换句话说,相对于纯粹的“递增实现”,实现了所谓的组件处理。
总之,所提出的方法能实现在可变的FPGA逻辑中可靠地运行受保护的电路组件,其中确保时序可靠并且测试用于功率消耗的标准场景,并且能通过预布局实现更短的建立时间。通过所述方法省去布图规划的必要性,同时产生用于FPGA制造商的布局和布线工具的更大的自由度。此外,没有发生由于切割而引起的对不使用的资源的浪费,因为原则上所有还剩余的自由空间都可以使用。此外,通过所述方法不需要对电路组件进行理想的预布局,并且整体时序不受刚性的Pblock边界影响。此外,在Pblock边界上也不需要附加的传输寄存器以避免时序问题。最后,当电路组件变得对于其Pblock而言过大时,不会发生对多个和/或所有电路组件的舍弃。此外产生倾向于更均匀的温度发展分布,因为没有由于极端活跃的Pblock而产生的局部热点。所述方法也能实现将电路组件自动地靠近其I/O地布局。对于气候室测试而言,可以将组件功能扩展出附加的热用途、例如接通的触发器、无寄存器的振荡器等,它们可以加热FPGA,从而确保最坏情况的安全。
根据一种优选的进一步改进方案,所述设置包括以下步骤:在阻塞至少一个现有的电路组件的情况下递增地添加所述另外的网表。
根据另一种优选的进一步改进方案,所述方法在所述设置之后包括以下步骤:移除所述至少一个现有的电路组件。
根据一种优选的进一步改进方案,所述移除包括以下步骤:
阻塞所述另外的电路组件;并且
依次移除所述至少一个现有的电路组件的至少一个现有的网表。
借助于这些步骤,可以将完成布局和布线的FPGA配置用作参考设计,其中特别是也在当前设计中出现的所有电路组件保持相同,然而可以自动地移除不使用的电路组件。也可以借助于FPGA配置创建完成布局布线的单个电路组件的库,并且对于在当前设计中使用的所有电路组件而言,为了进行建立而从库接收单个电路组件的完成的布局和布线。
根据另一种优选的进一步改进方案,所述方法包括以下步骤:
阻塞所述另外的电路组件;并且
输出所述另外的电路组件的布置结构以用于在添加又一个电路组件时被考虑到。
使用这种变型方案,可以借助于FPGA配置创建所谓的约束库,除以综合的网表或以语言(例如VHDL或Verilog)或以电路组件的图形建模来描述功能外,所述约束库仅包含电路组件的约束。所有电路组件的网表不是以完成布局和布线的方式被存储,而是仅存储未布局并且未布线的网表及其约束,所述约束强制(erzwingen)相同的布局和布线。
根据一种优选的进一步改进方案,所述方法包括以下步骤:
读入所述至少一个现有的电路组件连同所述至少一个现有的网表;和/或
将不使用的电路组件从所述另外的电路组件与所述至少一个现有的电路组件共同的布置结构中移除。
根据另一种优选的进一步改进方案,在保留所述至少一个现有的电路组件的布置结构的情况下设置所述另外的电路组件。根据一种优选的进一步改进方案,在FPGA配置的未被所述至少一个现有的电路组件占用的自由空间中进行设置。FPGA配置可以包括多个现有的电路组件。
在考虑到在FPGA配置中的所述至少一个现有的电路组件的情况下分布地设置、特别是在位置上分布地设置所述另外的网表具体意味着,对每个电路组件的设置不是在专用的自由空间中进行(即,每个电路组件都这样彼此分开地和/或间隔开地设置),而是电路组件可以在地理上相叠。根据一种优选的进一步改进方案,通过所述设置,将所述至少一个现有的电路组件和所述另外的电路组件布局在FPGA配置的相同的分区中,和/或所述至少一个现有的电路组件和所述另外的电路组件无分区地设置在FPGA配置中。
根据一种优选的进一步改进方案,所述方法具有以下步骤:单独地测试所述至少一个现有的电路组件和所述另外的电路组件。
测试优选在气候室中和/或借助于负载生成逻辑、例如大规模的触发器切换来进行。
根据另一种优选的进一步改进方案,在FPGA配置上设置有在相应地考虑到其他现有的电路组件的情况下分布地设置的多个现有的电路组件,和/或所述方法包括以下步骤:设置多个另外的电路组件。
优选地,所述多个另外的电路组件如先前描述的那样借助于综合相应的另外的电路组件和分布地设置相应的另外的网表来设置。优选地,各个电路组件分别具有不同的可在FPGA上执行的操作。
根据一种优选的进一步改进方案,在FPGA配置上设置有在相应地考虑到其他现有的电路组件的情况下分布地设置的多个现有的电路组件,并且所述方法包括以下步骤:从FPGA配置中依次移除至少一个现有的电路组件,并且通过电路组件的其他版本来替换所移除的电路组件,电路组件的所述其他版本已在考虑到所有其他现有的电路组件的情况下创建。
根据一种优选的进一步改进方案,FPGA配置具有分布地设置的至少一个另外的电路组件,依次移除所述至少一个另外的电路组件,并且将所述至少一个另外的电路组件的其他版本设置在自由空间中、特别是所移除的电路组件的自由空间中或在所有现存的自由空间上。
由此能够例如实现在FPGA配置中的电路组件、例如“网络”的更新,所述FPGA配置仅由无冲突地设置的电路组件组成。这在任意布局的电路组件中也是可行的,将这些电路组件在更新之前删除并在更新之后布局在新产生的自由空间中。
所述目的还通过一种非易失性的计算机可读存储介质来实现,所述存储介质具有存储在其上的指令,在处理器上执行所述指令时,所述指令引起先前描述的方法。
所述目的还通过一种用于将另外的电路组件添加到FPGA配置的装置来实现,所述另外的电路组件具有可在FPGA上执行的操作,其中,所述另外的电路组件具有可在FPGA上执行的操作,其中,FPGA配置已经具有在FPGA配置中在位置上分布地设置的至少一个现有的电路组件,所述至少一个现有的电路组件具有可在FPGA上执行的操作,所述装置包括:用于对所述另外的电路组件进行综合以用于获得另外的网表的模块;和用于在考虑到在FPGA配置中的所述至少一个现有的电路组件的情况下分布地设置所述另外的网表的模块。
根据一种优选的进一步改进方案,用于在考虑到在FPGA配置中的所述至少一个现有的电路组件的情况下分布地设置所述另外的网表的模块包括:用于在阻塞至少一个现有的电路组件的情况下递增地添加所述另外的网表的器件
根据一种优选的进一步改进方案,所述装置还包括:用于移除所述至少一个现有的电路组件的模块。
根据一种优选的进一步改进方案,用于移除所述至少一个现有的电路组件的模块包括:用于阻塞所述另外的电路组件的器件;和用于依次移除所述至少一个现有的电路组件的至少一个现有的网表的器件。
根据一种优选的进一步改进方案,所述装置包括:用于阻塞所述另外的电路组件的模块;和用于输出所述另外的电路组件的布置结构以用于在添加又一个电路组件时被考虑到的模块。
根据一种优选的进一步改进方案,所述装置包括:用于读入所述至少一个现有的电路组件连同所述至少一个现有的网表的模块;和/或用于将不使用的电路组件从所述另外的电路组件与所述至少一个现有的电路组件共同的布置结构中移除的模块。
根据一种优选的进一步改进方案,所述另外的电路组件在保留所述至少一个现有的电路组件的布置结构的情况下设置。
根据一种优选的进一步改进方案,所述另外的电路组件设置在FPGA配置的未被所述至少一个现有的电路组件占用的自由空间中。
根据一种优选的进一步改进方案,所述至少一个现有的电路组件和所述另外的电路组件布局在FPGA配置的相同的分区中,和/或所述至少一个现有的电路组件和所述另外的电路组件无分区地设置在FPGA配置中。
根据一种优选的进一步改进方案,所述装置包括:用于单独地测试所述至少一个现有的电路组件和所述另外的电路组件的模块。
根据一种优选的进一步改进方案,在FPGA配置上具有在相应地考虑到其他现有的电路组件的情况下分布地设置的多个现有的电路组件,和/或所述装置包括用于设置多个另外的电路组件的模块。
根据一种优选的进一步改进方案,在FPGA配置上具有在相应地考虑到其他现有的电路组件的情况下分布地设置的多个现有的电路组件,并且所述装置包括:用于从FPGA配置中依次移除至少一个现有的电路组件的模块,和用于通过电路组件的其他版本来替换所移除的电路组件的模块,电路组件的所述其他版本已在考虑到所有其他现有的电路组件的情况下创建。
根据一种优选的进一步改进方案,FPGA配置具有分布地设置的至少一个另外的电路组件,所述至少一个另外的电路组件被依次移除,并且所述至少一个另外的电路组件的其他版本设置在自由空间中、特别是所移除的电路组件的自由空间中或在所有现存的自由空间上。
附图说明
下面参考附图借助于优选的实施例来更详细地阐述本发明。图中:
图1示出示例性的现有技术应用,
图2以示意图示出根据所提出的方法的应用,
图3以示意图示出所提出的方法的应用的另一种设计方案,并且
图4以示意图示出所提出的方法的应用的再一种设计方案。
具体实施方式
现代的FPGA工具为FPGA的综合、网表生成以及为实现(布局和布线)提供各种选项。在综合的过程中,用于电路组件的网表可以例如在其层次结构方面保留或者跨电路组件边界地去层次结构从而得到更好的优化。
图1示出了示例性的现有技术应用,其中,对于每次建立客户的客户FPGA配置,客户必须在必要时也将所使用的现有的电路组件从库中一起构建。每次建立都为现有的电路组件产生新的优化的网表、新的布局和新的布线,除客户功能外所述现有的电路组件也包含在FPGA比特流中。在这种情况下,库仍然采用硬件描述语言、如VHDL、Verilog或仍以图形建模的形式存在,以代码生成器从所述图形建模生成VHDL或Verilog,必要时以中间步骤经由其他语言、例如C语言——如果使用用于高级综合(HLS)的工具的话——来生成。
备选地,可以将FPGA的平面通过布图规划划分成用于各个电路组件的不同的区域、称为Pblock,如图1所示,各个电路组件可以单独地布局和布线。细分为刚性的Pblock同时用作动态的局部重新配置的基础,在所述重新配置中可以在FPGA的运行时交换各个电路组件。将电路组件划分到不同区域上是现有技术的方法,以便能够以布图规划和Pblock的可观的限制并且布局和布线固定地使用现有的电路组件。因此,库可以如上所述地存在并且然后将所述库布局到Pblock上,从而电路组件作为针对其Pblock布局完成的网表存在于库中。
下面描述的灵活的“组件堆栈”的方法能实现减少测试成本,并且在将来安装到客户FPGA应用中的电路组件能替换为更新的、可靠的版本。
与上面描述的以布图规划的方案相比,在下面描述的方法中不必确定用于各个电路组件的FPGA区域。每个电路组件都可以任意地布局在FPGA中。但是,电路组件不允许使用已经被另外的电路组件占用的资源,并且所述电路组件必须能作为专用的堆栈元件被选择。为了确保这一点,提出在下面介绍的借助于图2阐述的三个处理方式。
图2在左下方示出具有可在FPGA上执行的操作的另外的电路组件1,所述另外的电路组件应当与在左上方所示的四个现有的电路组件2嵌入到FPGA配置3中。所述四个现有的电路组件2在位置上分布地设置在FPGA配置3中,即,所述四个现有的电路组件分别不限制于FPGA的一个区域上。为了进行添加而实施两个基本的步骤,因此首先(a)对所述另外的电路组件1进行综合以用于获得所述另外的电路组件1的另外的网表,以及(b)在考虑到在FPGA配置3中的至少一个现有的电路组件2的情况下分布地设置所述另外的网表。
在保持所述至少一个现有的电路组件2的布置结构的情况下在FPGA配置3的未被占用的自由空间中设置所述另外的电路组件1。通过所述设置,将所述至少一个现有的电路组件2和所述另外的电路组件1布局在FPGA配置3的相同的分区中,从而所述至少一个现有的电路组件2和所述另外的电路组件1无分区地设置在FPGA配置3中。
为了设计这种方法存在多种可行方案。
在所谓的减法方式中,将完成布局和布线的“合并组件堆栈”用作参考设计,图2中在右侧示意性地作为FPGA配置3示出。“合并组件堆栈”的也在当前设计中出现的所有电路组件保持相同,将不使用的电路组件自动地移除。这种方式可以利用所谓的递增式编译的特征。
在所谓的加法方式中,借助于“合并组件堆栈”创建完成布局布线的各个电路组件的库。对于在当前设计中使用的所有电路组件而言,为了建立而从库接收各个电路组件的完成的布局和布线。这种方法可以利用所谓的层次化设计流程的特征。由层次化设计流程已知,以Pblock锁定已经布局和布线的电路组件。此外,除锁定单元的布局(LOC约束)、锁定由单元所使用的基本元素(BEL约束)以及锁定布线包含可编程互连(PIP)的设置(ROUTE_FIXED约束)外,需要附加地锁定基本元素的引脚、即LOCK_PINS约束。
所谓的约束方法是最简单的方式,因为不使用完成布局和布线的电路组件,而是仅使用电路组件的约束,以用于强制相同的布局和布线。这种方式可以借助于“合并组件堆栈”来创建约束库,除以综合的网表或以语言(例如VHDL或Verilog)或以电路组件的图形建模的形式对功能的描述外,所述约束库仅包含电路组件的约束。
电路组件库的创建包括以下步骤:在减法和加法方式中,首先在阻塞至少一个现有的电路组件2的情况下递增地添加另外的网表。在减法方式中,然后移除所述至少一个现有的电路组件2,其中阻塞所述另外的电路组件1。在约束方式中,先阻塞所述另外的电路组件1,然后输出所述另外的电路组件1的布置结构以用于在添加又一个电路组件1时被考虑到。在此之前,读入所述至少一个现有的电路组件2连同所述至少一个现有的网表。可以将不使用的电路组件从所述另外的电路组件1与所述至少一个现有的电路组件2共同的布置结构中移除。
为了创建另外的FPGA电路组件1,在减法方式中首先综合所述另外的电路组件1,其中,将所述另外的电路组件1作为专用的脱离语境对象(Objekt Out of Context,OOC)来综合。综合在确定的包装器中进行,从而所述另外的电路组件1的网表路径总是相同的。然后输出所述另外电路组件1的所述另外的网表以便将所述另外的网表作为网表库来获得。为了实现(布局和布线)所述另外的电路组件1,将所述另外的电路组件与包装器和所有已经存在的电路组件2共同进行布局和布线。在此,所有已经存在的电路组件2的布局和布线都已经被锁定,并且仅递增地添加新的网表。
在下面多次示例性地使用的语句相应于FPGA工具Xilinx Vivado,因此在其显性方面与产品和版本相关联,但在其隐性方面足以不言自明。
read_checkpoint-incremental<design_of_merged_component_stack>-fix_reuse
place_design
route_design
作为结果获得新的FPGA配置3,在所述新的FPGA配置中包含所有现有的电路组件2连同所述另外的电路组件1。
在加法方式中,首先类似于减法方式地综合所述另外的电路组件1,然后也类似于减法方式地实现所述另外的电路组件。再通过以下方式从已布局和布线的设计中移除所有其他的电路组件2:
1.锁定所述另外的电路组件1的布局和布线。
lock_component<netlist_path_of_component_in_wrapper>
2.依次移除所有旧的电路组件2的网表。
remove_net<netlist_paths_of_all_other_component_in_wrapper>
remove_cell<netlist_paths_of_all_other_component_in_wrapper>
3.对整体设计进行布局,其中,保留所述另外的电路组件1的布局,并且移除所有其他不使用的电路组件,因为所述不使用的电路组件在要布局的设计的网表中不匹配。
place_design-unplace
place_design
4.对整体设计进行布线,其中,保留所述另外的电路组件1的布线,并且移除电路组件的所有其他不使用的布线,因为所述不使用的布线在要布线的设计的网表中不匹配。
route_design-unroute
route_design
5.保存所述另外的电路组件1的检查点。
在约束方式中,类似于加法方式和/或减法方式进行综合,然而不进行网表输出。从完成布局的设计(所述设计也可以由多个电路组件组成,例如“合并组件堆栈”)中不输出完整的电路组件,而是通过以下方式仅输出其约束:
1.锁定所述另外的电路组件1的布局和布线。
lock_component<netlist_path_of_component_in_wrapper>
2.输出所述另外的电路组件1的布局和布线。
write_xdc–type physical–cell<netlist_path_of_component_in_wrapper>
component_physical.xdc
为了以这种“(合并)组件堆栈”(参见图2右侧)、也简称为FPGA配置3这样工作,使得现有的电路组件2可以作为完成布局和布线的库元素使用,不必始终将所述库元素中的所有库元素在一个FPGA中使用,以类似的方式存在三种可行的处理方式:
在减法方式中,首先对例如客户设计或固件进行综合连同创建VHDL代码,其中,“合并组件堆栈”库中的电路组件可以作为黑盒使用。可以在借助于用于从图形建模环境或高级语言(如C语言)生成VHDL代码的工具的情况下进行创建。仅将实体、即所使用的电路组件的接口定义绑定在VHDL代码中,这是在确定的包装器中完成的,由此组件堆栈的电路组件的网表路径是相同的。结果,各个电路组件保留在整体网表中,但被作为黑盒看待。
在实施综合时,从“合并组件堆栈”的网表库中添加所使用的电路组件的网表,因此在后续的递增实现中,将新设计的“组件堆栈”元素的网表看作是与在“合并组件堆栈”参考中的网表相同的。具体地,对每个电路组件单独地实施:
read_checkpoint<synthesized_component_checkpoint_filename>
在实现(布局和布线)的范畴内,将整体的所实现的“合并组件堆栈”作为参考读入。也加载“合并组件堆栈”的网表,以便在客户设计和/或固件的网表中重新找到“合并组件堆栈”的所使用的电路组件。对于所使用的电路组件使用参考设计(“合并组件堆栈”)的现有的布局和布线:
read_checkpoint-incremental<design_of_merged_component_stack>-fix_reuse
在保留“合并组件堆栈”的电路组件的被锁定的布局的情况下对整体设计进行布局。移除“合并组件堆栈”的不使用的电路组件,因为所述不使用的电路组件在要布局的设计的网表中不匹配:
place_design
在保留“合并组件堆栈”的电路组件的布线的情况下对整体设计进行布线。移除对于“合并组件堆栈”的非电路组件的布线,因为所述布线在要布线的设计的网表中不匹配。
route_design
在加法方式中,首先也类似于减法方式进行综合,然后进行实现(布局和布线)。首先读入“组件堆栈”的各个所需的电路组件。对于所使用的电路组件再次使用现有的布局和布线。对每个电路组件单独地实施:
read_checkpoint–cell<netlist_path_of_component_in_wrapper>
<implemented_component_checkpoint_filename>-strict
然后锁定所使用的已读入的电路组件的布局和布线。对每个电路组件单独地实施:
lock_component<netlist_path_of_component_in_wrapper>
在保留“组件堆栈”的各个电路组件的布局的情况下对整体设计进行布局:
place_design
最后,在保留“组件堆栈”的各个电路组件的布线的情况下对整体设计进行布线:
route_design
在约束方式中,首先也类似于加法方式和减法方式实施综合。在实现(布局和布线)中,首先读入“组件堆栈”的各个所需的电路组件的约束。对于所使用的电路组件再次使用现有的布局和布线。对每个电路组件单独地实施:
read_xdc component_physical.xdc
然后对整体设计进行布局,其中,“组件堆栈”的各个电路组件的布局通过约束来强制。
place_design
最后,对整体设计进行布线,其中,“组件堆栈”的各个电路组件的布线通过约束来强制。
route_design
通过使用这种“组件堆栈”作为FPGA配置3,可以在可变的FPGA逻辑中运行受保护的(固件)电路组件1、2。具有可在FPGA上执行的操作的新功能仅测试一次,而不是在每次添加另外的电路组件1或更改现有的电路组件2时都进行测试。以所提出的解决方案能够在“组件堆栈”的基础上实现现有的电路组件的受保护的运行,因此例如在FPGA中能实现“标准I/O”通道功能以及例如可变的客户FPGA逻辑,如图3中所示。FPGA I/O通道的这种可选的独占的使用,例如用于现有的标准I/O电路组件/功能、例如PWM或旋转变压器功能(所述电路组件/功能因此可以经由仿真的处理器的实时网络提供),或者客户FPGA逻辑的可选的独占的使用,在dSPACE产品中称为“灵活I/O”。如果I/O通道由客户FPGA逻辑使用,则所述I/O通道不用于标准I/O组件,因此这些电路组件不必也包含在FPGA配置中。对于灵活I/O而言,每个标准I/O通道功能都作为“组件堆栈”的一个电路组件来实现。不仅可以使用加法方式、减法方式而且可以使用约束方式。
例如,对其FPGA模型进行图形建模的客户可以在每次FPGA建立时构建整个灵活I/O框架。所述框架例如负责将FPGA客户模型连接到通信总线和I/O,并且还包含在客户模型与框架电路组件之间的包装器。如果客户不直接从FPGA模型作用I/O通道,则这些通道可以由在FPGA中实现的标准I/O功能使用,如图3所示出的。标准I/O功能由在实时处理器上的CPU模型使用、即不由FPGA模型使用。
除FPGA模型外,灵活I/O框架的网表也用于建立FPGA。在框架中,标准I/O通道功能对于基于“组件堆栈”的综合而言定义为黑盒。框架的其余部分可以在综合中进一步去层次化和优化。实现以与前面所描述的类似的方式进行。在加法方式或约束方式中,对于在客户FPGA模型中使用的标准I/O功能和/或电路组件,分别使用约束以用于锁定布局和布线。
图4中示出以经测试的具有固定的布局的新版本替换客户FPGA配置的组件。客户逻辑围绕受保护的现有的电路组件2重新布局,由此确保所述另外的电路组件1的功能。以相同的方式可以也替换在FPGA中的具有可变的逻辑(例如灵活I/O)的标准I/O通道功能(“通信控制器v1”)的更新的版本(“通信控制器v2”),其中所述替换不仅能以加法方式而且能以减法方式进行。
所描述的实施例仅是示例,所述示例能在权利要求的范畴内以多样化的方式修改和/或补充。针对特定实施例所描述的每个特征都可以单独使用或与在任意其他实施例中的其他特征结合使用。针对特定类别的实施例描述的每个特征也能以相应的方式在其他类别的实施例中使用。
附图标记列表
1 另外的电路组件
2 现有的电路组件
3 FPGA配置
Claims (27)
1.一种用于将另外的电路组件(1)添加到FPGA配置(3)的方法,所述另外的电路组件具有可在FPGA上执行的操作,其中,
FPGA配置(3)已经具有在FPGA配置(3)中在位置上分布地设置的至少一个现有的电路组件(2),所述至少一个现有的电路组件具有可在FPGA上执行的操作,所述方法具有如下步骤:
对所述另外的电路组件(1)进行综合以用于获得另外的网表;并且
在考虑到在FPGA配置(3)中的所述至少一个现有的电路组件(2)的情况下分布地设置所述另外的网表。
2.根据前述权利要求所述的方法,其中,所述设置包括以下步骤:在阻塞至少一个现有的电路组件(2)的情况下递增地添加所述另外的网表。
3.根据前述权利要求中任一项所述的方法,其中,所述方法在所述设置之后具有以下步骤:移除所述至少一个现有的电路组件(2)。
4.根据前述权利要求所述的方法,其中,所述移除包括以下步骤:
阻塞所述另外的电路组件(1);并且
依次移除所述至少一个现有的电路组件(2)的至少一个现有的网表。
5.根据前述权利要求1所述的方法,其中,所述方法具有以下步骤:
阻塞所述另外的电路组件(1);并且
输出所述另外的电路组件(1)的布置结构以用于在添加又一个电路组件(1)时被考虑到。
6.根据前述权利要求中任一项所述的方法,其中,所述方法具有以下步骤:
读入所述至少一个现有的电路组件(2)连同所述至少一个现有的网表;和/或
将不使用的电路组件从所述另外的电路组件(1)与所述至少一个现有的电路组件(2)共同的布置结构中移除。
7.根据前述权利要求中任一项所述的方法,其中,在保留所述至少一个现有的电路组件(2)的布置结构的情况下设置所述另外的电路组件(1)。
8.根据前述权利要求中任一项所述的方法,其中,在FPGA配置(3)的未被所述至少一个现有的电路组件(2)占用的自由空间中进行设置。
9.根据前述权利要求中任一项所述的方法,其中,通过所述设置,将所述至少一个现有的电路组件(2)和所述另外的电路组件(1)布局在FPGA配置(3)的相同的分区中,和/或所述至少一个现有的电路组件(2)和所述另外的电路组件(1)无分区地设置在FPGA配置(3)中。
10.根据前述权利要求中任一项所述的方法,其中,所述方法具有以下步骤:单独地测试所述至少一个现有的电路组件(2)和所述另外的电路组件(1)。
11.根据前述权利要求中任一项所述的方法,其中,在FPGA配置(3)上具有在相应地考虑到其他现有的电路组件的情况下分布地设置的多个现有的电路组件,和/或所述方法包括以下步骤:设置多个另外的电路组件。
12.根据前述权利要求中任一项所述的方法,其中,在FPGA配置(3)上具有在相应地考虑到其他现有的电路组件的情况下分布地设置的多个现有的电路组件,并且所述方法包括以下步骤:
从FPGA配置(3)中依次移除至少一个现有的电路组件(2),并且通过电路组件的其他版本来替换所移除的电路组件,电路组件的所述其他版本已在考虑到所有其他现有的电路组件(2)的情况下创建。
13.根据前述权利要求所述的方法,其中,FPGA配置(3)具有分布地设置的至少一个另外的电路组件(1),依次移除所述至少一个另外的电路组件,并且将所述至少一个另外的电路组件的其他版本设置在自由空间中、特别是所移除的电路组件(1)的自由空间中或在所有现存的自由空间上。
14.一种非易失性的计算机可读存储介质,所述存储介质具有存储在其上的指令,在处理器上执行所述指令时,所述指令引起根据前述权利要求中任一项所述的方法。
15.一种用于将另外的电路组件(1)添加到FPGA配置(3)的装置,所述另外的电路组件具有可在FPGA上执行的操作,其中,
FPGA配置(3)已经具有在FPGA配置(3)中在位置上分布地设置的至少一个现有的电路组件(2),所述至少一个现有的电路组件具有可在FPGA上执行的操作,所述装置包括:
用于对所述另外的电路组件(1)进行综合以用于获得另外的网表的模块;和
用于在考虑到在FPGA配置(3)中的所述至少一个现有的电路组件(2)的情况下分布地设置所述另外的网表的模块。
16.根据前述权利要求15所述的装置,其中,用于在考虑到在FPGA配置(3)中的所述至少一个现有的电路组件(2)的情况下分布地设置所述另外的网表的模块包括:用于在阻塞至少一个现有的电路组件(2)的情况下递增地添加所述另外的网表的器件。
17.根据权利要求15或16所述的装置,其中,所述装置还包括:用于移除所述至少一个现有的电路组件(2)的模块。
18.根据前述权利要求17所述的装置,其中,用于移除所述至少一个现有的电路组件(2)的模块包括:
用于阻塞所述另外的电路组件(1)的器件;和
用于依次移除所述至少一个现有的电路组件(2)的至少一个现有的网表的器件。
19.根据权利要求15所述的装置,其中,所述装置包括:
用于阻塞所述另外的电路组件(1)的模块;和
用于输出所述另外的电路组件(1)的布置结构以用于在添加又一个电路组件(1)时被考虑到的模块。
20.根据权利要求15至19中任一项所述的装置,其中,所述装置包括:
用于读入所述至少一个现有的电路组件(2)连同所述至少一个现有的网表的模块;和/或
用于将不使用的电路组件从所述另外的电路组件(1)与所述至少一个现有的电路组件(2)共同的布置结构中移除的模块。
21.根据权利要求15至20中任一项所述的装置,其中,所述另外的电路组件(1)在保留所述至少一个现有的电路组件(2)的布置结构的情况下设置。
22.根据权利要求15至21中任一项所述的装置,其中,所述另外的电路组件(1)设置在FPGA配置(3)的未被所述至少一个现有的电路组件(2)占用的自由空间中。
23.根据权利要求15至22中任一项所述的装置,其中,所述至少一个现有的电路组件(2)和所述另外的电路组件(1)布局在FPGA配置(3)的相同的分区中,和/或所述至少一个现有的电路组件(2)和所述另外的电路组件(1)无分区地设置在FPGA配置(3)中。
24.根据权利要求15至23中任一项所述的装置,其中,所述装置包括:用于单独地测试所述至少一个现有的电路组件(2)和所述另外的电路组件(1)的模块。
25.根据权利要求15至24中任一项所述的装置,其中,在FPGA配置(3)上具有在相应地考虑到其他现有的电路组件的情况下分布地设置的多个现有的电路组件,和/或所述装置包括用于设置多个另外的电路组件的模块。
26.根据权利要求15至25中任一项所述的装置,其中,在FPGA配置(3)上具有在相应地考虑到其他现有的电路组件的情况下分布地设置的多个现有的电路组件,并且所述装置包括:
用于从FPGA配置(3)中依次移除至少一个现有的电路组件(2)的模块,和
用于通过电路组件的其他版本来替换所移除的电路组件的模块,电路组件的所述其他版本已在考虑到所有其他现有的电路组件(2)的情况下创建。
27.根据前述权利要求26所述的装置,其中,FPGA配置(3)具有分布地设置的至少一个另外的电路组件(1),所述至少一个另外的电路组件被依次移除,并且所述至少一个另外的电路组件的其他版本设置在自由空间中、特别是所移除的电路组件(1)的自由空间中或在所有现存的自由空间上。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102021123496.4A DE102021123496A1 (de) | 2021-09-10 | 2021-09-10 | Verfahren zum Hinzufügen einer weiteren Schaltungskomponente |
DE102021123496.4 | 2021-09-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115796105A true CN115796105A (zh) | 2023-03-14 |
Family
ID=83271158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211109966.XA Pending CN115796105A (zh) | 2021-09-10 | 2022-09-13 | 用于添加另外的电路组件的方法、装置和存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230082540A1 (zh) |
EP (1) | EP4148613A1 (zh) |
CN (1) | CN115796105A (zh) |
DE (1) | DE102021123496A1 (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10885246B2 (en) * | 2018-10-26 | 2021-01-05 | The Regents Of The University Of California | Structural matching for fast re-synthesis of electronic circuits |
EP3869380A1 (de) * | 2020-02-18 | 2021-08-25 | dspace digital signal processing and control engineering GmbH | Verfahren, computerbasiertes system und computerprogramm-produkt zum floorplanning für eine programmierbare gatteranordnung mit nicht-rechteckigen blockgrenzen |
-
2021
- 2021-09-10 DE DE102021123496.4A patent/DE102021123496A1/de active Pending
-
2022
- 2022-09-08 EP EP22194640.3A patent/EP4148613A1/de active Pending
- 2022-09-12 US US17/942,856 patent/US20230082540A1/en active Pending
- 2022-09-13 CN CN202211109966.XA patent/CN115796105A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230082540A1 (en) | 2023-03-16 |
DE102021123496A1 (de) | 2023-03-16 |
EP4148613A1 (de) | 2023-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Vipin et al. | FPGA dynamic and partial reconfiguration: A survey of architectures, methods, and applications | |
JP4896242B2 (ja) | マスクプログラム可能なロジックデバイスをプログラムする方法およびその方法によってプログラムされたデバイス | |
Beckhoff et al. | Go ahead: A partial reconfiguration framework | |
US6735742B2 (en) | Method for optimizing a cell layout using parameterizable cells and cell configuration data | |
WO2001045258A2 (en) | Method for implementing a physical design for a dynamically reconfigurable logic circuit | |
Wiśniewski | Dynamic partial reconfiguration of concurrent control systems specified by Petri nets and implemented in Xilinx FPGA devices | |
Montminy et al. | Using relocatable bitstreams for fault tolerance | |
US10235485B1 (en) | Partial reconfiguration debugging using hybrid models | |
Love et al. | In pursuit of instant gratification for FPGA design | |
Krasteva et al. | Straight method for reallocation of complex cores by dynamic reconfiguration in Virtex II FPGAs | |
Guo et al. | Pillars: An integrated CGRA design framework | |
Iturbe et al. | A roadmap for autonomous fault-tolerant systems | |
Rana et al. | Dynamic reconfigurability in embedded system design | |
CN115796105A (zh) | 用于添加另外的电路组件的方法、装置和存储介质 | |
Brayton | The future of logic synthesis and verification | |
KR20070097051A (ko) | 동적으로 재구성 가능한 프로세서 | |
Beckhoff et al. | Design tools for implementing self-aware and fault-tolerant systems on FPGAs | |
Wegrzyn | Implementation of safety critical logic controller by means of FPGA | |
US7590960B1 (en) | Placing partitioned circuit designs within iterative implementation flows | |
Conger et al. | Design Framework for Partial Run-Time FPGA Reconfiguration. | |
US10936772B1 (en) | Methods for incremental circuit physical synthesis | |
Robinson et al. | New CAD framework extends simulation of dynamically reconfigurable logic | |
Bobda et al. | Designing Partial and Dynamically Reconfigurable Applications on Xilinx Virtex-II FPGAs using Handel-C | |
Ghosh et al. | XDL-based module generators for rapid FPGA design implementation | |
Chandrasekharan et al. | Accelerating FPGA development through the automatic parallel application of standard implementation tools |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |