产生等效现场可编程门阵列和结构化专用集成电路的方法转让专利

申请号 : CN200610071021.8

文献号 : CN1841389B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 詹姆斯·G·施莱克尔二世戴维·卡切米尔

申请人 : 阿尔特拉公司

摘要 :

提供了可以产生功能上等效的现场可编程门阵列(“FPGA”)和结构化专用集成电路(“结构化ASIC”)的编译器流程。该流程可以包括反馈在任何一个流程期间执行的设计变换,以便使另一个流程的稍后执行将必然包括相同的变换,由此有助于确保功能的等效性。该流程可以包括中间结果的比较,以便证明实现了功能的等效性。

权利要求 :

1.一种产生用于指定结构化ASIC的配置的信息的方法,该结构化ASIC与执行用户的逻辑设计的编程的FPGA将会是功能上等效的,该方法包含:综合用于FPGA的实现中的用户的逻辑设计;

将由该综合步骤产生的综合转换为适于结构化ASIC实现的修改的综合;

对该修改的综合执行布局和布线操作,以产生适合于在结构化ASIC上的布局的进一步的综合;以及进一步把该进一步的综合转换为用于结构化ASIC的规范,其包括在产生该结构化ASIC的过程中要使用的物理电路的标识。

2.如权利要求1所述的方法,其中,该执行步骤包括在修改的综合中进行改变,而且该方法还包含:将该改变馈送回以修改用户的逻辑设计。

3.如权利要求2所述的方法,其中,该改变包含:复制寄存器。

4.如权利要求2所述的方法,其中,该改变包含:移动寄存器。

5.如权利要求1所述的方法,还包含:对由于所述综合用于FPGA的实现中的用户的逻辑设计的步骤而产生的综合执行进一步的布局和布线操作,该进一步的布局和布线操作产生适合于在FPGA上的布局的更进一步的综合。

6.如权利要求5所述的方法,其中,执行进一步的布局和布线操作的步骤包括:对由于综合用于FPGA的实现中的用户的逻辑设计而产生的综合进行改变,而且该方法还包含:将该改变馈送回以修改用户的逻辑设计。

7.如权利要求5所述的方法,还包含:将进一步的综合和更进一步的综合进行比较,以测试功能的等效性。

8.如权利要求7所述的方法,其中,该比较步骤包含:匹配在进一步的综合和更进一步的综合中的相应节点;

在进一步的综合和更进一步的综合的每一个中,构造在匹配步骤中所标识的节点之间的逻辑的BDD;以及为在进一步的综合和更进一步的综合中的相应BDD测试功能的等效性。

9.如权利要求8所述的方法,其中,所述节点包括在更进一步的综合中的寄存器、非逻辑块输入和输出、以及逻辑单元输出,以及在进一步的综合中的相应逻辑输出。

10.如权利要求7所述的方法,其中,该比较步骤包含:标识在进一步的综合和更进一步的综合中的相应非逻辑块;以及为相应非逻辑块中的每一个的功能参数信息测试相似性。

11.如权利要求5所述的方法,还包含:从更进一步的综合中产生用于FPGA的编程数据。

说明书 :

产生等效现场可编程门阵列和结构化专用集成电路的方法

技术领域

[0001] 这个发明涉及专用集成电路(“ASIC”),并且尤其涉及有时候被称为结构化(structured)ASIC的ASIC类型。
[0002] 背景技术
[0003] 所谓的结构化ASIC有时用作诸如现场可编程门阵列(“FPGA”)之类的可编程逻辑器件(“PLD”)的替换。FPGA具有通用的结构,其可以包括许多相同的逻辑电路块、许多寄存器、多个诸如I/O块、RAM块、DSP块、PLL/DLL块等之类的其它类型电路块。可对这些各种电路进行编程以执行各种任务中的任何一种任务。FPGA还具有通用的互连结构。可对这个结构进行编程以便以许多不同方式中的任一种方式来互连在该器件上的其它电路。这样的FPGA中的逻辑块可以被称为逻辑单元、逻辑模块、自适应逻辑单元、或者自适应逻辑模块(“LE”、“LM”、“ALE”、或者“ALM”)。
[0004] 与FPGA等效的一种已知类型的结构化ASIC具有通用结构,其包括相对简单的电路块(所谓的混合(hybrid)逻辑单元或者“HLE”)的许多相同实例。结构化ASIC一般还可以包括可与在相关FPGA上的专用块相匹敌的其它块(例如,I/O块,RAM块,PLL/DLL块等)。结构化ASIC的这些通用属性体现在用于构造ASIC的几个掩模(mask)中(至少在某种程度上是这样)。这些掩模因此对于这个一般类型的全部ASIC来说可以是相同或者基本上相同的,而且它们向ASIC赋予了它的“结构”。定制其它掩模(但是仅仅是全体掩模集合中的一些掩膜)以向结构化ASIC赋予与相关的已编程了的FPGA的功能等效的特定功能。例如,这些定制的掩模可以配置HLE或者一 小组或一小簇HLE(复合(complex)HLE或者“CHLE”),以执行与由相关的已编程FPGA中的ALE执行的那些功能等效的功能。类似地,定制的掩模可以将CHLE配置为执行与相关的已编程FPGA中的寄存器等效的功能。这些定制的掩模还可以提供在HLE、CHLE、和/或ASIC上的其它电路块之间的互连。这些互连一般将包括与由相关的已编程FPGA中的可编程互连资源所提供的那些互连等效的互连。 [0005] 以这种方法使用这种类型的结构化ASIC具有许多优点。例如,仅仅一些ASIC掩模需要被定制。这趋向于减少ASIC成本并且加快ASIC设计/生产周期。它还减少了ASIC中出现设计缺陷的风险,而且便于产生与相关的已编程FPGA紧密操作等效的ASIC(例如,逐个管脚等同、定时等同或者接近等同等)。这种方法的另一个优点是,它趋向于允许ASIC包括比相关的FPGA少的电路(包括较少的电路用于正常操作)。这是因为仅仅与所必需的一样多的ASIC HLE用于执行每个FPGA ALE的功能,而在几乎所有的FPGA中,许多ALE未被充分利用。
[0006] 从FPGA设计到结构化ASIC设计的高效和可靠的转换(反之亦然)在多种环境中都可以是有益的。例如,在设计的FPGA实现已经使用了一段时间之后,可能期望把这个设计移植到功能上等效的ASIC,以便降低单位成本。作为另一个示例,可能期望使用FPGA来为实际上用于ASIC实现的设计进行原型设计(prototype)。另外,为了让这样的原型设计(prototyping)变得有意义,FPGA和ASIC必须是功能上等效的。

发明内容

[0007] 本发明便于提供用户电路设计的彼此功能上等效的FPGA和ASIC实现。综合(synthesize)用于FPGA的实现中的用户的逻辑设计,而与立即期望的最终结果是编程的FPGA还是功能上等效的结构化ASIC无关。在产生编程的FPGA的流程中,用于FPGA实现的综 合(synthesis)经受适合于在FPGA上布局该综合的布局(place)和布线(route)操作。这个布局和布线操作的输出可用于产生用于对FPGA编程以便使FPGA执行用户逻辑的数据。在产生结构化ASIC的替换流程中,将用于FPGA实现的综合转换为适合于结构化ASIC实现的修改的综合。该修改的综合经受适合于在结构化的ASIC上布局修改的综合的布局和布线操作。进一步处理这个布局和布线操作的输出以产生用于该结构化ASIC的规范,其包括要在产生结构化ASIC的过程中使用的物理电路的标识。
[0008] 上述布局和布线操作之一或者这二者可以改变由用户的逻辑设计指定的特征。例如,这样的改变可以是寄存器的复制或者寄存器从设计的一个部分到该设计的另一个部分的移动(shifting)。依据本发明可能的一个方面,利用有关这样的改变的信息来修改用于用户的逻辑设计的数据。这个设计数据修改优选为以这样的方式进行,其中该设计数据的后续使用导致该改变被实现为这个后续使用中的一部分。
[0009] 本发明的另一个可能方面涉及形式上证明在正被开发的FPGA和结构化ASIC实现之间的功能等效。这通过比较上述两个布局和布线操作的输出来进行。
[0010] 根据附图及随后的详细描述,本发明的进一步特征、它的特性以及各种优点将变得更加明显。

附图说明

[0011] 图1是本领域技术人员已知的FPGA电路的说明性基本单元的简化示意框图。 [0012] 图2是在说明本发明的某些特征方面有用的结构化ASIC电路的说明性基本单元的简化示意框图。
[0013] 图3是示出在FPGA和结构化ASIC电路中的某些说明性电路功能的等效实现的简化示意框图。
[0014] 图4是在说明本发明的某些特征方面有用的说明性的已知FPGA电路中的代表性部分的简化示意框图。
[0015] 图5是在说明本发明的某些特征方面有用的说明性结构化ASIC电路中的代表性部分的简化示意框图。
[0016] 图6是示出依据本发明的说明性电路设计流程的简化框图或者流程图。
[0017] 图7a类似于图6,并具有依据本发明的可能的附加流程路径。
[0018] 图7b同样类似于图6,并具有依据本发明的可能的附加流程路径。
[0019] 图8a和8b合起来为依据本发明、可以在如同图6、7a、和7b中的那些流程那样的流程中执行的附加步骤的简化流程图。
[0020] 图9是更详细地示出图6、7a、和7b中任何一个中的一部分的说明性实施例的简化流程图。
[0021] 图10是示出用于特定类型电路块的图9中的一部分的说明性实施例的简化流程图。
[0022] 图11类似于图10,并且用于其它特定类型的电路块。
[0023] 图12类似于图10和11,并且仍然用于其它特定类型的电路块。
[0024] 图13是依据本发明的一个可能方面的说明性机器可读介质的简化框图。 具体实施方式
[0025] 这个说明书在从特定类型的FPGA到特定类型的结构化ASIC的逻辑设计移植(或者反过来)的环境中说明了本发明。在诸如Chua等人于2004年7月2日提交的美国专利申请10/884,460、Schleicher等人于2005年2月3日提交的美国专利申请11/050,607之类的参考文献中,更详细地说明了这些类型的FPGA和结构化ASIC,这些文献全部并入在此作为参考。然而,为了便于理解本发明而不需要参考任何其它文档,从上述Schleicher等人的参考文献中转载(仅仅具有微小的修改)了接下来的几个段落和相关的图1-3。 [0026] 图1中示出了用于包含在FPGA中的基本逻辑电路构建(building)块或者单元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控制。
[0027] ALE 10还包括查找表(“LUT”)32、34、36、42、44、和46。LUT 32和42是四输入查找表。其它LUT是三输入查找表。这些LUT中的每一个都是可编程的,以提供作为到这个LUT的输入信号的任何逻辑组合的输出信号。
[0028] ALE 10的其它部件是全加器72和74,与(AND)门128和138,以及触发器142和144。由空心圆所示的导线互连(例如连接115)是可编程的互连,这意味着按照用户的要求可以构造或者也可以不构造这些互连。
[0029] ALE 10的LUT资源足以允许ALE形成最多到ALE的六个输入的任何逻辑组合。做为选择,如果两个稍微小一些的功能具有共同的一些输入,则ALE 10的LUT资源可能足以执行两个这样的功能。例如,也许可能让ALE 10形成两个五输入的组合,两个四输入的组合等。
[0030] 全加器72和74增强了ALE 10的算术性能。例如,这些部件给予ALE 10执行两个数字的二进制加法中的两个相邻布局的能力,其中包括进位输入(carry in)和进位输出(carry out)信号的处理。
[0031] 寄存器142和144(以及相关联的电路)允许记录(通过寄存器)或者不记录(绕过寄存器)ALE 10中的信号。ALE 10寄存器不是必须用于记录在ALE中产生的信号。相反,寄存器可以用于(在所谓 的单独寄存器模式中)记录到ALE的输入信号。ALE中的其它电路可以用于其它目的,同时寄存器142和144之一或者两者在单独寄存器模式下使用。寄存器142和144还能够在不同的异步或者同步模式下进行操作。“D”是到每个寄存器的正常数据输入;“DATA”是异步加载的数据。
[0032] 图2示出了用于包含在结构化ASIC中的基本逻辑电路构建块或者单元200。此处的图2与上述Chua等人的参考文献中的图3相同。因此,此处可以稍微简化对图2的描述。构建块200还可以称为混合逻辑单元或者HLE。
[0033] HLE 200包括两输入多路复用器210,与非(NAND)门220a和220b,以及反相器230a和230b。HLE 200还包括一些互连资源,其中的一些是可掩模编程的。例如,X标识这样的位置,在该位置处可以通过适当地定制用于构造ASIC的掩模(或者多个掩模),依照要求使导线段彼此连接或者不连接。类似地,O标识这样的位置,在该位置处,如果期望的话,可以构造到其中可以提供相对长距离的互连导线的一个或多个电路层(未示出)的连接。另外,通过适当地定制用于构造ASIC的一个或多个掩模来构造这些连接和互连。在图2中的导线交叉点处的实心点也是依照要求可以在交叉的导线之间构造或者不构造的连接。
再一次地,如果期望的话,通过适当地定制用于构造ASIC的一个或多个掩模来构造这些连接。
[0034] 显然,HLE 200的逻辑性能比ALE 10(图1)的逻辑性能少很多。然而,邻近或者靠近的相对小数目的HLE通常可以汇合在一起,以执行ALE在已经在FPGA中实现的用户的逻辑设计中所执行的任何功能(一个或多个功能)。例如,图3示出了在执行特定的六输入逻辑组合的三个HLE 200a、b、和c以及ALE 10的LUT电路32/34/等之间的等效性。图3还示出了在另外两个HLE 200d和e以及ALE10的触发器电路142或者144之间的等效性(该ALE 10可以与图3所示的、正执行六输入逻辑组合的ALE相同)。应当理解,图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。
[0035] 图4示出了包含ALE 10的阵列的说明性FPGA 500。FPGA 500还包括各种类型的“硬块”,诸如输入/输出(“I/O”)块510,锁相环(“PLL”)块520,随机存取存储器(“RAM”)块530,和数字信号处理(“DSP”)块540。这些硬块至少部分地被硬布线,以执行特定功能,或者执行从特定类别的功能中可编程地选择出来的功能。FPGA500还进一步包括至少在某种程度上可编程的互连资源550/552,以便以各种方式互连功能块10、510、530、540等。特别是,参考数字550用于这些资源的互连导线,而参考数字552用于在导线
550之间的可编程互连。时钟信号可以通过时钟分配资源560/562(例如,从PLL 520中)分配到其它功能块,其中该时钟分配资源再次在某种程度上可以是可编程的。参考数字560用于在这些资源中的导线,而参考数字562用于在导线560之间的可编程互连。
[0036] 应当理解:图4仅仅是对可以包含在FPGA中的单元的一般说明。例如,除了图4中所示的那些之外还可以包括其它类型的单元,或者可以省略图4中的一些单元。各种类型的单元的数目和布置可以不同于图4中所示的那些。FPGA 500当然是现场可编程的。因此它能够实现用户可能期望的巨大数目的不同电路功能中的任何功能。为了方便起见,有时在此处将这样的各种电路功能称为用户逻辑设计。
[0037] 图5示出了结构化ASIC 600,其可以被制造用来执行可以对FPGA 500进行编程以执行的任何用户逻辑设计。此外,依据这个发明,可以制造结构化ASIC 600以与被编程用来执行用户逻辑设计的FPGA 500等效地执行该用户逻辑设计。通常,这样的等效意味着, 被编程用来执行用户的逻辑设计的FPGA 500和已经被制造以执行该设计的结构化ASIC600可以彼此代替(例如,在使用500/600电路的较大电路中)。虽然在一些实施例中可能与此有一些偏差,但是这样的等效通常意味着两个器件500和600的管脚输出是相同的(或者至少基本上是相同的),两个器件的定时是相同的(或者至少基本上是相同的),而且由两个器件执行的功能是相同的(或者至少基本上是相同的)。然而,与FPGA 500相比,器件600可以物理上更小而且更便宜(尤其是量大时)。这是因为ASIC 600不需要用于使FPGA500现场可编程的“额外开销”电路。此外,还因为在大多数用户逻辑设计中许多ALE
10没有被充分使用,而在ASIC 600中,仅仅有与执行ALE 10的功能所必需的HLE一样多的HLE 200来代替该ALE。因此,与复制在等效的FPGA 500中的全部ALE 10的最大性能所需要的HLE数目相比,ASIC 600通常可以具有较少的HLE 200。
[0038] ASIC 600被称为结构化ASIC,是因为它总是至少具有某些部件的基础(rudiment)。这些部件基础体现在用于构造所有版本的ASIC600的几个掩模中。例如,它们可以是HLE 200、I/O块610、PLL块620,RAM块630等的阵列的基础。这些块的数目和布置(尤其是某些FPGA硬块的等效)可以与FPGA 500的相应部件相同或者类似。除了向ASIC 600赋予它的“结构”的上述掩模之外,进一步的用于构造ASIC 600的掩膜至少部分被定制,以在ASIC 600中实现特定的用户逻辑设计。例如,这些定制的掩模可以:(1)构造或者完成在HLE内的连接;(2)构造或者完成在CHLE中的HLE之间的连接;(3)构造或者完成在CHLE之间、在CHLE和其它部件610/630等之间、和/或在这样的其它部件之间的连接650;以及(4)构造或者完成用于在器件上(例如,从PLL块620中)分配时钟信号的连接660。这些定制的掩模还可以进行选择,这些选择涉及各种部件将如何操作(例如,RAM块630将会是什么RAM类型,诸如单端口RAM、双端口RAM等),I/O块610将是什么端口类型(例如,输入、输出等),PLL块620将如何操作(例如,具有所应用的时钟信号的多少 延迟)等。
[0039] 现在转向本发明的更具体方面,其重要的特征包括:(1)并行的FPGA和结构化ASIC开发,(2)强制功能等效的设计限制,(3)证明FPGA和结构化ASIC功能等效的形式(formal)技术,以及(4)全部后端结构化ASIC交接(handoff)信息(即,可以控制下述这样的数据的开发的信息,该数据规定了结构化ASIC将如何被定制以实现用户的逻辑设计)的直接生成。在这个说明书的后续部分考虑了这四个特征。
[0040] 1.并行的FPGA和结构化ASIC开发
[0041] 如上所述,这种设计方法学的重要目标是能够从单个设计源中生成FPGA和结构化ASIC设计,以便使该FPGA和结构化ASIC是功能上等效的。
[0042] 现有的方法支持完整的FPGA设计到结构化ASIC的移植(“FPGA转换”),或者重新综合结构化的ASIC设计以把FPGA作为目标(“ASIC原型设计”)。这些技术未能充分启用结构化ASIC体系结构的成本和性能益处,而且同时未能提供在用于系统内验证的FPGA和用于生产中的最终结构化ASIC之间的强验证链接。
[0043] 当前的方法基于开发用于结构化ASIC的完整的HDL-到-交接-文件的(HDL-to-handoff-files)编译流程,该流程镜像了传统的FPGA流程。图6说明了这个概念。
从单个设计源(例如,HDL代码700)中,用户可以通过采用导致生成FPGA编程指令760的上部的流程路径而选择以FPGA为目标,或者通过采用导致生成交接设计文件860的下部的流程路径而选择以结构化ASIC为目标(该交接设计文件860可用于直接或者基本上直接控制为设计掩模所需要的数据中的至少一部分的生成,其中该掩模是为制造适当定制的结构化ASIC所需要的)。对于每种选择,流程步骤是类似的。
[0044] 作为示例,首先考虑图6中的上部的流程。在某些方面,这个论述将最初处于相对高的级别,稍后在这个说明书中提供更多的细节。在步骤710,将用户的逻辑设计的HDL代码700综合为FPGA网表 (netlist)722。作为一个可能的选项,FPGA网表722可以由ASIC资源指南软件724检查以标识一个或多个可用的结构化ASIC产品,其中包括产生与实现该FPGA网表的FPGA等效的结构化ASIC所需要的性能。仅作为其一个示例,如果有两个可用的、分别包括两个和四个PLL块620的结构化ASIC产品,而且如果FPGA网表722指示仅仅需要两个PLL块,则ASIC资源指南724可以示出这两个ASIC产品中的第一个产品可用于实现FPGA网表722(假定该FPGA网表在任何其它方面都没有超出第一个结构化ASIC产品的性能)。然而,再次地,提供这个特征724是完全可选的,而且如果期望的话可以省略。 [0045] 图6中的上部的流程从流程单元720(包括流程子单元722和(可选地)流程子单元724)继续到流程单元730,其中在特定的FPGA器件或者器件族之上、或者相对于它们布局和布线网表722(步骤730还可以被称为适配(fitter)和定时分析步骤)。因此步骤730具有特定FPGA器件或者器件族的物理限制。这产生了FPGA适配后(post-fit)网表
740。这个适配后网表仍然可以被称为用户逻辑设计的逻辑视图。
[0046] 下一步骤是使FPGA适配后网表740传递经过装配器750。这会将用户逻辑设计的逻辑视图转换为该设计的物理表示,即用于FPGA的编程位流760。来自步骤760的数据可用于实际编程FPGA,以便使该FPGA将会实现用户的逻辑设计。
[0047] 现在转向图6所示的下部流程路径,综合步骤810类似(优选为等同或者至少基本上等同)于上述综合步骤710。因此,步骤810(从用户逻辑设计的HDL规范700中)生成类似(优选为等同或者至少基本上等同)于上述FPGA网表722的FPGA网表822。然而,FPGA网表被称为是“隐藏”的,这是因为它不实际上用于产生用户逻辑设计的FPGA实现。相反,在流程步骤820内,隐藏的FPGA网表822被转换为结构化ASIC网表824。如在下面将要更详细描述的那样,以这样的方式进行这个转换,以便确保在FPGA实现网表822和ASIC 实现网表824之间的功能等效性。
[0048] 来自网表转换步骤820的结构化ASIC网表824传递经过适配和定时分析步骤830,以产生ASIC适配后网表840。这考虑了特定的结构化ASIC器件或者器件族的物理限制,在特定的结构化ASIC器件或者器件族上、或者相对于它们布局和布线ASIC网表824。
因此,步骤730是FPGA特定的(或者至少主要是这样),而步骤830是ASIC特定的(或者至少主要是这样)。再次地,ASIC适配后网表仍然可以被称为用户逻辑设计的逻辑视图。 [0049] 在图6所示的下部流程中的下一步骤是使ASIC适配后网表840传递经过装配器
850以产生结构化ASIC交接设计文件860。例如,设计文件860可以是结构化的verilog网表,其可以被进一步处理以产生为实际定制该结构化ASIC以便使它实现用户的逻辑设计所需要的数据。
[0050] 要注意到,图6的上部和下部流程可以同时或者在不同的时候执行。如果最初仅仅需要用户逻辑设计的FPGA实现,则最初仅仅需要执行上部的流程。如果稍后需要用户逻辑设计的功能等效的结构化ASIC实现,则稍后可以执行下部的流程。作为另一个示例,如果最初仅仅需要用户逻辑设计的结构化ASIC实现,则最初仅仅需要执行下部的流程。但是从上文中显然可以看出,这个下部的流程确保通过稍后执行上部的流程可以产生用户逻辑设计的功能等效的FPGA实现。
[0051] 根据图6应该注意并且上面已经说明的另一点如下:因为设置了FPGA和结构化ASIC编译器流程以直接支持相应的基础器件体系结构,所以没有丢失这两个不同的体系结构的基本益处。换句话说,能够产生用户逻辑设计的功能等效的FPGA和结构化ASIC实现的这一目标,在产生这些实现的过程中不会导致任何一种类型体系结构的低效率或者不经济的使用。
[0052] 为了确保图6所示的流程产生用户逻辑设计的功能等效的FPGA和结构化ASIC实现,这样设计为其采用了图6中的流程的FPGA和 结构化ASIC,以便使硬块的加工技术和功能是相同的。(作为提醒,图4中的硬块示例为510、520、530、和540。图5中的硬块示例为610、620、和630。)此外,为器件体系结构选择的表示必须具有相同的抽象。在图1所示的说明性实施例中,已经为FPGA和结构化ASIC编译器流程二者选择了FPGA抽象模型。在FPGA中的每种类型的功能对象被表示为基本单元(atom)类型。典型的基本单元包括I/O、RAM、DSP、PLL、寄存器、和逻辑。结构化的ASIC具有相同的基本单元集,但是具有适合于结构化ASIC的属性。例如,在此处通常假定的说明性实施例中,用于FPGA的组合逻辑基本单元可以表示任何六输入功能,该实施例中的FPGA体系结构支持完整的六输入查找表(“LUT”)。
在相应结构化ASIC中的组合逻辑基本单元可能仅仅支持包括在ASIC综合单元库中的六输入功能。
[0053] 除选择用于FPGA和结构化ASIC的通用逻辑表示之外,本发明使用单个综合技术710/810来生成FPGA网表722和结构化ASIC网表824,而不依靠用户的HDL代码700的重新综合。在此单个综合技术中,为FPGA和结构化ASIC设计执行相同的综合步骤,直到最后的器件特定的技术映射720或者820为止。然后,通过到FPGA的技术映射、以及然后(如果是在图6的下部流程路径中的话)通过到结构化ASIC综合单元库的逐个单元翻译,来完成这个最后的步骤。这个翻译由图6的流程单元820中的、从流程单元822到流程单元824的箭头所表示。如果综合是以FPGA为目标(图6中的上部流程路径),则它在FPGA技术映射的结果722处停止。如果综合是以结构化ASIC为目标(图6中的下部流程路径),则它继续进行到结构化单元库的翻译。最终结果是具有明确定义的通用结构和完全功能等效的FPGA网表722和/或结构化ASIC网表824。
[0054] 2.强制功能等效的设计限制
[0055] 逻辑FPGA风格的抽象使得计算机辅助设计工具流程能够在布局和布线操作730/830期间执行各种相对不复杂的物理综合风格的变换(transformation)。例如,这些变换可以包括寄存器复制和/或将 寄存器封装到I/O、RAM、或者DSP块中。寄存器复制的例示可以是其中在核心逻辑中的寄存器馈送给器件的两个输出管脚的情况。比较好的是(例如,从定时的观点上看)让核心逻辑源馈送给两个单独的寄存器,两个I/O块中每块一个寄存器。布局和布线步骤730/830可以进行这个网表修改以便于器件性能的改善。寄存器封装的例示是将寄存器从核心逻辑移动到I/O、RAM、和/或DSP块中,其同样改善了器件的定时和部件的使用。同样,布局和布线步骤730/830可以进行这样的网表修改。 [0056] 依据它们的性质,在前面段落中所提及类型的网表修改是器件特定的优化,因为它们考虑了特定的器件平面布置图(floorplan)和定时信息。这些修改对于在FPGA设计中实现最大性能潜力也是重要的。为了确保在FPGA和结构化ASIC之间的一对一功能等效,在布局和布线730/830期间控制所有这些变换以便对于FPGA和结构化ASIC这二者产生等同变换,是所期望的。
[0057] 本发明分两个部分实现上述方面。首先,可以在布局和布线编译器730/830中执行的每个变换具有加入其中的“分配(assignment)”,其可以精确地控制进行了什么变换。这在概念上类似于可以在传统的ASIC后端流程中进行的设计变动命令风格的(engineering-change-order-style)修改。不同之处在于:这是对逻辑基本单元表示进行的,并且被镜像在FPGA和结构化ASIC设计这二者上。
[0058] 上述方面的第二部分是这样的方法,其用于在正常的布局和布线730/830期间记录这些变换分配,以便它们可以(a)在原有的FPGA或者结构化ASIC设计上进行背后注解以导致结果的再现,或者(b)移植到用于FPGA的相伴结构化ASIC设计(或者用于结构化ASIC的FPGA设计)中,以产生与原有的FPGA相比功能上等效的结构化ASIC结果。
[0059] 图7a示出了依据本发明可以怎样实现上述方面的说明性实施例(除了下面将论述的修改之外,图7a与图6相同)。如果正使用图 7a的上部流程,则由适配和定时分析流程单元730进行的任何变换被记录为用于原有HDL代码700的数据的一部分。这经由流程路径732进行。然后,如果在图7a的下部流程中随后处理HDL代码700,则可以在下部的流程中进行相同的变换(例如,在布局和布线步骤830中)。以这种方法,例如,将在用户逻辑设计700的结构化ASIC实现中(通过步骤830)随后重复(在步骤730中)被发现为是用户逻辑设计700的FPGA实现所希望的寄存器复制。
[0060] 作为上述方面的另一个例示,经由流程路径832将(在步骤830中)被发现为是用户逻辑设计700的结构化ASIC实现所希望的变换构造为用于设计700的数据的一部分。以这种方法,在图7a的上部流程中的任何后续执行在开发逻辑设计700的FPGA实现的过程中将包括这个变换的重复。
[0061] 图7b示出了对图7a所示流程的一些替换。在图7b中,经由流程路径734向设计变动命令工具736报告(在步骤730之后)被发现为是用户逻辑设计700的FPGA实现所期望的变换。然后,在该下部流程的任何后续执行中,这个变换变为经由流程路径738应用到ASIC适配后网表840的设计变动命令。依据这个设计变动命令信息修改ASIC适配后网表。这个修改也可以经由流程路径739而变为HDL代码700的一部分。
[0062] 图7b还示出了在前面段落中所描述类型的流程可以以相反的方向继续。因此,经由流程路径834向设计变动命令工具736报告(在步骤830之后)被发现为是用户逻辑设计700的结构化ASIC实现所期望的变换。然后,在该上部流程的任何后续执行中,这个变换变为经由流程路径838应用到FPGA适配后网表740的设计变动命令。依据这个设计变动命令信息修改FPGA适配后网表。这个修改也可以经由流程路径839而变为HDL代码700的一部分。
[0063] 可以在本发明的各个实施例中提供在前面两个段落中描述的任何一个或者两个流程方向。
[0064] 本发明的相关(可选)特征如下:通过以上述方式限制设计,有 可能具有可以支持不同级别的功能等效性的编译器流程。通过改变限制什么变换(例如,通过允许执行一些类型的变换而不进行限制(即,要求在用户逻辑设计的其它类型实现中重复变换),同时限制其它类型的变换(即,在用户逻辑设计的其它类型实现中要求重复变换)),可以允许在FPGA和结构化ASIC编译器之间的一些自由度。例如,可以允许复制寄存器,而不要求在其它类型逻辑设计实现中的重复,是因为这是使用其它形式技术来进行验证的容易的变换。但是,用于I/O的寄存器封装可能总是要求在两种类型的逻辑设计实现中是重复的,这是因为Tco延迟的关键定时性质而导致的。
[0065] 3.证明FPGA和结构化ASIC功能等效性的形式技术
[0066] 在形式逻辑等效性领域的那些技术人员将会理解,这个发明中的用于生成初始FPGA和结构化ASIC网表722和824的结构化综合方法与在布局和布线730/830期间加到物理变换中的限制结合起来,使得证明结果(例如,740和840)的逻辑等效性成为一种可解决的提议。另一方面,对于本领域的技术人员来说,显然这仅仅验证了网表740和840的逻辑部分,而没有验证网表的完整功能。本发明在传统逻辑等效性检查(“LEC”)验证上进行了扩展,以便还证明网表的非逻辑部分是等效的。这以独立于基础的设计复杂性的确定性方式进行。
[0067] 图8a和8b示出了下述本发明特征的说明性实施例,其中所述特征涉及证明在FPGA网表740和结构化ASIC网表840之间的功能等效性。图8a和8b说明的方法可以被认为包括两个主要部分:(1)图8a所示的步骤,其涉及证明器件的逻辑结构的功能等效性;以及(2)图8b所示的步骤,其涉及证明器件的其余部分的功能等效性。
[0068] 在步骤910中,将在网表740/840之一中的每个寄存器与在另一个网表中的相应寄存器相匹配。
[0069] 在步骤912,将在网表740/840之一中的每个非逻辑块的输入和输出与在另一网表中的相应非逻辑块的输入和输出相匹配。这些非逻辑块以及它们的输入和输出必须匹配,这是因为这个发明的设计方法 学的前提是FPGA和结构化ASIC对于可能的使用包括相同的非逻辑块资源。这意味着,例如,I/O块510和610是相似的资源,PLL块520和620是相似的资源,RAM块530和630是相似的资源等。(在当前实施例中对此的例外是FPGA DSP块540以结构化ASIC 600中的通用逻辑结构200实现,而不是以ASIC中的专用DSP块实现。这是对在先前语句中描述的一般情况的可选的偏离。尽管有这个背离,但是即使物理实现是不同的,DSP块的逻辑基本单元表示对于FPGA和结构化ASIC这二者来说仍然是相同的。)
[0070] 在步骤914,将全部FPGA逻辑单元(即ALE 10)组合输出与在结构化ASIC网表中的节点相匹配。此处采用的结构化综合(如上所述)意味着,在单个FPGA ALE 10中有实现组合逻辑所需要的最大数目的结构化ASIC库单元。因此,FPGA ALE 10的组合逻辑已经在结构化ASIC中使用一个HLE 200、一个CHLE(具有给定的相对少的多个HLE)、或者给定的相对少的多个CHLE实现了。用于实现一个FPGA ALE 10的HLE/CHLE资源同样没有用于任何其它目的(例如,实现任何其它ALE 10的任何功能)。所有这些使步骤914的匹配成为一个直截了当的任务。
[0071] 在步骤914结束时已经标识了大量匹配的节点。此外,在这些匹配的节点之间的网表的最大尺寸是有界限的(例如,由每个ALE 10的最大组合逻辑性能以及实现这样的最大ALE功能所需要的HLE/CHLE单元的最多数目所限制)。更进一步的考虑是用于生成FPGA和结构化ASIC网表的综合技术的性质(例如,从FPGA ALE逻辑到这个逻辑的HLE/CHLE实现的库转换的使用,在由一个ALE10提供的功能和一个HLE/CHLE资源集群之间存在有一一对应的事实等)。依据本发明,所有这些考虑使得有可能确保可以使用形式技术在这两个网表740/840进行形式比较,其中该形式技术构造在两个网表中的相匹配节点之间的逻辑的二元判定图(“BDD”)表示,并且证明每个这样的BDD对是等效的。这是在图8a的步骤920和922中进行的处理。在步骤924记录对这样的等效性的任何例外或者可能的 例外(应当不会有很多例外)。如果没有如上所述的结构化综合和受限制的物理变换,这里也许可能有其中自动化的等效性证明技术在存储器或者运行时间要求方面“爆发”的情况。 [0072] 步骤930开始对网表740/840中的非逻辑部分的处理。在步骤930,对于在网表
740/840之一中的每个非逻辑基本单元,标识在另一个网表中的相应基本单元。再次,在两个网表中有这样的相应非逻辑基本单元的存在是如上所述的结构化综合和此处采用的布局和布线物理综合限制的要求。
[0073] 在步骤932,比较在每对相应的非逻辑基本单元中的非逻辑基本单元的参数信息。用于I/O块510/610的参数信息示例包括I/O块是输入还是输出,I/O块中的寄存器是否正被使用等。用于RAM块530/630的参数信息示例包括该RAM块是单端口还是双端口RAM,RAM的宽度,在输入侧使用了什么时钟,在输出侧使用了什么时钟等。如步骤932所述,应该匹配的参数是控制功能的那些参数。可以忽略涉及非逻辑基本单元在特定类型的器件中(例如,在FPGA或者结构化ASIC中)如何物理实现的参数。位置信息是这个后一种类型的参数信息的示例,其如步骤932中所述的那样可以被忽略。在步骤934,记录对于在步骤932中比较的参数的预期相似性的任何例外或者可能的例外(应当不会有很多这样的例外)。 [0074] 在已经为网表740/840的所有部分执行了先前的步骤之后,可以执行步骤940直到最后的步骤。在步骤940,检查非等效的任何可能区域的记录(在步骤924和/或934中的记录)。如果步骤940具有否定的结果,则执行步骤944以指示已经证明了网表740/840的功能等效性。另一方面,如果步骤940具有肯定的结果,则执行步骤942,以指示网表
740/840可能不是功能等效的,并且报告关于已经在何处发现了可能的不等效的具体细节。 [0075] 返回到步骤932,可能一些具体的信息要求“智能”的比较,以确定两个基本单元是否是功能上等效的。一个示例会是实现输入时钟信号的特定延迟量的PLL块520/620。由PLL实现的延迟量由与PLL 相关联的参数设置所确定。但是因为在FPGA和结构化ASIC中PLL电路可以是不同的,所以对于这两种类型的器件而言用于产生相同的延迟量的参数设置可以是不同的。该比较工具(步骤932)必须能够智能地确定在两种不同类型的器件中、对于相同的延迟量而言这些延迟链设置预计是不同的。例如,步骤932可以利用一表格,该表格示出在两种不同类型的器件中什么不同的延迟链设置实际上产生相同的结果(即,相同的延迟),并且因此即使数量不同也是功能上等效的。
[0076] 4.所有后端结构化ASIC交接信息的直接生成
[0077] 现在已经描述了并行的FPGA和结构化编译器流程如何使用通用的逻辑抽象来允许功能等效的FPGA和结构化ASIC设计的开发。下面继续说明这个视图如何翻译为具体的物理视图860,该具体的物理视图860将由后端流程(此处未示出)处理,最终产生一组用于结构化ASIC器件投片(tapeout)的文件(有时本领域的技术人员将其称为GDSII文件)。
[0078] 这个发明的目标是前端流程(如此处所示和所述的)直接生成完整的功能网表860以便通过后端进行驱动。这个网表包括这样的特征,诸如(1)插入用于布线的缓冲器,(2)布局限制,(3)全局布线限制,以及(4)定时限制(例如,最初由用户指定的那些限制)。
布局限制的一个示例是I/O管脚必须位于器件上。因此,网表860直接指导后端,以使后端再现前端的布局和布线结果。在后端中可以添加到这个网表中的仅有信息是诸如来自结构化ASIC基础体系结构的测试电路和专用连接信息之类的非用户信息。例如,可以在后端中添加用于执行I/O寄存器的扫描测试的电路,这是因为它不可以由用户改变或者访问。这对于任何内置的自测试电路来说同样如此。
[0079] 在这个直接生成后端网表860的目标之后的原因是能够在前端中提供预测执行和可布线性的准确的验收(sign-off)质量工具。在后端中进行且前端不知道的任何变换可能阻止总体设计方法实现期望的精确度。因此,避免了这样的后端变换。此外,仅仅与后端网表860 的紧密耦接将允许原有的用户定时限制或者上述ECO-类型的限制被准确地传送到后端。
[0080] 为了向后端提供在这个物理级别的网表860,在装配器850中引入并且实现了新的物理基本单元抽象。先前描述的逻辑基本单元(例如,在网表740和840中的逻辑基本单元)允许在FPGA和结构化ASIC之间的逻辑功能的通用表示,而物理的基本单元被设计成与后端网表860中的单元一一对应。逻辑基本单元(例如,在网表740/840中的逻辑基本单元)表示单元的类别。装配器850通过所谓的“c-数字(c-number)”和参数化的组合使这些细节包含在网表860中。c-数字是在后端流程中使用以指定要被用来实现物理基本单元的特定示意图的示意图标识符。例如,用于I/O块510/610的c-数字可以是不同的,这取决于:(1)I/O块将位于最终的物理的结构化ASIC器件中的何位置(例如,在该器件的左边或者右边),以及(2)该块的功能(例如,它是通用I/O(“GIO”)还是存储器接口I/O(“MIO”))。上面所提到的参数化可能类似于流程单元760中的、与FPGA风格的硬块编程相关的一些FPGA编程指令。这样的用于RAM块530/630的参数示例会是数据输入总线的宽度、数据输出总线的宽度等。
[0081] 装配器模块850的工作是将逻辑基本单元和它们的布局和布线后(post-place-and-route)信息(如在网表840中的信息)翻译成准备要由后端处理的物理基本单元。
[0082] 图9示出了装配器流程单元850的说明性实施例。在步骤1010,对于ASIC适配后网表840中的每个逻辑块,查找适当的物理块类型。然后,在步骤1020,有关该逻辑块(在网表840中)的参数被翻译为有关物理块的适当参数值。例如,图10示出了(在步骤1110中)在CHLE逻辑块的情况下上述操作可以怎样进行。在这种情况下,CHLE逻辑单元从逻辑网表840直接一一映射到物理网表860。在两个网表中可以使用相同的表示。图11是在用于I/O块的情况下步骤1010和1020的执行的另一个示例。步骤1140示出了在网表840中的I/O取决于I/O的功能和位置而被分成几个物理的I/O基本单元。然后,在 步骤1150中,基于在原有的逻辑I/O基本单元中使用的参数,向这些物理I/O基本单元中的每一个给予适当的参数信息。如步骤1140所示,例如,存储器接口I/O可以被物理地实现为物理I/O缓冲器和单独的物理DDR(两倍数据速率)接口基本单元。图12示出了(在步骤1180中)上述步骤1010和1020的执行的另一个示例。在这种情况下,该示例是用于RAM的。在步骤1140,映射是从逻辑RAM基本单元(每一个表示具有到每个基本单元的重复地址输入的RAM块(或者RAM片段)的一个逻辑输出)到具有单条地址总线的、支持所有RAM输出的适当类型的物理RAM块(例如,被称为M4K类型的RAM,或者被称为M-RAM类型的RAM)。步骤1140还说明了怎样查找c-数字以便包括在网表860中。
[0083] 返回到图9,根据步骤1010和1020变换在网表840中的全部块。然后执行步骤1030以生成获取这些变换的结果的结构化verilog网表。最后,执行步骤1040以添加布局、布线、和定时限制。例如,步骤1040的布线部分可能涉及进行适当的翻译,以把连接从网表
840中的逻辑端口移动到网表860中的适当物理端口。最终结果是交接设计文件860。 [0084] 图13说明了本发明的另一个可能特征。这是编码有用于至少部分地执行依据本发明的一种或多种方法的机器可读指令1210(例如计算机程序)的机器可读介质1200(例如,磁盘(一个或多个),光盘(一个或多个),磁带(一个或多个)等)。
[0085] 应当理解,上文中仅仅说明了这个发明的原理,而且可以由本领域的技术人员进行各种修改而没有背离本发明的范围和精神。例如,此处所示的ALE和HLE结构仅仅是说明性的,而且如果期望的话,作为替代也可以使用其它的结构。