有效的集成电路配置数据管理的制作方法

文档序号:14870386发布日期:2018-07-06 22:38阅读:120来源:国知局

本申请要求于2015年8月27日提交的美国专利申请号14/837,928的优先权,该申请通过引用以其全文合并于此。

本申请涉及集成电路,并且更具体地涉及有效地管理确定集成电路中的电路设计的实现方式的配置数据。



背景技术:

从一个技术节点到下一个技术节点的每一次转变都导致了更小的晶体管几何结构,并且因此潜在地导致每单位集成电路面积实现更多的功能。

集成电路通常包括配置存储位/比特位(bit),所述配置存储位通过利用配置数据对配置存储位进行编程而使得功能块能够定制。集成电路尺寸的增大往往导致功能块尺寸的增大,并且因而导致配置数据量的增加。由于配置数据通常被存储在存储电路中,因此需要更大的存储电路来存储配置数据的增加量。

部分重构加剧了具有增加数量的配置数据的问题,所述部分重构最近已经作为在不同的时间在集成电路的同一分区中实现多种不同电路设计的一种方式出现。考虑集成电路分区包括配置存储位的示例。第一配置数据集对这些配置存储位进行编程以实现第一电路设计;并且该第一电路设计实施方式在第一持续时间中在该集成电路分区上运行。

在第一持续时间之后,使用第二配置数据集对该集成电路分区上的配置存储位进行重新编程。因而,第一电路设计实施方式被第二电路实施方式代替,并且第二电路设计实施方式在第二持续时间中在该集成电路分区上运行。在实践中,多于两个电路设计实施方式通常通过部分重构共享相同的集成电路分区。

在此示例中,需要被存储在存储电路中的配置数据的数量随着每个附加电路设计实施方式而显著地增加;并且增加的存储器尺寸需求可能对集成电路的运行成本产生重大影响。



技术实现要素:

本申请展示了用于有效地管理配置数据的配置电路系统(circuitry)。该配置电路系统可以包括解码电路,所述解码电路可以包括第一和第二电路(circuit)。该解码电路可以接收基本配置数据集和第一数据集。该第一电路可以接收该第一数据集,该第一数据集可以包括该基本配置数据集与解码的配置数据集之间的压缩数据差异/差分(difference)。根据需要,第一电路可以解压所接收的第一数据集以创建第二数据集。第二电路可以接收基本配置数据集和来自第一电路的第二数据集并且使用基本配置数据集和第二数据集恢复解码的配置数据集。

应当认识到,能够以许多方式来实现本发明,例如过程、装置、系统、设备或计算机可读介质上的指令。下面描述几个创造性实施例。

在某些实施例中,上述配置电路系统可以使用所解码的配置数据集对可配置电路进行编程以便在该可配置电路上实现第一电路设计。根据需要,第一电路可以接收第三数据集,该第三数据集包括基本配置数据集和附加解码的配置数据集之间的其他压缩数据差异。第一电路可以解压所接收的第三数据集以创建第四数据集。

在某些实施例中,第二电路可以从第一电路接收基本配置数据集和第四数据集。根据需要,第二电路可以使用基本配置数据集和第四数据集恢复附加解码的配置数据集。

从附图以及下面优选实施方式的详细描述,本发明进一步的特征、它的性质以及各种不同的优点将变得更加明显。

附图说明

图1是根据一个实施例的具有可编程逻辑区域的说明性可编程集成电路的图。

图2a是根据一个实施例可用于设计集成电路的电路设计系统的图。

图2b是根据一个实施例可用在电路设计系统中的说明性计算机辅助设计(cad)工具的图。

图3是根据一个实施例的用于编码和解码在集成电路中实现电路设计的配置数据的说明性电路系统的图。

图4是根据一个实施例使用配置数据和基本配置来生成压缩配置数据的说明性步骤的流程图。

图5是根据一个实施例使用压缩配置数据和基本配置来生成配置数据的说明性步骤的流程图。

图6是根据一个实施例用于基于具有基本配置数据集的变化的比较生成压缩配置数据集的说明性步骤的流程图。

图7是根据本发明的实施例用于生成两个压缩配置数据集并将这些压缩数据集存储在存储电路中的说明性步骤的流程图。

具体实施方式

本发明实施例涉及集成电路,并且更具体地涉及有效地管理确定集成电路中的电路设计的实施方式的配置数据。

如上面在背景技术部分所述,可能需要更大的存储电路来存储用于对集成电路中的配置存储位进行编程的增加量的配置数据。增加量的配置数据可能源于集成电路中晶体管密度(即每单位面积的晶体管数目)的增加和/或部分重构的使用,所述部分重构最近作为在不同时间在集成电路的相同分区中实现多种不同电路设计的一种方式出现。

增加量的配置数据需要使用更大的存储电路,这可能对集成电路的运行成本产生重大影响。因此,可能期望更有效地管理用于编程配置存储位的配置数据而不影响集成电路的功能。

对本领域技术人员将显而易见的是,可以在没有一些或所有这些具体细节的情况下实践本发明的示例性实施例。在其他实例中,并未详细说明众所周知的操作,目的是为了避免不必要地模糊本发明的实施例。

实施例涉及用于使用计算机辅助设计(cad)工具的方法,所述cad工具有时也被称为设计自动化(da)工具或电子设计自动化(eda)工具,用于优化由配置存储位所表示的电路设计,以便在集成电路中实现。所述集成电路可以是任何合适类型的集成电路,例如微处理器、专用集成电路、数字信号处理器和存储器电路等。根据需要,所述集成电路可以是可编程的。换言之,此类集成电路的至少一部分可以被用户配置以使用可编程电路系统执行电路设计中描述的功能。该可编程电路系统可以通过调整配置存储元件的设置来配置。

图1中示出了根据本发明的集成电路(例如可编程逻辑器件100)的说明性实施例。

可编程逻辑器件100具有输入/输出电路系统110,所述输入/输出电路系统110用于驱动信号远离器件100并且用于经由输入/输入引脚120从其他器件接收信号。互连资源115(例如,全局和局部的、垂直和水平的导电线路和总线)可被用于对器件100上的信号进行路由。

输入/输出电路系统110包括常规的输入/输出电路系统、串行数据收发器电路系统、差分接收器和发射器电路系统或用于将一个集成电路连接至另一个集成电路的其他电路系统。

互连资源115包括导电线路和对应的导电线路之间的可编程连接,因此有时被称为可编程互连115。

可编程逻辑区域140可以包括可编程部件,例如数字信号处理电路系统、存储电路系统、算术电路系统或其他组合和时序逻辑电路系统。可编程逻辑区域140可以被配置为执行定制逻辑功能。可编程逻辑区域140也可以包括执行给定应用且具有有限可配置性的专用块。例如,可编程逻辑区域140可以包括专用块,例如可配置存储块、可配置处理块、可编程锁相环电路系统、可编程延迟锁定环电路系统或其他具有有限可配置性的专用块。可编程互连115也可以被视为是可编程逻辑区域140的一种类型。

可编程逻辑器件100包含可编程存储元件130。存储元件130可以使用引脚120和输入/输出电路系统110来加载配置数据(也被称为编程数据)。一旦被加载,存储元件各自提供对应的静态控制信号,该静态控制信号控制可编程逻辑区域140中的相关联逻辑部件的操作。在典型的情况下,被加载的存储器元件130的输出被施加于可编程逻辑区域140中的金属氧化物半导体场效应晶体管的栅极以便接通或关断某些晶体管,并且由此配置可编程逻辑区域140和路由路径中的逻辑。可以以这种方式控制的可编程逻辑电路元件包括多路复用器的部分(例如,用于形成可编程互连115中的路由路径的多路复用器)、查找表、逻辑阵列、and、or、nand和nor逻辑门和传输门等。

存储器元件130可以使用任何适合的易失性和/或非易失性存储器结构,例如随机存取存储器(ram)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩模编程的和激光编程的结构、这些结构的组合等。由于存储器元件130在编程过程中加载有配置数据,存储器元件130有时被称为配置存储器、配置存储器元件、配置存储位、配置ram或可编程存储器元件。

器件100的电路系统可以使用任何合适的架构来组织。作为一个示例,可编程逻辑器件100的逻辑可以以一系列较大可编程逻辑区域的行和列来组织,这些较大可编程逻辑区域中的每一个包含多个较小逻辑区域。较小区域可以是例如有时被称为逻辑元件(le)的逻辑区域,每个逻辑元件包含一个或多个查找表、一个或多个寄存器以及可编程多路复用器电路系统。较小区域也可以是例如有时被称为可配置逻辑块或自适应逻辑模块的逻辑区域。每个自适应逻辑模块(alm)可以包括一对加法器、一对相关联的寄存器、查找表或共享组合块的其他块(即,来自一对le的资源——在此上下文中有时也被称为自适应逻辑元件或ale)。较大区域可以是例如包含多个逻辑元件或多个alm的逻辑阵列块(lab)。

在器件编程过程中,配置数据被加载到器件100中,该器件100对可编程逻辑区域140进行配置,使得它们的逻辑资源执行期望的逻辑功能。电路设计系统可以基于集成电路设计的用户描述来生成配置数据。

图2a中示出了根据一个实施例的说明性电路设计系统200。系统200可以基于一个或多个处理器,例如个人计算机、工作站等。(多个)处理器可以使用网络(例如,局域网或广域网)相链接。这些计算机或外部存储器和存储设备中的存储器(例如内部和/或外部硬盘)可以用于存储指令和数据。

基于软件的部件(例如计算机辅助设计工具210和数据库215)驻留在系统200上。在操作过程中,可执行的软件(例如计算机辅助设计工具210的软件)在系统200的(多个)处理器上运行。数据库215被用于存储数据以便系统200进行操作。通常,软件和数据可以被存储在系统200中的任何计算机可读介质(存储设备)上。此类存储设备可以包括计算机存储器芯片、可移除的和固定的介质(例如硬盘驱动器、闪存、光盘(cd)、数字通用盘(dvd)、蓝光光盘(bd)、其他光学介质以及软盘)、磁带或任何其他合适的存储器或(多个)存储设备。当系统200的软件被安装时,系统200的存储设备具有促使系统200中的计算装备执行各种方法(进程)的指令和数据。当执行这些进程时,该计算装备被配置为实现电路设计系统的功能。

计算机辅助设计(cad)工具210(其中一些或全部有时被统称为cad工具或电子设计自动化(eda)工具)可以由单个供应商或多个供应商提供。工具210可以被提供作为一套或多套工具(例如,用于执行与实现可编程逻辑器件中的电路设计相关联的任务的编译器套件)和/或作为一个或多个独立的软件部件(工具)。(多个)数据库215可以包括一个或多个数据库,所述一个或多个数据库仅由一个或多个特定工具访问并且可以包括一个或多个共享数据库。共享数据库可以由多个工具访问。例如,第一工具可以将用于第二工具的数据存储在共享数据库中。第二工具可以访问共享数据库以检索由第一工具存储的数据。这允许一个工具将信息传递给另一个工具。根据需要,工具也可以在彼此之间传递信息,而不需要将信息存储在共享数据库中。

工具210可以接收任何电路设计描述。例如,第一电路设计描述可以被转换为能被用于实现集成电路的第二集成电路设计描述(例如,用于加工可编程逻辑器件的专用集成电路或配置比特流的掩模组)。

图2b中示出了可用在电路设计系统(例如图2a的电路设计系统200)中的说明性计算机辅助设计工具260。

该设计过程可以开始于集成电路设计的功能性说明的规划(例如,集成电路设计的功能或行为描述)。电路设计者可以使用设计和约束条目工具264来指定期望的电路设计的功能操作。设计和约束条目工具264可以包括诸如设计条目辅助设备266和设计编辑器268的工具。设计条目辅助设备266可以用来帮助电路设计者从现有电路设计库中定位所述设计的期望部分(例如,知识产权(ip)部件),并且可以为电路设计者提供计算机辅助支援以输入(指定)期望的电路设计。

作为一个示例,设计条目辅助设备266可以用来为用户呈现选项的屏幕。用户可以点击屏幕上的选项来选择正在设计的电路是否应该具有某些特征。设计编辑器268可以用于输入设计(例如,通过输入多行硬件描述语言代码),可以用于编辑从库中获得的设计(例如,使用设计和约束条目辅助设备),或者可以辅助用户选择并编辑适当的预先封装的代码/设计。

设计和约束条目工具264可以允许电路设计者使用任何合适的格式提供期望的电路设计。例如,设计和约束条目工具264可以包括允许电路设计者使用真值表输入电路设计的工具。真值表可以使用文本文件或时序图来指定,并且可以从库中导入。真值表电路设计和约束条目可以用于大电路的一部分或用于整个电路。

作为另一个示例,设计和约束条目工具264可以包括原理图获取工具。原理图获取工具可以允许电路设计者从构成零件(例如逻辑门和逻辑门组)可视地构造集成电路设计。预先存在的集成电路设计库可以用于允许设计的期望部分与原理图获取工具一起被导入。

根据需要,设计和约束条目工具264可以允许电路设计者使用硬件描述语言(例如verilog硬件描述语言(veriloghdl)或超高速集成电路硬件描述语言(vhdl))向电路设计系统200提供电路设计。集成电路设计的设计者可以通过使用编辑器268写入硬件描述语言代码来输入电路设计。根据需要,可以从用户维护的库或商业库中导入代码块。

在使用设计和约束条目工具264输入设计之后,行为仿真工具272可以用于仿真电路设计的功能性能。如果该设计的功能性能不完整或不正确,则电路设计者可以使用设计和约束条目工具264对电路设计做出更改。在使用工具274执行合成操作之前,可以使用行为仿真工具272验证新的电路设计的功能操作。仿真工具(例如行为仿真工具272)也可以根据需要用在设计流程中的其他阶段(例如,逻辑合成之后)。行为仿真工具272的输出可以以任何合适的格式(例如,真值表、时序图等)被提供给电路设计者。

一旦电路设计的功能操作已经被确定为是令人满意的,则逻辑合成和优化工具274可以生成电路设计的门级网表,例如使用由工厂支持的涉及目标过程的特定库中的门,所述工厂已经被选中来生产所述集成电路。可替代地,逻辑合成和优化工具274可以使用目标可编程逻辑器件的门来生成电路设计的门级网表(即在特定可编程逻辑器件产品或产品族的逻辑和互连资源中)。

逻辑合成和优化工具274可以通过适当地选择硬件来优化设计,以便基于由逻辑设计者使用工具264输入的电路设计数据和约束数据来实现不同的逻辑功能。

在使用工具274进行逻辑合成和优化之后,电路设计系统可以使用工具(例如布置和布线工具276)来执行物理设计步骤(布局合成操作)。布置和布线工具276被用于确定将工具274产生的门级网表的每个门放置在何处。例如,如果两个计数器彼此交互,则布置和布线工具276可以将这些计数器安置在相邻区域中以减少互连延迟或满足指定最大允许的互连延迟的正时要求。布置和布线工具276创建用于任何目标集成电路(例如,针对给定的可编程集成电路,例如现场可编程门阵列(fpga))的电路设计的有序且有效的实施方式。

工具(例如工具274和276)可以是编译器套件的一部分(例如,由可编程逻辑器件供应商提供的一套编译器工具的一部分)。根据一个实施例,工具(例如工具274、276和278)在实现期望的电路设计的同时自动考虑互连之间的串扰影响。工具274、276和278也可以包括正时分析工具,例如正时估计器。这在实际生产集成电路之前允许工具274和276满足性能要求(例如,正时要求)。

在使用布置和布线工具276已经生成期望的电路设计的实现方式之后,可以使用分析工具278分析和测试所述设计的实现方式。在使用工具260完成令人满意的优化操作之后,工具260可以产生集成电路和/或配置数据的掩模级布局描述以便对集成电路上的配置存储器元件进行编程。

在某些实施例中,可以在集成电路上实现多于一个电路设计。例如,相同的或基本相同的电路设计的多个实例可以在集成电路上的不同位置处实现。在其他实施例中,基本电路设计的变体可以在集成电路上实现。通过对集成电路上的相同位置处的配置存储位进行编程来实现基本电路设计的不同变体的示例有时也被称为重构或部分重构,在此情况下所述重构局限于集成电路上的配置存储位的子集。

作为一个示例,考虑图3,其具有电路设计a(305)和电路设计b(307)作为基本电路设计303的两个变体。在此示例中,cad工具310(例如,图2的cad工具260)可以生成用于基本电路设计303的基本配置数据343,cad工具315可以分别生成用于电路设计a(305)的配置数据a(340)和用于电路设计b(307)的配置数据b(347)。

在某些实施例中,cad工具315可以执行与cad工具310相同的操作以分别生成配置数据a(340)和配置数据b(347)。在其他实施例中,cad工具315可以在与基本电路设计303相比的电路设计a(305)和电路设计b(307)的新的或改变的部件上执行增量操作(例如,增量合成、增量布置、增量布线等)。增量编译可以保存涉及与基本配置数据343相比的电路设计a(305)和电路设计b(307)的旧的或未改变的部件的基本配置数据343的部分,并且为与基本电路设计303相比的电路设计a(305)和电路设计b(307)的新的或改变的部件生成新的配置数据。

在共同转让的美国专利第8,296,695号、第8,484,596号、第8,281,274号和第8,539,418号以及美国专利公开号14/200,897中描述了增量操作,这些专利文件通过引用整体合并于此。

编码电路320可以接收配置数据a(340)和基本配置数据343。编码电路320可以包括电路系统323和电路系统327,电路系统323确定配置数据a(340)和基本配置数据343之间的差异/差分(difference),并且电路系统327压缩配置数据a(340)和基本配置数据343之间的确定的差异以产生压缩的配置数据a(350)。

图4中示出了编码电路320的一个实施例。如图4所示,电路系统323可以由配置数据410与基本配置数据430之间的逐位逻辑异或(xor)操作420实现以确定不同的比特位。在此示例中,不同的比特位是逻辑‘1’,相同的比特位是逻辑‘0’。

根据需要,图3的电路系统323可以执行其他操作以确定配置数据a(340)与基本配置数据343之间的差异。例如,电路系统323可以执行配置数据a(340)和基本配置数据343的减法、加法、逐位逻辑异或非(xnor)操作以确定它们的差异/差分。

如图3所示,编码电路320可以包括电路系统327,该电路系统327压缩差异/差分操作的结果以产生压缩的配置数据a(350)。电路系统327可以实现任何无损数据压缩技术。无损数据压缩技术可以在保存所有信息的同时利用数据统计冗余来表示由具有较少位的数据传送的信息,并且由此确保压缩操作是完全可逆的。例如,电路系统327可以实现基于语法的代码(例如sequitur算法)、lempel-ziv压缩方法(例如deflate算法)或熵编码(例如huffman编码或算术编码),仅举几例。

如图4所示,电路系统327可以执行熵编码操作440。熵编码操作440可以压缩配置数据410和基本配置数据430的逐位逻辑异或(xor)操作420的结果并且产生压缩的配置数据450。

作为一个示例,考虑熵编码操作440实现huffman编码。如同其他熵编码,huffman编码可以使用较少的比特位来表示与较不常见的符号相比更常见的符号。在使用配置数据410和基本配置数据430的逐位逻辑异或操作420的示例中,如果配置数据410和基本配置数据430是相似的,则逻辑‘0’可能比逻辑‘1’更常见。

类似地,图3的编码电路320可以接收配置数据b(347)和基本配置数据343。编码电路320可以使用差异/差分电路系统323来确定配置数据b(347)和基本配置数据343之间的差异。编码电路320可以进一步使用压缩电路系统327来压缩所述差异/差分操作的结果以产生压缩的配置数据b(357)。

根据需要,编码电路320可以被实现为cad工具(例如图2a的cad工具210),并且可以使用基本配置数据343和配置数据a(340)或配置数据b(347)在计算装备上执行以分别生成压缩的配置数据a(350)和b(357)。在一些实施例中,编码电路320可以是位于集成电路上或集成电路之外并且执行配置数据的编码的专用电路。在其他实施例中,编码电路320可以是被编程用于对配置数据进行编码的可配置电路。

可以存在一个编码电路320,该编码电路320在不同时间处理不同配置数据的编码。根据需要,可以存在编码电路320的多个实例,其中每个实例处理配置数据的单独集合。可替代地,可以存在编码电路320的一些实例,这些实例在不同时间处理不同配置数据的编码,而编码电路320的其他实例处理单独的配置数据集。

一个或多个存储电路可以分别存储基本配置数据343和压缩的配置数据a(350)和b(357)。实现电路设计a(305)的集成电路可以包括所述一个或多个存储电路(例如,在同一管芯(die)中或同一封装件中)。根据需要,所述一个或多个存储电路可以在该集成电路之外。在一些实施例中,该集成电路可以包括至少一个存储电路以存储压缩的配置数据的至少一部分,而存储所述压缩的配置数据的剩余部分的其余存储电路位于该集成电路之外。

为了在集成电路(例如图1的可编程逻辑器件100)中实现电路设计a,图3的解码电路330可以访问存储压缩的配置数据a(350)和基本配置数据343的所述一个或多个存储电路。解码电路330可以包括解压所述压缩的配置数据a(350)的电路系统334以及确定压缩的配置数据a(350)的压缩版本和基本配置数据343之间的差异以恢复配置数据a(340)的电路系统336。

电路系统334可以实现任何无损数据压缩技术,只要所选择的解压技术逆转了在电路系统327中执行的数据压缩即可。作为一个示例,考虑图5中所示的操作。如图5所示,电路系统334可以执行熵解码操作520。熵解码操作520可以解压被压缩的配置数据510。作为一个示例,考虑图4的熵编码操作440实现huffman编码。结果,图5的熵解码520可以实现huffman解码。

图3的电路系统336可以确定由电路系统334生成的解压配置数据与基本配置数据343之间的差异。电路系统336可以实现任何差异操作,只要所选择的差异操作逆转了在电路系统323中执行的差异操作即可。例如,如果差异操作323是加法,差异操作336可以执行减法;如果差异操作323是减法,差异操作336可以执行加法;如果差异操作323是逐位逻辑异或非(xnor)操作,差异操作336可以执行逐位逻辑异或非(xnor)操作,等等。

如图5所示,电路系统336可以实现由熵解码520生成的解压配置数据与基本配置数据540之间的逐位逻辑异或(xor)操作530以逆转图4的逐位逻辑异或(xor)操作420并且恢复配置数据550,所述配置数据550与图4的配置数据410相同。

类似地,图3的解码电路330可以接收压缩的配置数据b(357)和基本配置数据343。解码电路330可以使用电路系统334来解压被压缩的配置数据b(357)。解码电路320可以使用电路系统336来确定解压操作334的结果与基本配置数据343之间的差异以恢复配置数据b(347)。

考虑以下情景:电路设计a和电路设计b实现相同的功能并且配置数据a(340)与配置数据b(347)的区别之处在于配置数据a(340)和配置数据b(347)以集成电路上的不同位置为目标。在这一情景下,解码电路330可以从存储电路中检索压缩的配置数据a(350)和压缩的配置数据b(357),并且恢复配置数据a(340)和配置数据b(347)。然后,恢复的配置数据a(340)和b(347)可以用于对集成电路上的配置存储位进行编程,从而分别实现电路设计a(305)和b(307)。

在另一情景中,电路设计a(305)和b(307)可以表示在集成电路上的部分重构框架中实现的基本电路设计的变体。换言之,电路设计a(305)和b(307)可以实现不同的功能,但是以集成电路上的相同位置为目标。在这一情景下,解码电路330可以从存储电路中检索压缩的配置数据a(350),并且恢复配置数据a(340)。然后,恢复的配置数据a(340)可以用于对集成电路上的给定位置处的配置存储位进行编程,从而实现电路设计a(305)。电路设计a可以在第一持续时间中运行。

在第一持续时间之后,解码电路330可以从存储电路中检索压缩的配置数据b(357),并且恢复配置数据b(347)。然后,恢复的配置数据b(347)可以用于对集成电路上的给定位置处的配置存储位进行重新编程,从而实现电路设计b(307)。电路设计b可以在第二持续时间中运行。

根据需要,编码电路330可以被实现为cad工具(例如图2a的cad工具210),并且可以使用基本配置数据343和压缩的配置数据a(350)或压缩的配置数据b(357)在计算装备上执行以分别恢复配置数据a(340)和b(347)。在一些实施例中,解码电路330可以是执行压缩配置数据的解码的专用电路。在其他实施例中,解码电路330可以是被编程用于对配置数据进行解码的可配置电路。

可以存在一个解码电路330,所述解码电路330在不同时间处理不同的压缩配置数据的解码。根据需要,可以存在解码电路330的多个实例,其中每个实例处理单独的压缩配置数据集。可替代地,可以存在解码电路330的一些实例,这些实例在不同时间处理不同的压缩配置数据的解码,而解码电路330的其他实例处理单独的压缩配置数据集。

图6是根据一个实施例用于基于具有基本配置数据集的变化的比较生成压缩的配置数据集的说明性步骤的流程图。在步骤610中,cad工具可以生成用于电路设计的基本配置数据集。例如,图3的cad工具310可以生成基本电路设计303的基本配置数据343。

在步骤620中,cad工具可以生成对应于第一电路设计的第一配置数据集,该第一配置数据集在集成电路上的第一位置处实现第一电路设计。例如,图3的cad工具315可以生成电路设计a(305)的配置数据a(340)。

在步骤630中,cad工具可以将第一配置数据集与基本配置数据集进行比较以获得第一配置数据差异集/差分集。例如,图3的电路系统323可以确定配置数据a(340)与基本配置数据343之间的差异/差分。

在步骤640中,cad工具可以压缩第一配置数据差异集/差分集以产生压缩的第一配置数据差异集/差分集。例如,图3的电路系统327可以压缩电路系统323的输出以产生压缩的配置数据a(350)。

图7是根据本发明的一个实施例用于生成两个压缩的配置数据集以及将这些压缩的数据集存储在存储电路中的说明性步骤的流程图。在步骤710中,cad工具可以生成第一电路设计的第一配置数据集。第一配置数据集可以在集成电路上的第一位置处实现第一电路设计。

在步骤720中,cad工具可以从第一配置数据集中推导出第二配置数据集。第二配置数据集可以包括与一部分第一配置数据集相同的至少一部分。例如,第二配置数据集可以在集成电路上的不同位置处实现与第一配置数据集相同的功能。在此示例中,在两个配置数据集中用于确定电路设计的功能的一部分配置数据可以相同,而在两个配置数据集中用于确定集成电路上的电路设计实施的位置的的一部分配置数据可以不同。

在步骤730中,cad工具可以压缩第一和第二配置数据集以产生压缩的第一和第二配置数据集。例如,cad工具可以使用熵编码,例如huffman编码、算术编码、通用编码或golomb编码。在步骤740中,cad工具可以将压缩的第一和第二配置数据集存储在存储电路中。

本文所描述的方法和装置可以被并入任何合适的集成电路或集成电路系统。例如,所述方法或装置可以被并入许多类型的设备,例如微处理器或其他ic。示例性ic包括可编程阵列逻辑(pal)、可编程逻辑阵列(pla)、现场可编程逻辑阵列(fpla)、电可编程集成电路(epld)、电可擦除可编程集成电路(eepld)、逻辑单元阵列(lca)、现场可编程门阵列(fpga)、专用标准产品(assp)和专用集成电路(asic),仅举几例。

本文所描述的可编程集成电路可以是数据处理系统的一部分,该数据处理系统包括以下部件中的一个或多个:处理器、存储器、i/o电路系统和外围设备。该数据处理系统可以用于多种多样的应用,例如计算机联网、数据网络、装备仪器、视频处理、数字信号处理或任何其他合适的应用,其中使用可编程或可重新编程的逻辑的优点是令人期望的。可编程集成电路可被用于执行各种各样的不同逻辑功能。例如,可编程集成电路可以被配置为与系统处理器协同工作的处理器或控制器。可编程集成电路也可以用作仲裁器,用于仲裁对数据处理系统中的共享资源的访问。在又一示例中,可编程集成电路可以被配置为处理器与系统中其他部件之一之间的接口。在一个实施例中,可编程集成电路可以是受让人拥有的设备族之一。

尽管以特定顺序描述了方法操作,但可以理解其他操作可以在所描述的这些操作之间执行,所描述的操作可以被调整以使得其在稍微不同的时间进行,或者所描述的操作可以分布在允许处理操作以与该处理相关的不同时间间隔发生的系统中,只要覆盖操作的处理以期望方式执行即可。

附加实施例

附加实施例1.一种配置电路系统,其包括:接收基本配置数据集和第一数据集的解码电路,其中第一数据集包括基本配置数据集与解码的配置数据集之间的压缩数据差异,并且其中该解码电路包括:接收第一数据集并解压第一数据集以创建第二数据集的第一电路;以及接收基本配置数据集和来自第一电路的第二数据集并使用基本配置数据集和第二数据集输出解码的配置数据集的第二电路。

附加实施例2.如附加实施例1所述的配置电路系统,其中该配置电路系统使用解码的配置数据集对可配置电路进行编程以便在该可配置电路上实现第一电路设计。

附加实施例3.如附加实施例2所述的配置电路系统,其中第一电路接收第三数据集,该第三数据集包括基本配置数据集与附加解码的配置数据集之间的其他压缩数据差异,并且其中第一电路解压所接收的第三数据集以创建第四数据集。

附加实施例4.如附加实施例3所述的配置电路系统,其中第二电路接收基本配置数据集和来自第一电路的第四数据集,其中第二电路使用基本配置数据集和第四数据集恢复附加解码的配置数据集。

附加实施例5.如附加实施例4所述的配置电路系统,其中该配置电路系统使用附加解码的配置数据集对附加可配置电路进行编程以便在该附加可配置电路上实现第一电路设计。

附加实施例6.如附加实施例4所述的配置电路系统,其中该配置电路系统使用附加解码的配置数据集对可配置电路进行编程以便在该可配置电路上实现第二电路设计。

附加实施例7.如附加实施例1所述的配置电路系统,其中第一电路进一步包括:执行熵解码的熵解码电路。

附加实施例8.如附加实施例7所述的配置电路系统,其中熵解码包括选自由以下各项组成的群组的方法:huffman解码、算术解码、通用解码和golomb解码。

附加实施例9.如附加实施例1所述的配置电路系统,其中第二电路进一步包括:逻辑异或门,其生成基本配置数据集的比特位与第二数据集的比特位之间的逻辑异或。

附加实施例10.一种用于处理配置数据集的方法,其包括:使用计算机辅助设计(cad)工具生成用于电路设计的基本配置数据集;使用计算机辅助设计工具生成对应于第一电路设计的第一配置数据集,其中第一配置数据集在集成电路上的第一位置处实现第一电路设计;将第一配置数据集与基本配置数据集进行比较以获得第一配置数据差异集;以及压缩第一配置数据差异集以产生压缩的第一配置数据差异集。

附加实施例11.如附加实施例10所述的方法,进一步包括:使用计算机辅助设计工具利用第一电路设计生成第二配置数据集,其中第二配置数据集在集成电路上的第二位置处实现第一电路设计;将第二配置数据集与基本配置数据集进行比较以确定第二配置数据差异集;以及压缩第二配置数据差异集以产生压缩的第二配置数据差异集。

附加实施例12.如附加实施例10所述的方法,其中压缩第一配置数据差异集进一步包括:执行第一配置数据差异集的熵编码。

附加实施例13.如附加实施例12所述的方法,其中所述熵编码从由以下各项组成的群组中选择:huffman编码、算术编码、通用编码和golomb编码。

附加实施例14.如附加实施例10所述的方法,进一步包括:基于第一压缩的配置数据差异集和基本配置数据集恢复第一配置数据集;以及使用恢复的第一配置数据集对集成电路上的第一位置处的电路系统进行编程以实现第一电路设计。

附加实施例15.如附加实施例14所述的方法,其中恢复第一配置数据集进一步包括:通过解压所述压缩的第一配置数据差异集产生所述第一配置数据差异集;以及将所述第一配置数据差异集与基本配置数据集进行比较以确定第一配置数据集。

附加实施例16.如附加实施例14所述的方法,进一步包括:使用计算机辅助设计工具生成不同于第一电路设计的第二电路设计的第二配置数据集;将第二配置数据集与基本配置数据集进行比较以确定第二配置数据差异集;以及基于第二配置数据差异集产生压缩的第二配置数据差异集。

附加实施例17.如附加实施例16所述的方法,进一步包括:基于压缩的第二配置数据差异集和基本配置数据集恢复第二配置数据集;以及使用恢复的第二配置数据集对集成电路上的第一位置处的电路系统进行编程以实现第二电路设计。

附加实施例18.如附加实施例10所述的方法,其中生成第一电路设计的第一配置数据集进一步包括:执行第一电路设计的增量编译以生成第一配置数据集,其中第一电路设计和基本电路设计至少部分相同,并且其中增量编译基于基本配置数据集的至少一部分产生第一配置数据集。

附加实施例19.一种生成用于可配置电路的配置数据的方法,其包括:生成用于第一电路设计的第一配置数据集,其中第一配置数据集在集成电路上的第一位置处实现第一电路设计;从第一配置数据集推导出第二配置数据集,其中第二配置数据集包括与第一配置数据集相同的至少一部分;以及压缩第一和第二配置数据集以分别产生压缩的第一和第二配置数据集。

附加实施例20.如附加实施例19所述的方法,其中推导出第二配置数据集进一步包括:生成用于第二电路设计的第三配置数据集,其中第三配置数据集在集成电路上的第一位置处实现第二电路设计。

附加实施例21.如附加实施例20所述的方法,进一步包括:将第三配置数据集与第一配置数据集进行比较以产生第二配置数据集,其中第二配置数据集反映第一和第三配置数据集之间的差异。

附加实施例22.如附加实施例19所述的方法,其中推导出第二配置数据集进一步包括:生成集成电路上的第一位置与集成电路上的第二位置之间的位置偏移。

附加实施例23.如附加实施例22所述的方法,进一步包括:将位置偏移与第一配置数据集进行组合以产生第二配置数据集,其中第二配置数据集在集成电路上的第二位置处实现第一电路设计。

附加实施例24.如附加实施例19所述的方法,进一步包括:将压缩的第一和第二配置数据集存储在存储电路中。

附加实施例25.如附加实施例19所述的方法,其中压缩第一和第二数据集进一步包括:使用无损编码来产生压缩的第一配置数据集。

前述的仅仅是本发明的示例性原理,并且各种不同的修改能够由本领域技术人员在不背离本发明的范围和精神的情况下作出。前述实施例可以单独地实现或者以任意组合的方式实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1