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

文档序号:6558791阅读:104来源:国知局
专利名称:产生等同于现场可编程门阵列的结构化专用集成电路的方法
技术领域
本发明涉及专用集成电路(ASIC),且更具体地涉及一种类型的专用集成电路,其有时被称为结构化专用集成电路。
背景技术
Schleicher等人在2005年4月1日提交的美国专利申请11/097633(案卷编号174/389)示出了多种方法,用于和用户的逻辑设计一起使用,从而产生数据,该数据能用于在被编程现场可编程门阵列(FPGA)和结构化ASIC中产生用户逻辑设计的功能等同的实现方案。(Schleicher等人的参考文献在此通过引用全部并入。)例如,对于FPGA,Schleicher等人的参考文献示出了操作用户的逻辑设计、从而产生用于编程FPGA以实现该逻辑设计的数据的一连串步骤。对于结构化ASIC,Schleicher等人的参考文献示出了操作用户的逻辑设计、从而产生该参考文献称为交接(handoff)设计文件的一连串步骤。这是些设计文件,用于严密地指定在结构化ASIC中如何实际实现用户的逻辑设计,以便帮助确保这个实现方案和同一用户逻辑设计的FPGA实现方案在功能上等同。但是应认识到,需要在这些交接设计文件上完成额外的工作,以便将它们转化成为控制结构化ASIC的产生所需的最终数据。这种额外工作在Schleicher等人的参考文献中被称为结构化ASIC设计过程的后端,这就是本发明的主题。和在Schleicher等人的参考文献中一样,本发明的重要目标是(1)保持所得结构化ASIC与实现同一用户逻辑设计的FPGA之间高度可靠的功能等同性;(2)高效利用结构化ASIC的资源;和(3)快速完成后端任务,以便于所完成结构化ASIC产品的即时可用性。

发明内容
根据本发明,产生功能上等同于FPGA(该FPGA被编程以实现用户的逻辑设计)的结构化ASIC的物理布局的方法包括由FPGA电路块的结构化ASIC等同方案的物理布局库,检索存在于网表(netlist)中的各种电路块的物理布局,该网表对应于用户的逻辑设计的结构化ASIC实现方案。检索到的电路块的物理布局被放置在结构化ASIC的模板上。物理布局块之间的互连根据网表而被布置在结构化ASIC模板上。
可执行本发明方法的至少某些步骤,从而与用户所提供的一个或多个定时约束条件一致。
所述方法可包括添加电路到网表,以便在制造之后测试结构化ASIC。
所述方法可包括下列的任何一个或多个步骤串扰关闭、天线关闭、定时优化、设计规则检查、布局与原理图比较检查(layoutvs schematic checking)以及静态定时分析。
通过附图和以下的详细描述,本发明的其他特征、其性质及各种优点将更加明显。


图1是根据本发明方法的说明性实施例的简化流程图。
图2a和2b一起构成了一个简化的流程图,其更详细示出了图1一部分的说明性实施例 图3是一个简化流程图,其更详细示出了图1另外一部分的说明性实施例。
图4是根据本发明的一个可能方面的说明性机器可读介质的简化框图。
具体实施例方式图1所示的一些单元重复或者概括表示上述Schleicher等人的参考文献中示出的单元。例如,流程单元50概括表示Schleicher等人的参考文献的图6、7a、7b其中任一图内导致产生交接设计文件860的步骤,而流程单元52和54概括表示Schleicher等人的参考文献中交接设计文件860的重要方面。(在本说明书中术语“客户”有时被用作用户的同义词。)因此这里的流程52和54反映了这样的事实Schleicher等人的参考文献中的交接设计文件优选包括(1)用户的逻辑设计的网表(例如Verilog网表),其面向该设计的结构化ASIC实现方案;(2)来自用户的逻辑设计的定时约束条件。
图1中的几个流程单元(即单元20、30、32、40和42)与这样的资源相关所述资源能够(并且最好是)在接收任何特定的用户逻辑设计的交接设计文件(即Schleicher等人的参考文献中的860,本说明书中是52/54)之前,被准备好。这是些被用来方便产生这样的结构化ASIC的资源该结构化ASIC将在功能上等同于FPGA,该FPGA实现由交接设计文件52/54所表示的任何用户逻辑设计。在本段落中所述资源是仅需要开发一次的库资源(虽然可随着时间对这些库资源进行改进和/或增加)。现在将更详细描述这些单元。
单元20是各种类型的电路块的一个列表,所述电路块可用在用户的逻辑设计中。这些电路块包括逻辑单元21、存储块22、输入/输出(IO或称I/O)块23、锁相环(PLL)块24、及缓冲器单元25。应该理解的是这个列表仅仅是示例性的,并且如果需要的话,尚可包括其他类型的块。举例来说,可包括的其他类型的块是延迟锁定环(DLL)块、数字信号处理(DSP)块,等等。
对于用户可能在用户逻辑设计中利用的每个块20,已经事先开发了至少一个结构化ASIC配置30。用户在用户的逻辑设计的FPGA实现方案中可能利用的某些类型的块基本上可在相关的结构化ASIC中复制。例如,对于存储块22、IO块23、PLL块24和缓冲器单元25来说即可能如此。因此举例来说,对于在FPGA上设置的每一种类型的存储块22,已开发了该类型的存储块的至少一个结构化ASIC配置30。对于每一种类型的FPGA IO块23、每一种类型的FPGA PLL块24、和每一种类型的FPGA缓冲器单元25也是这样。在每一种情况下,至少一个功能上等同(通常结构上类似)的结构化ASIC等同配置30已经被开发出来。
结合前述内容,应该注意的是配置30可能需要包括几种不同形式的前述段落讨论的某些类型的块。例如,基于其在最终产品上的位置,IO块23可能有所不同(例如,该块是在器件的左侧、右侧、顶部或是底部)。在其FPGA形式中,IO块23可具有各种可编程的方案(例如IO块中的寄存器是否被使用,它是否是输入或输出块等等)。配置30优选包括IO块变化形式的所有这些可能组合的结构化ASIC实现方案。关于这一点的另一例子是,存储块22可以以几种不同的大小存在。此外,在其FPGA形式中,这些存储器功能中的至少一个功能在某些方面可以是可编程的(例如存储器是单端口或双端口、是输入总线的宽度或输出总线的宽度等等)。同样,配置30优选包括其需要支持的所有这些存储块大小和功能组合的结构化ASIC实现方案。作为又一例子,在其FPGA形式中,举例来说,PLL块24可能关于其所提供的延迟量是可编程的。配置30优选包括其需要支持的所有这些可能的PLL块的结构化ASIC实现方案。对于缓冲器单元25也是这样,所述缓冲器单元在FPGA形式中关于强度是可编程的。
因为本发明的“目标”器件是结构化ASIC,所以这些器件总是包括相同的基本模板电路。对于在前两段中讨论的电路块类型,这个模板电路在各种固定的位置包括被认为是合适数目的这些各种类型的块的实例(instance)的基本电路。例如,这个结构化ASIC模板电路可沿着模板的左侧包括一个或多个类型的IO块23的基本电路,沿着器件的顶部包括更多个这些块23的基本电路,等等。结构化ASIC模板电路可类似地在模板中的固定位置包括几种类型的存储块22的几个实例的基本电路。在其FPGA形式中可编程的这些方案(以及其他类似的“非逻辑”块如块24和25)通过适当地定制仅仅几个用于制造结构化ASIC的掩模,即可在结构化ASIC中实现。其他掩模(即那些用于基本电路或模板电路的掩模)总是相同或者至少实质相同的。定制的掩模也被用来提供各种电路块之间的定制的互连。(当然可能存在几个不同的结构化ASIC目标产品,并且这些产品可具有支持不同范围电路能力的不同模板。但是对于每个目标产品,模板电路总是相同或者至少实质相同的。只有用于制造结构化ASIC产品的若干掩模需要定制,以便在结构化ASIC中实现特定的客户电路设计。) 处理逻辑单元21和以上所述稍微不同(但仅仅是稍微不同)。如Schleicher等人的参考文献清楚说明的,FPGA逻辑单元往往是相对大的电路块。例如,FPGA逻辑单元(在Schleicher等人的参考文献中被称为ALE)可包括查找表电路,该电路能够提供的输出信号是多达6个输入信号的任意逻辑组合。根据本发明,这些大ALE在结构化ASIC中本身是不复制的。相反,结构化ASIC模板电路包括许多远为小得多的较小逻辑单元(在Schleicher等人的参考文献中被称为HLE)的基础或基本电路。一个HLE或多个附近的或者说相邻的HLE被一起使用,以执行FPGA HLE的一个或多个功能。以这种方式一起使用的HLE被称为HLE群或CHLE。一个CHLE可被限制为最多6个HLE。因为每个HLE的有限功能,以及一个CHLE中允许的HLE的有限数量,一个CHLE仅仅保证能够提供4个输入的任何逻辑组合(而不是如同对于一个ALE来说可能的6个输入)。一个CHLE能够提供5个或6个输入的某些组合。但是它会要求两个或更多的CHLE来提供5个和6个输入的其他组合。在任何情况下,配置30优选包括至少一个结构化ASIC(即HLE/CHLE)实现方案,该实现方案具有一个FPGA ALE所能提供的每个4输入(以及更少的)逻辑功能。配置30也可包括这样的至少一个结构化ASIC实现方案,该实现方案具有FPGAALE所能提供的某些5输入和6输入逻辑功能。配置30所不具备的其他5输入和6输入功能可以通过将它们减少到多个功能,每个功能具有较少的输入来实现。例如,通过配置已经具备的多个5输入和/或4输入功能,即可实现结构化ASIC配置30没有提供的6输入功能。
简要概括前面的段落,配置30包括FPGAALE所能够提供的所有两输入、3输入、及4输入逻辑功能的至少一个结构化ASIC(即HLE/CHLE)实现方案。配置30也可包括FPGA ALE所能提供的某些5输入/或和6输入逻辑功能的至少一个结构化ASIC实现方案。
在上面的讨论中使用了若干次短语“至少一个”,因为针对至少一些开始的FPGA电路块20,可能已开发了一个以上的结构化ASIC配置30。仅仅作为这方面的一个例子,可能存在特定FPGA四输入查找表功能21的一个以上公知的结构化ASIC HLE/CHLE实现方案。所有这些公知的结构化ASIC实现方案优选包括在流程单元30中,作为实现该四输入逻辑功能的可能替代方案。可以有(而且优选有)逻辑单元21的结构化ASIC HLE/CHLE实现方案的数千个(例如30000个)配置30。对于像减少客户设计转变时间这样的目的,希望有这样大量的预建库模型。
配置30可包括的其他内容是FPGA寄存器和FPGA DSP块的结构化ASIC(即HLE/CHLE)实现方案。
进一步概括上述的流程单元30,这个单元产生或表示流程单元20中的每个类型的FPGA电路块的至少一个结构化ASIC等同方案的网表和布局的产生。同样,这可能是几种类型和配置的存储块22、几种类型和配置的IO块23、一个或多个类型和配置的PLL块24、一个或多个类型和配置的缓冲器单元25、优选数以千计的不同配置的逻辑单元21,等等。“布局”是部分的配置30,其包含为每个这种配置的结构化ASIC实现方案所需的完整物理信息。现在将描述每个配置30的进一步处理。
对于每个配置30,开发一个结构化ASIC物理库单元,其包括在物理库流程单元32中。每个物理库单元(此单元也可由参考标记32表示)是相应电路块的上述结构化ASIC布局。由以上关于流程单元30的讨论显而易见的是,对每个类型的开始电路块,可能有一个以上物理库单元32。例如,一个指定类型的IO块23在物理库32中可表现为4个版本如果IO块在结构化ASIC的左侧上使用第一个版本,如果IO块在右侧上使用第二个版本,如果IO块在结构化ASIC的顶部使用第三个版本,如果IO块在结构化ASIC的底部使用第四个版本。而如果举例来说,这个类型的IO块在其FPGA形式中在一个或多个方面是可编程的,那么在库32中可能存在这个类型的IO块23的4个以上版本。其他类型的开始块20是一样的,因为这些块表示在库32中。总而言之,每个配置30都有物理库单元32。
为了加速流程单元70(稍后描述)的操作,库32中布局的完整物理信息可被转换为流程单元70中至少某些用法(特别是放置和路由操作)的所谓“框架视图”。库单元32的框架视图仅仅包含每个库单元的端口和阻塞信息。流程单元70的放置和路由部分使用这些简化的框架-视图布局来完成所有的放置和路由步骤。但是,最终的放置和路由工具使用完整的布局(所谓“单元视图”)来推出最后的数据库,用于产品定案(tape out)90。
对于至少某些结构化ASIC物理库单元32来说,可能需要定时信息。因此,在仿真流程单元40中处理将会需要这种定时信息的每个配置30。这个流程单元仿真它所操作的每个配置30的性能。例如,流程单元40使用配置30的布局来抽取RC信息。流程单元40然后用这些RC文件连同配置30的网表,来仿真配置的定时行为。每个块的定时行为然后被转换成“库”(或称LIB)格式(工业标准格式),此格式能够被流程单元70的放置和路由工具以及流程单元80的静态定时分析工具理解。这些库定时模型被存储在库流程单元42中。
在流程单元40中执行的仿真可反映关于诸如这样一些因素的各种设想(1)将被用于制造结构化ASIC的工艺,(2)结构化ASIC的工作电压,和(3)结构化ASIC的工作温度(或温度范围)。(这些因素有时被称为工艺、电压和温度(或PVT)因素。)例如,可假设在最坏PVT条件下执行仿真40。作为选择,可使用关于PVT的不同假设来执行几个不同的仿真。可完成上述步骤,以便利用所得定时信息来支持用户的逻辑设计的几个不同PVT结构化ASIC实现方案中的任何实现方案。
如上所述,仿真40的结果被积累在定时模型库42中,因此,对于将会需要定时信息的每个物理库单元32,该定时信息可在定时模型库42中获得。当要处理用户的逻辑设计,从而产生用于实现这个设计的结构化ASIC时,可作为资源利用库32和42,如下面段落将描述的。因为如前所述,流程单元30优选包括数以千计的预建库模型,流程单元32和42也优选包括相应为数众多的预建的物理和定时模型。同样,针对减少客户设计转变时间这样的目的,需要这些为数众多的预建物理和定时模型。
如上所述,用户逻辑设计的交接设计文件包括两个主要部分(1)该设计的结构化ASIC实现方案的网表52,(2)与该设计关联的定时约束条件54。网表52面向的是用户逻辑设计的结构化ASIC实现方案的产生,该设计在这个网表中被具体化。例如,网表52仅仅利用这样的电路块在库32中有对应于所述电路块的物理单元,而且如果必要的话,在库42有对应于所述电路块的定时模型。此外,网表52保存关于在该网表中所利用的电路块的大量信息。例如,网表52优选包括所用电路块的标识符(在Schleicher等人的参考文献中被称为c号码),这些标识符与配置30中也是在因此库32和42中的相应电路块的标识符相关。网表52也可包括某些类型的电路块的“配置”信息。这种配置信息告诉后端(即本发明)电路块将要具备的配置。例如,IO块23的网表52的电路块信息可反映关于IO块必须被置于最后结构化ASIC产品上何处的信息。这既能影响IO块的各种组件的布局,又能影响这个IO块在结构化ASIC器件上的布置。作为另一例子,存储块22的网表52的信息可包括配置信息,该配置信息表明存储块的可配置方面,如输入总线宽度、输出总线宽度,等等。
可包括在交接设计文件组件54中的定时约束条件的例子包括(1)Fmax时钟频率的规定(例如100MHz,这意味着时钟周期为10ns),(2)输入接口定时要求,(3)输出接口定时要求,和(4)其他类似的定时要求。继续这个Fmax为100MHz的例子,在这种情况下,流程单元70中的放置和路由工具以及流程单元80中的静态定时分析工具将试图使所有的寄存器到寄存器路径满足10ns条件。(当然,客户设计编译50将会包括当产生网表例如网表52时任何可能的定时检查。) 根据本发明,交接设计网表52是由流程单元60操作的,从而增加到网表单元,这些网表单元是在最后结构化ASIC产品中必须有和/或希望有的,但是不是用户通常关心的或者不是用户可得到的。例如,流程单元60典型地插入时钟网络和时钟连接。流程单元60也插入全局信号连接,比如不在客户设计中的全局重置/预置等等。
流程单元60还对任意电路块的c号码附加该电路块的配置数据,为此网表52还包括这个电路块的合适的配置信息,所述配置数据将唯一地标识对应于具有这个配置的电路块的物理库单元32。例如,网表52中的配置信息能够对可配置的RAM(CRAM)位状态进行编码,这些位是为给一个可配置的逻辑块以特定配置所需的。流程单元60可将这个CRAM位编码附加到电路块的c号码,从而唯一地标识对应的物理库单元32。
流程单元60还可插入制造测试多路复用器(mux)和测试信号连接。(这个类型的一种很常见的电路是所谓扫描链电路,该电路允许器件上的触发器暂时彼此连接成链,如同移位寄存器一样。数据可被移入、移过和移出这样的寄存器链,以测试是否已适当地制造了这个器件。)流程单元60还可嵌入未用的单元(例如HLE、存储块、PLL块等等,以使目标结构化ASIC器件的所有资源即使没有使用也得到适当的考虑和处理)。流程单元60还可嵌入未被客户设计编译流程单元50看到的块(例如通电重置电路、校准电路、熔丝等等)。流程单元62是后处理网表,是对网表52进行操作的步骤60的结果。
在产生后处理网表62之后,可能希望检查交接网表52和后处理网表62之间的逻辑等同性。这可通过以用户模式(不同于测试模式)运行正常的验证来完成。
在后处理网表62已经被产生之后,对于执行步骤70来说就一切齐备了。步骤70产生将会实现用户逻辑设计的结构化ASIC的最后设计。在步骤70中产生数据,用于实际指定需要被定制的掩模,从而产生结构化ASIC(包括这些掩模的定制)。步骤70从流程单元54和62获得所有关于用户逻辑设计的必要信息。在这个用户逻辑设计信息54/62的处理中,步骤70利用来自流程单元32和42的库信息。
步骤70包括执行多个子步骤。这些子步骤包括(1)放置和路由操作,(2)扫描重排序操作,(3)串扰关闭(cross-talk closure)操作,(4)天线关闭(antenna closure)操作,(5)定时优化,(6)设计规则检查器(DRC)和布局与示意图(LVS)比较验证操作,以及(7)电源和EM分析。这些子步骤将在下面的段落中逐一研究,,不过应该注意的是在这些操作之间可能有某些交叉,这能够引起部分已执行的操作重新执行,以满足在后续操作执行过程中的检测要求。
步骤70的放置和路由部分包括在库32中寻找物理布局,其适合用于实现在网表62中指定的每个电路块。这可包括考虑来自客户设计编译50的布置约束条件,或者通过编译50来自客户的布置约束条件。例如,客户已经指定的IO块必须具有特定引脚(pin-out)位置,该位置可能需要沿着所完成结构化ASIC器件的适当侧边具有一个大致对应的位置。流程单元70的放置和路由部分适应这种放置要求,这部分是通过在库32中寻找正确类型的IO块实现方案来进行的,所述正确类型的IO块实现方案具有正确的左侧、右侧、顶部或底部布局。流程单元70的放置和路由部分还考虑来自交接设计文件部分54的客户定时约束条件,以及来自定时模型库42的库定时执行信息。例如,如果由于长路由选择或高扇出(fanout)而没有满足定时要求,那么放置和路由工具70可插入具有更强驱动能力的缓冲器,如果可获得这种单元的话。
除了由网表62中指定的所有电路块的物理库32实现方案进行选择之外,步骤70的放置和路由部分将所有这些实现方案物理放置在结构化ASIC模板的可用“不动产”(real estate)和基本电路资源上。同样由前面的讨论应记得,这些模板或基本设计层(不包括编程层)是固定的,所以能够预建这些层的掩模,以节省转变[j1](turn around)时间(TAT)和非可恢复工程(NRE)费用。一旦编程设计被放置和路由,可编程的金属层和导孔(via)将具有客户设计信息,并且与基本层一起,形成完整的结构化ASIC产品设计。因此仅仅几个可编程的层需要按照客户的设计被定制。在决定在结构化ASIC上的何处放置来自库32的物理布局时,步骤70的放置和路由部分可再次考虑可应用的布置和定时约束条件(其例如来自交接设计文件部分54)。步骤70的放置和路由部分还可形成及物理布局(“路由”)这样的电路块的物理布局之间的所有必要连接这些电路块已经从库32中被选出用于实现网表62中指定的电路块。放置和路由工具能够与物理库单元32的上述简化的“框架视图”一起工作。至少最初这些框架视图包括足够的端口和阻塞信息,从而允许流程单元70的放置和路由部分完成其工作。稍后库单元32的全部细节能被拉入流程单元70中(例如为了让所要制造的结构化ASIC产品的产品定案90所需的数据能够全部产生)。
在针对网表62中指定的整个设计,已经执行步骤70的放置和路由部分之后,在步骤60中插入的扫描链中的寄存器可能丢失在步骤60中假设的顺序。因此,执行步骤70的扫描重排序部分,以启动扫描链中寄存器的任何必要的重新排序。
执行步骤70的串扰关闭部分,是为了寻找互连导线的图案,这些图案可能传导导线之间的串扰。例如,在相对长的距离中彼此直接相邻的两条导线可能导致它们之间的串扰。如果找到了这种导线图案,那么步骤70的串扰关闭部分可改变具有串扰风险的导线的物理路由,从而减少或消除这个风险。
执行步骤70的天线关闭部分,为的是寻找长线路,长线路在制造过程中可收集足够强的电荷,从而破坏器件的其他电路。如果检测到任何这种长线路,即可修改放置和路由,从而减少或消除电路中出现不必要的天线的风险。
可执行步骤70的定时优化部分,以尝试提高与定时有关的放置和路由操作结果的性能。例如,步骤70的定时优化部分可寻找放置和路由操作结果中相对慢的路径,并随后可寻找加速这类相对慢的路径的方法。继续这个例子,路径可能相对慢,是因为它包括电路块之间一个或多个相对长的互连部分。通过在路径中插入强缓冲器或通过增加驱动单元尺寸(如果可获得这种单元的话),从而满足设置时间要求,步骤70的定时优化部分即可尝试加速这个路径。作为另一例子,通过插入缓冲器或延迟单元,从而增加数据路径的延迟,即可解决占用时间(hold time)问题。移动单元从而提高定时性能也是可能的。可理解的是,步骤70的定时优化部分在客户设计所指定的定时约束条件54内操作(即符合并且不违背所述约束条件)。其实,步骤70的定时优化部分可以成为步骤70如何满足定时约束条件54的一个方面。
步骤70的设计规则检查器(DRC)部分确保在步骤70中为结构化ASIC而开发的物理布局的任何部分,均不违反用户所应遵循的结构化ASIC制造“设计规则”。如有必要,步骤70的设计规则检查器部分修改正在被开发的物理布局,以使其在任何方面不违反制造设计规则。
步骤70的布局与示意图(网表)(LVS)部分检查正在开发的物理布局,以确保该物理布局正确地反映该网表。例如,这个检查确保该布局具有和网表相同的连接从而确保没有短路,等等。
由前面所述可理解,步骤70可具有迭代特征。例如,如果朝向步骤70的结束执行DRC,并且如果它导致较早的放置和路由结果中的某些变化,那么步骤70的某些或全部干涉部分就可能需要被再次执行(例如执行可能的进一步扫描重排序、确保仍然存在串扰和天线关闭、确定是否需要更多的定时优化,等等)。
图2a和2b更详细地示出了放置和路由步骤70的有关说明性实施例。在步骤110中,合适的库环境32/42在放置和路由工具中被设定,或者使其可由放置和路由工具使用。在步骤112中,目标结构化ASIC器件的平面布置图被载入放置和路由工具中。在别处这一平面布置图信息被称为目标结构化ASIC的模板或基本(固定)电路。在步骤114中,读入预建时钟树、功率网络和其他宏电路。某些或全部上述信息可以是如上联系流程单元60所述的那种被添加的信息。在步骤116中,载入定时约束条件(例如从流程单元54) 在步骤120中,根据布置约束条件放置来自后处理网表62的单元。在步骤130中,执行所有必要的扫描重排序。在步骤140中,路由已被放置的块之间的所有必要连接。在步骤150中,消除任何可能的串扰(例如通过适当地重新路由连接)。在步骤160中,消除任何天线问题(例如通过根据要求重新放置单元)。在步骤170中,执行定时优化。在步骤180中执行设计规则检查以及布局与示意图验证。
再次说明,虽然图2a和2b所提示的可视为完全单向且一次性的流程,但是应理解,某些后面的步骤的结果可能导致需要重新执行一个或多个稍早的步骤,并且这可能以各种方式发生不止一次。
在步骤70的所有部分均被执行之后,结果就是结构化ASIC的完整规格(物理布局),该完整规格是要产生从而实现用户逻辑设计的。这个完整的物理布局被传给步骤80,该步骤在该设计上执行静态定时分析,以确保该设计的所有部分符合静态定时规则。如果步骤80发现违反了静态定时规则,它就以工程改动命令(engineering changeorder)或称ECO的形式,向步骤70发出一个指令以改变设计。例如,步骤80可能发现因为寄存器离要被寄存的信号源太远,所以就违反了静态定时规则。步骤80因此便可向步骤70发出一个工程改动命令,指定寄存器离其信号源必须不超过特定距离。然后用这个额外的约束条件再次执行步骤70。这导致结构化ASIC的被修改物理布局,该被修改物理布局被再次传给步骤80,用于另一静态定时检查。
静态定时分析工具(STA)80被用于终止定时。因为这是用于结束定时的,所以需要准确的RC分析。因此,来自步骤70的已放置和路由的数据库被传给准确的RC抽取工具,以抽取设计的RC特征。借助于所抽取的RC、被放置和路由的网表、及定时约束条件(例如来自流程单元54),STA工具80对设计进行分析,以确保它满足客户的定时规格。如果不满足定时规格,那么回到流程单元70的自动ECO流就被占用。基于不满足定时的路径,STA工具80中的ECO流就为放置和路由工具70生成命令,以进行必要的调整(一个或多个)。一旦放置和路由工具70完成了ECO改动(一个或多个),STA流80就会被重复,直到定时在STA中通过为止。
当执行步骤80而没有发现任何静态定时违反(或任何深一层的静态定时违反)情形时,结构化ASIC布局就准备好被制造了。因此在步骤90中,该结构化ASIC布局以能够用于控制结构化ASIC器件的实际制造的数据形式而被“产品定案”(taped out)。
图3更详细示出了流程的这个部分的一个说明性实施例。与图1相比,图3示出了附加的流程单元85,其以工业标准形式的数据(GDSII)捕获最后的、全面和详细的结构化ASIC设计的物理布局,该数据在已经达到定时结束(步骤80)时能够被输送给产品定案步骤90。
应该理解的是,以上所述是与Schleicher等人的参考文献中所述目标一致的(且在这里重申),该目标是产生这样的结构化ASIC其在功能上等同于FPGA,所述FPGA被编程以实现被制造的结构化ASIC所要实现的相同用户逻辑设计。例如,使用结构化ASIC资源(这里是配置30)的相同库来编译(如在Schleicher等人的参考文献中)网表52,所述资源形成根据本发明进行结构化ASIC的最后物理布局的基础。在Schleicher等人的参考文献的编译中所遵循的相同逐块方法在这里继续。避免了结构化ASIC实现方案的用户逻辑设计的彻底重新分析。相反,每个FPGA电路块20被结构化ASIC块所替代,该结构化ASIC块已知是在功能上等同的。在完成Schleicher等人的参考文献所述编译和这里的结构化ASIC物理布局时,提取FPGA电路块的这种已知等同的结构化ASIC实现方案的大库30。为了避免任何显著的逻辑重新分析,在整个过程中保存等同的FPGA与结构化ASIC电路块之间的一一对应关系。这有助于给步骤70一定自由度来移动块(例如为了满足定时约束条件并避免类似串扰、天线创建等等问题),而避免了将逻辑错误引入结构化ASIC器件的风险。本发明还允许用户定时约束条件54,该约束条件已流过要观察的Schleicher等人的参考文献中的编译,并且已经在结构化ASIC的物理布局的开发中实现。这进一步有助于确保实现相同用户逻辑设计的FPGA和结构化ASIC在功能上等同。
图4说明了本发明的另一可能方面。这是用机器可读指令1210(例如计算机程序)编码的机器可读介质1200(例如一个或多个磁盘、光盘、磁带或类似介质),用于至少部分执行根据本发明的一个或多个方法。
应该理解前面所述仅仅是本发明原理的说明,并且在不偏离本发明的范围和精神的情况下,本领域的技术人员可进行各种修改。例如,执行各种步骤70操作的顺序能够不同于图1或图2a和2b所示以及上述的顺序。
权利要求
1.一种产生结构化ASIC的物理布局的方法,该结构化ASIC在功能上等同于被编程以实现用户逻辑设计的FPGA,所述方法包括对于网表中的每个电路块,从库中检索该电路块的结构化ASIC物理布局,所述网表对应于所述用户逻辑设计的结构化ASIC实现方案;将所述块的所述物理布局放置在结构化ASIC模板上;和根据所述网表,在所述结构化ASIC模板上布置所述块的所述物理布局之间的互连。
2.根据权利要求1所述的方法,进一步包括在执行所述检索、放置、布置至少其中之一的至少某个方面时,遵守所述用户提供的至少一个定时约束条件。
3.根据权利要求1所述的方法,进一步包括将电路添加到所述网表,以便在制造之后测试所述结构化ASIC。
4.根据权利要求2所述的方法,其中对于至少一个电路块,所述库包含一个关联定时模型,且其中对于这个电路块,所述检索包括还检索所述关联定时模型。
5.根据权利要求4所述的方法,其中所述遵守包括使用所述关联定时模型。
6.根据权利要求1所述的方法,进一步包括检查所述结构化ASIC的所述物理布局的串扰可能性。
7.根据权利要求1所述的方法,进一步包括检查所述结构化ASIC的所述物理布局的天线可能性。
8.根据权利要求1所述的方法,进一步包括使所述结构化ASIC的所述物理布局服从定时优化。
9.根据权利要求1所述的方法,进一步包括检查所述结构化ASIC的所述物理布局的设计规则违反情况。
10.根据权利要求1所述的方法,进一步包括使所述结构化ASIC的所述物理布局服从静态定时分析。
11.以机器可读指令编码的机器可读介质,所述指令用于执行权利要求1所述的方法。
12.一种产生结构化ASIC的方法,该结构化ASIC在功能上等同于被编程以实现用户逻辑设计的FPGA,所述方法包括对于网表中的每个电路块,从库中检索该电路块的结构化ASIC物理布局,所述网表对应于所述用户逻辑设计的结构化ASIC实现方案;将所述块的所述物理布局放置在结构化ASIC模板上;根据所述网表,在所述结构化ASIC模板上布置所述块的所述物理布局之间的互连;和根据所述放置和布置的结果,制造所述结构化ASIC。
13.根据权利要求12所述的方法,其中对于至少某些电路块,所述库包含关联定时模型,且其中对于这种电路块,所述检索包括还检索所述关联定时模型。
14.根据权利要求13所述的方法,进一步包括使用所述关联定时模型来确保预定的定时约束条件不被违反。
15.根据权利要求12所述的方法,其中对于至少一种类型的所述电路块,所述结构化ASIC实现方案利用可变数量的结构化ASIC基本电路单元,所述电路单元所具有的全部功能少于用于FPGA中的该类型电路块的基本电路单元的全部功能,且其中所述放置实质仅仅使用与所述电路块的所述结构化ASIC实现方案所需相同的许多个结构化ASIC基本电路单元实例,将该类型的各电路块放置在所述结构化ASIC模板上。
16.一种产生结构化ASIC的方法,该结构化ASIC在功能上等同于被编程以实现用户逻辑设计的FPGA,所述方法包括对于网表中的每个电路块,从库中检索该块的结构化ASIC物理布局和该块的定时模型,所述网表对应于所述用户逻辑设计的结构化ASIC实现方案;将所述块的所述物理布局放置在结构化ASIC模板上;根据所述网表,在所述结构化ASIC模板上布置所述块的所述物理布局之间的互连;和使用所述定时模型来确保预定的定时约束条件不被违反。
全文摘要
作为产生功能上等同于已经被编程执行用户的逻辑设计的FPGA的结构化ASIC的一部分,编译已经为ASIC实现所准备的那个设计被转换为结构化ASIC的物理布局。这个物理布局的产生兑现用户提供的定时约束条件,并且也保持功能上等同于参考的编程FPGA。可以由产生的物理布局制造结构化ASIC。
文档编号G06F17/50GK1873646SQ200610082778
公开日2006年12月6日 申请日期2006年5月25日 优先权日2005年5月31日
发明者陈金彬, 蔡家庆 申请人:阿尔特拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1