CN100514340C - 给掩模可编程逻辑器件编程的方法及如此编程的器件 - Google Patents
给掩模可编程逻辑器件编程的方法及如此编程的器件 Download PDFInfo
- Publication number
- CN100514340C CN100514340C CNB2004800228597A CN200480022859A CN100514340C CN 100514340 C CN100514340 C CN 100514340C CN B2004800228597 A CNB2004800228597 A CN B2004800228597A CN 200480022859 A CN200480022859 A CN 200480022859A CN 100514340 C CN100514340 C CN 100514340C
- Authority
- CN
- China
- Prior art keywords
- logic device
- programmable logic
- user
- mask
- programming
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
掩模可编程逻辑器件(″MPLD″)的用户逻辑设计可在可比或兼容用户可编程逻辑器件(″UPLD″)上设计并移植到MPLD,或可直接在MPLD上设计。如果在UPLD上设计该设计,则考虑目标MPLD的约束,即器件之间的不同以使移植成功。如果直接在MPLD上设计该设计,假若用户表明该设计将被移植到UPLD来测试,则考虑可比的兼容UPLD的约束。这意味着当逻辑设计打算在UPLD和MPLD之间前、后移植时,只有特性的交集能被使用。为了易于移植,可产生器件对之间的固定映射。
Description
技术领域
本发明涉及掩模可编程逻辑器件,并且尤其涉及用于给掩模可编程逻辑器件编程的方法,其允许向和自用户可编程逻辑器件进行移植以提供更容易的验证和/或测试。
背景技术
可编程逻辑器件,有时被称为"现场可编程门阵列"("FPGA"),是为大家所熟知的。早期可编程逻辑器件是一次性可配置的。例如,配置可由"熔断",即断开,熔性连接来实现。可选地,配置可存储在可编程只读存储器中。这些器件通常给用户提供针对乘积的和(即,"乘积项"或"P-TERM")逻辑运算配置器件的能力。之后,引入可擦除可编程只读存储器(EPROM)以用于配置的可编程逻辑器件变得可用,其允许重新配置器件。
再后,引入静态随机存取存储器(SRAM)元件以用于配置的可编程逻辑器件变得可用。也可被重新配置的这些器件将其配置存储在诸如EPROM的非易失存储器中,当器件被加电时配置被从非易失存储器装载到SRAM元件中。这些器件通常为用户提供为查找表类型逻辑运算而配置器件的能力。在某个时候,这种器件开始被提供以随机存取存储器的嵌入块,其可由用户配置以作为随机存取存储器、只读存储器或逻辑(诸如P-TERM逻辑)。近来,这种器件已被提供以专门的功能块,诸如用于数字信号处理的乘法器和乘法器/累加器块。
在所有上述可编程逻辑器件中,器件中特定逻辑元件的逻辑功能以及逻辑元件之间信号传送的互连都是可编程的。此类器件在下文中将被称作"常规可编程逻辑器件"或"用户可编程逻辑器件"或"现场可编程逻辑器件",其中后者不应与术语"现场可编程门阵列"混淆,现场可编程门阵列被认为是由前面三个术语所描述的器件类型的子集。
近来,掩模可编程逻辑器件已被提供。利用掩模可编程逻辑器件,不是向所有用户出售相同器件,而是由制造商制造具有其功能不可由用户编程的逻辑元件的标准化布局,并且缺乏任何连通或互连资源的部分器件。
为给掩模可编程逻辑器件编程,用户为掩模可编程逻辑器件的制造商所需器件的技术规范,其可以是用来给可比的常规可编程逻辑器件编程的配置文件。制造商利用该信息给上面所描述的部分器件增加敷金属层。那些附加层通过在那些元件内产生某些连接来给逻辑元件编程,并且也在逻辑元件之间增加互连通路。掩模可编程逻辑器件也可以具备嵌入随机存取存储器块,如上结合常规可编程逻辑器件所描述的。在此类掩模可编程逻辑器件中,假若嵌入存储器被配置为只读存储器或P-TERM逻辑,则该配置也可利用附加的敷金属层来实现。
虽然常规可编程逻辑器件允许用户容易地设计器件以执行所需功能,然而常规可编程逻辑器件总是包括不可用于特定设计的资源。此外,为容纳通用连通和互连资源,以及允许信号从任何逻辑元件到达任何所需连通和互连资源的开关资源,随着更多的功能被置入其中,常规可编程逻辑器件变得规模越来越大,从而增大此类器件的尺寸和功耗。信号在从一个连通和互连资源行进到另一个连通和互连资源时经过各种开关元件路由也减慢了信号。
掩模可编程逻辑器件的出现允许用户在常规可编程逻辑器件中验证设计,但是将生产版本实施到掩模可编程逻辑器件,对于相同的功能,掩模可编程逻辑器件可以显著地更小些并且使用明显更少的功率,因为器件上只存在特定设计实际上需要的那些互连和连通资源。此外,那些资源是简单的敷金属,因此没有消耗空间或功率,或减慢信号的通用开关元件。
然而,迄今为止,通过向制造商提供实现可比常规可编程逻辑器件的用户逻辑设计的用户编程文件,来实现掩模可编程逻辑器件的编程。制造商于是将尽其所能将设计转化成为尽可能最有效的掩模编程逻辑器件。然而,制造商不能在所有情况下都实现用户所完成的设计。
例如,用户可能希望器件以某一工作频率运行。或者,用户设计可能包括某些数目的某些类型的部件,这些部件在不同的器件中以不同的数目可用,使得用户会设计不同的编程来应对这些不同。制造商不一定从配置文件中推导出这种要求。
此外,一个十分有经验的用户可能想要专门产生针对掩模可编程逻辑器件的设计。迄今为止还没有可用的必要工具来允许用户进行此工作。
发明内容
根据本发明,提供了一种用适当的基于计算机或微处理器的编程设备实现的方法,其允许用户结合在掩模可编程逻辑器件中用户的逻辑设计的实现来指定某些偏好。根据本发明的另一个方面,根据本发明的编程工具可允许设计从一个可编程逻辑器件到另一个的移植,而不需要全部重新编译设计。根据本发明的另一方面,考虑由可比的用户可编程逻辑器件和掩模可编程逻辑器件之间的不同引起的资源限制,以最小化将用户可编程逻辑器件用户设计转化为掩模可编程逻辑器件时的失败,反之亦然。用户可针对用户可编程逻辑器件给设计编程,在用户可编程逻辑器件中调试或测试,然后将其付诸于掩模可编程逻辑器件。可选地,用户可直接针对掩模可编程逻辑器件给设计编程,但将设计移植到用户可编程逻辑器件以进行原型验证/测试。
先前所知的设计过程(其中设计在被掩模可编程逻辑器件厂商移植到掩模可编程逻辑器件之前由用户在用户可编程逻辑器件中验证)不一定在每个情况中产生最好结果的一个原因是掩模可编程逻辑器件具有与用户可编程逻辑器件不同的资源,甚至不同于最接近对应的用户可编程逻辑器件。
例如,在可从California,San Jose的Altera Corporation得到的HardCopyTM APEXTM系列掩模可编程逻辑器件(其基于Altera的APEXTM系列用户可编程逻辑器件)中,该掩模可编程逻辑器件基于与用户可编程逻辑器件的相同的平面布置。特别地,在HardCopyTMAPEXTM系列器件的任何成员中的逻辑区域的布局与常规APEXTM系列用户可编程逻辑器件的相应成员中的相同。
在常规APEXTM用户可编程逻辑器件中,尽管可编程,然而互连资源的数目及位置是固定的。因此,逻辑元件的每个组合具有固定数量的其能连接到的可编程互连线。然而,相应的HardCopyTM APEXTM掩模可编程逻辑器件没有这样的限制;虽然存在物理上的限制,但是基本上任何连接都可以利用适当的敷金属来获得。因此,如果用户针对APEXTM系列中常规用户可编程逻辑器件来设计逻辑,则将针对该常规器件的有限互连资源来优化该用户设计。如果基本上无限制的互连的可用性将允许更有效的设计,则当移植到HardCopyTM APEXTM掩模可编程逻辑器件时从APEXTM用户可编程逻辑器件进行的一成不变的互连拷贝是低效的。
由于同样的原因,如果用户直接针对掩模可编程逻辑器件进行设计,但是希望在用户可编程逻辑器件中测试设计或对设计进行原型验证,则从掩模可编程设计到用户可编程设计的转换可能不起作用,因为掩模可编程设计可能依赖于通过掩模进行无限连接的能力,而且在相应或兼容用户可编程逻辑器件中可获得的有限数量互连可能不足以支持该设计。
这些问题在最新的器件中变得更加复杂,诸如可从Altera公司得到的STRATIXTM系列用户可编程逻辑器件,以及相应的HardCopyTMSTRATIXTM系列掩模可编程逻辑器件。在那些系列的器件中,不存在一个系列的成员和其他系列的相应成员之间的一一对应。虽然相应系列成员的能力是可比的,然而逻辑元件或模块的数量或更可能的布局会发生变化,并且此外,诸如用户存储器的辅助元件的数目可能不同。因此,针对一种器件设计的逻辑设计有可能不能移植到其他类型器件。即使设计可以被移植,也不能保持相同的元件相对布局,即使在一些用户设计中相对布局可能是重要的。
本发明包括一种使用户直接针对掩模可编程逻辑器件准备逻辑设计而不用首先针对用户可编程逻辑器件准备逻辑设计的方法。当这样做时,本发明也包括至少当用户打算原型验证或测试用户可编程逻辑器件中的逻辑设计时考虑相应或兼容用户可编程逻辑器件的任何约束(例如,有限的互连资源,或不同的平面布置,如以上所讨论的),使得能够进行该设计到用户可编程逻辑器件的期望移植。
本发明也包括一种通过首先针对兼容用户可编程逻辑器件设计逻辑设计来给掩模可编程逻辑器件编程的方法。在该方法中,该设计被移植到掩模可编程逻辑器件。作为该方法的一部分,本发明也包括当设计用户可编程逻辑设计时考虑相应或兼容掩模可编程逻辑器件的任何约束(例如,较少的辅助资源,或不同的平面布置,如以上所讨论的),使得可能进行到掩模可编程逻辑器件的期望移植。
作为后一方法的扩展,当在用户可编程逻辑器件中设计该逻辑设计并将其移植到掩模可编程逻辑器件之后,用户可能希望将该设计移植回到用户可编程逻辑器件以用于原型验证/测试。根据这一扩展,本发明的方法包括至少当用户打算将逻辑设计再移植到用户可编程逻辑器件以用于原型验证/测试时,当在考虑最终目标掩模可编程逻辑器件的约束的同时设计出原始用户可编程逻辑设计的情况下,当将该设计移植到掩模可编程逻辑器件时进一步考虑兼容用户可编程逻辑器件的约束,使得能进行该设计到用户可编程逻辑器件的所期望再移植。
本发明进一步包括提供一种变换以作为测试到掩模可编程逻辑器件的原始转换的方式,该变换将已从用户可编程逻辑器件的配置文件转换而来的针对掩模可编程逻辑器件的设计转回到用户可编程逻辑器件的配置文件。只要该向后转换变换不仅仅是原始变换的镜像(并且最好其不是),如果由向后变换产生的配置文件如预期的那样操作,则该原始转换可以被认为是有效的。由向后变换所产生的配置文件可以通过简单地将其与原始配置文件进行比较,利用已知技术在软件中模拟其操作,或通过给用户可编程逻辑器件实际编程并测试该器件的操作来测试。如果仅仅比较文件,则完全相同可证明有效,且不必做进一步测试。然而,因为超过一个的设计可以是功能相同的,不完全相同并不证明无效,因此失败的比较可优选地跟随有模拟,或跟随有实际器件中的测试。
为利于上述方法,本发明包括产生并保持不同可编程逻辑器件之间的映射的方法。如上所述,早期掩模可编程逻辑器件的设计基本上保持与兼容用户可编程逻辑器件的一一对应。这使得容易保持例如各种逻辑元件间的空间关系(举例来说,当用户调用可从Altera公司得到的LogicLockTM功能以在合成设计时保持某些逻辑功能物理上彼此靠近时)。然而,如上所述,更新的掩模可编程逻辑器件设计偏离了与兼容用户可编程逻辑器件的一一对应。
因此,用户可编程逻辑器件可包括逻辑元件或模块的块的5x4阵列,而其相应的掩模可编程逻辑器件可包括逻辑元件或模块的块的7x3阵列。其将不能在掩模可编程逻辑器件的最左列中包含针对用户可编程逻辑器件的设计的最左列中的所有五个块,因为该列仅包含三个块。即使当从一个用户可编程逻辑器件转换到另一个,或从一个掩模可编程逻辑器件转换到另一个时,也是如此。
根据本发明,通过将一个可编程逻辑器件映射到另一个,使得对于任何两个器件之间,均知道如何将一个器件的逻辑块中的功能映射到其他器件中的逻辑块的方法,来解决这个问题。因此在上面的7x3对5x4的例子中,将得知五个块的哪些块不会被映射到第一列,并且此外还得知它们将被映射到哪里。映射可以手工或利用检查各个可选映射并选择最优映射的自动化处理来完成,其中考虑到保持逻辑块和输入/输出块之间最相邻关系和/或关系的可能需要。对于任何两个器件之间,映射只需要进行一次,然后该映射可被用来将任何设计从一个器件移植到其他器件(服从上面所讨论的其他约束,如果适用的话)。因为对于每个器件对,每个映射仅需被执行一次,手工进行映射是可行的。
无论任何一个器件是掩模可编程的还是用户可编程的,此映射发明均适用。即,可以在特定用户可编程逻辑器件和特定掩模可编程逻辑器件之间,在特定用户可编程逻辑器件和不同的特定用户可编程逻辑器件之间,或在特定掩模可编程逻辑器件和不同的特定掩模可编程逻辑器件之间准备映射。
因此,根据本发明,提供了一种给掩模可编程逻辑器件编程以产生执行一个或多个所需功能的掩模编程逻辑器件的方法。该方法包括针对与掩模可编程逻辑器件兼容的用户可编程逻辑器件,设计用于执行一个或多个所需功能的编程,从而产生一个或多个用户可编程逻辑器件配置文件。利用第一变换函数对一个或多个用户可编程逻辑器件配置文件进行操作,以产生掩模可编程逻辑器件的编程,包括一个或多个掩模可编程逻辑器件配置文件。
此外,提供了一种给掩模可编程逻辑器件编程以产生执行一个或多个所需功能的掩模编程逻辑器件的方法。该方法包括针对所述掩模可编程逻辑器件设计用于执行所述一个或多个所需功能的编程,从而产生一个或多个掩模可编程逻辑器件配置文件。利用变换函数对一个或多个掩模可编程逻辑器件配置文件进行操作,以产生与所述掩模可编程逻辑器件兼容的用户可编程逻辑器件的编程,包括一个或多个用户可编程逻辑器件配置文件。
进一步地,提供一种产生与多于一个的可编程逻辑器件兼容的编程的方法。该方法包括针对第一可编程逻辑器件设计编程,其中设计包括使该编程至少部分地基于至少第二可编程逻辑器件。
还提供了按照上述方法编程的可编程逻辑器件。
附图说明
通过下面结合附图对具体实施方式进行的讨论将明白本发明的上述及其他优点,其中类似参考标记指示类似部分,并且其中:
图1是示出掩模可编程逻辑器件的先前所知的编程方法的流程图;
图2是示出掩模可编程逻辑器件和用户可编程逻辑器件之间的可能差别的比较图;
图3是示出根据本发明的掩模可编程逻辑器件的编程方法的第一最优实施例的流程图;
图4是示出根据本发明的掩模可编程逻辑器件的编程方法的第二最优实施例的流程图;
图5是示出根据本发明的掩模可编程逻辑器件的编程方法的第三最优实施例的流程图;
图6是类似于图3的加上验证步骤的流程图;
图7是示出兼容可编程装置之间布局的不同的示意图,其中示出了根据本发明的映射;以及
图8是采用根据本发明编程的掩模可编程逻辑器件的示例性系统的简化方框图。
具体实施方式
本发明改变了掩模可编程逻辑器件("MPLD")的编程过程的流程。本发明提供了增强的用户工具,其允许在用户控制下进行更多处理,而且允许用户在处理期间输入附加信息,而不是简单地采用常规用户可编程PLD(UPLD")的用户配置文件,以及让MPLD供应商做出其自己的关于用户会希望如何在MPLD中实现设计的判断。
为了进一步地增强处理,如下面所讨论的,根据本发明的增强工具优选地结合MPLD特性的增强模型。
现在将参考附图1-7描述本发明。
图1示出了给MPLD编程的先前巳知的方法10。虚线方框11中示出了在用户控制下进行的处理的那些部分,而虚线方框12中示出了在MPLD供应商的控制下进行的那些步骤。方法10预先假定将被编程的MPLD为对应于常规UPLD的MPLD,最好来自相同的供应商。
步骤110中,用户使用由供应商为输入常规UPLD的设计的目的而提供的众所周知的设计工具,输入常规UPLD的设计。在步骤111中,那些工具将用户设计编译成配置文件112。这可优选地为位流文件,其可优选地包含将被分配给用户针对其开发设计的UPLD的每个配置位的值(1以及0)。可产生包含用户约束的列表(例如,器件的所需工作频率)的第二文件113。优选地,文件113中的数据被合并进文件112,其被提供给供应商处理12。
在步骤120中,配置文件112优选地被反汇编。利用在其上开发设计的UPLD型号的知识,以及在该UPLD上每个配置位的作用,反汇编器120可以确定设计将执行的逻辑功能。该信息允许网表产生步骤121产生将被提供在编程的MPLD上的功能网表。该网表优选地在布局和布线步骤122中被处理,优选地利用常规布局和布线工具,该工具为大家所熟知,诸如可从California,Mountain View的Synopsys,Inc.得到的APOLLO-IITM布局和布线工具(先前可以从California,San Jose的Avanti Corp.获得)。步骤123中利用布局和布线步骤122的结果来产生必要的敷金属以给MPLD编程。定时报告1220可在布局和布线步骤122之后产生,用户可以利用其验证所需定时关系已被实现。
在决定将UPLD设计转换到MPLD时,用户常常期望获得转换的性能回报。例如,执行某些功能的已编程MPLD可以比对应的已编程UPLD运行理快和/或温度更低(以较低的功率)。然而,例如通过在特定逻辑块中功能的位置以及特定信号的特定通路的选择,可以使性能改进偏向一个特定改进而不是另一个(举例来说,速度超过功耗,反之亦然)。当供应商在方法10中获得配置文件112时,供应商得到极少的关于对用户说来哪些考虑(如果有的话)是重要的信息。虽然供应商可以根据设计对用户的需求做出经验的猜测,然而那些猜测可能是错误的,导致MPLD设计虽然能够工作但从用户观点来说可能是次优的。
图2比较了两个器件。器件130是具有布置成5x4结构的二十个块131的假设UPLD(举例来说,每个有十个逻辑元件或模块),而器件140是具有布置成7x3结构的逻辑元件或模块的二十一个块141的对应兼容MPLD。虽然它们可能具有与兼容器件不同的小片尺寸,但是每个器件130,140必须适合相同的外界环境。因此,优选地,每个具有相同的封装和管脚引出线,虽然输入/输出驱动器132的布局可以不同。在这一例子中,器件130,140进一步地不同在于UPLD器件130具有两个用户存储器133,而MPLD器件140仅具有一个用户存储器143。其它的不同也可以存在于实际的器件对之间。而所有UPLD不同于所有MPLD的地方在于,UPLD上的可用通路仅为由制造商提供的可编程互连结构,而MPLD中对通路的唯一限制是那些由于可能无法布置某用户所需的有些复杂的布线规划的敷金属而引起的限制(举例来说,因为太多的信号路径必须互相交叉,以致不能由可用的敷金属层来接纳)。
当用户设计UPLD 130的设计时,用户可能考虑到产生器件外部所利用的信号的某些功能需要离输入/输出区域132更近,而且利用彼此的结果的某些逻辑功能也应彼此靠近。由于逻辑块131,141的不同的布局,当将用户设计移植到MPLD 140时这些目的可能都不能获得。
根据本发明的方法20(图3)通过给用户更多对处理的控制,试图给用户需求更多的权重。因此在方法20的用户部分21中,当步骤111中编译UPLD设计之后,结果不但被输出到配置文件112,而且输出到MPLD模型210,其中相应MPLD的特征与响应--包括MPLD的实际布局或"平面布置"--被表示出,从而将UPLD功能转化到MPLD功能,这优选地在步骤211中被编译。优选地,在UPLD编译步骤111和MPLD编译步骤211(以及MPLD编译步骤410--见图5)中优选地使用最好利用相同算法和/或编码库(code base)的相同编译工具。应该注意到,通过对相同用户设计使用相同编译器,不经复杂验证而得到在UPLD中运行的设计将在MPLD中运行的高置信度。MPLD模型210可基于结合图7如下所述的器件到器件的映射。
步骤211的结果是已编程MPLD的定时约束的文件213,以及已编程MPLD的布局约束的文件214。用户可提供输入212到步骤211以引导步骤211中的编辑。例如,如果用户的目的之一是使某一时钟在MPLD模型中比在UPLD模型中运行快50%,则其可以由用户在步骤211中输入,然后其将"知道"速度比例如降低功耗更优先。
虽然如同上述可以是单个文件的文件112、113如方法10中那样被提供给反汇编器120,然而也可以是单个文件并且包含MPLD的定时以及布局数据的文件213和214被提供给布局和布线步骤122。特别地,这些数据包括可以被MPLD满足却可能不被UPLD满足的定时约束(因此没有反映在文件112/113中)以及基于MPLD的布局结构的"知识"的布局约束。由于有这些数据,布局和布线工具所做工作较少,因为布局功能已经被执行了。因此,优选地,布局和布线工具基本上仅执行布线,然后如同上述在步骤123中完成MPLD。
在方法20中,与方法10中一样,用户根据相应的UPLD定义所需的MPLD。然而,在设计UPLD编程时,最终目标MPLD的约束必须被考虑到。因此,在UPLD设计步骤110中部分用户输入为有关设计是否最终针对MPLD的指示。如果是,则考虑MPLD的约束,即,设计工具不允许运用会实现所期望的逻辑设计、但在兼容MPLD中不可用(这是因为例如UPLD和MPLD之间如上所述的类型差异,即使当它们彼此兼容时)的UPLD功能。
在本发明的另一个最优实施例中,在方法30(图4)的用户部分31中,用户在用户设计310中根据MPLD本身定义所需的MPLD。这优化了MPLD的设计,因为设计是利用根据各种资源的数目及位置直接想到的MPLD的结构来产生的。
设计310以及诸如所期望工作频率的MPLD约束的用户输入212被输入给MPLD编译器步骤211,其输出定时和布局约束213,214。步骤211的输出也在步骤311中被输入给一个模型,其中表示了相应UPLD的特征与响应,从而将MPLD功能转化成UPLD功能,其优选地在步骤111中被编译。步骤111产生UPLD配置和约束数据112,113。数据112,113,213,214被用于方法30的供应商部分12,正如它们被用于方法20的供应商部分12那样。
此外,在进行提交以使供应商步骤123中制造已编程的MPLD之前,当用户打算给UPLD编程以模拟所期望的MPLD时,可得到数据112,113。然而,如果用户意欲在UPLD中执行这样的验证,那么用户优选地应指明UPLD验证将被执行,以作为输入212的一部分。在这种情况下,考虑UPLD的约束,即,设计工具不允许运用会实现所期望的逻辑设计,但在兼容UPLD中不可用(例如因为UPLD和MPLD之间的如上所述的类型差异,即使当它们彼此兼容时)的MPLD功能。
在图5所示的方法40的另外一个最优实施例中,在用户部分41中,用户在用户设计310中根据MPLD本身定义所期望的MPLD。设计310以及诸如所期望工作频率的MPLD约束的用户输入212被输入给MPLD编译器步骤410,其同样输出定时和布局约束213,214,以及结构文件411和用户约束文件412。这种情况下,MPLD设计不必简单地转换到UPLD设计以提供由反汇编器120使用的配置和约束文件112,113。由编译器步骤411所提供的结构和约束文件411,412被方法40的供应商部分42的网表产生器121直接使用,其不需要反汇编器120。然而,编译器步骤410的输出在步骤311中可以可选择地输入给一个模型,其中表示出相应UPLD的特征与响应,从而将MPLD功能转化成UPLD功能,然后其可在步骤111中被编译。这种情况下,步骤111产生UPLD结构数据112,如果需要的话,当进行提交以使供应商在步骤123制造编程的MPLD之前,其能被用来给UPLD编程以模拟所期望的MPLD。同样,如果用户意欲在UPLD中执行这样的验证,那么用户优选地应指出将进行UPLD验证,以作为输入212的一部分。在这种情况下,如上结合方法30(图4)所讨论的,考虑UPLD的约束。
结合任何方法20,30及40应当注意到,如果用户带有逻辑可被转换到其他类型器件(MPLD或UPLD)的意图来设计针对一种器件(UPLD或MPLD)的逻辑,则该软件不但将不允许使用不能从一个器件转换到另一个的功能,而且优选地其将检查源和目标器件中每种资源的所需数目,并限制到其中那些数目相交的那些转换,即到其中不存在源器件中使用的数目超过可在目标器件中得到的数目的资源种类的那些转换。因此,对于使用比源器件中的所有资源都少的资源的设计,该设计可能是可转换到特定目标器件的,但是使用一个或多个类型资源中更多资源的相同源器件中的不同设计可能不可转换到该相同特定类型的目标器件。
本发明的这一方面(其可被应用于例如编译步骤111的合成阶段)优选地当输入设计时告知用户所预测的失败,而不是必须等待可能若干小时后发生的所尝试的转换失败。如果预测出这样的失败,该软件可转到,或者告知用户转到下一个更大的可用目标器件。可选地,尤其是在已经正考虑最大可用目标器件的情况下,对于某些功能,其在源器件的一种资源中实现,该资源在目标器件中存在过少,如果可能的话,该软件将在不同种资源中实现某些功能,或建议用户实现那些功能。
类似地,在移植在特定类型资源中在源器件上实现的功能时,当目标器件缺乏该类型资源时,优选地,该软件不会试图在目标器件上相同类型资源中实现该功能;代之以在可得到的其他类型资源中模拟该功能。注意到,不但当在UPLD和MPLD之间移植时,而且在具有不同资源的相同类型器件当中,这一点是正确的。
图6示出了类似于图3的方法20的一种方法60,其中用户设计UPLD的逻辑,并且该逻辑设计然后在步骤120中通过反汇编配置文件112被转换以用于MPLD中,从而在步骤121产生网表,其然后于步骤122,123中在MPLD上被布局和布线。根据本发明的这个方面,作为验证,在步骤1210中,结果网表被再处理以产生新的UPLD配置文件1120。配置文件1120则在步骤1121中可以被测试以检查利用该文件所编程的UPLD是否将按照设计运行。
测试步骤1121可采用若干形式。在一个极端的情况下,配置文件1120可以被直接用来给UPLD编程,其功能因此能与设法满足的设计规范相比。在另一个极端情况下,配置文件1120可以简单地与原始配置文件112相比较。如果文件相同,则调查在此结束。然而,如果文件112和1120不相同,它们仍可产生功能相同的器件。因此,进一步的测试是必要的,其可以作为模拟或通过实际地给一个器件编程来执行。
再处理步骤1121不应是步骤121的简单镜像。否则,文件1120将总是相同于文件112,而结果MPLD中的错误不会被检测出。更确切些,步骤1121优选地被独立地编写以在步骤121将网表转换回配置文件1120。
如以上所讨论的,模型210,311被提供以模拟UPLD和MPLD之间的转换,反之亦然(并且相似模型可被用来在不同的UPLD或在不同的MPLD间转换)。根据本发明的一个最优实施例,模型210,311(以及任何类似模型)可基于器件对的映射。在预见到需要映射逻辑设计之前在选定器件对之间针对选定器件对建立这些映射。因此,这样的映射尤其可针对每个MPLD以及其相应或兼容UPLD产生。在一些这样的情况下,映射将为一一对应的,诸如在Altera Corporation的APEXTM以及HardCopyTM APEXTM产品的情况下。在其他类型器件中,诸如在Altera Corporation的STRATIXTM以及HardCopyTMSTRATIXTM产品中,其中资源的数目以及布局在相应或兼容器件之间有所不同,映射可能会更复杂,但是优选地将被设计成能保持最相邻关系,包括I/O块以及逻辑块之间的关系,使得从一个器件到另一个器件移植的设计依照要求操作。这优选地如此进行,即使器件的纵横比不同。例如,如果具有100乘100逻辑块的UPLD被映射到具有500乘20逻辑块的MPLD,期望保持最相邻关系,以及逻辑及I/O之间的关系以保持性能。
例如考虑逻辑块最右列中的UPLD逻辑块,其被放入该列中以使其靠近I/O块以及特定的其他逻辑块。虽然目标MPLD的最右列中仅存在五分之一的逻辑块,然而根据本发明,源器件的最右列中的逻辑块优选地被约束为至少保留在目标器件的五个最右列之一内,如果其不能在目标器件的最右列内的话。被有意地放置为靠近源器件中的第一个逻辑块的其他逻辑块也将优选地被保持靠近目标器件中的第一个逻辑块。实现这个的一个最优方式是在两个布局中的单个元素(例如,逻辑块)之间保持一一对应。
图7中图解了一个较小的例子,如以上所讨论的,其示出了5x4UPLD 70及7x3MPLD 71之间的不同及映射,其中所映射的输入/输出块、所映射的逻辑块、及所映射的存储器被类似地标记。能够看出,器件70中例如位于第一列而因此接近输入/输出块132的一些逻辑块在器件71中位于例如第二列,因此更远离输入/输出块132。至少在器件70为UPLD而器件71为MPLD的情况下,这些布局差异不应显著地影响定时,因为MPLD中信号在简单的敷金属上移动,因此比信号在UPLD互连上移动得更快。
可使映射过程自动化。然而,映射可手工完成,并且因为每个映射是逐个器件对地进行,而且被用于在该对中的器件之间映射所有转换,其只须被产生一次,使得手工映射可以接受。一旦完成映射,该对中器件之间的任何转换可通过遵循映射而简单地实现。本发明的这一方面也可用于将一个UPLD到MPLD转换映射成不同的UPLD到MPLD转换(即,如果"目标"MPLD改变),乃至从一个UPLD映射到另一个UPLD,其中替代目标器件具有与原目标器件不同的尺寸、布局及资源的数目,只要先前已经准备了映射。本发明的这一方面在原始设计是针对UPLD的情况下尤其有用,因为其优选地依赖于作为新目标设计的出发点的所编译的UPLD设计。这避免了在新设计上运行布局和布线步骤的可能费时若干小时的需求。通过使用所编译的UPLD设计,可选映射可以在相对短的时间里被显示给用户。
根据本发明的另一个方面,沿着相同的路线,可以注意到在给定系列的PLD和相应的MPLD中,MPLD可具有不同数目的诸如各种逻辑块和存储元件的某些类型的资源。根据本发明的这一方面(没有示出),优选地,用户软件检测源和目标器件中每种资源的所需数目,并将可允许转换限制到其中那些数目相交的那些转换,即其中不存在源器件中使用的数目超过目标器件中可得到的数目的资源种类的那些转换。因此,对于使用比源器件中的所有资源都少的资源的设计,该设计可能是可转换到特定目标器件的,但是使用一个或多个类型资源中更多资源的相同源器件中的不同设计可能不可转换到该相同特定类型的目标器件。
例如可被应用于编译步骤111的合成阶段的本发明的这一方面优选地当输入设计时告知用户所预测的失败,而不是必须等待所尝试的转换失败,其可能若干小时后发生。如果预测出这样的失败,该软件将或者转到,或者告知用户转到下一个更大的可用目标器件。可选地,特别是在已经正考虑最大的可用目标器件的情况下,对于某些功能,其在源器件中的一个类型的资源中被实现,该资源在目标器件中存在过少,如果可能的话,该软件将在不同类型的资源中实现某些功能,或建议用户实现那些功能。类似地,在移植特定类型资源中的源器件上所实现的功能时,当目标器件缺乏该种类的资源时,该软件不会尝试在该目标器件上相同类型的资源中实现该功能;代之以在可得到的其他类型资源中模拟该功能。注意到,不但当在PLD和MPLD之间移植时,而且在具有不同资源的相同类型器件间,这一点是正确的。
根据本发明编程的器件可用于许多种电子设备中。举例来说,PLD 908(MPLD或UPLD)的一个可能的应用是在图8中所示的数据处理系统900中。数据处理系统900可包括以下部件的一个或多个:处理器901;存储器902;I/O电路903;及外围设备904。这些部件通过系统总线905连接在一起,并且被分布在包含于最终用户系统907中的电路板906上。
系统900可被用于多种应用中,诸如计算机网络、数据网络、仪器仪表、视频处理、数字信号处理、或任何其它希望利用可编程或可再编程的逻辑的优点的应用中。PLD908可用于执行各种不同的逻辑功能。例如,PLD908可被配置为与处理器901协同工作的处理器或控制器。PLD 908也可用作用来仲裁对系统900中共享资源的访问的仲裁器。在另一例子中,PLD 908可被配置为系统900中处理器901和其他部件之一之间的接口。应该注意到系统900仅是示例性的。
如上所述,不同的技术可用于实现PLD和MPLD,并且其运用于本发明。
可以理解,上述仅是本发明的原理的说明,本领域技术人员在没有背离本发明的范围和精神的情况下可以做不同的修改,并且本发明仅受随后的权利要求书限定。
Claims (33)
1.一种给掩模可编程逻辑器件编程以产生执行一个或多个所需功能的掩模编程逻辑器件的方法,所述方法包括:
针对与所述掩模可编程逻辑器件兼容的用户可编程逻辑器件,设计用于执行所述一个或多个所需功能的编程,从而产生一个或多个用户可编程逻辑器件配置文件;
利用在所述用户可编程逻辑器件和所述掩模可编程逻辑器件之间映射的第一变换函数对所述一个或多个用户可编程逻辑器件配置文件进行操作,以产生所述掩模可编程逻辑器件的编程,包括一个或多个掩模可编程逻辑器件配置文件。
2.根据权利要求1的方法,进一步地包括:
处理所述一个或多个用户可编程逻辑器件配置文件以及所述一个或多个掩模可编程逻辑器件配置文件,以产生所述掩模编程逻辑器件。
3.根据权利要求2的方法,其中所述处理包括:
反汇编所述至少一个用户可编程逻辑器件配置文件中的至少一个以产生网表。
4.根据权利要求3的方法,其中所述处理进一步地包括:
输入所述网表到布局和布线工具。
5.根据权利要求4的方法,其中所述处理进一步地包括:
输入所述至少一个掩模可编程逻辑器件配置文件到所述布局和布线工具。
6.根据权利要求1的方法,其中所述至少一个用户可编程逻辑器件配置文件至少包括位流配置文件。
7.根据权利要求6的方法,其中所述至少一个用户可编程逻辑器件配置文件进一步地包括表示用户约束的文件。
8.根据权利要求1的方法,其中所述至少一个掩模可编程逻辑器件配置文件包括以下至少之一:
(a)表示掩模可编程逻辑器件定时约束的文件;以及
(b)表示掩模可编程逻辑器件布局约束的文件。
9.根据权利要求1的方法,进一步地包括在产生所述掩模编程逻辑器件之前测试所述兼容用户可编程逻辑器件的所述编程。
10.根据权利要求9的方法,其中所述设计包括至少部分地基于所述掩模可编程逻辑器件的特性,设计所述兼容用户可编程逻辑器件的所述编程。
11.根据权利要求1的方法,其中所述设计包括至少部分地基于所述掩模可编程逻辑器件的特性,设计所述兼容用户可编程逻辑器件的所述编程。
12.根据权利要求1的方法,进一步地包括:
利用在所述掩模可编程逻辑器件和所述用户可编程逻辑器件之间映射的第二变换函数将所述掩模可编程逻辑器件的所述编程转换为所导出的所述用户可编程逻辑器件的编程;以及
测试所述用户可编程逻辑器件的所述编程。
13.根据权利要求12的方法,其中所述测试包括将所述导出的编程与针对所述用户可编程逻辑器件而设计的所述编程相比较。
14.根据权利要求12的方法,其中所述测试包括用所述导出的编程给用户可编程逻辑器件编程以及观察所述编程的用户可编程逻辑器件的操作。
15.一种给掩模可编程逻辑器件编程以产生执行一个或多个所需功能的掩模编程逻辑器件的方法,所述方法包括:
针对所述掩模可编程逻辑器件设计用于执行所述一个或多个所需功能的编程,从而产生一个或多个掩模可编程逻辑器件配置文件;
利用在所述掩模可编程逻辑器件和所述用户可编程逻辑器件之间映射的变换函数对所述一个或多个掩模可编程逻辑器件配置文件进行操作,以产生与所述掩模可编程逻辑器件兼容的用户可编程逻辑器件的编程,包括一个或多个用户可编程逻辑器件配置文件。
16.根据权利要求15的方法,进一步地包括:
处理所述一个或多个用户可编程逻辑器件配置文件以及所述一个或多个掩模可编程逻辑器件配置文件,以产生所述掩模编程逻辑器件。
17.根据权利要求16的方法,其中所述处理包括:
反汇编所述至少一个用户可编程逻辑器件配置文件的至少之一以产生网表。
18.根据权利要求17的方法,其中所述处理进一步地包括:
输入所述网表到布局和布线工具。
19.根据权利要求18的方法,其中所述处理进一步地包括:
输入所述至少一个掩模可编程逻辑器件配置文件到所述布局和布线工具。
20.根据权利要求15的方法,其中所述至少一个用户可编程逻辑器件配置文件至少包括位流配置文件。
21.根据权利要求20的方法,其中所述至少一个用户可编程逻辑器件配置文件进一步地包括表示用户约束的文件。
22.根据权利要求15的方法,其中所述至少一个掩模可编程逻辑器件配置文件包括以下至少之一:
(a)表示掩模可编程逻辑器件定时约束的文件;以及
(b)表示掩模可编程逻辑器件布局约束的文件。
23.根据权利要求15的方法,进一步地包括在产生所述掩模编程逻辑器件之前测试所述兼容用户可编程逻辑器件的所述编程。
24.根据权利要求23的方法,其中所述操作包括至少部分地基于所述掩模可编程逻辑器件的特性,设计所述兼容用户可编程逻辑器件的所述编程。
25.根据权利要求15的方法,其中所述操作包括至少部分地基于所述掩模可编程逻辑器件的特性,设计所述兼容用户可编程逻辑器件的所述编程。
26.根据权利要求15的方法,其中所述设计包括至少部分地基于所述兼容用户可编程逻辑器件的特性,设计所述掩模可编程逻辑器件的所述编程。
27.一种给第一可编程逻辑器件编程的方法,所述方法包括使所述编程至少部分地基子至少第二可编程逻辑器件的编程到所述第一可编程逻辑器件的映射。
28.根据权利要求27的方法,其中:
所述第一可编程逻辑器件是掩模可编程逻辑器件;以及
所述第二可编程逻辑器件是用户可编程逻辑器件。
29.根据权利要求27的方法,其中:
所述第一可编程逻辑器件是用户可编程逻辑器件;以及
所述第二可编程逻辑器件是掩模可编程逻辑器件。
30.根据权利要求27的方法,其中所述第一可编程逻辑器件及所述第二可编程逻辑器件是用户可编程的。
31.根据权利要求27的方法,其中所述第一可编程逻辑器件及所述第二可编程逻辑器件是掩模可编程的。
32.根据权利要求27的方法,其中所述基于包括从多个可编程逻辑器件的每一个器件的结构到所述多个可编程逻辑器件的每个其它器件的映射的库中,选择所述第二可编程逻辑器件到所述第一可编程逻辑器件的结构映射。
33.根据权利要求32的方法,进一步地包括汇编并维护所述映射库。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US48091703P | 2003-06-23 | 2003-06-23 | |
US60/480,917 | 2003-06-23 | ||
US60/483,525 | 2003-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1833242A CN1833242A (zh) | 2006-09-13 |
CN100514340C true CN100514340C (zh) | 2009-07-15 |
Family
ID=36994679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800228597A Expired - Fee Related CN100514340C (zh) | 2003-06-23 | 2004-06-23 | 给掩模可编程逻辑器件编程的方法及如此编程的器件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100514340C (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100514340C (zh) * | 2003-06-23 | 2009-07-15 | 阿尔特拉公司 | 给掩模可编程逻辑器件编程的方法及如此编程的器件 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5550839A (en) * | 1993-03-12 | 1996-08-27 | Xilinx, Inc. | Mask-programmed integrated circuits having timing and logic compatibility to user-configured logic arrays |
CN1310883A (zh) * | 1999-04-28 | 2001-08-29 | 高等技术学院 | 掩模可配置的智能功率电路-应用和g s-nmos器件 |
CN1833242A (zh) * | 2003-06-23 | 2006-09-13 | 阿尔特拉公司 | 给掩模可编程逻辑器件编程的方法及如此编程的器件 |
-
2004
- 2004-06-23 CN CNB2004800228597A patent/CN100514340C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5550839A (en) * | 1993-03-12 | 1996-08-27 | Xilinx, Inc. | Mask-programmed integrated circuits having timing and logic compatibility to user-configured logic arrays |
CN1310883A (zh) * | 1999-04-28 | 2001-08-29 | 高等技术学院 | 掩模可配置的智能功率电路-应用和g s-nmos器件 |
CN1833242A (zh) * | 2003-06-23 | 2006-09-13 | 阿尔特拉公司 | 给掩模可编程逻辑器件编程的方法及如此编程的器件 |
Non-Patent Citations (2)
Title |
---|
A System for Behavior Extraction from FPGA Implementationsof Synchronous Designs. MEHENDALE M.CONFERENCE PROCEEDINGS ARTICLE. 1992 |
A System for Behavior Extraction from FPGA Implementationsof Synchronous Designs. MEHENDALE M.CONFERENCE PROCEEDINGS ARTICLE. 1992 * |
Also Published As
Publication number | Publication date |
---|---|
CN1833242A (zh) | 2006-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8001509B2 (en) | Method for programming a mask-programmable logic device and device so programmed | |
US6131182A (en) | Method and apparatus for synthesizing and optimizing control logic based on SRCMOS logic array macros | |
McFarland | Using bottom-up design techniques in the synthesis of digital hardware from abstract behavioral descriptions | |
CN102708221B (zh) | 用于对局部重配置模块进行布局和布线的方法和设备 | |
US6298319B1 (en) | Incremental compilation of electronic design for work group | |
US6415430B1 (en) | Method and apparatus for SAT solver architecture with very low synthesis and layout overhead | |
Cofer et al. | Rapid System Prototyping with FPGAs: Accelerating the Design Process | |
CN103812502B (zh) | 具有冗余电路的可编程集成电路 | |
US20050093571A1 (en) | Memory re-implementation for field programmable gate arrays | |
KR20030016210A (ko) | 동적으로 재구성 가능한 논리 회로의 물리적 설계 구현 방법 | |
US6530071B1 (en) | Method and apparatus for tolerating defects in a programmable logic device using runtime parameterizable cores | |
Keller | JRoute: A run-time routing API for FPGA hardware | |
US8448116B2 (en) | Analog/digital partitioning of circuit designs for simulation | |
US20180189427A1 (en) | Method and apparatus for automatic hierarchical design partitioning | |
Chang et al. | Postlayout logic restructuring using alternative wires | |
CN103258074A (zh) | 使用部分重构在可编程电路上实施外围器件的方法和装置 | |
JP4495865B2 (ja) | 業者間アプリケーションサービスプロバイダ | |
US7610573B1 (en) | Implementation of alternate solutions in technology mapping and placement | |
US6941540B2 (en) | Design method for gate array integrated circuit | |
CN100514340C (zh) | 给掩模可编程逻辑器件编程的方法及如此编程的器件 | |
Chan et al. | Distributed-memory parallel routing for field-programmable gate arrays | |
US20050132315A1 (en) | Extendable method for revising patterned microelectronic conductor layer layouts | |
Charaf et al. | Amah-flex: A modular and highly flexible tool for generating relocatable systems on fpgas | |
US7234125B1 (en) | Timing analysis for programmable logic | |
Hathaway et al. | Circuit placement, chip optimization, and wire routing for IBM IC technology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CI02 | Correction of invention patent application |
Correction item: Priority Correct: 2003.06.26 US 60/483,525 False: Lack of priority second Number: 37 Page: The title page Volume: 22 |
|
COR | Change of bibliographic data |
Free format text: CORRECT: PRIORITY; FROM: MISSING THE SECOND ARTICLE OF PRIORITY TO: 2003.6.26 US 60/483,525 |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090715 Termination date: 20170623 |