专利名称:用于产生和扩展结构化asic逻辑库和其他功能的方法
技术领域:
0001本发明涉及专用集成电路(ASIC),更具体地,涉及一种类型的专用集成电路,其有时被称为结构化的专用集成电路。
背景技术:
0002所谓的结构化的专用集成电路有时被用作可编程逻辑器件(PLD),诸如现场可编程门阵列(FPGA)的那些替代品。现场可编程门阵列具有一个通用的结构,其可包括许多相同的逻辑电路块,许多寄存器和许多其他类型的电路块,诸如RAM块、DSP块、PLL/DLL块等等。这些不同的电路是可编程的,以执行任何各种各样的任务。FPGA也具有通用的互连结构。这个结构是可编程的,从而以许多不同方式的任何方式将器件上的其他电路互连。这种现场可编程门阵列的逻辑块可被称为逻辑元件、逻辑模块、自适应的逻辑元件或自适应的逻辑模块(LE、LM、ALE或ALM)。
0003等同于现场可编程门阵列的已知类型的结构化专用集成电路具有一种通用的结构,其包括相对简单的电路块的许多同样的实例(所谓的混合逻辑元件或者HLE)。结构化专用集成电路一般也包括其他块,这些其它块可和相关的FPGA上的特定目的块(例如RAM块、DSP块、PLL/DLL块等等)比较。结构化专用集成电路的这些通用属性实施在几个用于制造ASIC的掩模中。因此,这些掩模对于这个普通类型的所有ASIC都是相同的或者基本相同的,并且它们给ASIC提供其“结构”。其他掩模(但是仅仅是总掩模集合中的一些)被定制,以给结构化的ASIC提供特定的功能,该功能等同于相关的编程FPGA的功能。例如这些定制的掩模可配置HLE或一小组或一簇HLE(复合HLE或CHLE)来执行等同于那些在相关的编程FPGA中的由ALE执行的功能。类似地,定制的掩模可配置CHLE执行等同于在相关的编程FPGA中的寄存器的功能。定制的掩模也可提供HLE、CHLE和/或ASIC上的其他电路块之间的互连。这些互连典型地包括等同于相关的编程FPGA的可编程互连资源提供的那些互连。
0004使用这种类型的结构化ASIC并且以这种方式使用具有许多优点。例如,仅仅需要定制一些ASIC掩模。这有助于减少ASIC成本,并且加速ASIC设计/生产周期。这也减少了ASIC中的设计缺陷的风险,而且有利于生产一种ASIC,其是相关的编程FPGA的起接近作用(close operational)的等同物(例如管脚对管脚等同、时序等同或接近等同等等)。这个方法的另一优点是它往往允许ASIC包括比相关FPGA更少的电路(对于正常操作包括更少的电路)。这是因为只有必要的ASIC HLE专用于执行每个FPGA ALE的功能,而且在几乎所有的FPGA中,许多ALE没有被完全利用。
0005通过使用从FPGA电路块功能到ASIC HLE/CHLE功能的已知的(库)转换,从FPGA设计到结构化ASIC设计(或反过来)的高效和可靠转换变得容易。对于从FPGA ALE到ASIC HLE/CHLE的转换更是如此。典型的FPGA ALE是可编程的,以执行大量功能中的任何一个功能。因此所希望的是在已经为转换制订的库解决方案中累积这种FPGA ALE功能的数量越多越好,可以是可合理累积的数量。在库中包括FPGA ALE功能转换就避免了在未来可能需要以可能低效的方式实现那个功能,诸如通过使用几个HLE和/或CHLE不得不中止它来实施,这些HLE和/或CHLE必须使用-“更昂贵”的ASIC的全球互连资源。这比能够在一个CHLE中实现该功能低效,例如,在该CHLE中使用-“不太昂贵”的ASIC的本地互连资源使得所有的HLE互连。
发明内容
0006根据这个发明,一种用于向一个库中添加逻辑功能的结构化ASIC等同物的方法,包括将可能的新逻辑功能的特性与已经在该库中的逻辑功能的类似特性比较。所述方法进一步包括设计可能的新逻辑功能的结构化ASIC等同物,以及从该设计中提取一个特征值(signature value),该值是所述设计的说明。如果特性比较指出在所述库中没有逻辑功能具有可与可能的新逻辑功能的特性相比的特性,那么可能的新逻辑功能的结构化ASIC等同物(及其特征值)被添加到所述库中。另一方面,如果特性比较发现相同逻辑功能特性的一个或多个实例已经在所述库中,那么仅当满足一个和多个额外的测试时,可能的新逻辑功能的结构化ASIC等同物(及其特征值)才被添加到所述库中。例如,一种这样的测试可能要求可能的新逻辑功能的结构化ASIC等同物利用的某个结构化ASIC电路的实例的数量不超过与已经在所述库中的相同逻辑功能特性的任何其他实例关联的结构化ASIC等同物。
0007从附图和下面的详细描述,本发明的其他特征、其本质和各种优点将变得更加明显。
0008图1是本领域技术人员公知的FPGA电路的说明性基本单元的简化示意块图。
0009图2是结构化ASIC电路的说明性基本单元的简化示意块图,该电路在解释本发明的某些方面是有用的。
0010图3是简化的示意块图,其显示FPGA和结构化ASIC电路中的某个说明性电路功能的等同实现。
0011图4a-4g一起包括本发明说明性实施例的简化流程图。
0012图5是结构化ASIC逻辑的说明性规范或者设计的简化的部分清单,其在解释本发明的各个方面是有用的。
具体实施例方式
0013这个说明书在从特定类型的FPGA到特定类型的结构化ASIC的逻辑设计转换的背景下说明了本发明。在参考文献诸如Chua等人于2004年7月2日提交的美国专利申请10/884460和Schleicher等人于2005年2月3日提交的美国专利申请10/050607中更详细解释了这些类型的FPGA和结构化ASIC,这些参考文献在此全部并入。然而,为了便于不需要参考任何其它的文件就可以理解本发明,下面的几段和相关的图1-3从上面提到的Schleicher等人的参考文献复制而来(其中只有很少的修改)。
0014图1显示了包括在FPGA中的一个基本逻辑电路构造块或者单元10的说明性示例。这个FPGA构造块电路(有时也称为自适应逻辑元件“ALE”或自适应逻辑模块“ALM”)对于本领域技术人员来说是公知的,因此在这里以某种简化的方式描述。ALE 10包括多路复用器22、24、52、54、56、62、64、66、82、84、86、92、94、96、102、112、122、124、126、132、134、136、152、154、156、162、164和166。大多数这些多路复用器是由可编程的随机存取存储器(“RAM”)位编程控制的,这些位一般不显示在图中(虽然图1中显示了RAM位58和68)。这些多路复用器中的一些是由可在器件的正常工作过程中变化的信号更加动态地控制的。多路复用器112是这个后一类型的多路复用器的例子。它是由ALE 10的输入F1控制的。
0015ALE 10还包括查找表(“LUT”)32、34、36、42、44和46。LUT 32和42是四输入查找表。其他的LUT是三输入查找表。这些LUT中的每一个都是可编程的,以提供一个输出信号,该信号是那个LUT的输入信号的任何逻辑组合。
0016ALE 10的其他组件是全加器72和74,与门128和138,以及触发器142和144。空心圆显示的导体互连(例如连接115)是可编程的互连,这意味着互连可能由用户或者不由用户形成,由用户随意选择。
0017ALE 10的LUT资源足以使得ALE能够形成ALE的多达6个输入的任何逻辑组合。或者,如果两个较小的功能具有某些共同的输入,那么ALE 10的LUT资源就足以执行两个这样的功能。例如,ALE 10形成两个五输入组合、两个四输入组合等等是可能的。
0018全加器72和74增强了ALE 10的运算能力。例如,这些组件给予ALE 10这样的能力执行两个数的二进制加法的两个相邻位置(place),包括处理进位入(carry in)信号和进位出(carry out)信号。
0019寄存器142和144(以及关联的电路)允许ALE 10中的信号登记(通过寄存器登记)或者不登记(绕过寄存器)。不一定要使用ALE 10寄存器来登记源自ALE的信号。可替代使用的一个寄存器(处于所谓的孤独寄存器模式)来登记输入到ALE的信号。ALE的其他电路可用于其他目的,而寄存器142和144中的一个或者两者都用于孤独寄存器模式。寄存器142和144也能够在不同的异步或同步模式中工作。“D”是每个寄存器的正常数据输入;“DATA”是异步载入数据。
0020图2显示了包括在结构化ASIC中的一个基本逻辑电路构造块或者单元200的示例。这里图2和上面提到的Chua等人的参考文献中的图3相同。因此这里简化了对图2的描述。构造块200也可以被称为混合逻辑元件或HLE。
0021HLE 200包括两输入多路复用器210,与非门220a和220b,反相器230a和230b。HLE 200还包括一些互连资源,其中的一些是掩模可编程的。例如,X识别的位置是导线段可通过用于制造ASIC的适当定制的一个掩模(或多个掩模)彼此连接或不连接的位置(根据需要)。类似地,O识别的位置是如果需要的话,可连接到一个或多个电路层(没有示出)的位置,在所述电路层中可提供相对长距离的互连导线。同样,这些连接和互连是通过用于制造ASIC的适当定制的一个或多个掩模形成的。在图2中导线相交的实心点也是连接,其可根据需要在相交的导线之间进行连接或不进行连接。同样,这些连接是通过用于制造ASIC的适当定制的一个或多个掩模形成的,如果需要的话。
0022显然,HLE 200的逻辑功能比ALE 10(图1)的逻辑功能少得多。但是相对小数量的相邻或邻近的HLE一般可被放在一起,以执行ALE正在用户的逻辑设计中执行的任何功能,所述用户的逻辑设计已经在FPGA中实现。例如,图3显示了三个HLE 200a、b和c与执行特定的六输入逻辑组合的ALE 10的LUT电路32/34/等等之间的等同。图3也显示了另外两个的HLE 200d和e与ALE 10(其可以和图3所示的正在执行6输入逻辑组合的ALE相同)的触发器电路142或144之间的等同。应该理解的是在图3中显示的HLE 200a-e被极大简化了。对于大部分来说,图3中只显示了实际使用的HLE电路元件和连接。图2所示的所有其他HLE电路实际存在于每个HLE 200a-e中,但是这个细节中的一些从图3描绘中省略(或者使用更浅的线显示),以简化图3。被一起使用的多个HLE 200(例如用于执行等同于能在ALE的LUT电路中执行的组合逻辑,或者执行等同于能在ALE的触发器电路中执行的寄存器功能)可被称为HLE簇或族、复合HLE、或者CHLE。因此图3显示了两个CHLE 202a和202b。
0023本发明涉及希望具有一个库,该库是一个问题的已知解决方案库,该问题是将可在用户的FPGA逻辑设计中实现的逻辑功能转换成那些逻辑功能的结构化ASIC等同物。在这里显示和描述的特定说明性背景中,本发明具体涉及构造一个库,该库包括从基于LUT的FPGA组合逻辑功能到基于HLE的结构化ASIC设计的已知转换,和那些相同的逻辑功能的实现。现在将详细描述本发明的这个说明性实施例。
0024将功能添加到一个功能库的过程始于步骤510,该库中具有等同于编程FPGAALE的结构化ASIC CHLE。在这个步骤,选择包含LUT的一个或多个新用法的FPGA设计。
0025在步骤512,对于在步骤510中选定的设计中的每个LUT,确定那个LUT执行的逻辑的典型形式(canonical form)。该典型形式是标准形式。可将LUT编程执行的给定逻辑功能的任何形式由步骤512转换成那个功能的典型(也就是普通或标准)形式。一旦已经确定该逻辑功能的典型形式,步骤512就进一步确定那个逻辑功能的库单元键值。在这个实施例中,库单元键值是存储在LUT中的RAM单元中的数据的值加上逻辑功能的输入数量,该LUT被编程以执行逻辑功能的典型形式。在正在讨论的特定例子中,ALE在其LUT电路中具有64个可编程的RAM单元。有时使用术语“LUT掩码(lutmask)”来表示这些64位的值。64个二进制(RAM单元)值可由16个16进制的数字表示。据此,库单元键值可以被认为是这些16个16进制数字加上到ALE的输入数字。这里为了方便,在步骤512中库单元键值的任何特定值被称为X。
0026在步骤514,使用来自步骤512的库单元键值X,访问先前为其开发了CHLE等同物的单元库。步骤514返回具有等于X的库单元键值的所有现存的库单元实例(如果有的话)。
0027步骤520测试步骤514的执行是否已经产生任何结果。如果步骤514没有发现具有等于X的键值的任何现存的库单元,那么步骤520就使得控制传到步骤522。如果步骤514发现一个或多个具有等于X的键值的现存的库单元,那么步骤520就使得控制传到步骤540。从步骤520到步骤522的分支将被首先考虑。
0028在步骤522,考虑中的LUT(对于在步骤514没有发现现存的库单元)可通过二叉决策图(“BDD”)映射器软件和NAND MUX包软件起作用。这些类型的操作在2004年8月11提交的Yuan等人的美国专利申请10/916305号(律师摘要号174/341(A1682))中更详细地描述,该专利申请在此通过参考全部并入。简要地,BDD映射器软件将LUT逻辑绘制成二叉决策树(或图),然后交换或置换(permute)那个树或图的输入,直到找到具有最少数量的节点的逻辑等同图。这将是能够在具有最少数量的HLE的CHLE中实现的LUT的形式。然后作为下一步,检查在这些HLE中的功能,以确定在下游HLE中的任何功能是否能够被打包到上游HLE中未用的NAND(与非)门中。如果能,这甚至可进一步减少CHLE中的HLE的数量。这就是所谓的NANDMUX打包。
0029在正在讨论的说明性实施例中,不允许CHLE包括多于6个的HLE。据此,在来自步骤522的结果上执行步骤524,以确定步骤522是否指出考虑中的LUT能够使用6个或更少的HLE实现。如果是,控制就从步骤524传到步骤526。如果不是,控制就从步骤524传到步骤530。从步骤524到步骤526的分支将被首先考虑。
0030在步骤526,计算步骤522中开发的CHLE的所谓的“CHLE标识或特征(signature)”。在这个点,看看图5可能是有帮助的。
0031图5显示了根据本发明的说明性CHLE的规范的代表性部分。这个规范可以是以标准的Verilog表示或者任何其他一般可比较的表示。在图5中的第一行(”module chle_6_3……”)包括(按顺序,从左到右)关于由CHLE实现的说明性LUT的以下信息输入的数量(“6”);在CHLE中的HLE的数量(“3”);LUT掩码值(“FEEEFAAAFCCCF000”,其是表示存储在LUT的查找表中的64位的16进制数字);与具有这个LUT掩码值的LUT的下面的实现相关联的版本号码(“0”);以及输入到CHLE和从CHLE输出的引用名称(“(A,B,C,D,E,F,OUT)”)。应该注意,在前面的句子中提到的LUT掩码值是在这个说明书的前面提到的库单元键的组成部分之一。库单元键的其他组成部分是到LUT的输入数量(在图5所示的说明性例子中是6)。
0032图5中的下面几行是标准的Verilog语句,其标识CHLE的输入(例如“input A”)、输出(“output OUT”)和内部连接(例如“wireM1”和“wire 111”)。同样,使用标准的Verilog仅仅是用于示例性说明。
0033在上述几行之后,图5中下面的几行指定CHLE中的每个器件。每个这样的器件具有一行。再一次地,显示标准的Verilog是为了说明的目的。例如,这些行的第一行(“MUX21 M0_i……”)是用于2到1的多路复用器,其名称为M0。它的第一个可选输入(“D0”)来自导线M1,而且其第二个可选输入(“D1”)来自称为N10的NAND门的输出。它的选择控制(“SEL”)来自输入A的输入。而且它的输出(“OUT”)是CHLE的OUT信号。在命名中遵循以下的惯例M表示MUX(多路复用器),N表示NAND(与非)门,I表示INV(非门),S0表示地面,S1表示VCC,而且A到F表示输入。跟着这些字符的第一个数(如果有的话)表示它属于哪一个HLE。跟着的第二个数(如果有的话)表示HLE中的指定类型器件的实例。
0034跟在上述规范行之后的是两个注释行(“//CHLESIGNATURE”和“//(M0 M1……)”)。这些行的第二行内容是前面行指定的CHLE的“CHLE SIGNATURE(CHLE特征)”。可注意到CHLE特征仅仅是上面行的精简表示。例如,CHLE特征的(M0 M1 N10 A)部分来自上面的行“MUX21 M0_i……”。类似地,CHLE特征的“(M1M2 N20 B)”部分来自上面的行“MUX21 M1_i……”。(注意在CHLE特征中继续遵循上述的命名惯例)。因此CHLE特征是CHLE的完整表示,虽然被缩写或精简。这个表示是在图4b中的步骤526的“CHLE特征”-的含义,而且图5显示了如何确定CHLE特征(在步骤526中需要)。
0035返回图4b中的步骤526,如上面所述确定的CHLE-特征被添加到先前已知的CHLE特征的库中,而且被给定的版本号码为0。控制然后转到步骤572。
0036在步骤572中,确定是否已经处理了考虑中的FPGA设计的所有LUT。如果没有,就执行步骤574,以选择当前设计中用于考虑的另一LUT。控制然后转回步骤512,如上所述,在此将开始对下一个LUT的考虑。
0037如果在步骤572中发现已经考虑了所有的LUT,那么控制从步骤572传到步骤576,在步骤576确定是否已经处理了待考虑的所有FPGA设计。如果没有,控制就从步骤576转到步骤580,在步骤580选择另一FPGA设计用于考虑。从步骤580,控制转回到步骤512,在步骤512开始考虑下一个FPGA设计中的LUT。
0038如果在步骤576中确定已经处理了待考虑的所有FPGA设计,那么控制从步骤576转到步骤590。
0039在步骤590中,为在执行前面步骤的过程中开发的每个新CHLE-特征设计或制定物理实现。这意味着选择实际的连接,这些连接将被接通以在CHLE中的HLE之间或之内发送信号。例如,这可包括选择什么导线和什么通路用于这些连接。在这个点也可进行物理器件选择(例如在HLE中的哪些NAND门将被用于执行HLE的特定NAND功能,而且对于HLE中的反相器是类似的)。这个步骤可以是完全自动化的或者部分自动化的,或者它可以是完全或部分“手工的”(由人类电路设计师执行)。这个步骤可包括自由利用在HLE中未用的反相器和/或NAND门,以构造最大驱动力量的CHLE(例如参见上面提到的Chua等人的参考文献中的图21-23和相关的文字描述)。但是,优选不允许这个步骤移动或者除去在模块定义中指定的任何反相器或NAND门。特别是,优选保持在CHLE内的HLE边界。
0040在对所有的新CHLE特征已经执行步骤590之后,执行步骤592以将新的物理实现添加到可用物理实现的库。这个过程现在完成了。
0041还没有描述图4中的几个分支和步骤。返回到步骤520,还没有考虑从这个步骤到步骤540的分支。当步骤514找到具有等于X的库单元键的一个或多个现有库单元实例时,就利用这个分支。当这种情况发生时,就执行步骤540,以在具有X的库单元键的现有库单元实例之中寻找具有最少数量的HLE的实例。在步骤540中HLE的这个数量被假设为Y。
0042然后执行步骤542,以和上述步骤522基本相同的方式在考虑中的LUT上操作。执行步骤542的结果是确定实现考虑中的LUT当前所需的HLE数量。在步骤542中这个数量被假设为Z。(注意如果Z将大于6,这个过程就不能进入这个分支,因为在正在描述的说明性实施例中,不允许CHLE包括超过6个的HLE。因此对于需要超过6个HLE来实现的LUT,步骤514就从来不会找到任何现有的库单元实例。)0043步骤544比较Z和Y。如果Z小于Y,那么执行步骤542就产生一个CHLE,其在HLE消耗方面比库单元键值X的先前已知的CHLE更高效。(例如,作为为寻找基于LUT的逻辑功能的CHLE等同物开发更好的算法或技术的结果,可发生这样的改进。)控制因此从步骤544转到步骤550(前面描述的),该步骤继续将那个更高效的CHLE添加到已知CHLE的库中、用于未来使用的过程。
0044返回步骤544,如果Z不小于Y,那么控制从步骤544转到步骤560,该步骤测试Z和Y是否相等。如果它们相等,那么控制从步骤560转到步骤562。
0045在步骤562中,确定考虑中的LUT的CHLE特征(例如,如上面结合图5描述的)。步骤564然后测试CHLE特征是否已经存在于这种特征的库中。如果是,就不需要为那个LUT进一步做什么,而且控制从步骤564转到前面描述的步骤572。在另一方面,如果步骤564发现在步骤562中确定的CHLE特征是新的,那么控制从步骤564转到步骤570。这意味着已经找到等同于一个LUT的新CHLE,该LUT具有一个库单元键,对于该库单元键,至少一个其他的CHLE等同物已经已知。因此,执行步骤570,以将新的CHLE特征添加到已知CHLE特征的库中,但是下一个更高的版本号码和所述库中的那个CHLE特征相关联,以将新的解决方案与所有先前已知的解决方案区分开。从步骤570,控制转到前面描述的步骤572。
0046还没有描述的这个过程的唯一分支是从步骤524到步骤530。当步骤524发现考虑中的LUT不能用6个或者更少的HLE实现时,就跟随这个分支。如已经提到的,这个6个HLE的限制是正在描述的说明性实施例的特性,但是在其他实施例中,这个限制可以多于或者少于6个HLE。
0047如果考虑中的LUT不能使用6个或者更少的HLE实现,那么执行步骤530,以将考虑中的LUT重新映射到两个或者更多更小的LUT,其一起等同于开始的LUT。例如,如果开始的LUT是6输入LUT,那么它被重新映射到5输入LUT。控制然后返回步骤522,在步骤522这些5输入LUT中的每一个依次变成考虑中的LUT,用于如先前描述的处理。如果导致要进入步骤530的开始的LUT是5输入LUT,那么步骤530将那个LUT重新映射到4输入LUT,而且控制返回步骤522,在该步骤中这些4输入LUT中的每一个依次被作为考虑中的LUT处理。如在步骤530中所述的,所有4输入LUT能够使用6个或者更少的HLE实现。因此当考虑中的LUT具有4个或更少的输入时,将从来不会到达步骤530。
0048前面描述了一个过程,通过这个过程,可以构建等同于基于LUT的逻辑功能的已知CHLE的库,并且逐渐扩大这个库。这种库在生产等同于FPGA逻辑设计的结构化ASIC中是有用的。在该库数据库中包括版本信息使得用户能够控制在特定的FPGA到结构化ASIC转换中将使用所述库中的哪一级功能。例如,用户可选择使用最先进(最高的版本号)的所有功能,在所述库中存在所有功能的多个解决方案。或者用户可选择对于某些功能,不发展超过特定的“遗传”版本。
0049本发明的另一方面涉及提供机器可读的介质(例如CD-ROM、磁带等等),其编码有机器可读的指令,这些指令执行这里显示和描述的本发明的各种方法。
0050可以理解的是,前面仅仅是对本发明原理的示例性说明,在不偏离本发明的精神和范围的情况下,本领域的技术人员可进行各种修改。例如,上述的在最大尺寸CHLE上的6个HLE的限制仅仅是说明性的,如果希望的话,可以使用更大或更小的尺寸限制。作为另一例子,这里显示的HLE的特定配置仅仅是说明性的,如果希望的话,可以使用任何其他HLE配置。作为又一个例子,如果希望的话,可以改变这里显示的在说明性实施例中的某些步骤的特定顺序。
权利要求
1.一种用于扩展FPGA逻辑功能的已知结构化ASIC等同物的库的方法,其包括为一个FPGA逻辑设计中的逻辑功能计算索引值;使用所述索引值来确定所述库中是否已经包含所述逻辑功能的任何结构化ASIC等同物;确定所述逻辑功能的一个结构化ASIC等同物;和将来自所述确定的所述ASIC等同物添加到所述库中,如果它是所述逻辑功能的第一个等同物,或者如果它不同于已经在所述库中的所述逻辑功能的任何等同物并且不比其低效。
2.根据权利要求1所述的方法,其中所述添加包括将版本标记与被添加到所述库中的任何ASIC等同物相关联。
3.根据权利要求1所述的方法,其中所述索引值是基于所述逻辑功能的特性,该逻辑功能在所述FPGA逻辑设计中实现。
4.根据权利要求3所述的方法,其中所述索引值包括从所述逻辑功能的典型或标准形式获得的信息。
5.根据权利要求4所述的方法,其中所述索引值进一步包括关于所述逻辑功能的输入数量的信息。
6.根据权利要求1所述的方法,其中所述确定包括计算一个特征值,该特征值是所述ASIC等同物的特性。
7.根据权利要求6所述的方法,其中所述添加包括将来自所述计算的所述特征值与已经在所述库中的所述逻辑功能的任何等同物的特征值进行比较。
8.根据权利要求7所述的方法,其中所述添加进一步包括丢弃其特征值与已经在所述库中的所述逻辑功能的任何等同物的所述特征值相同的任何等同物。
9.根据权利要求8所述的方法,其中所述添加还进一步包括丢弃其特征值需要比已经在所述库中的所述逻辑功能的等同物多的ASIC逻辑来实现的任何等同物。
10.根据权利要求1所述的方法,其中允许一个逻辑功能的一个等同物仅仅包括预定的最大数量的ASIC电路,而且其中所述确定包括确保所述ASIC等同物不需要比所述预定的最大数量的ASIC电路多的电路。
11.根据权利要求10所述的方法,其中所述确保包括细分任何逻辑功能,该逻辑功能的所述ASIC等同物需要比预定的最大数量的ASIC电路多的电路;和将来自所述细分的逻辑功能的每个分部作为独立的逻辑功能处理。
12.用机器可读指令编码的机器可读介质,所述指令用于执行权利要求1所述的方法。
13.一种添加LUT可实现的逻辑功能的结构化ASIC等同物的库的方法,其包括确定一个逻辑功能的典型形式;使用至少部分基于LUT编程的索引值来实现所述逻辑功能的典型形式,以确定所述逻辑功能的结构化ASIC等同物是否已经在所述库中;产生所述逻辑功能的结构化ASIC等同物;计算一个特征值,其是来自所述产生的所述结构化ASIC等同物的特性;和使用所述特征值确定来自所述产生的所述结构化ASIC等同物是否不同于已经在所述库中的所述逻辑功能的任何其他结构化ASIC等同物,并因此是添加到所述库的一个候选物。
14.根据权利要求13所述的方法,进一步包括对于被确定为候选物的任何结构化ASIC等同物,将用于实现所需的结构化ASIC电路的数量与实现已经在所述库中的相同逻辑功能的任何结构化ASIC等同物所需的这种电路数量进行比较,并且仅当它不需要比已经在所述库中的所述相同逻辑功能的任何结构化ASIC等同物多的结构化ASIC电路时,将所述候选物添加到所述库中。
15.根据权利要求14所述的方法,其中所述添加包括将版本信息与被添加到所述库中的任何候选物相关联。
16.根据权利要求13所述的方法,进一步包括对于没有结构化ASIC等同物在所述库中的任何逻辑功能,将所述结构化ASIC等同物添加到所述库中。
17.根据权利要求13所述的方法,其中存在一个预定的最大数量的结构化ASIC电路,允许其用在逻辑功能的结构化ASIC等同物中,而且其中所述产生包括确定所述逻辑功能的结构化ASIC等同物是否超过所述最大数量的结构化ASIC电路,如果是,就将所述逻辑功能分成多个更小的逻辑功能,并且对每个所述更小的逻辑功能重复所述方法。
18.根据权利要求13所述的方法,其中所述产生包括以二叉决策树的形式表示所述逻辑功能;交换所述二叉决策树的输入,以使得该树最小化;和使用基本的结构化ASIC电路块的各自实例来设计在所述最小化的二叉决策树中的每个节点的实现。
19.根据权利要求18所述的方法,其中所述产生进一步包括尝试使用所述基本的结构化ASIC电路块的实例中还没有被利用的电路来减少实现所述最小化二叉决策树所需的实例数量。
20.用机器可读指令编码的机器可读介质,所述指令用于执行权利要求13所述的方法。
21.一种向一库中添加LUT可实现的逻辑功能的结构化ASIC等同物的方法,每个结构化ASIC等同物包括ASIC电路模块的一个或多个实例,所述方法包括将可能的新逻辑功能的特性与已经在所述库中的逻辑功能的类似特性进行比较;设计所述可能的新逻辑功能的结构化ASIC等同物;使用一个特征值,从所述设计获取所述结构化ASIC等同物;如果所述比较发现没有具有可比特性的逻辑功能已经在所述库中,将来自所述设计的所述结构化ASIC等同物和所述特征值添加到所述库中;和如果所述比较发现具有可比特性的逻辑功能的一个或多个实例已经在所述库中,那么就在仅当所述特征值指出所述结构化ASIC等同物不同于已经在所述比较中发现的所述逻辑功能的实例的所述库中的结构化ASIC等同物时,就将来自所述设计的所述结构化ASIC等同物和所述特征值添加到所述库中。
22.根据权利要求21所述的方法,其中,如果所述比较发现具有可比特性的所述逻辑功能的一个或多个实例已经在所述库中,那么仅当来自所述设计的所述结构化ASIC等同物使用的所述ASIC电路模块的实例不超过所述比较中发现的所述逻辑功能的任何其他实例时,才执行后续的添加。
23.用机器可读指令编码的机器可读介质,所述指令用于执行权利要求21所述的方法。
全文摘要
通过利用等同于FPGA逻辑功能的已知结构化ASIC库产生等同于FPGA逻辑设计的结构化ASIC。通过一个搜索过程这样的库被扩展,该搜索过程在新的FPGA逻辑设计中搜索在所述库中还没有结构化ASIC等同物的逻辑功能或者现在可为其设计可能改进的结构化ASIC等同物的逻辑功能。新的和/或改进的结构化ASIC等同物被添加到所述库中,对于已知超过一个的结构化ASIC等同物的FPGA逻辑功能,优选带有版本信息。
文档编号G06F17/50GK1845461SQ20061007376
公开日2006年10月11日 申请日期2006年4月10日 优先权日2005年4月8日
发明者袁进勇, 蔡家庆, J·帕克 申请人:阿尔特拉公司